~2 week bump.

Any thoughts or feedback?

--
Scott Cheloha

> On Aug 25, 2017, at 11:27 PM, Scott Cheloha <[email protected]> wrote:
> 
> Hi,
> 
> compile_mode() currently just reports the value returned by
> pclose(3).  This is incorrect because pclose gives you
> whatever wait4(2) returned, which needs to be examined
> with the various W* macros in <sys/wait.h> to derive a proper
> exit status.
> 
> This patch checks how the popen'd process exited and chooses
> an exit status as the shell would.
> 
> --
> Scott Cheloha
> 
> Index: usr.bin/mg/grep.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/mg/grep.c,v
> retrieving revision 1.44
> diff -u -p -r1.44 grep.c
> --- usr.bin/mg/grep.c 19 Mar 2015 21:48:05 -0000      1.44
> +++ usr.bin/mg/grep.c 26 Aug 2017 04:06:35 -0000
> @@ -2,8 +2,10 @@
> 
> /* This file is in the public domain */
> 
> -#include <sys/queue.h>
> #include <sys/types.h>
> +#include <sys/queue.h>
> +#include <sys/wait.h>
> +
> #include <ctype.h>
> #include <libgen.h>
> #include <limits.h>
> @@ -179,7 +181,7 @@ compile_mode(const char *name, const cha
>       FILE    *fpipe;
>       char    *buf;
>       size_t   len;
> -     int      ret, n;
> +     int      n, ret, status;
>       char     cwd[NFILEN], qcmd[NFILEN];
>       char     timestr[NTIME];
>       time_t   t;
> @@ -220,12 +222,13 @@ compile_mode(const char *name, const cha
>               addline(bp, buf);
>       }
>       ret = pclose(fpipe);
> +     status = WIFEXITED(ret) ? WEXITSTATUS(ret) : 128 + WTERMSIG(ret);
>       t = time(NULL);
>       strftime(timestr, sizeof(timestr), "%a %b %e %T %Y", localtime(&t));
>       addline(bp, "");
> -     if (ret != 0)
> -             addlinef(bp, "Command exited abnormally with code %d"
> -                 " at %s", ret, timestr);
> +     if (status != 0)
> +             addlinef(bp, "Command exited abnormally with status %d"
> +                 " at %s", status, timestr);
>       else
>               addlinef(bp, "Command finished at %s", timestr);
> 

Reply via email to