From 4708015f24a69bd0a436483c4d1244d1fb1f2e87 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 2 Jul 1999 11:50:55 +0000 Subject: [PATCH] Update. 1999-07-02 Tim Waugh * posix/wordexp-test.c: Revert bogus 'unset IFS' change. It doesn't belong in the tests, but in the wordexp implementation. * posix/wordexp.c (exec_comm): Unset IFS so that subshells don't split fields. --- ChangeLog | 12 ++++++++++-- manual/socket.texi | 2 +- posix/wordexp-test.c | 24 ++++++++++++------------ posix/wordexp.c | 3 +++ 4 files changed, 26 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 09ef1bc75c..5950790ad1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,12 +1,20 @@ +1999-07-02 Tim Waugh + + * posix/wordexp-test.c: Revert bogus 'unset IFS' change. It + doesn't belong in the tests, but in the wordexp implementation. + + * posix/wordexp.c (exec_comm): Unset IFS so that subshells don't + split fields. + 1999-07-01 Cristian Gafton - + * time/strptime.c (strptime): Initialize the tm struct first to avoid returning bogus results on incomplete data. (strptime_internal): day_of_the_week() requres bith tm_mon and tm_mday to be initializaed. Computer them first if they are not given. (strptime_internal): (have_mon, have_mday): New variables. - + 1999-07-01 Andreas Jaeger * inet/rcmd.c (__icheckhost): Fix typo in last patch. diff --git a/manual/socket.texi b/manual/socket.texi index d77e556214..b89a63f5ce 100644 --- a/manual/socket.texi +++ b/manual/socket.texi @@ -1285,7 +1285,7 @@ parameters. A pointer to the buffer, in which the result is stored, is available in @code{*@var{result}} after the function call successfully returned. If -an error occurs or if no entry is found, the pointer @code{*var{result} +an error occurs or if no entry is found, the pointer @code{*@var{result}} is a null pointer. Success is signalled by a zero return value. If the function failed the return value is an error number. In addition to the errors defined for @code{gethostbyname} it can also be @code{ERANGE}. diff --git a/posix/wordexp-test.c b/posix/wordexp-test.c index 8720389d4b..03a5d3a9b1 100644 --- a/posix/wordexp-test.c +++ b/posix/wordexp-test.c @@ -56,25 +56,25 @@ struct test_case_struct * but does NOT start a new field. */ { 0, ":abc:", "$var", 0, 2, { "", "abc", }, ":" }, - { 0, NULL, "$(unset IFS;echo :abc:)", 0, 2, { "", "abc", }, ":" }, - { 0, NULL, "$(unset IFS;echo :abc:\\ )", 0, 2, { "", "abc", }, ": " }, - { 0, NULL, "$(unset IFS;echo :abc\\ )", 0, 2, { "", "abc", }, ": " }, - { 0, ":abc:", "$(unset IFS;echo $var)", 0, 2, { "", "abc", }, ":" }, + { 0, NULL, "$(echo :abc:)", 0, 2, { "", "abc", }, ":" }, + { 0, NULL, "$(echo :abc:\\ )", 0, 2, { "", "abc", }, ": " }, + { 0, NULL, "$(echo :abc\\ )", 0, 2, { "", "abc", }, ": " }, + { 0, ":abc:", "$(echo $var)", 0, 2, { "", "abc", }, ":" }, { 0, NULL, ":abc:", 0, 1, { ":abc:", }, ":" }, - { 0, NULL, "$(unset IFS;echo :abc:)def", 0, 3, { "", "abc", "def", }, + { 0, NULL, "$(echo :abc:)def", 0, 3, { "", "abc", "def", }, ":" }, - { 0, NULL, "$(unset IFS;echo abc:de)f", 0, 2, { "abc", "def", }, ":" }, - { 0, NULL, "$(unset IFS;echo abc:de)f:ghi", 0, 2, { "abc", "def:ghi", }, + { 0, NULL, "$(echo abc:de)f", 0, 2, { "abc", "def", }, ":" }, + { 0, NULL, "$(echo abc:de)f:ghi", 0, 2, { "abc", "def:ghi", }, ":" }, - { 0, NULL, "abc:d$(unset IFS;echo ef:ghi)", 0, 2, { "abc:def", "ghi", }, + { 0, NULL, "abc:d$(echo ef:ghi)", 0, 2, { "abc:def", "ghi", }, ":" }, - { 0, "abc:", "$var$(unset IFS;echo def:ghi)", 0, 3, { "abc", "def", + { 0, "abc:", "$var$(echo def:ghi)", 0, 3, { "abc", "def", "ghi", }, ":" }, - { 0, "abc:d", "$var$(unset IFS;echo ef:ghi)", 0, 3, { "abc", "def", + { 0, "abc:d", "$var$(echo ef:ghi)", 0, 3, { "abc", "def", "ghi", }, ":" }, - { 0, "def:ghi", "$(unset IFS;echo abc:)$var", 0, 3, { "abc", "def", + { 0, "def:ghi", "$(echo abc:)$var", 0, 3, { "abc", "def", "ghi", }, ":" }, - { 0, "ef:ghi", "$(unset IFS;echo abc:d)$var", 0, 3, { "abc", "def", + { 0, "ef:ghi", "$(echo abc:d)$var", 0, 3, { "abc", "def", "ghi", }, ":" }, /* Simple parameter expansion */ diff --git a/posix/wordexp.c b/posix/wordexp.c index b6cf85af32..dde9183db5 100644 --- a/posix/wordexp.c +++ b/posix/wordexp.c @@ -859,6 +859,9 @@ exec_comm (char *comm, char **word, size_t *word_length, size_t *max_length, } } + /* Make sure the subshell doesn't field-split on our behalf. */ + unsetenv ("IFS"); + __close (fildes[0]); __execve (_PATH_BSHELL, (char *const *) args, __environ);