mirror of
https://github.com/mirror/make.git
synced 2025-01-24 03:10:14 +08:00
667d70eac2
The -f, -file, and --makefile options were not properly handled when re-exec'ing due to makefile updates. This problem, plus a patch and tests, was reported by Dmitry Goncharov <dgoncharov@users.sf.net>. While examining this I found another bug: after re-exec we forgot the batch file was temporary and never deleted it. I decided to fix all these problems at once using a different fix than Dmitry's: I created a new internal-only command-line option, --temp-stdin. When reconstructing the make options for a re-exec, replace the -f/--file/--makefile option that reads from stdin with --temp-stdin=<filename> so that the re-exec'd version of make knows it's a temporary batch file and will delete it. We no longer need to add the -o options because the re-exec'd make knows this is a temporary makefile and treats it as such. To simplify, replace the --file and --makefile options taking a filename, with just -f<filename> on re-exec. Some examples of the rewrite: User command line Re-exec command line ----------------- -------------------- -f- --temp-stdin=<batch> --file - --temp-stdin=<batch> -f - --makefile a.mk --temp-stdin=<batch> -fa.mk --file=a.mk -fa.mk -fa.mk -fa.mk -Rf a.mk -Rf a.mk -Rf- -R --temp-stdin=<batch> * src/main.c (stdin_offset): Remember the offset into the makefiles list of the batch file read from stdin. Remove stdin_nm. (struct command_switch): Create a new --temp-stdin option, which also updates the makefiles list. (main): Add the temporary filename to the string cache. Move the tempfile handling after checking makefile arguments for "-" so that files provided via --temp-stdin are also handled specially. When rewriting re-exec options, we may need one more than we had originally so create a new argv list. Walk through the original list and convert it to the new list, following the above process. (decode_switches): Set the stdin_offset flag if we see --temp-stdin. * tests/scripts/options/dash-f: Add many more tests, provided by Dmitry Goncharov <dgoncharov@users.sf.net>. |
||
---|---|---|
.. | ||
features | ||
functions | ||
misc | ||
options | ||
targets | ||
variables | ||
vms | ||
test_template |