From: Alexandre Duret-Lutz Date: Thu, 3 Apr 2003 21:38:39 +0000 (+0000) Subject: * automake.in (check_trailing_slash): New function (variation on X-Git-Tag: Release-1-7-3b~22 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=511a4c116a15185786a595aed584e205ccdeac9c;p=thirdparty%2Fautomake.git * automake.in (check_trailing_slash): New function (variation on a patch by Peter Muir). Diagnose whitespaces following trailing backslash. (read_am_file): Use it. * tests/backsl4.test: New file. * tests/Makefile.am (TESTS): Add backsl4.test. Reported by Peter Muir. --- diff --git a/ChangeLog b/ChangeLog index 2e2eaa4f0..be2bb66a0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2003-04-03 Alexandre Duret-Lutz + + * automake.in (check_trailing_slash): New function (variation on + a patch by Peter Muir). Diagnose whitespaces following trailing + backslash. + (read_am_file): Use it. + * tests/backsl4.test: New file. + * tests/Makefile.am (TESTS): Add backsl4.test. + Reported by Peter Muir. + 2003-03-29 Raja R Harinath Speedup Automake::DisjConditions::invert(). @@ -12,7 +22,7 @@ * lib/Automake/tests/Condition.pl (test_reduce): Rename to ... (test_reduce_and): ... this. (test_reduce_or): New. - * lib/Automake/tests/DisjConditions.pl + * lib/Automake/tests/DisjConditions.pl (test_invert): Update to reflect effect of reduce_or(). (test_simplify): Don't skip invert() on larger inputs. diff --git a/automake.in b/automake.in index 4f9df1e90..5983ce903 100755 --- a/automake.in +++ b/automake.in @@ -7365,6 +7365,25 @@ sub target_defined ################################################################ +# &check_trailing_slash ($WHERE, $LINE) +# -------------------------------------- +# Return 1 iff $LINE ends with a slash. +# Might modify $LINE. +sub check_trailing_slash ($\$) +{ + my ($where, $line) = @_; + + # Ignore `##' lines. + return 0 if $$line =~ /$IGNORE_PATTERN/o; + + # Catch and fix a common error. + msg "syntax", $where, "whitespace following trailing backslash" + if $$line =~ s/\\\s+\n$/\\\n/; + + return $$line =~ /\\$/; +} + + # &append_comments ($VARIABLE, $SPACING, $COMMENT) # ------------------------------------------------ # Append $COMMENT to the other comments for $VARIABLE, using @@ -7437,7 +7456,7 @@ sub read_am_file ($$) { last; } - $saw_bk = /\\$/ && ! /$IGNORE_PATTERN/o; + $saw_bk = check_trailing_slash ($where, $_); } # We save the conditional stack on entry, and then check to make @@ -7464,7 +7483,7 @@ sub read_am_file ($$) $_ =~ s/\@MAINT\@//g unless $seen_maint_mode; - my $new_saw_bk = /\\$/ && ! /$IGNORE_PATTERN/o; + my $new_saw_bk = check_trailing_slash ($where, $_); if (/$IGNORE_PATTERN/o) { diff --git a/tests/Makefile.am b/tests/Makefile.am index a35752138..864dc612b 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -42,6 +42,7 @@ auxdir2.test \ backsl.test \ backsl2.test \ backsl3.test \ +backsl4.test \ badline.test \ badprog.test \ block.test \ diff --git a/tests/Makefile.in b/tests/Makefile.in index 9eebb14f0..69cafd729 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -136,6 +136,7 @@ auxdir2.test \ backsl.test \ backsl2.test \ backsl3.test \ +backsl4.test \ badline.test \ badprog.test \ block.test \ diff --git a/tests/backsl4.test b/tests/backsl4.test new file mode 100755 index 000000000..a59324952 --- /dev/null +++ b/tests/backsl4.test @@ -0,0 +1,51 @@ +#! /bin/sh +# Copyright (C) 2003 Free Software Foundation, Inc. +# +# This file is part of GNU Automake. +# +# GNU Automake is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# GNU Automake is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Automake; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# Make sure we diagnose and fix white spaces following backslash. +# Report from Peter Muir. + +. ./defs || exit 1 + +set -e + +echo AC_OUTPUT >>configure.in + +# Note: trailing whitespaces used during the test should not appear as +# trailing whitespaces in this file, or they will get stripped by any +# reasonable editor. + +echo 'bin_SCRIPTS = foo \ ' >Makefile.am +cat >>Makefile.am <<'END' +bar +ok: + : +END +echo 'data_DATA = baz \ ' >>Makefile.am +echo ' fum' >>Makefile.am + +$ACLOCAL +$AUTOCONF +$AUTOMAKE 2>stderr && exit 1 +cat stderr +grep ':1:.*whitespace' stderr +grep ':5:.*whitespace' stderr +./configure +# Older versions of Automake used to produce invalid Makefiles such input. +$MAKE ok