X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=fish%2Ffish.c;h=987df596e436981b252d04fc5a2e9d69d7283b07;hb=05fd2a60466cb7c270b60e9b93c46548acf319cd;hp=f31f4ad349588686e6c2f8f950568631e0884ae1;hpb=8249460acfc0ab7298d125b4ea29c72729a4582b;p=libguestfs.git diff --git a/fish/fish.c b/fish/fish.c index f31f4ad..987df59 100644 --- a/fish/fish.c +++ b/fish/fish.c @@ -750,8 +750,14 @@ issue_command (const char *cmd, char *argv[], const char *pipecmd) if (pipecmd) { int fd[2]; - fflush (stdout); - pipe (fd); + if (fflush (stdout) == EOF) { + perror ("failed to flush standard output"); + return -1; + } + if (pipe (fd) < 0) { + perror ("pipe failed"); + return -1; + } pid = fork (); if (pid == -1) { perror ("fork"); @@ -760,7 +766,10 @@ issue_command (const char *cmd, char *argv[], const char *pipecmd) if (pid == 0) { /* Child process. */ close (fd[1]); - dup2 (fd[0], 0); + if (dup2 (fd[0], 0) < 0) { + perror ("dup2 of stdin failed"); + _exit (1); + } r = system (pipecmd); if (r == -1) { @@ -770,9 +779,16 @@ issue_command (const char *cmd, char *argv[], const char *pipecmd) _exit (WEXITSTATUS (r)); } - stdout_saved_fd = dup (1); + if ((stdout_saved_fd = dup (1)) < 0) { + perror ("failed to dup stdout"); + return -1; + } close (fd[0]); - dup2 (fd[1], 1); + if (dup2 (fd[1], 1) < 0) { + perror ("failed to dup stdout"); + close (stdout_saved_fd); + return -1; + } close (fd[1]); } @@ -823,13 +839,22 @@ issue_command (const char *cmd, char *argv[], const char *pipecmd) /* Always flush stdout after every command, so that messages, results * etc appear immediately. */ - fflush (stdout); + if (fflush (stdout) == EOF) { + perror ("failed to flush standard output"); + return -1; + } if (pipecmd) { close (1); - dup2 (stdout_saved_fd, 1); + if (dup2 (stdout_saved_fd, 1) < 0) { + perror ("failed to dup2 standard output"); + r = -1; + } close (stdout_saved_fd); - waitpid (pid, NULL, 0); + if (waitpid (pid, NULL, 0) < 0) { + perror ("waiting for command to complete"); + r = -1; + } } return r; @@ -974,7 +999,7 @@ free_strings (char **argv) } int -count_strings (char * const * const argv) +count_strings (char *const *argv) { int c; @@ -984,7 +1009,7 @@ count_strings (char * const * const argv) } void -print_strings (char * const * const argv) +print_strings (char *const *argv) { int argc; @@ -993,7 +1018,7 @@ print_strings (char * const * const argv) } void -print_table (char * const * const argv) +print_table (char *const *argv) { int i;