summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2015-02-06 09:15:52 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2015-02-12 09:33:43 +0100
commitc1156d841fbc0c9d769f4f5b0cdca8fd4dd15cec (patch)
treecbca3002d552b9e52c567432f4bfaef1ecd3ce16 /lib
parent10a0aaabfeca64519430fb3ee5a91260a7305cf5 (diff)
downloadbarebox-c1156d841fbc0c9d769f4f5b0cdca8fd4dd15cec.tar.gz
barebox-c1156d841fbc0c9d769f4f5b0cdca8fd4dd15cec.tar.xz
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>
Diffstat (limited to 'lib')
-rw-r--r--lib/cmdlinepart.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/cmdlinepart.c b/lib/cmdlinepart.c
index 935158755c..df6f17af39 100644
--- a/lib/cmdlinepart.c
+++ b/lib/cmdlinepart.c
@@ -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;
+}