diff options
author | Eric Andersen | 2003-10-22 10:56:47 +0000 |
---|---|---|
committer | Eric Andersen | 2003-10-22 10:56:47 +0000 |
commit | a48b0a3af71958c1cea6389893371664a47b1a39 (patch) | |
tree | 59ed865eb6eb4b619257fc51fb19091ec5844d79 /shell | |
parent | 514633bf3f4f941d3ba1bb47cc46c31734574cf6 (diff) | |
download | busybox-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')
-rw-r--r-- | shell/ash.c | 28 |
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: |