From 75f879f37f8c8e6b671c558ab85b3926c96fbb0c Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Wed, 9 Feb 2000 19:57:15 +0000 Subject: * Fix backslash-escape in targets. * Release 3.78.91. --- ChangeLog | 29 +++++++++++++++++++++-------- README.template | 12 +++++++++++- read.c | 2 +- tests/ChangeLog | 12 +++++++++--- tests/scripts/features/escape | 18 +++++++++++++++--- 5 files changed, 57 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2b0ba8c..cc7cd75 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,12 +1,22 @@ +2000-02-09 Paul D. Smith + + * Version 3.78.91 released. + 2000-02-07 Paul D. Smith + * read.c (read_makefile): Reset *p2 to ':', not *colonp. If any + filenames contained backslashes the resulting output (without + backslashes) will be shorter, so setting *colonp doesn't change + the right character. Fix for PR/1586. + For += target-specific variables we need to remember which variable set we found the variable in, so we can start looking - there in the next iteration (otherwise we'll see it again in - recursively_expand and fail!). This is getting to be a hack; if - it gets any worse we'll have to rethink this entire algorithm; - probably implementing expansion of these separately from the - "normal" expansion, instead of alongside. + from there in the next iteration (otherwise we might see it again + in recursively_expand and fail!). This is turning into a hack; if + it gets any worse we'll have to rethink this entire algorithm... + implementing expansion of these references separately from the + "normal" expansion, say, instead of using the same codepath. + Actually, it's already "worse enough" :-/. * variable.h (recursively_expand_setlist): Rename recursively_expand to add a struct variable_set_list argument, and @@ -15,8 +25,7 @@ variable_set_list argument, and make a macro for lookup_variable. * expand.c (recursively_expand_setlist): Take an extra struct - variable_set_list argument and pass it to - allocated_variable_append(). + variable_set_list argument and pass it to allocated_variable_append(). (reference_variable): Use lookup_variable_setlist() and pass the returned variable_set_list to recursively_expand_setlist. (allocated_variable_append): Take an extra setlist argument and @@ -24,7 +33,7 @@ expansion. If it's null, use current_variable_set_list as before. * variable.c (lookup_variable_setlist): If the LISTP argument is - not nil, return the list where we found the variable in it. + not nil, set it to the list containing the variable we found. 2000-02-04 Paul D. Smith @@ -93,6 +102,10 @@ don't define HAVE_ALLOCA (the workaround code was included twice). +2000-01-26 Paul D. Smith + + * Version 3.78.90 released. + 2000-01-25 Paul D. Smith Change gettext support to use the simplified version in libit 0.7. diff --git a/README.template b/README.template index afb3f69..55001a4 100644 --- a/README.template +++ b/README.template @@ -30,10 +30,18 @@ site. There is information there about ordering hardcopy documentation. You can also find the latest versions of GNU Make from there. -You can send GNU make bug reports to bug-make@gnu.org. Please see the +You can send GNU make bug reports to . Please see the section of the GNU make manual entitled `Problems and Bugs' for information on submitting useful and complete bug reports. +You can also use the FSF's online bug tracking system to submit new +problem reports or search for existing ones. A web interface is +available here: + + http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl + +Use the Category "make". + If you need help using GNU make, try these forums: help-make@gnu.org @@ -46,6 +54,8 @@ Also: - See README.customs for details on integrating GNU make with the Customs distributed build environment from the Pmake distribution. + - See readme.vms for details about GNU Make on OpenVMS. + - See README.W32 for details about GNU Make on Windows NT, 95, or 98. - See README.Amiga for details about GNU Make on AmigaDOS. diff --git a/read.c b/read.c index 67b2a2d..c5434f7 100644 --- a/read.c +++ b/read.c @@ -879,7 +879,7 @@ read_makefile (filename, flags) sizeof (struct nameseq), 1), sizeof (struct nameseq)); - *colonp = ':'; + *p2 = ':'; if (!filenames) { diff --git a/tests/ChangeLog b/tests/ChangeLog index fe8b25c..6fba7ea 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,11 +1,17 @@ +2000-02-07 Paul D. Smith + + * scripts/features/escape: Add a test for backslash-escaped spaces + in a target name (PR/1586). + 2000-02-04 Paul D. Smith - * scripts/features/patspecific_vars: Add a test for PR/1407. + * scripts/features/patspecific_vars: Add a test for pattern-specific + target variables inherited from the parent target (PR/1407). 2000-02-02 Paul D. Smith * run_make_tests.pl (set_more_defaults): Hard-code the LANG to C - to make sure porting order, etc. is predictable. + to make sure sorting order, etc. is predictable. Reported by Andreas Jaeger . * run_make_tests.pl (set_more_defaults): Set the $wtime variable @@ -32,7 +38,7 @@ * scripts/functions/call: Add a test for PR/1517 and PR/1527: make sure $(call ...) doesn't eval its arguments and that you can - invoke foreach from it without infinitely looping. + invoke foreach from it without looping forever. 1999-12-15 Paul D. Smith diff --git a/tests/scripts/features/escape b/tests/scripts/features/escape index 7404387..b1eed16 100644 --- a/tests/scripts/features/escape +++ b/tests/scripts/features/escape @@ -1,11 +1,17 @@ +# -*-perl-*- $description = "Test various types of escaping in makefiles."; -$details = "Make sure that escaping of `:' works in target names."; +$details = "\ +Make sure that escaping of `:' works in target names. +Also make sure escaping of whitespace works in target names"; open(MAKEFILE,"> $makefile"); -print MAKEFILE '$(path)foo : ; @echo cp $^ $@ -'; +print MAKEFILE <<'EOF'; +$(path)foo : ; @echo cp $^ $@ + +foo\ bar: ; @echo 'touch "$@"' +EOF close(MAKEFILE); @@ -34,5 +40,11 @@ $answer = "cp p:foo\n"; $answer = "$makefile:1: *** target pattern contains no `%'. Stop.\n"; &compare_output($answer,&get_logfile(1)); +# TEST 5: This one should work + +&run_make_with_options($makefile, "'foo bar'", &get_logfile, 0); +$answer = "touch \"foo bar\"\n"; +&compare_output($answer,&get_logfile(1)); + # This tells the test driver that the perl test script executed properly. 1; -- cgit v1.2.3