summaryrefslogtreecommitdiffstats
path: root/libfdisk/src/script.c
diff options
context:
space:
mode:
authorKarel Zak2014-10-07 15:33:18 +0200
committerKarel Zak2014-10-07 15:33:18 +0200
commitd79634cfa801d778afe6d717f289976fd1f667ab (patch)
tree83ec3d9cda3e0f9effaf3a7e12d9274065d75e0d /libfdisk/src/script.c
parentlibfdisk: (dos) fix booable flag usage (diff)
downloadkernel-qcow2-util-linux-d79634cfa801d778afe6d717f289976fd1f667ab.tar.gz
kernel-qcow2-util-linux-d79634cfa801d778afe6d717f289976fd1f667ab.tar.xz
kernel-qcow2-util-linux-d79634cfa801d778afe6d717f289976fd1f667ab.zip
libfdisk: fix script parser
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libfdisk/src/script.c')
-rw-r--r--libfdisk/src/script.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/libfdisk/src/script.c b/libfdisk/src/script.c
index c595f7cb8..e01d8f8f0 100644
--- a/libfdisk/src/script.c
+++ b/libfdisk/src/script.c
@@ -626,7 +626,12 @@ static int parse_script_line(struct fdisk_script *dp, char *s)
}
} else if (!strncasecmp(p, "bootable", 8)) {
+ char *x;
+
p += 8;
+ x = next_separator(p);
+ if (x)
+ p = x + 1;
pa->boot = 1;
} else if (!strncasecmp(p, "attrs=", 6)) {
@@ -672,10 +677,6 @@ static int parse_script_line(struct fdisk_script *dp, char *s)
rc = -EINVAL;
break;
}
-
- while (isblank(*p)) p++;
- if (*p == ',' || *p == ';')
- p++;
}
if (!rc)
@@ -757,6 +758,7 @@ static int parse_commas_line(struct fdisk_script *dp, char *s)
while (rc == 0 && p && *p) {
uint64_t num;
+ char *begin;
while (isblank(*p)) p++;
if (!*p)
@@ -764,6 +766,7 @@ static int parse_commas_line(struct fdisk_script *dp, char *s)
item++;
DBG(SCRIPT, ul_debugobj(dp, " parsing item %d ('%s')", item, p));
+ begin = p;
switch (item) {
case ITEM_START:
@@ -829,8 +832,7 @@ static int parse_commas_line(struct fdisk_script *dp, char *s)
break;
}
- while (isblank(*p)) p++;
- if (*p == ',' || *p == ';')
+ if (begin == p)
p++;
}