summaryrefslogtreecommitdiff
path: root/shell/ash.c
diff options
context:
space:
mode:
authorEric Andersen2003-10-22 10:56:47 +0000
committerEric Andersen2003-10-22 10:56:47 +0000
commita48b0a3af71958c1cea6389893371664a47b1a39 (patch)
tree59ed865eb6eb4b619257fc51fb19091ec5844d79 /shell/ash.c
parent514633bf3f4f941d3ba1bb47cc46c31734574cf6 (diff)
downloadbusybox-a48b0a3af71958c1cea6389893371664a47b1a39.zip
busybox-a48b0a3af71958c1cea6389893371664a47b1a39.tar.gz
last_patch116 from vodz:
Stephane, >Using busybox+uclibc, crond syslog messages look like: > >Oct 9 09:04:46 soekris cron.notice crond[347]: ^Icrond 2.3.2 dillon, >started, log level 8 Thanks for testing. >The attached patch corrects the problem. Your patch is not correct. Correct patch attached. Also. Last patch have - add "Broken pipe" message to ash.c - busybox ash synced with dash_0.4.18 --w vodz
Diffstat (limited to 'shell/ash.c')
-rw-r--r--shell/ash.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/shell/ash.c b/shell/ash.c
index 8adf581..deffe28c 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -6682,18 +6682,24 @@ sprint_status(char *s, int status, int sigonly)
int st;
col = 0;
- st = WEXITSTATUS(status);
if (!WIFEXITED(status)) {
- st = WTERMSIG(status);
#if JOBS
if (WIFSTOPPED(status))
st = WSTOPSIG(status);
+ else
#endif
+ st = WTERMSIG(status);
if (sigonly) {
- if (st == SIGINT || st == SIGPIPE)
+ if(st == SIGPIPE) {
+ col = fmtstr(s, 16, "Broken pipe");
+ goto out;
+ }
+ if (st == SIGINT)
goto out;
+#if JOBS
if (WIFSTOPPED(status))
goto out;
+#endif
}
st &= 0x7f;
col = fmtstr(s, 32, u_signal_names(NULL, &st, 0));
@@ -6701,6 +6707,7 @@ sprint_status(char *s, int status, int sigonly)
col += fmtstr(s + col, 16, " (core dumped)");
}
} else if (!sigonly) {
+ st = WEXITSTATUS(status);
if (st)
col = fmtstr(s, 16, "Done(%d)", st);
else
@@ -9036,18 +9043,19 @@ getopts(char *optstr, char *optvar, char **optfirst, int *param_optind, int *opt
char c = '?';
int done = 0;
int err = 0;
- char s[10];
- char **optnext = optfirst + *param_optind - 1;
+ char s[12];
+ char **optnext;
+
+ if(*param_optind < 1)
+ return 1;
+ optnext = optfirst + *param_optind - 1;
- if (*param_optind <= 1 || *optoff < 0 || !(*(optnext - 1)) ||
- strlen(*(optnext - 1)) < *optoff)
+ if (*param_optind <= 1 || *optoff < 0 || strlen(optnext[-1]) < *optoff)
p = NULL;
else
- p = *(optnext - 1) + *optoff;
+ p = optnext[-1] + *optoff;
if (p == NULL || *p == '\0') {
/* Current word is done, advance */
- if (optnext == NULL)
- return 1;
p = *optnext;
if (p == NULL || *p != '-' || *++p == '\0') {
atend: