last_patch116 from vodz:
authorEric Andersen <andersen@codepoet.org>
Wed, 22 Oct 2003 10:56:47 +0000 (10:56 -0000)
committerEric Andersen <andersen@codepoet.org>
Wed, 22 Oct 2003 10:56:47 +0000 (10:56 -0000)
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

miscutils/crond.c
shell/ash.c

index 7915b86..6de00df 100644 (file)
@@ -114,24 +114,26 @@ static void
 crondlog(const char *ctl, ...)
 {
     va_list va;
+    const char *fmt;
     int level = (int)(ctl[0] & 0xf);
     int type = level == 20 ?
                    LOG_ERR : ((ctl[0] & 0100) ? LOG_WARNING : LOG_NOTICE);
 
 
     va_start(va, ctl);
+    fmt = ctl+1;
     if (level >= LogLevel) {
 
 #ifdef FEATURE_DEBUG_OPT
-       if (DebugOpt) vfprintf(stderr, ctl, va);
+       if (DebugOpt) vfprintf(stderr, fmt, va);
        else
 #endif
-           if (LogFile == 0) vsyslog(type, ctl, va);
+           if (LogFile == 0) vsyslog(type, fmt, va);
            else {
                 int  logfd;
 
                 if ((logfd = open(LogFile, O_WRONLY|O_CREAT|O_APPEND, 600)) >= 0) {
-                   vdprintf(logfd, ctl, va);
+                   vdprintf(logfd, fmt, va);
                    close(logfd);
 #ifdef FEATURE_DEBUG_OPT
                 } else {
index 8adf581..deffe28 100644 (file)
@@ -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: