[SV 66268] Include newlines in file removal error message

* src/file.c (remove_intermediates): Fix an error message about a
failure to remove an intermediate file.
* tests/scripts/features/patternrules: Add tests.
This commit is contained in:
Dmitry Goncharov 2024-10-01 22:14:31 -04:00 committed by Paul Smith
parent 101bf5636f
commit 93704dd565
2 changed files with 25 additions and 1 deletions

View 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;
}

View 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;