X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=daemon%2Fext2.c;h=3758f4ee5f0e09c821aa9e14cdedbc195695a823;hp=ff6459b40796a564a2c8e3a88e4f05edc16ba1bb;hb=287f8957fea3efe411c7ac55595d5d6c7b613e4e;hpb=c4e8aa245a243b020d6b7bd832674be871a43610 diff --git a/daemon/ext2.c b/daemon/ext2.c index ff6459b..3758f4e 100644 --- a/daemon/ext2.c +++ b/daemon/ext2.c @@ -43,11 +43,11 @@ e2prog (char *name) p++; *p = '4'; - if (access (name, X_OK) == 0) + if (prog_exists (name)) return 0; *p = '2'; - if (access (name, X_OK) == 0) + if (prog_exists (name)) return 0; reply_with_error ("cannot find required program %s", name); @@ -63,7 +63,7 @@ do_tune2fs_l (const char *device) char **ret = NULL; int size = 0, alloc = 0; - char prog[] = "/sbin/tune2fs"; + char prog[] = "tune2fs"; if (e2prog (prog) == -1) return NULL; @@ -151,7 +151,7 @@ do_set_e2label (const char *device, const char *label) int r; char *err; - char prog[] = "/sbin/e2label"; + char prog[] = "e2label"; if (e2prog (prog) == -1) return -1; @@ -172,7 +172,7 @@ do_get_e2label (const char *device) int r, len; char *out, *err; - char prog[] = "/sbin/e2label"; + char prog[] = "e2label"; if (e2prog (prog) == -1) return NULL; @@ -200,7 +200,7 @@ do_set_e2uuid (const char *device, const char *uuid) int r; char *err; - char prog[] = "/sbin/tune2fs"; + char prog[] = "tune2fs"; if (e2prog (prog) == -1) return -1; @@ -225,7 +225,7 @@ do_get_e2uuid (const char *device) * to use tune2fs -l and then look for a particular string in * the output. */ - char prog[] = "/sbin/tune2fs"; + char prog[] = "tune2fs"; if (e2prog (prog) == -1) return NULL; @@ -285,7 +285,7 @@ do_resize2fs (const char *device) char *err; int r; - char prog[] = "/sbin/resize2fs"; + char prog[] = "resize2fs"; if (e2prog (prog) == -1) return -1; @@ -306,12 +306,19 @@ do_e2fsck_f (const char *device) char *err; int r; - char prog[] = "/sbin/e2fsck"; + char prog[] = "e2fsck"; if (e2prog (prog) == -1) return -1; - r = command (NULL, &err, prog, "-p", "-f", device, NULL); - if (r == -1) { + /* 0 = no errors, 1 = errors corrected. + * + * >= 4 means uncorrected or other errors. + * + * 2, 3 means errors were corrected and we require a reboot. This is + * a difficult corner case. + */ + r = commandr (NULL, &err, prog, "-p", "-f", device, NULL); + if (r == -1 || r >= 2) { reply_with_error ("%s", err); free (err); return -1; @@ -327,7 +334,7 @@ do_mke2journal (int blocksize, const char *device) char *err; int r; - char prog[] = "/sbin/mke2fs"; + char prog[] = "mke2fs"; if (e2prog (prog) == -1) return -1; @@ -353,7 +360,7 @@ do_mke2journal_L (int blocksize, const char *label, const char *device) char *err; int r; - char prog[] = "/sbin/mke2fs"; + char prog[] = "mke2fs"; if (e2prog (prog) == -1) return -1; @@ -380,7 +387,7 @@ do_mke2journal_U (int blocksize, const char *uuid, const char *device) char *err; int r; - char prog[] = "/sbin/mke2fs"; + char prog[] = "mke2fs"; if (e2prog (prog) == -1) return -1; @@ -408,7 +415,7 @@ do_mke2fs_J (const char *fstype, int blocksize, const char *device, char *err; int r; - char prog[] = "/sbin/mke2fs"; + char prog[] = "mke2fs"; if (e2prog (prog) == -1) return -1; @@ -439,7 +446,7 @@ do_mke2fs_JL (const char *fstype, int blocksize, const char *device, char *err; int r; - char prog[] = "/sbin/mke2fs"; + char prog[] = "mke2fs"; if (e2prog (prog) == -1) return -1; @@ -470,7 +477,7 @@ do_mke2fs_JU (const char *fstype, int blocksize, const char *device, char *err; int r; - char prog[] = "/sbin/mke2fs"; + char prog[] = "mke2fs"; if (e2prog (prog) == -1) return -1;