From 14b2d7effb0afd75dfd1ed2534e331784f7d2977 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Wed, 9 Mar 2016 00:18:57 -0500 Subject: [PATCH] * job.c (exec_command): [SV 47365] Show error on exec failure. --- job.c | 8 +++++++- tests/scripts/features/output-sync | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/job.c b/job.c index be539c7d..96f30ae0 100644 --- a/job.c +++ b/job.c @@ -2322,7 +2322,13 @@ exec_command (char **argv, char **envp) switch (errno) { case ENOENT: - OS (error, NILF, _("%s: Command not found"), argv[0]); + /* We are in the child: don't use the output buffer. + It's not right to run fprintf() here! */ + if (makelevel == 0) + fprintf (stderr, _("%s: %s: Command not found\n"), program, argv[0]); + else + fprintf (stderr, _("%s[%u]: %s: Command not found\n"), + program, makelevel, argv[0]); break; case ENOEXEC: { diff --git a/tests/scripts/features/output-sync b/tests/scripts/features/output-sync index a7534cb7..ff3aff1d 100644 --- a/tests/scripts/features/output-sync +++ b/tests/scripts/features/output-sync @@ -337,5 +337,13 @@ foo: $(OBJS) ; echo $(or $(filter %.o,$^),$(error fail)) !, '-O', "#MAKEFILE#:2: *** fail. Stop.\n", 512); +# SV 47365: Make sure exec failure error messages are shown +# Is "127" not always the same everywhere? We may have to detect it? + +run_make_test(q! +all:: ; @./foo bar baz +!, + '-O', "#MAKE#: ./foo: Command not found\n#MAKEFILE#:2: recipe for target 'all' failed\n#MAKE#: *** [all] Error 127\n", 512); + # This tells the test driver that the perl test script executed properly. 1;