X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=fish%2Ffish.c;h=61a84050df4f2dd047ed52bf49bcf49e2a3afdcb;hb=6a21c8ccf7f5813ca9a2bb7c869e2a954190110e;hp=bd13a827dbc12c341a6b3a2fc02dfc8a17086a9b;hpb=3f785126cfa9cd4a100ca43cb1580e33c2860845;p=libguestfs.git diff --git a/fish/fish.c b/fish/fish.c index bd13a82..61a8405 100644 --- a/fish/fish.c +++ b/fish/fish.c @@ -768,6 +768,15 @@ cmdline (char *argv[], int optind, int argc) fprintf (stderr, _("%s: empty command on command line\n"), program_name); exit (EXIT_FAILURE); } + + /* Allow -cmd on the command line to mean (temporarily) override + * the normal exit on error (RHBZ#578407). + */ + if (cmd[0] == '-') { + exit_on_error = 0; + cmd++; + } + params = &argv[optind]; /* Search for end of command list or ":" ... */ @@ -775,10 +784,12 @@ cmdline (char *argv[], int optind, int argc) optind++; if (optind == argc) { - if (issue_command (cmd, params, NULL) == -1) exit (EXIT_FAILURE); + if (issue_command (cmd, params, NULL) == -1 && exit_on_error) + exit (EXIT_FAILURE); } else { argv[optind] = NULL; - if (issue_command (cmd, params, NULL) == -1) exit (EXIT_FAILURE); + if (issue_command (cmd, params, NULL) == -1 && exit_on_error) + exit (EXIT_FAILURE); cmdline (argv, optind+1, argc); } }