On Mon, Jul 24, 2017 at 10:43:03AM +0200, Marc Espie wrote:
> On Mon, Jul 24, 2017 at 03:15:32PM +0800, Michael W. Bombardieri wrote:
> > Hi,
> > 
> > In make(1), do_run_command() has a sanity check for a null command string.
> > The error message passes the null string to printf(). Is this any better?
> > 
> > - Michael
> >  

Here's a proper error message:

Index: engine.c
===================================================================
RCS file: /cvs/src/usr.bin/make/engine.c,v
retrieving revision 1.53
diff -u -p -r1.53 engine.c
--- engine.c    9 Jul 2017 15:28:00 -0000       1.53
+++ engine.c    24 Jul 2017 10:56:38 -0000
@@ -734,7 +734,7 @@ setup_engine(void)
 }
 
 static bool
-do_run_command(Job *job)
+do_run_command(Job *job, const char *pre)
 {
        bool silent;    /* Don't print command */
        bool doExecute; /* Execute the command */
@@ -752,7 +752,9 @@ do_run_command(Job *job)
        /* How can we execute a null command ? we warn the user that the
         * command expanded to nothing (is this the right thing to do?).  */
        if (*cmd == '\0') {
-               Error("%s expands to empty string", cmd);
+               Parse_Error(PARSE_WARNING, 
+                   "'%s' expands to '' while building %s", 
+                   pre, job->node->name);
                return false;
        }
 
@@ -833,7 +835,7 @@ job_run_next(Job *job)
                job->next_cmd = Lst_Adv(job->next_cmd);
                if (fatal_errors)
                        Punt(NULL);
-               started = do_run_command(job);
+               started = do_run_command(job, command->string);
                if (started)
                        return false;
                else

Reply via email to