Fix error handling of external sfdisk command.
authorRichard W.M. Jones <rjones@redhat.com>
Wed, 1 Jul 2009 15:36:13 +0000 (16:36 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Wed, 1 Jul 2009 15:36:13 +0000 (16:36 +0100)
Should use 'pclose' instead of 'fclose' (although fclose happens
to work because of glibc internals).

The result of pclose is the exit status of the command, so we
need to test this is != 0.

daemon/sfdisk.c

index 95f04af..6ff2736 100644 (file)
@@ -63,14 +63,13 @@ sfdisk (char *device, int n, int cyls, int heads, int sectors,
   for (i = 0; lines[i] != NULL; ++i) {
     if (fprintf (fp, "%s\n", lines[i]) < 0) {
       reply_with_perror (buf);
   for (i = 0; lines[i] != NULL; ++i) {
     if (fprintf (fp, "%s\n", lines[i]) < 0) {
       reply_with_perror (buf);
-      fclose (fp);
+      pclose (fp);
       return -1;
     }
   }
 
       return -1;
     }
   }
 
-  if (fclose (fp) == EOF) {
-    reply_with_perror (buf);
-    fclose (fp);
+  if (pclose (fp) != 0) {
+    reply_with_error ("%s: external command failed", buf);
     return -1;
   }
 
     return -1;
   }