X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=daemon%2Fparted.c;h=99417c2355e221549af93edabe139ba5e2df4e60;hp=e0183fb4dcd47be14f4a737129a396342c1e1fad;hb=f8210da95888f0060b25dcca2ae299d5c16ff814;hpb=b1e1ca2f74a921b3f784537d59c617df29ea1d60 diff --git a/daemon/parted.c b/daemon/parted.c index e0183fb..99417c2 100644 --- a/daemon/parted.c +++ b/daemon/parted.c @@ -43,10 +43,10 @@ recover_blkrrpart (const char *device, const char *err) int r; if (!strstr (err, - "Error informing the kernel about modifications to partition")) + "Error informing the kernel about modifications to partition")) return -1; - r = command (NULL, NULL, "/sbin/blockdev", "--rereadpt", device, NULL); + r = command (NULL, NULL, "blockdev", "--rereadpt", device, NULL); if (r == -1) return -1; @@ -55,44 +55,44 @@ recover_blkrrpart (const char *device, const char *err) return 0; } -#define RUN_PARTED(device,...) \ - do { \ - int r; \ - char *err; \ - \ - r = commandf (NULL, &err, COMMAND_FLAG_FOLD_STDOUT_ON_STDERR, \ - "/sbin/parted", "-s", "--", (device), __VA_ARGS__); \ - if (r == -1) { \ - if (recover_blkrrpart ((device), err) == -1) { \ - reply_with_error ("%s: parted: %s: %s", __func__, (device), err); \ - free (err); \ - return -1; \ - } \ - } \ - \ - free (err); \ +#define RUN_PARTED(device,...) \ + do { \ + int r; \ + char *err; \ + \ + r = commandf (NULL, &err, COMMAND_FLAG_FOLD_STDOUT_ON_STDERR, \ + "parted", "-s", "--", (device), __VA_ARGS__); \ + if (r == -1) { \ + if (recover_blkrrpart ((device), err) == -1) { \ + reply_with_error ("%s: parted: %s: %s", __func__, (device), err); \ + free (err); \ + return -1; \ + } \ + } \ + \ + free (err); \ } while (0) static const char * check_parttype (const char *parttype) { /* Check and translate parttype. */ - if (strcmp (parttype, "aix") == 0 || - strcmp (parttype, "amiga") == 0 || - strcmp (parttype, "bsd") == 0 || - strcmp (parttype, "dasd") == 0 || - strcmp (parttype, "dvh") == 0 || - strcmp (parttype, "gpt") == 0 || - strcmp (parttype, "mac") == 0 || - strcmp (parttype, "msdos") == 0 || - strcmp (parttype, "pc98") == 0 || - strcmp (parttype, "sun") == 0) + if (STREQ (parttype, "aix") || + STREQ (parttype, "amiga") || + STREQ (parttype, "bsd") || + STREQ (parttype, "dasd") || + STREQ (parttype, "dvh") || + STREQ (parttype, "gpt") || + STREQ (parttype, "mac") || + STREQ (parttype, "msdos") || + STREQ (parttype, "pc98") || + STREQ (parttype, "sun")) return parttype; - else if (strcmp (parttype, "rdb") == 0) + else if (STREQ (parttype, "rdb")) return "amiga"; - else if (strcmp (parttype, "efi") == 0) + else if (STREQ (parttype, "efi")) return "gpt"; - else if (strcmp (parttype, "mbr") == 0) + else if (STREQ (parttype, "mbr")) return "msdos"; else return NULL; @@ -103,7 +103,7 @@ do_part_init (const char *device, const char *parttype) { parttype = check_parttype (parttype); if (!parttype) { - reply_with_error ("part-init: unknown partition type: common choices are \"gpt\" and \"msdos\""); + reply_with_error ("unknown partition type: common choices are \"gpt\" and \"msdos\""); return -1; } @@ -122,23 +122,23 @@ do_part_add (const char *device, const char *prlogex, char endstr[32]; /* Check and translate prlogex. */ - if (strcmp (prlogex, "primary") == 0 || - strcmp (prlogex, "logical") == 0 || - strcmp (prlogex, "extended") == 0) + if (STREQ (prlogex, "primary") || + STREQ (prlogex, "logical") || + STREQ (prlogex, "extended")) ; - else if (strcmp (prlogex, "p") == 0) + else if (STREQ (prlogex, "p")) prlogex = "primary"; - else if (strcmp (prlogex, "l") == 0) + else if (STREQ (prlogex, "l")) prlogex = "logical"; - else if (strcmp (prlogex, "e") == 0) + else if (STREQ (prlogex, "e")) prlogex = "extended"; else { - reply_with_error ("part-add: unknown partition type: %s: this should be \"primary\", \"logical\" or \"extended\"", prlogex); + reply_with_error ("unknown partition type: %s: this should be \"primary\", \"logical\" or \"extended\"", prlogex); return -1; } if (startsect < 0) { - reply_with_error ("part-add: startsect cannot be negative"); + reply_with_error ("startsect cannot be negative"); return -1; } /* but endsect can be negative */ @@ -166,15 +166,15 @@ do_part_disk (const char *device, const char *parttype) parttype = check_parttype (parttype); if (!parttype) { - reply_with_error ("part-disk: unknown partition type: common choices are \"gpt\" and \"msdos\""); + reply_with_error ("unknown partition type: common choices are \"gpt\" and \"msdos\""); return -1; } /* Voooooodooooooooo (thanks Jim Meyering for working this out). */ - if (strcmp (parttype, "msdos") == 0) { + if (STREQ (parttype, "msdos")) { startstr = "1s"; endstr = "-1s"; - } else if (strcmp (parttype, "gpt") == 0) { + } else if (STREQ (parttype, "gpt")) { startstr = "34s"; endstr = "-34s"; } else { @@ -184,10 +184,10 @@ do_part_disk (const char *device, const char *parttype) } RUN_PARTED (device, - "mklabel", parttype, - /* See comment about about the parted mkpart command. */ - "mkpart", strcmp (parttype, "gpt") == 0 ? "p1" : "primary", - startstr, endstr, NULL); + "mklabel", parttype, + /* See comment about about the parted mkpart command. */ + "mkpart", STREQ (parttype, "gpt") ? "p1" : "primary", + startstr, endstr, NULL); udev_settle (); @@ -229,7 +229,7 @@ print_partition_table (const char *device) int r; char **lines; - r = command (&out, &err, "/sbin/parted", "-m", "--", device, + r = command (&out, &err, "parted", "-m", "--", device, "unit", "b", "print", NULL); if (r == -1) { @@ -248,15 +248,15 @@ print_partition_table (const char *device) if (!lines) return NULL; - if (lines[0] == NULL || strcmp (lines[0], "BYT;") != 0) { - reply_with_error ("parted print: unknown signature, expected \"BYT;\" as first line of the output: %s", + if (lines[0] == NULL || STRNEQ (lines[0], "BYT;")) { + reply_with_error ("unknown signature, expected \"BYT;\" as first line of the output: %s", lines[0] ? lines[0] : "(signature was null)"); free_strings (lines); return NULL; } if (lines[1] == NULL) { - reply_with_error ("parted print: parted didn't return a line describing the device"); + reply_with_error ("parted didn't return a line describing the device"); free_strings (lines); return NULL; } @@ -284,7 +284,7 @@ do_part_get_parttype (const char *device) || strtok (NULL, ":") == NULL /* physical sector size */ || (r = strtok (NULL, ":")) == NULL /* return value */ ) { - reply_with_error ("part_get_parttype: too few fields in output from parted print command: %s", lines[1]); + reply_with_error ("too few fields in output from parted print command: %s", lines[1]); free_strings (lines); return NULL; } @@ -339,7 +339,7 @@ do_part_list (const char *device) &r->guestfs_int_partition_list_val[i].part_start, &r->guestfs_int_partition_list_val[i].part_end, &r->guestfs_int_partition_list_val[i].part_size) != 4) { - reply_with_error ("part_list: could not parse row from output of parted print command: %s", lines[row]); + reply_with_error ("could not parse row from output of parted print command: %s", lines[row]); goto error3; } }