]> git.ipfire.org Git - thirdparty/make.git/commitdiff
[SV 66268] Include newlines in file removal error message
authorDmitry Goncharov <dgoncharov@users.sf.net>
Wed, 2 Oct 2024 02:14:31 +0000 (22:14 -0400)
committerPaul Smith <psmith@gnu.org>
Wed, 2 Oct 2024 02:14:31 +0000 (22:14 -0400)
* src/file.c (remove_intermediates): Fix an error message about a
failure to remove an intermediate file.
* tests/scripts/features/patternrules: Add tests.

src/file.c
tests/scripts/features/patternrules

index 3b1a8d31008af611fea8cbf817caaf86fb3cfef6..6056bb5689a645eb48bdef837efe8c031a0a7d38 100644 (file)
@@ -432,7 +432,10 @@ remove_intermediates (int sig)
                   }
                 if (status < 0)
                   {
-                    perror_with_name ("\nunlink: ", f->name);
+                    if (doneany)
+                      fputs ("\n", stdout);
+                    fflush (stdout);
+                    perror_with_name ("unlink: ", f->name);
                     /* Start printing over.  */
                     doneany = 0;
                   }
index aab4c3d080d6913daf4f23587aa48095fb23ec5d..24d9cfc04a16441c22ed5674d09c2241a9ac30e7 100644 (file)
@@ -672,5 +672,26 @@ $r%.x: $dollar\$(wordlist 1, 99, ${prefix}%${suffix}.1 ${prefix}%${suffix}.2); \
 }
 }
 
+# SV 66268. An error message about a failure to remove an intermediate file.
+run_make_test(q!
+all: hello.x
+%.x: b/%.q; $(info $@ from $<)
+b/%.q:; @mkdir b; touch $@; chmod -w b
+!, '', "hello.x from b/hello.q\nrm b/hello.q\n#MAKE#: unlink: b/hello.q: $ERR_unreadable_file\n");
+
+chmod(0754, 'b');
+unlink('b/hello.q');
+rmdir('b');
+
+run_make_test(q!
+all: hello.x
+%.x: b/%.q; $(info $@ from $<)
+b/%.q:; @mkdir b; touch $@; chmod -w b
+!, '-s', "hello.x from b/hello.q\n#MAKE#: unlink: b/hello.q: $ERR_unreadable_file\n");
+
+chmod(0754, 'b');
+unlink('b/hello.q');
+rmdir('b');
+
 # This tells the test driver that the perl test script executed properly.
 1;