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:
parent
10a0aaabfe
commit
c1156d841f
|
@ -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)
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue