9
0
Fork 0

cmdlinepart: add function to parse a cmdline partition string

This adds a function to parse a full cmdline partition string. The
addpart command is switched to use this function.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Sascha Hauer 2015-02-06 09:15:52 +01:00
parent 10a0aaabfe
commit c1156d841f
3 changed files with 32 additions and 24 deletions

View File

@ -41,8 +41,6 @@
static int do_addpart(int argc, char *argv[])
{
char *devname;
const char *endp;
loff_t offset = 0;
loff_t devsize;
struct stat s;
int opt;
@ -67,28 +65,7 @@ static int do_addpart(int argc, char *argv[])
devname = basename(argv[optind]);
endp = argv[optind + 1];
while (1) {
loff_t size = 0;
if (cmdlinepart_do_parse_one(devname, endp, &endp, &offset,
devsize, &size, flags))
return 1;
offset += size;
if (!*endp)
break;
if (*endp != ',') {
printf("parse error\n");
return 1;
}
endp++;
}
return 0;
return cmdlinepart_do_parse(devname, argv[optind + 1], devsize, flags);
}
BAREBOX_CMD_HELP_START(addpart)

View File

@ -8,4 +8,7 @@ int cmdlinepart_do_parse_one(const char *devname, const char *partstr,
loff_t devsize, loff_t *retsize,
unsigned int partition_flags);
int cmdlinepart_do_parse(const char *devname, const char *parts, loff_t devsize,
unsigned partition_flags);
#endif /* __CMD_LINE_PART_H */

View File

@ -93,3 +93,31 @@ int cmdlinepart_do_parse_one(const char *devname, const char *partstr,
return ret;
}
int cmdlinepart_do_parse(const char *devname, const char *parts, loff_t devsize,
unsigned partition_flags)
{
loff_t offset = 0;
int ret;
while (1) {
loff_t size = 0;
ret = cmdlinepart_do_parse_one(devname, parts, &parts, &offset,
devsize, &size, partition_flags);
if (ret)
return ret;
offset += size;
if (!*parts)
break;
if (*parts != ',') {
printf("parse error\n");
return -EINVAL;
}
parts++;
}
return 0;
}