mirror of
https://github.com/mirror/make.git
synced 2026-09-01 04:08:10 +08:00
[SV 46995] Strip leading/trailing space from variable names
* makeint.h: Change MAP_SPACE to MAP_NEWLINE, and add MAP_PATHSEP and MAP_SPACE which is now MAP_BLANK|MAP_NEWLINE. Create NEW_TOKEN(), END_OF_TOKEN(), ISBLANK(), ISSPACE() macros. * main.c (initialize_stopchar_map): Set MAP_NEWLINE only for newline characters. * Convert all uses of isblank() and isspace() to macros. * Examine all uses of isblank() (doesn't accept newlines) and change them wherever possible to ISSPACE() (does accept newlines). * function.c (func_foreach): Strip leading/trailing space. * variable.c (parse_variable_definition): Clean up. * tests/scripts/functions/foreach: Test settings and errors. * tests/scripts/functions/call: Rewrite to new-style. * tests/scripts/misc/bs-nl: Add many more tests for newlines.
This commit is contained in:
@@ -125,5 +125,103 @@ close(MAKEFILE);
|
||||
run_make_with_options($m2, '', get_logfile());
|
||||
compare_output("foo bar\n", get_logfile(1));
|
||||
|
||||
# Test different types of whitespace, and bsnl inside functions
|
||||
|
||||
sub xlate
|
||||
{
|
||||
$_ = $_[0];
|
||||
s/\\r/\r/g;
|
||||
s/\\t/\t/g;
|
||||
s/\\f/\f/g;
|
||||
s/\\v/\v/g;
|
||||
s/\\n/\n/g;
|
||||
return $_;
|
||||
}
|
||||
|
||||
run_make_test(xlate(q!
|
||||
$(foreach\r a \t , b\t c \r ,$(info $a \r ) )
|
||||
all:;@:
|
||||
!),
|
||||
'', "b \r \nc \r \n");
|
||||
|
||||
run_make_test(xlate(q!
|
||||
all:;@:$(foreach\r a \t , b\t c \r ,$(info $a \r ) )
|
||||
!),
|
||||
'', "b \r \nc \r \n");
|
||||
|
||||
run_make_test(xlate(q!
|
||||
$(foreach \
|
||||
\r a \t\
|
||||
, b\t \
|
||||
c \r ,$(info \
|
||||
$a \r ) \
|
||||
)
|
||||
all:;@:
|
||||
!),
|
||||
'', "b \r \nc \r \n");
|
||||
|
||||
run_make_test(xlate(q!
|
||||
all:;@:$(foreach \
|
||||
\r a \t\
|
||||
, b\t \
|
||||
c \r ,$(info \
|
||||
$a \r ) \
|
||||
)
|
||||
!),
|
||||
'', "b \r \nc \r \n");
|
||||
|
||||
run_make_test(xlate(q!
|
||||
define FOO
|
||||
$(foreach
|
||||
\r a \t
|
||||
, b\t
|
||||
c \r ,$(info
|
||||
$a \r )
|
||||
)
|
||||
endef
|
||||
$(FOO)
|
||||
all:;@:
|
||||
!),
|
||||
'', "b \r \nc \r \n");
|
||||
|
||||
run_make_test(xlate(q!
|
||||
define FOO
|
||||
$(foreach
|
||||
\r a \t
|
||||
, b\t
|
||||
c \r ,$(info
|
||||
$a \r )
|
||||
)
|
||||
endef
|
||||
all:;@:$(FOO)
|
||||
!),
|
||||
'', "b \r \nc \r \n");
|
||||
|
||||
# Test variables in recipes that expand to multiple lines
|
||||
|
||||
run_make_test(q!
|
||||
define var
|
||||
|
||||
echo foo
|
||||
|
||||
|
||||
echo bar
|
||||
endef
|
||||
all:;$(var)
|
||||
!,
|
||||
'', "echo foo\nfoo\necho bar\nbar\n");
|
||||
|
||||
run_make_test(q!
|
||||
define var
|
||||
|
||||
echo foo
|
||||
|
||||
@
|
||||
|
||||
echo bar
|
||||
endef
|
||||
all:;$(var)
|
||||
!,
|
||||
'', "echo foo\nfoo\necho bar\nbar\n");
|
||||
|
||||
1;
|
||||
|
||||
Reference in New Issue
Block a user