git.annexia.org
/
libguestfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Prepare for version 1.0.20.
[libguestfs.git]
/
fish
/
fish.c
diff --git
a/fish/fish.c
b/fish/fish.c
index
fcafb5c
..
1309c68
100644
(file)
--- a/
fish/fish.c
+++ b/
fish/fish.c
@@
-26,7
+26,9
@@
#include <unistd.h>
#include <fcntl.h>
#include <getopt.h>
#include <unistd.h>
#include <fcntl.h>
#include <getopt.h>
+#include <signal.h>
#include <assert.h>
#include <assert.h>
+#include <ctype.h>
#ifdef HAVE_LIBREADLINE
#include <readline/readline.h>
#ifdef HAVE_LIBREADLINE
#include <readline/readline.h>
@@
-359,6
+361,21
@@
script (int prompt)
/* If the next character is '#' then this is a comment. */
if (*buf == '#') continue;
/* If the next character is '#' then this is a comment. */
if (*buf == '#') continue;
+ /* If the next character is '!' then pass the whole lot to system(3). */
+ if (*buf == '!') {
+ int r;
+
+ r = system (buf+1);
+ if (!prompt) {
+ if (r == -1 ||
+ (WIFSIGNALED (r) &&
+ (WTERMSIG (r) == SIGINT || WTERMSIG (r) == SIGQUIT)) ||
+ WEXITSTATUS (r) != 0)
+ exit (1);
+ }
+ continue;
+ }
+
/* Get the command (cannot be quoted). */
len = strcspn (buf, " \t");
/* Get the command (cannot be quoted). */
len = strcspn (buf, " \t");