bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug #35397] make bug with ONESHELL and SHELLFLAGS


From: David Boyce
Subject: [bug #35397] make bug with ONESHELL and SHELLFLAGS
Date: Sun, 29 Jan 2012 20:22:37 +0000
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7

URL:
  <http://savannah.gnu.org/bugs/?35397>

                 Summary: make bug with ONESHELL and SHELLFLAGS
                 Project: make
            Submitted by: boyski
            Submitted on: Sun 29 Jan 2012 08:22:36 PM GMT
                Severity: 3 - Normal
              Item Group: Bug
                  Status: None
                 Privacy: Public
             Assigned to: None
             Open/Closed: Open
         Discussion Lock: Any
       Component Version: 3.82
        Operating System: Any
           Fixed Release: None
           Triage Status: None

    _______________________________________________________

Details:

In a thread from the bug-make mailing list
(http://lists.gnu.org/archive/html/bug-make/2011-12/msg00039.html) a bug was
reported and the following patch was provided and reported to work fine. I 'm
filing this report to ensure the issue gets proper review and disposition
before the upcoming release.

The original report said:
====================================================
SHELL = /bin/bash
.SHELLFLAGS = -e –o pipefail -c
 
Works
 
.ONESHELL:
SHELL = /bin/bash
.SHELLFLAGS = -e –o pipefail –c
 
Doesn’t.

When the ONESHELL target is set .SHELLFLAGS must be set to a single value,
i.e. –ec.
====================================================


Index: job.c
===================================================================
RCS file: /sources/make/make/job.c,v
retrieving revision 1.215
diff -u -r1.215 job.c
--- job.c       15 Nov 2011 21:12:54 -0000      1.215
+++ job.c       22 Dec 2011 21:31:48 -0000
@@ -2960,12 +2960,21 @@
             *t = '\0';
           }

-       new_argv = xmalloc (4 * sizeof (char *));
-       new_argv[0] = xstrdup(shell);
-       new_argv[1] = xstrdup(shellflags ? shellflags : "");
-       new_argv[2] = line;
-       new_argv[3] = NULL;
-       return new_argv;
+       {
+         char *sfcopy;
+         char *sftok;
+         int n = 0;
+
+         sfcopy = xstrdup(shellflags ? shellflags : "");
+         new_argv = xmalloc ((4 + sflags_len/2) * sizeof (char *));
+         new_argv[n++] = xstrdup(shell);
+         for (sftok = strtok(sfcopy, " "); sftok; sftok = strtok(NULL, " "))
+           new_argv[n++] = xstrdup(sftok);
+         new_argv[n++] = line;
+         new_argv[n] = NULL;
+         free(sfcopy);
+         return new_argv;
+       }
       }

     new_line = alloca ((shell_len*2) + 1 + sflags_len + 1




    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?35397>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]