2015-01-02 16:28:19 +00:00
|
|
|
/* Copyright (C) 1997-2015 Free Software Foundation, Inc.
|
1998-03-05 16:42:56 +00:00
|
|
|
This file is part of the GNU C Library.
|
|
|
|
|
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
2001-07-06 04:58:11 +00:00
|
|
|
modify it under the terms of the GNU Lesser General Public
|
|
|
|
License as published by the Free Software Foundation; either
|
|
|
|
version 2.1 of the License, or (at your option) any later version.
|
1998-03-05 16:42:56 +00:00
|
|
|
|
|
|
|
The GNU C Library 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
|
2001-07-06 04:58:11 +00:00
|
|
|
Lesser General Public License for more details.
|
1998-03-05 16:42:56 +00:00
|
|
|
|
2001-07-06 04:58:11 +00:00
|
|
|
You should have received a copy of the GNU Lesser General Public
|
2012-02-09 23:18:22 +00:00
|
|
|
License along with the GNU C Library; if not, see
|
|
|
|
<http://www.gnu.org/licenses/>. */
|
1998-03-05 16:42:56 +00:00
|
|
|
|
1998-03-12 17:26:19 +00:00
|
|
|
#include <sys/stat.h>
|
|
|
|
#include <sys/types.h>
|
2015-03-06 17:13:16 +00:00
|
|
|
#include <sys/mman.h>
|
1998-03-12 17:26:19 +00:00
|
|
|
#include <fcntl.h>
|
|
|
|
#include <unistd.h>
|
1998-03-06 11:39:36 +00:00
|
|
|
#include <pwd.h>
|
1998-03-05 16:42:56 +00:00
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
2000-06-21 12:39:22 +00:00
|
|
|
#include <string.h>
|
1998-03-06 11:39:36 +00:00
|
|
|
#include <wordexp.h>
|
2015-03-09 04:37:31 +00:00
|
|
|
#include <libc-internal.h>
|
1998-03-05 16:42:56 +00:00
|
|
|
|
1998-04-07 16:19:36 +00:00
|
|
|
#define IFS " \n\t"
|
1998-03-08 15:26:29 +00:00
|
|
|
|
2014-11-19 16:44:12 +00:00
|
|
|
extern void *__dso_handle __attribute__ ((__weak__, __visibility__ ("hidden")));
|
|
|
|
extern int __register_atfork (void (*) (void), void (*) (void), void (*) (void), void *);
|
|
|
|
|
|
|
|
static int __app_register_atfork (void (*prepare) (void), void (*parent) (void), void (*child) (void))
|
|
|
|
{
|
|
|
|
return __register_atfork (prepare, parent, child,
|
|
|
|
&__dso_handle == NULL ? NULL : __dso_handle);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Number of forks seen. */
|
|
|
|
static int registered_forks;
|
|
|
|
|
|
|
|
/* For each fork increment the fork count. */
|
|
|
|
static void
|
|
|
|
register_fork (void)
|
|
|
|
{
|
|
|
|
registered_forks++;
|
|
|
|
}
|
|
|
|
|
1998-03-05 16:42:56 +00:00
|
|
|
struct test_case_struct
|
|
|
|
{
|
|
|
|
int retval;
|
|
|
|
const char *env;
|
|
|
|
const char *words;
|
|
|
|
int flags;
|
2001-02-26 19:32:00 +00:00
|
|
|
size_t wordc;
|
1998-03-05 16:42:56 +00:00
|
|
|
const char *wordv[10];
|
1998-04-07 16:19:36 +00:00
|
|
|
const char *ifs;
|
1998-03-05 16:42:56 +00:00
|
|
|
} test_case[] =
|
|
|
|
{
|
1998-09-12 08:42:05 +00:00
|
|
|
/* Simple word- and field-splitting */
|
1998-04-07 16:19:36 +00:00
|
|
|
{ 0, NULL, "one", 0, 1, { "one", }, IFS },
|
|
|
|
{ 0, NULL, "one two", 0, 2, { "one", "two", }, IFS },
|
|
|
|
{ 0, NULL, "one two three", 0, 3, { "one", "two", "three", }, IFS },
|
|
|
|
{ 0, NULL, " \tfoo\t\tbar ", 0, 2, { "foo", "bar", }, IFS },
|
1998-09-15 21:24:37 +00:00
|
|
|
{ 0, NULL, "red , white blue", 0, 4, { "red", ",", "white", "blue", }, " ," },
|
1998-09-12 08:42:05 +00:00
|
|
|
{ 0, NULL, "one two three", 0, 3, { "one", "two", "three", }, "" },
|
|
|
|
{ 0, NULL, "one \"two three\"", 0, 2, { "one", "two three", }, IFS },
|
|
|
|
{ 0, NULL, "one \"two three\"", 0, 2, { "one", "two three", }, "" },
|
|
|
|
{ 0, "two three", "one \"$var\"", 0, 2, { "one", "two three", }, IFS },
|
|
|
|
{ 0, "two three", "one $var", 0, 3, { "one", "two", "three", }, IFS },
|
|
|
|
{ 0, "two three", "one \"$var\"", 0, 2, { "one", "two three", }, "" },
|
|
|
|
{ 0, "two three", "one $var", 0, 2, { "one", "two three", }, "" },
|
1998-09-14 15:22:40 +00:00
|
|
|
|
|
|
|
/* The non-whitespace IFS char at the end delimits the second field
|
|
|
|
* but does NOT start a new field. */
|
|
|
|
{ 0, ":abc:", "$var", 0, 2, { "", "abc", }, ":" },
|
|
|
|
|
1999-07-02 11:50:55 +00:00
|
|
|
{ 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", }, ":" },
|
1998-09-15 21:24:37 +00:00
|
|
|
{ 0, NULL, ":abc:", 0, 1, { ":abc:", }, ":" },
|
1999-07-02 11:50:55 +00:00
|
|
|
{ 0, NULL, "$(echo :abc:)def", 0, 3, { "", "abc", "def", },
|
1999-04-12 23:45:52 +00:00
|
|
|
":" },
|
1999-07-02 11:50:55 +00:00
|
|
|
{ 0, NULL, "$(echo abc:de)f", 0, 2, { "abc", "def", }, ":" },
|
|
|
|
{ 0, NULL, "$(echo abc:de)f:ghi", 0, 2, { "abc", "def:ghi", },
|
1999-04-12 23:45:52 +00:00
|
|
|
":" },
|
1999-07-02 11:50:55 +00:00
|
|
|
{ 0, NULL, "abc:d$(echo ef:ghi)", 0, 2, { "abc:def", "ghi", },
|
1999-04-12 23:45:52 +00:00
|
|
|
":" },
|
1999-07-02 11:50:55 +00:00
|
|
|
{ 0, "abc:", "$var$(echo def:ghi)", 0, 3, { "abc", "def",
|
1999-04-12 23:45:52 +00:00
|
|
|
"ghi", }, ":" },
|
1999-07-02 11:50:55 +00:00
|
|
|
{ 0, "abc:d", "$var$(echo ef:ghi)", 0, 3, { "abc", "def",
|
1999-04-12 23:45:52 +00:00
|
|
|
"ghi", }, ":" },
|
1999-07-02 11:50:55 +00:00
|
|
|
{ 0, "def:ghi", "$(echo abc:)$var", 0, 3, { "abc", "def",
|
1999-04-12 23:45:52 +00:00
|
|
|
"ghi", }, ":" },
|
1999-07-02 11:50:55 +00:00
|
|
|
{ 0, "ef:ghi", "$(echo abc:d)$var", 0, 3, { "abc", "def",
|
1999-04-12 23:45:52 +00:00
|
|
|
"ghi", }, ":" },
|
1998-03-08 15:26:29 +00:00
|
|
|
|
|
|
|
/* Simple parameter expansion */
|
1998-04-07 16:19:36 +00:00
|
|
|
{ 0, "foo", "${var}", 0, 1, { "foo", }, IFS },
|
|
|
|
{ 0, "foo", "$var", 0, 1, { "foo", }, IFS },
|
|
|
|
{ 0, "foo", "\\\"$var\\\"", 0, 1, { "\"foo\"", }, IFS },
|
|
|
|
{ 0, "foo", "%$var%", 0, 1, { "%foo%", }, IFS },
|
|
|
|
{ 0, "foo", "-$var-", 0, 1, { "-foo-", }, IFS },
|
1998-03-08 15:26:29 +00:00
|
|
|
|
|
|
|
/* Simple quote removal */
|
1998-04-07 16:19:36 +00:00
|
|
|
{ 0, NULL, "\"quoted\"", 0, 1, { "quoted", }, IFS },
|
|
|
|
{ 0, "foo", "\"$var\"\"$var\"", 0, 1, { "foofoo", }, IFS },
|
|
|
|
{ 0, NULL, "'singly-quoted'", 0, 1, { "singly-quoted", }, IFS },
|
1999-04-12 09:07:36 +00:00
|
|
|
{ 0, NULL, "contin\\\nuation", 0, 1, { "continuation", }, IFS },
|
1999-11-05 22:33:33 +00:00
|
|
|
{ 0, NULL, "explicit ''", 0, 2, { "explicit", "", }, IFS },
|
|
|
|
{ 0, NULL, "explicit \"\"", 0, 2, { "explicit", "", }, IFS },
|
|
|
|
{ 0, NULL, "explicit ``", 0, 1, { "explicit", }, IFS },
|
1998-03-08 15:26:29 +00:00
|
|
|
|
|
|
|
/* Simple command substitution */
|
1998-04-07 16:19:36 +00:00
|
|
|
{ 0, NULL, "$(echo hello)", 0, 1, { "hello", }, IFS },
|
|
|
|
{ 0, NULL, "$( (echo hello) )", 0, 1, { "hello", }, IFS },
|
|
|
|
{ 0, NULL, "$((echo hello);(echo there))", 0, 2, { "hello", "there", }, IFS },
|
|
|
|
{ 0, NULL, "`echo one two`", 0, 2, { "one", "two", }, IFS },
|
|
|
|
{ 0, NULL, "$(echo ')')", 0, 1, { ")" }, IFS },
|
|
|
|
{ 0, NULL, "$(echo hello; echo)", 0, 1, { "hello", }, IFS },
|
2000-02-24 23:07:31 +00:00
|
|
|
{ 0, NULL, "a$(echo b)c", 0, 1, { "abc", }, IFS },
|
1998-03-08 15:26:29 +00:00
|
|
|
|
|
|
|
/* Simple arithmetic expansion */
|
1998-04-07 16:19:36 +00:00
|
|
|
{ 0, NULL, "$((1 + 1))", 0, 1, { "2", }, IFS },
|
|
|
|
{ 0, NULL, "$((2-3))", 0, 1, { "-1", }, IFS },
|
|
|
|
{ 0, NULL, "$((-1))", 0, 1, { "-1", }, IFS },
|
|
|
|
{ 0, NULL, "$[50+20]", 0, 1, { "70", }, IFS },
|
|
|
|
{ 0, NULL, "$(((2+3)*(4+5)))", 0, 1, { "45", }, IFS },
|
2003-09-18 02:54:32 +00:00
|
|
|
{ 0, NULL, "$((010))", 0, 1, { "8" }, IFS },
|
|
|
|
{ 0, NULL, "$((0x10))", 0, 1, { "16" }, IFS },
|
|
|
|
{ 0, NULL, "$((010+0x10))", 0, 1, { "24" }, IFS },
|
|
|
|
{ 0, NULL, "$((-010+0x10))", 0, 1, { "8" }, IFS },
|
|
|
|
{ 0, NULL, "$((-0x10+010))", 0, 1, { "-8" }, IFS },
|
1998-03-08 15:26:29 +00:00
|
|
|
|
|
|
|
/* Advanced parameter expansion */
|
1998-04-07 16:19:36 +00:00
|
|
|
{ 0, NULL, "${var:-bar}", 0, 1, { "bar", }, IFS },
|
|
|
|
{ 0, NULL, "${var-bar}", 0, 1, { "bar", }, IFS },
|
|
|
|
{ 0, "", "${var:-bar}", 0, 1, { "bar", }, IFS },
|
|
|
|
{ 0, "foo", "${var:-bar}", 0, 1, { "foo", }, IFS },
|
|
|
|
{ 0, "", "${var-bar}", 0, 0, { NULL, }, IFS },
|
|
|
|
{ 0, NULL, "${var:=bar}", 0, 1, { "bar", }, IFS },
|
|
|
|
{ 0, NULL, "${var=bar}", 0, 1, { "bar", }, IFS },
|
|
|
|
{ 0, "", "${var:=bar}", 0, 1, { "bar", }, IFS },
|
|
|
|
{ 0, "foo", "${var:=bar}", 0, 1, { "foo", }, IFS },
|
|
|
|
{ 0, "", "${var=bar}", 0, 0, { NULL, }, IFS },
|
|
|
|
{ 0, "foo", "${var:?bar}", 0, 1, { "foo", }, IFS },
|
|
|
|
{ 0, NULL, "${var:+bar}", 0, 0, { NULL, }, IFS },
|
|
|
|
{ 0, NULL, "${var+bar}", 0, 0, { NULL, }, IFS },
|
|
|
|
{ 0, "", "${var:+bar}", 0, 0, { NULL, }, IFS },
|
|
|
|
{ 0, "foo", "${var:+bar}", 0, 1, { "bar", }, IFS },
|
|
|
|
{ 0, "", "${var+bar}", 0, 1, { "bar", }, IFS },
|
|
|
|
{ 0, "12345", "${#var}", 0, 1, { "5", }, IFS },
|
|
|
|
{ 0, NULL, "${var:-'}'}", 0, 1, { "}", }, IFS },
|
|
|
|
{ 0, NULL, "${var-}", 0, 0, { NULL }, IFS },
|
|
|
|
|
1999-04-12 09:07:36 +00:00
|
|
|
{ 0, "pizza", "${var#${var}}", 0, 0, { NULL }, IFS },
|
|
|
|
{ 0, "pepperoni", "${var%$(echo oni)}", 0, 1, { "pepper" }, IFS },
|
|
|
|
{ 0, "6pack", "${var#$((6))}", 0, 1, { "pack" }, IFS },
|
|
|
|
{ 0, "b*witched", "${var##b*}", 0, 0, { NULL }, IFS },
|
|
|
|
{ 0, "b*witched", "${var##\"b*\"}", 0, 1, { "witched" }, IFS },
|
1998-04-07 16:19:36 +00:00
|
|
|
{ 0, "banana", "${var%na*}", 0, 1, { "bana", }, IFS },
|
|
|
|
{ 0, "banana", "${var%%na*}", 0, 1, { "ba", }, IFS },
|
|
|
|
{ 0, "borabora-island", "${var#*bora}", 0, 1, { "bora-island", }, IFS },
|
1999-04-12 09:07:36 +00:00
|
|
|
{ 0, "borabora-island", "${var##*bora}", 0, 1, { "-island", }, IFS },
|
|
|
|
{ 0, "coconut", "${var##\\*co}", 0, 1, { "coconut", }, IFS },
|
1998-04-07 16:19:36 +00:00
|
|
|
{ 0, "100%", "${var%0%}", 0, 1, { "10" }, IFS },
|
1998-03-08 15:26:29 +00:00
|
|
|
|
1998-03-12 17:26:19 +00:00
|
|
|
/* Pathname expansion */
|
1998-04-07 16:19:36 +00:00
|
|
|
{ 0, NULL, "???", 0, 2, { "one", "two", }, IFS },
|
|
|
|
{ 0, NULL, "[ot]??", 0, 2, { "one", "two", }, IFS },
|
|
|
|
{ 0, NULL, "t*", 0, 2, { "three", "two", }, IFS },
|
|
|
|
{ 0, NULL, "\"t\"*", 0, 2, { "three", "two", }, IFS },
|
1998-03-12 17:26:19 +00:00
|
|
|
|
|
|
|
/* Nested constructs */
|
1998-04-07 16:19:36 +00:00
|
|
|
{ 0, "one two", "$var", 0, 2, { "one", "two", }, IFS },
|
|
|
|
{ 0, "one two three", "$var", 0, 3, { "one", "two", "three", }, IFS },
|
|
|
|
{ 0, " \tfoo\t\tbar ", "$var", 0, 2, { "foo", "bar", }, IFS },
|
|
|
|
{ 0, " red , white blue", "$var", 0, 3, { "red", "white", "blue", }, ", \n\t" },
|
|
|
|
{ 0, " red , white blue", "\"$var\"", 0, 1, { " red , white blue", }, ", \n\t" },
|
|
|
|
{ 0, NULL, "\"$(echo hello there)\"", 0, 1, { "hello there", }, IFS },
|
|
|
|
{ 0, NULL, "\"$(echo \"hello there\")\"", 0, 1, { "hello there", }, IFS },
|
|
|
|
{ 0, NULL, "${var=one two} \"$var\"", 0, 3, { "one", "two", "one two", }, IFS },
|
|
|
|
{ 0, "1", "$(( $(echo 3)+$var ))", 0, 1, { "4", }, IFS },
|
|
|
|
{ 0, NULL, "\"$(echo \"*\")\"", 0, 1, { "*", }, IFS },
|
2000-02-24 23:07:31 +00:00
|
|
|
{ 0, NULL, "\"a\n\n$(echo)b\"", 0, 1, { "a\n\nb", }, IFS },
|
1998-04-07 16:19:36 +00:00
|
|
|
{ 0, "foo", "*$var*", 0, 1, { "*foo*", }, IFS },
|
|
|
|
{ 0, "o thr", "*$var*", 0, 2, { "two", "three" }, IFS },
|
1998-03-12 17:26:19 +00:00
|
|
|
|
1998-09-06 23:45:24 +00:00
|
|
|
/* Different IFS values */
|
1998-09-12 08:42:05 +00:00
|
|
|
{ 0, "a b\tc\nd ", "$var", 0, 4, { "a", "b", "c", "d" }, NULL /* unset */ },
|
|
|
|
{ 0, "a b\tc d ", "$var", 0, 1, { "a b\tc d " }, "" /* `null' */ },
|
|
|
|
{ 0, "a,b c\n, d", "$var", 0, 3, { "a", "b c", " d" }, "\t\n," },
|
1998-09-06 23:45:24 +00:00
|
|
|
|
1998-03-12 17:26:19 +00:00
|
|
|
/* Other things that should succeed */
|
1998-04-07 16:19:36 +00:00
|
|
|
{ 0, NULL, "\\*\"|&;<>\"\\(\\)\\{\\}", 0, 1, { "*|&;<>(){}", }, IFS },
|
|
|
|
{ 0, "???", "$var", 0, 1, { "???", }, IFS },
|
|
|
|
{ 0, NULL, "$var", 0, 0, { NULL, }, IFS },
|
|
|
|
{ 0, NULL, "\"\\n\"", 0, 1, { "\\n", }, IFS },
|
|
|
|
{ 0, NULL, "", 0, 0, { NULL, }, IFS },
|
1998-03-12 17:26:19 +00:00
|
|
|
|
2000-02-24 23:07:31 +00:00
|
|
|
/* Flags not already covered (testit() has special handling for these) */
|
|
|
|
{ 0, NULL, "one two", WRDE_DOOFFS, 2, { "one", "two", }, IFS },
|
|
|
|
{ 0, NULL, "appended", WRDE_APPEND, 3, { "pre1", "pre2", "appended", }, IFS },
|
|
|
|
{ 0, NULL, "appended", WRDE_DOOFFS|WRDE_APPEND, 3, { "pre1", "pre2", "appended", }, IFS },
|
|
|
|
|
1998-03-12 17:26:19 +00:00
|
|
|
/* Things that should fail */
|
1998-09-06 23:45:24 +00:00
|
|
|
{ WRDE_BADCHAR, NULL, "new\nline", 0, 0, { NULL, }, "" /* \n not IFS */ },
|
1998-04-07 16:19:36 +00:00
|
|
|
{ WRDE_BADCHAR, NULL, "pipe|symbol", 0, 0, { NULL, }, IFS },
|
|
|
|
{ WRDE_BADCHAR, NULL, "&ersand", 0, 0, { NULL, }, IFS },
|
|
|
|
{ WRDE_BADCHAR, NULL, "semi;colon", 0, 0, { NULL, }, IFS },
|
|
|
|
{ WRDE_BADCHAR, NULL, "<greater", 0, 0, { NULL, }, IFS },
|
|
|
|
{ WRDE_BADCHAR, NULL, "less>", 0, 0, { NULL, }, IFS },
|
|
|
|
{ WRDE_BADCHAR, NULL, "(open-paren", 0, 0, { NULL, }, IFS },
|
|
|
|
{ WRDE_BADCHAR, NULL, "close-paren)", 0, 0, { NULL, }, IFS },
|
|
|
|
{ WRDE_BADCHAR, NULL, "{open-brace", 0, 0, { NULL, }, IFS },
|
|
|
|
{ WRDE_BADCHAR, NULL, "close-brace}", 0, 0, { NULL, }, IFS },
|
|
|
|
{ WRDE_CMDSUB, NULL, "$(ls)", WRDE_NOCMD, 0, { NULL, }, IFS },
|
|
|
|
{ WRDE_BADVAL, NULL, "$var", WRDE_UNDEF, 0, { NULL, }, IFS },
|
|
|
|
{ WRDE_BADVAL, NULL, "$9", WRDE_UNDEF, 0, { NULL, }, IFS },
|
|
|
|
{ WRDE_SYNTAX, NULL, "$[50+20))", 0, 0, { NULL, }, IFS },
|
|
|
|
{ WRDE_SYNTAX, NULL, "${%%noparam}", 0, 0, { NULL, }, IFS },
|
|
|
|
{ WRDE_SYNTAX, NULL, "${missing-brace", 0, 0, { NULL, }, IFS },
|
2000-02-24 23:07:31 +00:00
|
|
|
{ WRDE_SYNTAX, NULL, "$(for i in)", 0, 0, { NULL, }, IFS },
|
1998-04-07 16:19:36 +00:00
|
|
|
{ WRDE_SYNTAX, NULL, "$((2+))", 0, 0, { NULL, }, IFS },
|
|
|
|
{ WRDE_SYNTAX, NULL, "`", 0, 0, { NULL, }, IFS },
|
2003-09-18 02:54:32 +00:00
|
|
|
{ WRDE_SYNTAX, NULL, "$((010+4+))", 0, 0, { NULL }, IFS },
|
2014-11-19 16:44:12 +00:00
|
|
|
/* Test for CVE-2014-7817. We test 3 combinations of command
|
|
|
|
substitution inside an arithmetic expression to make sure that
|
|
|
|
no commands are executed and error is returned. */
|
|
|
|
{ WRDE_CMDSUB, NULL, "$((`echo 1`))", WRDE_NOCMD, 0, { NULL, }, IFS },
|
|
|
|
{ WRDE_CMDSUB, NULL, "$((1+`echo 1`))", WRDE_NOCMD, 0, { NULL, }, IFS },
|
|
|
|
{ WRDE_CMDSUB, NULL, "$((1+$((`echo 1`))))", WRDE_NOCMD, 0, { NULL, }, IFS },
|
1998-04-07 16:19:36 +00:00
|
|
|
|
2015-03-09 14:22:36 +00:00
|
|
|
{ WRDE_SYNTAX, NULL, "`\\", 0, 0, { NULL, }, IFS }, /* BZ 18042 */
|
|
|
|
{ WRDE_SYNTAX, NULL, "${", 0, 0, { NULL, }, IFS }, /* BZ 18043 */
|
|
|
|
{ WRDE_SYNTAX, NULL, "L${a:", 0, 0, { NULL, }, IFS }, /* BZ 18043#c4 */
|
2015-03-23 15:12:38 +00:00
|
|
|
{ WRDE_SYNTAX, NULL, "$[1/0]", WRDE_NOCMD, 0, {NULL, }, IFS }, /* BZ 18100 */
|
2015-03-09 04:37:31 +00:00
|
|
|
|
1998-04-07 16:19:36 +00:00
|
|
|
{ -1, NULL, NULL, 0, 0, { NULL, }, IFS },
|
1998-03-05 16:42:56 +00:00
|
|
|
};
|
|
|
|
|
1998-03-06 11:39:36 +00:00
|
|
|
static int testit (struct test_case_struct *tc);
|
Update.
1998-04-20 18:00 Ulrich Drepper <drepper@cygnus.com>
* libc.map: Add __dgettext to GLIBC_2.0 and __libc_longjmp, and
__libc_siglongjmp to GLIBC_2.1.
* elf/dl-minimal.c (__assert_perror_fail): Don't use strerror, use
__strerror_r.
* iconv/Makefile: Don't run tests now.
* iconv/iconv_prog.c (process_block): If loop is repeated, call iconv
with correct output buffer.
Major rewrite of the low-level gconv functionality.
* iconv/gconv.c: Rewritten.
* iconv/gconv.h: Likewise.
* iconv/gconv_builtin.c: Likewise.
* iconv/gconv_builtin.h: Likewise.
* iconv/gconv_conf.c: Likewise.
* iconv/gconv_int.h: Likewise.
* iconv/gconv_open.c: Likewise.
* iconv/gconv_simple.c: Likewise.
* iconv/iconv.c: Likewise.
* iconvdata/8bit-gap.c: Likewise.
* iconvdata/8bit-generic.c: Likewise.
* iconvdata/Makefile: Likewise.
* iconvdata/big5.c: Likewise.
* iconvdata/cns11643.c: Likewise.
* iconvdata/cns11643.h: Likewise.
* iconvdata/cns11643l1.c: Likewise.
* iconvdata/cns11643l1.h: Likewise.
* iconvdata/ebcdic-at-de-a.c: Likewise.
* iconvdata/ebcdic-at-de.c: Likewise.
* iconvdata/ebcdic-ca-fr.c: Likewise.
* iconvdata/euccn.c: Likewise.
* iconvdata/eucjp.c: Likewise.
* iconvdata/euckr.c: Likewise.
* iconvdata/euctw.c: Likewise.
* iconvdata/gb2312.c: Likewise.
* iconvdata/gb2312.h: Likewise.
* iconvdata/hp-roman8.c: Likewise.
* iconvdata/iso646.c: Likewise.
* iconvdata/iso6937.c: Likewise.
* iconvdata/iso8859-1.c: Likewise.
* iconvdata/iso8859-10.c: Likewise.
* iconvdata/iso8859-2.c: Likewise.
* iconvdata/iso8859-3.c: Likewise.
* iconvdata/iso8859-4.c: Likewise.
* iconvdata/iso8859-5.c: Likewise.
* iconvdata/iso8859-6.c: Likewise.
* iconvdata/iso8859-7.c: Likewise.
* iconvdata/iso8859-8.c: Likewise.
* iconvdata/iso8859-9.c: Likewise.
* iconvdata/jis0201.c: Likewise.
* iconvdata/jis0201.h: Likewise.
* iconvdata/jis0208.c: Likewise.
* iconvdata/jis0208.h: Likewise.
* iconvdata/jis0212.c: Likewise.
* iconvdata/jis0212.h: Likewise.
* iconvdata/johab.c: Likewise.
* iconvdata/koi-8.c: Likewise.
* iconvdata/koi8-r.c: Likewise.
* iconvdata/ksc5601.c: Likewise.
* iconvdata/ksc5601.h: Likewise.
* iconvdata/latin-greek-1.c: Likewise.
* iconvdata/latin-greek.c: Likewise.
* iconvdata/run-iconv-test.sh: Likewise.
* iconvdata/sjis.c: Likewise.
* iconvdata/t61.c: Likewise.
* iconvdata/uhc.c: Likewise.
* wcsmbs/btowc.c: Likewise.
* wcsmbs/mbrtowc.c: Likewise.
* wcsmbs/mbsnrtowcs.c: Likewise.
* wcsmbs/mbsrtowcs.c: Likewise.
* wcsmbs/wcrtomb.c: Likewise.
* wcsmbs/wcsmbsload.c: Likewise.
* wcsmbs/wcsnrtombs.c: Likewise.
* wcsmbs/wcsrtombs.c: Likewise.
* wcsmbs/wctob.c: Likewise.
* iconv/loop.c: New file.
* iconv/skeleton.c: New file.
* stdlib/mblen.c: Handle empty input string correctly.
* stdlib/mbtowc.c: Likewise.
* posix/getopt.c: Various cleanups.
* sysdeps/arm/bits/setjmp.h: Add copyright text.
* sysdeps/i386/bits/setjmp.h: Likewise.
* sysdeps/m68k/bits/setjmp.h: Likewise.
* sysdeps/powerpc/bits/setjmp.h: Likewise.
* sysdeps/sparc/sparc32/bits/setjmp.h: Likewise.
* sysdeps/generic/longjmp.c: Rename function to __libc_siglongjmp
and make longjmp weak alias.
1998-04-18 20:29 Philip Blundell <Philip.Blundell@pobox.com>
* iconv/Makefile (routines): Only include gconv_dl if building for
an ELF system - dynamic linking is not available on a.out.
(CFLAGS-gconv_conf.c): Define STATIC_GCONV if omitting gconv_dl
due to above check.
* iconv/gconv_db.c: If STATIC_GCONV defined, don't try to call
routines from gconv_dl.
1998-04-17 Gordon Matzigkeit <gord@profitpress.com>
* csu/init.c (_IO_stdin_used): Protect with USE_IN_LIBIO so that
we can compile without libio.
1998-04-20 16:28 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/mach/hurd/Subdirs: Remove login.
1998-04-11 Gordon Matzigkeit <gord@profitpress.com>
* db2/compat.h: Include <errno.h>, to make sure we get the
definition of EFTYPE before we define it ourselves.
1998-04-10 Gordon Matzigkeit <gord@profitpress.com>
* sysdeps/generic/bits/socket.h: Protect against multiple inclusion.
* sysdeps/mach/hurd/bits/ioctls.h: Likewise.
Fix typo to allow inclusion from sys/ioctl.h again.
1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* iconvdata/*.[ch]: Clean up namespace. Optimize character lookup.
1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* libc.map: Export __strerror_r. Remove _strerror_internal.
1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/generic/strcasestr.c: Undefine strcasestr, not strstr.
Also undefine __strcasestr.
1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* posix/regex.c: Rename __re_max_failures back to re_max_failures,
aliases do not work with global variables due to copy relocations.
1998-04-20 15:12 Ulrich Drepper <drepper@cygnus.com>
* manual/creature.texi: Fix type. Patch by Andreas Schwab.
1998-04-20 13:47 Ulrich Drepper <drepper@cygnus.com>
* signal/sighold.c: Include stddef.h for NULL definition.
* signal/sigrelse.c: Likewise.
* sysdeps/posix/sigignore.c: Likewise.
* sysdeps/posix/sigset.c: Likewise.
* sysdeps/posix/waitid.c: Likewise.
* sysdeps/unix/sysv/linux/rt_sigsuspend.c: Likewise.
* sysdeps/unix/sysv/linux/rt_sigtimedwait.c: Likewise.
* sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise.
* wcsmbs/mbsrtowcs.c: Include stdlib.h for MB_CUR_MAX.
Patch by Franz Sirl <Franz.Sirl-kernel@lauterbach.com>.
1998-04-13 Mark Kettenis <kettenis@phys.uva.nl>
* login/Makefile (headers): Remove utmpx.h and bits/utmpx.h.
* login/getutent.c (getutxent): Remove alias.
* login/getutent_r.c (setutxent, pututxline, endutxent):
Remove aliases.
* login/getutid.c (getutxid): Remove alias.
* login/getutline.c (getutxline): Remove alias.
* login/utmp.h: Add prototypes for __updwtmp, __getutent,
__getutid, __getutline and __pututline.
* login/utmpx.h: Moved to ...
* sysdeps/gnu/utmpx.h: ... here. [__USE_GNU]: Define UTMPX_FILE,
UTMPX_FILENAME, WTMPX_FILE and WTMPX_FILENAME, declare utmpxname
and updwtmpx.
* login/updwtmp.c: Moved to ...
* sysdeps/generic/updwtmp.c: ... here. (updwtmp): Generalized by
allowing file name transformation.
* sysdeps/gnu/updwtmp.c: New file. Use generic implementation with
additional file name transformation.
* sysdeps/unix/sysv/linux/updwtmp.c: Likewise.
* login/utmp_file.c: Moved to ...
* sysdeps/generic/utmp_file.c: ... here. (setutent_file):
Generalized by allowing file name transformation. Do not
print error message. Library functions should not print them.
Reported by Jim Meyering.
* sysdeps/gnu/utmp_file.c: New file. Use generic implementation
with additional file name transformation.
* sysdeps/unix/sysv/linux/utmp_file.c: Likewise.
* sysdeps/gnu/Makefile [$(subdir)=login] (sysdep_routines): Add
setutxent, getutxent, endutxent, getutxid, getutxid, getutxline,
pututxline, utmpxname and updwtmpx. (sysdep_headers): Add utmpx.h
and bits/utmpx.h.
* sysdeps/gnu/bits/utmpx.h [__USE_GNU] Include paths.h.
(_PATH_UTMPX): Define to _PATH_UTMP. (_PATH_WTMPX): Define to
_PATH_WTMPX. (RUN_LVL): Define only if __USE_GNU. (ACCOUNTING):
Define if __USE_GNU.
* sysdeps/gnu/setutxent.c: New file.
* sysdeps/gnu/getutxent.c: New file.
* sysdeps/gnu/endutxent.c: New file.
* sysdeps/gnu/getutxid.c: New file.
* sysdeps/gnu/getutxline.c: New file.
* sysdeps/gnu/pututxline.c: New file.
* sysdeps/gnu/utmpxname.c: New file.
* sysdeps/gnu/updwtmpx.c: New file.
* sysdeps/unix/sysv/linux/paths.h (_PATH_UTMP_DB): Remove.
* sysdeps/generic/bits/utmpx.h: Remove.
1998-04-20 Ulrich Drepper <drepper@cygnus.com>
* posix/wordexp-test.c (main): Initialize ifs element of ts for
~root test.
1998-04-17 07:53 H.J. Lu <hjl@gnu.org>
* sysdeps/unix/sysv/linux/i386/s_pread64.S: Fix a typo.
1998-04-17 11:32 Ulrich Drepper <drepper@cygnus.com>
* libio/oldfileops.c (_IO_old_file_seekoff): Define temporary st
variable using _G_stat64.
* libio/fileops.c: Remove macro definition of fstat, it is in the
global header.
Reported by Thorsten Kukuk <kukuk@weber.uni-paderborn.de>.
1998-04-17 Philip Blundell <pb@nexus.co.uk>
* sysdeps/arm/strlen.S: New file, based on code by Matthew Wilcox
<willy@odie.barnet.ac.uk>.
1998-04-16 Philip Blundell <Philip.Blundell@pobox.com>
* inet/netinet/in.h (IN6_IS_ADDR_MC_NODELOCAL): New macro,
required by IPv6 Basic API.
(IN6_IS_ADDR_MC_LINKLOCAL): Likewise.
(IN6_IS_ADDR_MC_SITELOCAL): Likewise.
(IN6_IS_ADDR_MC_ORGLOCAL): Likewise.
(IN6_IS_ADDR_MC_GLOBAL): Likewise.
1998-04-20 18:41:05 +00:00
|
|
|
static int tests;
|
1998-03-06 11:39:36 +00:00
|
|
|
|
2000-12-27 20:26:07 +00:00
|
|
|
static void
|
1998-03-10 18:04:16 +00:00
|
|
|
command_line_test (const char *words)
|
|
|
|
{
|
|
|
|
wordexp_t we;
|
|
|
|
int i;
|
|
|
|
int retval = wordexp (words, &we, 0);
|
|
|
|
printf ("wordexp returned %d\n", retval);
|
|
|
|
for (i = 0; i < we.we_wordc; i++)
|
|
|
|
printf ("we_wordv[%d] = \"%s\"\n", i, we.we_wordv[i]);
|
|
|
|
}
|
|
|
|
|
1998-03-05 16:42:56 +00:00
|
|
|
int
|
1998-03-10 18:04:16 +00:00
|
|
|
main (int argc, char *argv[])
|
1998-03-05 16:42:56 +00:00
|
|
|
{
|
1998-03-16 13:39:33 +00:00
|
|
|
const char *globfile[] = { "one", "two", "three", NULL };
|
1998-03-12 17:26:19 +00:00
|
|
|
char tmpdir[32];
|
1998-03-06 11:39:36 +00:00
|
|
|
struct passwd *pw;
|
1998-03-18 14:42:25 +00:00
|
|
|
const char *cwd;
|
1998-03-05 16:42:56 +00:00
|
|
|
int test;
|
|
|
|
int fail = 0;
|
1998-03-16 13:39:33 +00:00
|
|
|
int i;
|
2000-02-24 23:07:31 +00:00
|
|
|
struct test_case_struct ts;
|
1998-03-05 16:42:56 +00:00
|
|
|
|
1998-03-10 18:04:16 +00:00
|
|
|
if (argc > 1)
|
|
|
|
{
|
|
|
|
command_line_test (argv[1]);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
1998-03-16 13:39:33 +00:00
|
|
|
cwd = getcwd (NULL, 0);
|
1998-03-12 17:26:19 +00:00
|
|
|
|
|
|
|
/* Set up arena for pathname expansion */
|
|
|
|
tmpnam (tmpdir);
|
1998-03-16 13:39:33 +00:00
|
|
|
if (mkdir (tmpdir, S_IRWXU) || chdir (tmpdir))
|
1998-03-12 17:26:19 +00:00
|
|
|
return -1;
|
1998-03-16 13:39:33 +00:00
|
|
|
else
|
|
|
|
{
|
|
|
|
int fd;
|
|
|
|
|
|
|
|
for (i = 0; globfile[i]; ++i)
|
|
|
|
if ((fd = creat (globfile[i], S_IRUSR | S_IWUSR)) == -1
|
|
|
|
|| close (fd))
|
|
|
|
return -1;
|
|
|
|
}
|
1998-03-12 17:26:19 +00:00
|
|
|
|
2014-11-19 16:44:12 +00:00
|
|
|
/* If we are not allowed to do command substitution, we install
|
|
|
|
fork handlers to verify that no forks happened. No forks should
|
|
|
|
happen at all if command substitution is disabled. */
|
|
|
|
if (__app_register_atfork (register_fork, NULL, NULL) != 0)
|
|
|
|
{
|
|
|
|
printf ("Failed to register fork handler.\n");
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
1998-03-11 15:33:24 +00:00
|
|
|
for (test = 0; test_case[test].retval != -1; test++)
|
|
|
|
if (testit (&test_case[test]))
|
|
|
|
++fail;
|
|
|
|
|
1999-11-05 22:33:33 +00:00
|
|
|
/* Tilde-expansion tests. */
|
1998-03-06 11:39:36 +00:00
|
|
|
pw = getpwnam ("root");
|
|
|
|
if (pw != NULL)
|
1998-03-05 16:42:56 +00:00
|
|
|
{
|
2000-02-24 23:07:31 +00:00
|
|
|
ts.retval = 0;
|
|
|
|
ts.env = NULL;
|
|
|
|
ts.words = "~root ";
|
|
|
|
ts.flags = 0;
|
|
|
|
ts.wordc = 1;
|
|
|
|
ts.wordv[0] = pw->pw_dir;
|
|
|
|
ts.ifs = IFS;
|
|
|
|
|
2000-03-14 09:09:43 +00:00
|
|
|
if (testit (&ts))
|
|
|
|
++fail;
|
|
|
|
|
|
|
|
ts.retval = 0;
|
|
|
|
ts.env = pw->pw_dir;
|
|
|
|
ts.words = "${var#~root}x";
|
|
|
|
ts.flags = 0;
|
|
|
|
ts.wordc = 1;
|
|
|
|
ts.wordv[0] = "x";
|
|
|
|
ts.ifs = IFS;
|
|
|
|
|
2000-02-24 23:07:31 +00:00
|
|
|
if (testit (&ts))
|
|
|
|
++fail;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* "~" expands to value of $HOME when HOME is set */
|
|
|
|
|
|
|
|
setenv ("HOME", "/dummy/home", 1);
|
|
|
|
ts.retval = 0;
|
|
|
|
ts.env = NULL;
|
|
|
|
ts.words = "~ ~/foo";
|
|
|
|
ts.flags = 0;
|
|
|
|
ts.wordc = 2;
|
|
|
|
ts.wordv[0] = "/dummy/home";
|
|
|
|
ts.wordv[1] = "/dummy/home/foo";
|
|
|
|
ts.ifs = IFS;
|
|
|
|
|
|
|
|
if (testit (&ts))
|
|
|
|
++fail;
|
1998-03-06 11:39:36 +00:00
|
|
|
|
2000-02-24 23:07:31 +00:00
|
|
|
/* "~" expands to home dir from passwd file if HOME is not set */
|
|
|
|
|
|
|
|
pw = getpwuid (getuid ());
|
|
|
|
if (pw != NULL)
|
|
|
|
{
|
|
|
|
unsetenv ("HOME");
|
1998-03-06 11:39:36 +00:00
|
|
|
ts.retval = 0;
|
|
|
|
ts.env = NULL;
|
2000-02-24 23:07:31 +00:00
|
|
|
ts.words = "~";
|
1998-03-06 11:39:36 +00:00
|
|
|
ts.flags = 0;
|
|
|
|
ts.wordc = 1;
|
|
|
|
ts.wordv[0] = pw->pw_dir;
|
Update.
1998-04-20 18:00 Ulrich Drepper <drepper@cygnus.com>
* libc.map: Add __dgettext to GLIBC_2.0 and __libc_longjmp, and
__libc_siglongjmp to GLIBC_2.1.
* elf/dl-minimal.c (__assert_perror_fail): Don't use strerror, use
__strerror_r.
* iconv/Makefile: Don't run tests now.
* iconv/iconv_prog.c (process_block): If loop is repeated, call iconv
with correct output buffer.
Major rewrite of the low-level gconv functionality.
* iconv/gconv.c: Rewritten.
* iconv/gconv.h: Likewise.
* iconv/gconv_builtin.c: Likewise.
* iconv/gconv_builtin.h: Likewise.
* iconv/gconv_conf.c: Likewise.
* iconv/gconv_int.h: Likewise.
* iconv/gconv_open.c: Likewise.
* iconv/gconv_simple.c: Likewise.
* iconv/iconv.c: Likewise.
* iconvdata/8bit-gap.c: Likewise.
* iconvdata/8bit-generic.c: Likewise.
* iconvdata/Makefile: Likewise.
* iconvdata/big5.c: Likewise.
* iconvdata/cns11643.c: Likewise.
* iconvdata/cns11643.h: Likewise.
* iconvdata/cns11643l1.c: Likewise.
* iconvdata/cns11643l1.h: Likewise.
* iconvdata/ebcdic-at-de-a.c: Likewise.
* iconvdata/ebcdic-at-de.c: Likewise.
* iconvdata/ebcdic-ca-fr.c: Likewise.
* iconvdata/euccn.c: Likewise.
* iconvdata/eucjp.c: Likewise.
* iconvdata/euckr.c: Likewise.
* iconvdata/euctw.c: Likewise.
* iconvdata/gb2312.c: Likewise.
* iconvdata/gb2312.h: Likewise.
* iconvdata/hp-roman8.c: Likewise.
* iconvdata/iso646.c: Likewise.
* iconvdata/iso6937.c: Likewise.
* iconvdata/iso8859-1.c: Likewise.
* iconvdata/iso8859-10.c: Likewise.
* iconvdata/iso8859-2.c: Likewise.
* iconvdata/iso8859-3.c: Likewise.
* iconvdata/iso8859-4.c: Likewise.
* iconvdata/iso8859-5.c: Likewise.
* iconvdata/iso8859-6.c: Likewise.
* iconvdata/iso8859-7.c: Likewise.
* iconvdata/iso8859-8.c: Likewise.
* iconvdata/iso8859-9.c: Likewise.
* iconvdata/jis0201.c: Likewise.
* iconvdata/jis0201.h: Likewise.
* iconvdata/jis0208.c: Likewise.
* iconvdata/jis0208.h: Likewise.
* iconvdata/jis0212.c: Likewise.
* iconvdata/jis0212.h: Likewise.
* iconvdata/johab.c: Likewise.
* iconvdata/koi-8.c: Likewise.
* iconvdata/koi8-r.c: Likewise.
* iconvdata/ksc5601.c: Likewise.
* iconvdata/ksc5601.h: Likewise.
* iconvdata/latin-greek-1.c: Likewise.
* iconvdata/latin-greek.c: Likewise.
* iconvdata/run-iconv-test.sh: Likewise.
* iconvdata/sjis.c: Likewise.
* iconvdata/t61.c: Likewise.
* iconvdata/uhc.c: Likewise.
* wcsmbs/btowc.c: Likewise.
* wcsmbs/mbrtowc.c: Likewise.
* wcsmbs/mbsnrtowcs.c: Likewise.
* wcsmbs/mbsrtowcs.c: Likewise.
* wcsmbs/wcrtomb.c: Likewise.
* wcsmbs/wcsmbsload.c: Likewise.
* wcsmbs/wcsnrtombs.c: Likewise.
* wcsmbs/wcsrtombs.c: Likewise.
* wcsmbs/wctob.c: Likewise.
* iconv/loop.c: New file.
* iconv/skeleton.c: New file.
* stdlib/mblen.c: Handle empty input string correctly.
* stdlib/mbtowc.c: Likewise.
* posix/getopt.c: Various cleanups.
* sysdeps/arm/bits/setjmp.h: Add copyright text.
* sysdeps/i386/bits/setjmp.h: Likewise.
* sysdeps/m68k/bits/setjmp.h: Likewise.
* sysdeps/powerpc/bits/setjmp.h: Likewise.
* sysdeps/sparc/sparc32/bits/setjmp.h: Likewise.
* sysdeps/generic/longjmp.c: Rename function to __libc_siglongjmp
and make longjmp weak alias.
1998-04-18 20:29 Philip Blundell <Philip.Blundell@pobox.com>
* iconv/Makefile (routines): Only include gconv_dl if building for
an ELF system - dynamic linking is not available on a.out.
(CFLAGS-gconv_conf.c): Define STATIC_GCONV if omitting gconv_dl
due to above check.
* iconv/gconv_db.c: If STATIC_GCONV defined, don't try to call
routines from gconv_dl.
1998-04-17 Gordon Matzigkeit <gord@profitpress.com>
* csu/init.c (_IO_stdin_used): Protect with USE_IN_LIBIO so that
we can compile without libio.
1998-04-20 16:28 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/mach/hurd/Subdirs: Remove login.
1998-04-11 Gordon Matzigkeit <gord@profitpress.com>
* db2/compat.h: Include <errno.h>, to make sure we get the
definition of EFTYPE before we define it ourselves.
1998-04-10 Gordon Matzigkeit <gord@profitpress.com>
* sysdeps/generic/bits/socket.h: Protect against multiple inclusion.
* sysdeps/mach/hurd/bits/ioctls.h: Likewise.
Fix typo to allow inclusion from sys/ioctl.h again.
1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* iconvdata/*.[ch]: Clean up namespace. Optimize character lookup.
1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* libc.map: Export __strerror_r. Remove _strerror_internal.
1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/generic/strcasestr.c: Undefine strcasestr, not strstr.
Also undefine __strcasestr.
1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* posix/regex.c: Rename __re_max_failures back to re_max_failures,
aliases do not work with global variables due to copy relocations.
1998-04-20 15:12 Ulrich Drepper <drepper@cygnus.com>
* manual/creature.texi: Fix type. Patch by Andreas Schwab.
1998-04-20 13:47 Ulrich Drepper <drepper@cygnus.com>
* signal/sighold.c: Include stddef.h for NULL definition.
* signal/sigrelse.c: Likewise.
* sysdeps/posix/sigignore.c: Likewise.
* sysdeps/posix/sigset.c: Likewise.
* sysdeps/posix/waitid.c: Likewise.
* sysdeps/unix/sysv/linux/rt_sigsuspend.c: Likewise.
* sysdeps/unix/sysv/linux/rt_sigtimedwait.c: Likewise.
* sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise.
* wcsmbs/mbsrtowcs.c: Include stdlib.h for MB_CUR_MAX.
Patch by Franz Sirl <Franz.Sirl-kernel@lauterbach.com>.
1998-04-13 Mark Kettenis <kettenis@phys.uva.nl>
* login/Makefile (headers): Remove utmpx.h and bits/utmpx.h.
* login/getutent.c (getutxent): Remove alias.
* login/getutent_r.c (setutxent, pututxline, endutxent):
Remove aliases.
* login/getutid.c (getutxid): Remove alias.
* login/getutline.c (getutxline): Remove alias.
* login/utmp.h: Add prototypes for __updwtmp, __getutent,
__getutid, __getutline and __pututline.
* login/utmpx.h: Moved to ...
* sysdeps/gnu/utmpx.h: ... here. [__USE_GNU]: Define UTMPX_FILE,
UTMPX_FILENAME, WTMPX_FILE and WTMPX_FILENAME, declare utmpxname
and updwtmpx.
* login/updwtmp.c: Moved to ...
* sysdeps/generic/updwtmp.c: ... here. (updwtmp): Generalized by
allowing file name transformation.
* sysdeps/gnu/updwtmp.c: New file. Use generic implementation with
additional file name transformation.
* sysdeps/unix/sysv/linux/updwtmp.c: Likewise.
* login/utmp_file.c: Moved to ...
* sysdeps/generic/utmp_file.c: ... here. (setutent_file):
Generalized by allowing file name transformation. Do not
print error message. Library functions should not print them.
Reported by Jim Meyering.
* sysdeps/gnu/utmp_file.c: New file. Use generic implementation
with additional file name transformation.
* sysdeps/unix/sysv/linux/utmp_file.c: Likewise.
* sysdeps/gnu/Makefile [$(subdir)=login] (sysdep_routines): Add
setutxent, getutxent, endutxent, getutxid, getutxid, getutxline,
pututxline, utmpxname and updwtmpx. (sysdep_headers): Add utmpx.h
and bits/utmpx.h.
* sysdeps/gnu/bits/utmpx.h [__USE_GNU] Include paths.h.
(_PATH_UTMPX): Define to _PATH_UTMP. (_PATH_WTMPX): Define to
_PATH_WTMPX. (RUN_LVL): Define only if __USE_GNU. (ACCOUNTING):
Define if __USE_GNU.
* sysdeps/gnu/setutxent.c: New file.
* sysdeps/gnu/getutxent.c: New file.
* sysdeps/gnu/endutxent.c: New file.
* sysdeps/gnu/getutxid.c: New file.
* sysdeps/gnu/getutxline.c: New file.
* sysdeps/gnu/pututxline.c: New file.
* sysdeps/gnu/utmpxname.c: New file.
* sysdeps/gnu/updwtmpx.c: New file.
* sysdeps/unix/sysv/linux/paths.h (_PATH_UTMP_DB): Remove.
* sysdeps/generic/bits/utmpx.h: Remove.
1998-04-20 Ulrich Drepper <drepper@cygnus.com>
* posix/wordexp-test.c (main): Initialize ifs element of ts for
~root test.
1998-04-17 07:53 H.J. Lu <hjl@gnu.org>
* sysdeps/unix/sysv/linux/i386/s_pread64.S: Fix a typo.
1998-04-17 11:32 Ulrich Drepper <drepper@cygnus.com>
* libio/oldfileops.c (_IO_old_file_seekoff): Define temporary st
variable using _G_stat64.
* libio/fileops.c: Remove macro definition of fstat, it is in the
global header.
Reported by Thorsten Kukuk <kukuk@weber.uni-paderborn.de>.
1998-04-17 Philip Blundell <pb@nexus.co.uk>
* sysdeps/arm/strlen.S: New file, based on code by Matthew Wilcox
<willy@odie.barnet.ac.uk>.
1998-04-16 Philip Blundell <Philip.Blundell@pobox.com>
* inet/netinet/in.h (IN6_IS_ADDR_MC_NODELOCAL): New macro,
required by IPv6 Basic API.
(IN6_IS_ADDR_MC_LINKLOCAL): Likewise.
(IN6_IS_ADDR_MC_SITELOCAL): Likewise.
(IN6_IS_ADDR_MC_ORGLOCAL): Likewise.
(IN6_IS_ADDR_MC_GLOBAL): Likewise.
1998-04-20 18:41:05 +00:00
|
|
|
ts.ifs = IFS;
|
1998-03-06 11:39:36 +00:00
|
|
|
|
|
|
|
if (testit (&ts))
|
Update.
1998-05-15 14:36 Ulrich Drepper <drepper@cygnus.com>
* posix/wordexp-test.c: Avoid duplicate messages.
* sysdeps/generic/setenv.c: Use __tfind and __tsearch, not tfind and
tsearch. Correctly interpret values returned by those functions.
(unsetenv): Store pointer to string, not pointer to string pointer.
* time/tzfile.c (__tzfile_compute): Take new arguments. Store
DST information and offset in them.
* time/tzset.c (__tz_convert): Pass extra parameters to
__tzfile_compute. Compute equivalent values for use of tz_rules.
1998-05-15 00:49:11 Zack Weinberg <zack@rabi.phys.columbia.edu>
* iconvdata/Makefile (gen-8bit-table): Use move-if-change and
stamp files to avoid unnecessary recompilation.
(gen-8bit-gap-table): Likewise.
(move-if-change): New variable.
(all generated .h rules): Change to be .stmp rules.
(%.h): New rule; depend on %.stmp; no commands.
(distribute): Add gen-8bit.sh, gen-8bit-gap.sh,
gen-8bit-gap-1.sh.
1998-05-15 01:09 Zack Weinberg <zack@rabi.phys.columbia.edu>
* Makerules (libc-map): Deleted.
(load-map-file): Set to the appropriate compiler switch, not
just the file name. If libfoo-map is not set, look for a
libfoo.map in the current directory and $(..).
(map-file): New variable, contains just the mapfile name.
(build-shlib): Adjust for new value of load-map-file.
(libc.so): Correct dependencies.
* extra-lib.mk: Correct shlib dependencies since libfoo-map
may not be set anymore.
* elf/Makefile: Set ld-map to $(..)libc.map, not $(libc-map).
Delete libdl-map. Tweak ld.so link rule to work with changed
variable settings in Makerules.
* iconvdata/Makefile: Tweak build-module to work with changed
variable settings in Makerules.
* db/Makefile: Delete libdb-map.
* hesiod/Makefile: Delete libnss_hesiod-map.
* linuxthreads/Makefile: Delete libpthread-map.
* locale/Makefile: Delete libBrokenLocale-map.
* login/Makefile: Delete libutil-map.
* math/Makefile: Delete libm-map.
* md5-crypt/Makefile: Delete libcrypt-map.
* nis/Makefile: Delete libnsl-map, libnss_nis-map,
libnss_nisplus-map, and libnss_compat-map.
* nss/Makefile: Delete libnss_files-map, libnss_db-map, and
libnss_ldap-map.
* resolv/Makefile: Delete libresolv-map and libnss_dns-map.
* rt/Makefile: Delete librt-map.
1998-05-15 01:06 Zack Weinberg <zack@rabi.phys.columbia.edu>
* configure.in: Instead of substituting `yes' or `no' for whether
--no-whole-archive is available, set @no_whole_archive@ to the
appropriate gcc switch or the empty string. Likewise for
-fno-exceptions.
* config.make.in: Replace have-no-whole-archive with
no-whole-archive and have-no-exceptions with no-exceptions.
* Makerules: Delete stanzas setting no-whole-archive and
no-exceptions.
* sunrpc/Makefile: Use move-if-change to update generated .h
and .c files.
1998-05-13 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* wcsmbs/wcsmbsload.c (extract_charset_name): Use strcspn instead
of strchr loop.
1998-05-15 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* time/tzfile.c (__tzfile_read): Remove unused variable info.
(__tzfile_compute): Likewise.
1998-05-15 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/unix/sysv/linux/bits/socket.h (AF_SNA,PF_SNA): Add new
defines from Linux 2.1.102.
1998-05-15 14:46:36 +00:00
|
|
|
++fail;
|
1998-03-06 11:39:36 +00:00
|
|
|
}
|
|
|
|
|
2015-03-23 15:12:38 +00:00
|
|
|
/* Integer overflow in division. */
|
|
|
|
{
|
|
|
|
static const char *const numbers[] = {
|
|
|
|
"0",
|
|
|
|
"1",
|
|
|
|
"65536",
|
|
|
|
"2147483648",
|
|
|
|
"4294967296"
|
|
|
|
"9223372036854775808",
|
|
|
|
"18446744073709551616",
|
|
|
|
"170141183460469231731687303715884105728",
|
|
|
|
"340282366920938463463374607431768211456",
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
|
|
|
|
for (const char *const *num = numbers; *num; ++num)
|
|
|
|
{
|
|
|
|
wordexp_t p;
|
|
|
|
char pattern[256];
|
|
|
|
snprintf (pattern, sizeof (pattern), "$[(-%s)/(-1)]", *num);
|
|
|
|
int ret = wordexp (pattern, &p, WRDE_NOCMD);
|
|
|
|
if (ret == 0)
|
|
|
|
{
|
|
|
|
if (p.we_wordc != 1 || strcmp (p.we_wordv[0], *num) != 0)
|
|
|
|
{
|
|
|
|
printf ("Integer overflow for \"%s\" failed", pattern);
|
|
|
|
++fail;
|
|
|
|
}
|
|
|
|
wordfree (&p);
|
|
|
|
}
|
|
|
|
else if (ret != WRDE_SYNTAX)
|
|
|
|
{
|
|
|
|
printf ("Integer overflow for \"%s\" failed with %d",
|
|
|
|
pattern, ret);
|
|
|
|
++fail;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
Update.
1998-04-20 18:00 Ulrich Drepper <drepper@cygnus.com>
* libc.map: Add __dgettext to GLIBC_2.0 and __libc_longjmp, and
__libc_siglongjmp to GLIBC_2.1.
* elf/dl-minimal.c (__assert_perror_fail): Don't use strerror, use
__strerror_r.
* iconv/Makefile: Don't run tests now.
* iconv/iconv_prog.c (process_block): If loop is repeated, call iconv
with correct output buffer.
Major rewrite of the low-level gconv functionality.
* iconv/gconv.c: Rewritten.
* iconv/gconv.h: Likewise.
* iconv/gconv_builtin.c: Likewise.
* iconv/gconv_builtin.h: Likewise.
* iconv/gconv_conf.c: Likewise.
* iconv/gconv_int.h: Likewise.
* iconv/gconv_open.c: Likewise.
* iconv/gconv_simple.c: Likewise.
* iconv/iconv.c: Likewise.
* iconvdata/8bit-gap.c: Likewise.
* iconvdata/8bit-generic.c: Likewise.
* iconvdata/Makefile: Likewise.
* iconvdata/big5.c: Likewise.
* iconvdata/cns11643.c: Likewise.
* iconvdata/cns11643.h: Likewise.
* iconvdata/cns11643l1.c: Likewise.
* iconvdata/cns11643l1.h: Likewise.
* iconvdata/ebcdic-at-de-a.c: Likewise.
* iconvdata/ebcdic-at-de.c: Likewise.
* iconvdata/ebcdic-ca-fr.c: Likewise.
* iconvdata/euccn.c: Likewise.
* iconvdata/eucjp.c: Likewise.
* iconvdata/euckr.c: Likewise.
* iconvdata/euctw.c: Likewise.
* iconvdata/gb2312.c: Likewise.
* iconvdata/gb2312.h: Likewise.
* iconvdata/hp-roman8.c: Likewise.
* iconvdata/iso646.c: Likewise.
* iconvdata/iso6937.c: Likewise.
* iconvdata/iso8859-1.c: Likewise.
* iconvdata/iso8859-10.c: Likewise.
* iconvdata/iso8859-2.c: Likewise.
* iconvdata/iso8859-3.c: Likewise.
* iconvdata/iso8859-4.c: Likewise.
* iconvdata/iso8859-5.c: Likewise.
* iconvdata/iso8859-6.c: Likewise.
* iconvdata/iso8859-7.c: Likewise.
* iconvdata/iso8859-8.c: Likewise.
* iconvdata/iso8859-9.c: Likewise.
* iconvdata/jis0201.c: Likewise.
* iconvdata/jis0201.h: Likewise.
* iconvdata/jis0208.c: Likewise.
* iconvdata/jis0208.h: Likewise.
* iconvdata/jis0212.c: Likewise.
* iconvdata/jis0212.h: Likewise.
* iconvdata/johab.c: Likewise.
* iconvdata/koi-8.c: Likewise.
* iconvdata/koi8-r.c: Likewise.
* iconvdata/ksc5601.c: Likewise.
* iconvdata/ksc5601.h: Likewise.
* iconvdata/latin-greek-1.c: Likewise.
* iconvdata/latin-greek.c: Likewise.
* iconvdata/run-iconv-test.sh: Likewise.
* iconvdata/sjis.c: Likewise.
* iconvdata/t61.c: Likewise.
* iconvdata/uhc.c: Likewise.
* wcsmbs/btowc.c: Likewise.
* wcsmbs/mbrtowc.c: Likewise.
* wcsmbs/mbsnrtowcs.c: Likewise.
* wcsmbs/mbsrtowcs.c: Likewise.
* wcsmbs/wcrtomb.c: Likewise.
* wcsmbs/wcsmbsload.c: Likewise.
* wcsmbs/wcsnrtombs.c: Likewise.
* wcsmbs/wcsrtombs.c: Likewise.
* wcsmbs/wctob.c: Likewise.
* iconv/loop.c: New file.
* iconv/skeleton.c: New file.
* stdlib/mblen.c: Handle empty input string correctly.
* stdlib/mbtowc.c: Likewise.
* posix/getopt.c: Various cleanups.
* sysdeps/arm/bits/setjmp.h: Add copyright text.
* sysdeps/i386/bits/setjmp.h: Likewise.
* sysdeps/m68k/bits/setjmp.h: Likewise.
* sysdeps/powerpc/bits/setjmp.h: Likewise.
* sysdeps/sparc/sparc32/bits/setjmp.h: Likewise.
* sysdeps/generic/longjmp.c: Rename function to __libc_siglongjmp
and make longjmp weak alias.
1998-04-18 20:29 Philip Blundell <Philip.Blundell@pobox.com>
* iconv/Makefile (routines): Only include gconv_dl if building for
an ELF system - dynamic linking is not available on a.out.
(CFLAGS-gconv_conf.c): Define STATIC_GCONV if omitting gconv_dl
due to above check.
* iconv/gconv_db.c: If STATIC_GCONV defined, don't try to call
routines from gconv_dl.
1998-04-17 Gordon Matzigkeit <gord@profitpress.com>
* csu/init.c (_IO_stdin_used): Protect with USE_IN_LIBIO so that
we can compile without libio.
1998-04-20 16:28 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/mach/hurd/Subdirs: Remove login.
1998-04-11 Gordon Matzigkeit <gord@profitpress.com>
* db2/compat.h: Include <errno.h>, to make sure we get the
definition of EFTYPE before we define it ourselves.
1998-04-10 Gordon Matzigkeit <gord@profitpress.com>
* sysdeps/generic/bits/socket.h: Protect against multiple inclusion.
* sysdeps/mach/hurd/bits/ioctls.h: Likewise.
Fix typo to allow inclusion from sys/ioctl.h again.
1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* iconvdata/*.[ch]: Clean up namespace. Optimize character lookup.
1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* libc.map: Export __strerror_r. Remove _strerror_internal.
1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/generic/strcasestr.c: Undefine strcasestr, not strstr.
Also undefine __strcasestr.
1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* posix/regex.c: Rename __re_max_failures back to re_max_failures,
aliases do not work with global variables due to copy relocations.
1998-04-20 15:12 Ulrich Drepper <drepper@cygnus.com>
* manual/creature.texi: Fix type. Patch by Andreas Schwab.
1998-04-20 13:47 Ulrich Drepper <drepper@cygnus.com>
* signal/sighold.c: Include stddef.h for NULL definition.
* signal/sigrelse.c: Likewise.
* sysdeps/posix/sigignore.c: Likewise.
* sysdeps/posix/sigset.c: Likewise.
* sysdeps/posix/waitid.c: Likewise.
* sysdeps/unix/sysv/linux/rt_sigsuspend.c: Likewise.
* sysdeps/unix/sysv/linux/rt_sigtimedwait.c: Likewise.
* sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise.
* wcsmbs/mbsrtowcs.c: Include stdlib.h for MB_CUR_MAX.
Patch by Franz Sirl <Franz.Sirl-kernel@lauterbach.com>.
1998-04-13 Mark Kettenis <kettenis@phys.uva.nl>
* login/Makefile (headers): Remove utmpx.h and bits/utmpx.h.
* login/getutent.c (getutxent): Remove alias.
* login/getutent_r.c (setutxent, pututxline, endutxent):
Remove aliases.
* login/getutid.c (getutxid): Remove alias.
* login/getutline.c (getutxline): Remove alias.
* login/utmp.h: Add prototypes for __updwtmp, __getutent,
__getutid, __getutline and __pututline.
* login/utmpx.h: Moved to ...
* sysdeps/gnu/utmpx.h: ... here. [__USE_GNU]: Define UTMPX_FILE,
UTMPX_FILENAME, WTMPX_FILE and WTMPX_FILENAME, declare utmpxname
and updwtmpx.
* login/updwtmp.c: Moved to ...
* sysdeps/generic/updwtmp.c: ... here. (updwtmp): Generalized by
allowing file name transformation.
* sysdeps/gnu/updwtmp.c: New file. Use generic implementation with
additional file name transformation.
* sysdeps/unix/sysv/linux/updwtmp.c: Likewise.
* login/utmp_file.c: Moved to ...
* sysdeps/generic/utmp_file.c: ... here. (setutent_file):
Generalized by allowing file name transformation. Do not
print error message. Library functions should not print them.
Reported by Jim Meyering.
* sysdeps/gnu/utmp_file.c: New file. Use generic implementation
with additional file name transformation.
* sysdeps/unix/sysv/linux/utmp_file.c: Likewise.
* sysdeps/gnu/Makefile [$(subdir)=login] (sysdep_routines): Add
setutxent, getutxent, endutxent, getutxid, getutxid, getutxline,
pututxline, utmpxname and updwtmpx. (sysdep_headers): Add utmpx.h
and bits/utmpx.h.
* sysdeps/gnu/bits/utmpx.h [__USE_GNU] Include paths.h.
(_PATH_UTMPX): Define to _PATH_UTMP. (_PATH_WTMPX): Define to
_PATH_WTMPX. (RUN_LVL): Define only if __USE_GNU. (ACCOUNTING):
Define if __USE_GNU.
* sysdeps/gnu/setutxent.c: New file.
* sysdeps/gnu/getutxent.c: New file.
* sysdeps/gnu/endutxent.c: New file.
* sysdeps/gnu/getutxid.c: New file.
* sysdeps/gnu/getutxline.c: New file.
* sysdeps/gnu/pututxline.c: New file.
* sysdeps/gnu/utmpxname.c: New file.
* sysdeps/gnu/updwtmpx.c: New file.
* sysdeps/unix/sysv/linux/paths.h (_PATH_UTMP_DB): Remove.
* sysdeps/generic/bits/utmpx.h: Remove.
1998-04-20 Ulrich Drepper <drepper@cygnus.com>
* posix/wordexp-test.c (main): Initialize ifs element of ts for
~root test.
1998-04-17 07:53 H.J. Lu <hjl@gnu.org>
* sysdeps/unix/sysv/linux/i386/s_pread64.S: Fix a typo.
1998-04-17 11:32 Ulrich Drepper <drepper@cygnus.com>
* libio/oldfileops.c (_IO_old_file_seekoff): Define temporary st
variable using _G_stat64.
* libio/fileops.c: Remove macro definition of fstat, it is in the
global header.
Reported by Thorsten Kukuk <kukuk@weber.uni-paderborn.de>.
1998-04-17 Philip Blundell <pb@nexus.co.uk>
* sysdeps/arm/strlen.S: New file, based on code by Matthew Wilcox
<willy@odie.barnet.ac.uk>.
1998-04-16 Philip Blundell <Philip.Blundell@pobox.com>
* inet/netinet/in.h (IN6_IS_ADDR_MC_NODELOCAL): New macro,
required by IPv6 Basic API.
(IN6_IS_ADDR_MC_LINKLOCAL): Likewise.
(IN6_IS_ADDR_MC_SITELOCAL): Likewise.
(IN6_IS_ADDR_MC_ORGLOCAL): Likewise.
(IN6_IS_ADDR_MC_GLOBAL): Likewise.
1998-04-20 18:41:05 +00:00
|
|
|
puts ("tests completed, now cleaning up");
|
|
|
|
|
1998-03-16 13:39:33 +00:00
|
|
|
/* Clean up */
|
|
|
|
for (i = 0; globfile[i]; ++i)
|
|
|
|
remove (globfile[i]);
|
|
|
|
|
1998-03-16 18:30:44 +00:00
|
|
|
if (cwd == NULL)
|
|
|
|
cwd = "..";
|
1998-03-16 13:39:33 +00:00
|
|
|
|
|
|
|
chdir (cwd);
|
|
|
|
rmdir (tmpdir);
|
|
|
|
|
Update.
1998-04-20 18:00 Ulrich Drepper <drepper@cygnus.com>
* libc.map: Add __dgettext to GLIBC_2.0 and __libc_longjmp, and
__libc_siglongjmp to GLIBC_2.1.
* elf/dl-minimal.c (__assert_perror_fail): Don't use strerror, use
__strerror_r.
* iconv/Makefile: Don't run tests now.
* iconv/iconv_prog.c (process_block): If loop is repeated, call iconv
with correct output buffer.
Major rewrite of the low-level gconv functionality.
* iconv/gconv.c: Rewritten.
* iconv/gconv.h: Likewise.
* iconv/gconv_builtin.c: Likewise.
* iconv/gconv_builtin.h: Likewise.
* iconv/gconv_conf.c: Likewise.
* iconv/gconv_int.h: Likewise.
* iconv/gconv_open.c: Likewise.
* iconv/gconv_simple.c: Likewise.
* iconv/iconv.c: Likewise.
* iconvdata/8bit-gap.c: Likewise.
* iconvdata/8bit-generic.c: Likewise.
* iconvdata/Makefile: Likewise.
* iconvdata/big5.c: Likewise.
* iconvdata/cns11643.c: Likewise.
* iconvdata/cns11643.h: Likewise.
* iconvdata/cns11643l1.c: Likewise.
* iconvdata/cns11643l1.h: Likewise.
* iconvdata/ebcdic-at-de-a.c: Likewise.
* iconvdata/ebcdic-at-de.c: Likewise.
* iconvdata/ebcdic-ca-fr.c: Likewise.
* iconvdata/euccn.c: Likewise.
* iconvdata/eucjp.c: Likewise.
* iconvdata/euckr.c: Likewise.
* iconvdata/euctw.c: Likewise.
* iconvdata/gb2312.c: Likewise.
* iconvdata/gb2312.h: Likewise.
* iconvdata/hp-roman8.c: Likewise.
* iconvdata/iso646.c: Likewise.
* iconvdata/iso6937.c: Likewise.
* iconvdata/iso8859-1.c: Likewise.
* iconvdata/iso8859-10.c: Likewise.
* iconvdata/iso8859-2.c: Likewise.
* iconvdata/iso8859-3.c: Likewise.
* iconvdata/iso8859-4.c: Likewise.
* iconvdata/iso8859-5.c: Likewise.
* iconvdata/iso8859-6.c: Likewise.
* iconvdata/iso8859-7.c: Likewise.
* iconvdata/iso8859-8.c: Likewise.
* iconvdata/iso8859-9.c: Likewise.
* iconvdata/jis0201.c: Likewise.
* iconvdata/jis0201.h: Likewise.
* iconvdata/jis0208.c: Likewise.
* iconvdata/jis0208.h: Likewise.
* iconvdata/jis0212.c: Likewise.
* iconvdata/jis0212.h: Likewise.
* iconvdata/johab.c: Likewise.
* iconvdata/koi-8.c: Likewise.
* iconvdata/koi8-r.c: Likewise.
* iconvdata/ksc5601.c: Likewise.
* iconvdata/ksc5601.h: Likewise.
* iconvdata/latin-greek-1.c: Likewise.
* iconvdata/latin-greek.c: Likewise.
* iconvdata/run-iconv-test.sh: Likewise.
* iconvdata/sjis.c: Likewise.
* iconvdata/t61.c: Likewise.
* iconvdata/uhc.c: Likewise.
* wcsmbs/btowc.c: Likewise.
* wcsmbs/mbrtowc.c: Likewise.
* wcsmbs/mbsnrtowcs.c: Likewise.
* wcsmbs/mbsrtowcs.c: Likewise.
* wcsmbs/wcrtomb.c: Likewise.
* wcsmbs/wcsmbsload.c: Likewise.
* wcsmbs/wcsnrtombs.c: Likewise.
* wcsmbs/wcsrtombs.c: Likewise.
* wcsmbs/wctob.c: Likewise.
* iconv/loop.c: New file.
* iconv/skeleton.c: New file.
* stdlib/mblen.c: Handle empty input string correctly.
* stdlib/mbtowc.c: Likewise.
* posix/getopt.c: Various cleanups.
* sysdeps/arm/bits/setjmp.h: Add copyright text.
* sysdeps/i386/bits/setjmp.h: Likewise.
* sysdeps/m68k/bits/setjmp.h: Likewise.
* sysdeps/powerpc/bits/setjmp.h: Likewise.
* sysdeps/sparc/sparc32/bits/setjmp.h: Likewise.
* sysdeps/generic/longjmp.c: Rename function to __libc_siglongjmp
and make longjmp weak alias.
1998-04-18 20:29 Philip Blundell <Philip.Blundell@pobox.com>
* iconv/Makefile (routines): Only include gconv_dl if building for
an ELF system - dynamic linking is not available on a.out.
(CFLAGS-gconv_conf.c): Define STATIC_GCONV if omitting gconv_dl
due to above check.
* iconv/gconv_db.c: If STATIC_GCONV defined, don't try to call
routines from gconv_dl.
1998-04-17 Gordon Matzigkeit <gord@profitpress.com>
* csu/init.c (_IO_stdin_used): Protect with USE_IN_LIBIO so that
we can compile without libio.
1998-04-20 16:28 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/mach/hurd/Subdirs: Remove login.
1998-04-11 Gordon Matzigkeit <gord@profitpress.com>
* db2/compat.h: Include <errno.h>, to make sure we get the
definition of EFTYPE before we define it ourselves.
1998-04-10 Gordon Matzigkeit <gord@profitpress.com>
* sysdeps/generic/bits/socket.h: Protect against multiple inclusion.
* sysdeps/mach/hurd/bits/ioctls.h: Likewise.
Fix typo to allow inclusion from sys/ioctl.h again.
1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* iconvdata/*.[ch]: Clean up namespace. Optimize character lookup.
1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* libc.map: Export __strerror_r. Remove _strerror_internal.
1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/generic/strcasestr.c: Undefine strcasestr, not strstr.
Also undefine __strcasestr.
1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* posix/regex.c: Rename __re_max_failures back to re_max_failures,
aliases do not work with global variables due to copy relocations.
1998-04-20 15:12 Ulrich Drepper <drepper@cygnus.com>
* manual/creature.texi: Fix type. Patch by Andreas Schwab.
1998-04-20 13:47 Ulrich Drepper <drepper@cygnus.com>
* signal/sighold.c: Include stddef.h for NULL definition.
* signal/sigrelse.c: Likewise.
* sysdeps/posix/sigignore.c: Likewise.
* sysdeps/posix/sigset.c: Likewise.
* sysdeps/posix/waitid.c: Likewise.
* sysdeps/unix/sysv/linux/rt_sigsuspend.c: Likewise.
* sysdeps/unix/sysv/linux/rt_sigtimedwait.c: Likewise.
* sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise.
* wcsmbs/mbsrtowcs.c: Include stdlib.h for MB_CUR_MAX.
Patch by Franz Sirl <Franz.Sirl-kernel@lauterbach.com>.
1998-04-13 Mark Kettenis <kettenis@phys.uva.nl>
* login/Makefile (headers): Remove utmpx.h and bits/utmpx.h.
* login/getutent.c (getutxent): Remove alias.
* login/getutent_r.c (setutxent, pututxline, endutxent):
Remove aliases.
* login/getutid.c (getutxid): Remove alias.
* login/getutline.c (getutxline): Remove alias.
* login/utmp.h: Add prototypes for __updwtmp, __getutent,
__getutid, __getutline and __pututline.
* login/utmpx.h: Moved to ...
* sysdeps/gnu/utmpx.h: ... here. [__USE_GNU]: Define UTMPX_FILE,
UTMPX_FILENAME, WTMPX_FILE and WTMPX_FILENAME, declare utmpxname
and updwtmpx.
* login/updwtmp.c: Moved to ...
* sysdeps/generic/updwtmp.c: ... here. (updwtmp): Generalized by
allowing file name transformation.
* sysdeps/gnu/updwtmp.c: New file. Use generic implementation with
additional file name transformation.
* sysdeps/unix/sysv/linux/updwtmp.c: Likewise.
* login/utmp_file.c: Moved to ...
* sysdeps/generic/utmp_file.c: ... here. (setutent_file):
Generalized by allowing file name transformation. Do not
print error message. Library functions should not print them.
Reported by Jim Meyering.
* sysdeps/gnu/utmp_file.c: New file. Use generic implementation
with additional file name transformation.
* sysdeps/unix/sysv/linux/utmp_file.c: Likewise.
* sysdeps/gnu/Makefile [$(subdir)=login] (sysdep_routines): Add
setutxent, getutxent, endutxent, getutxid, getutxid, getutxline,
pututxline, utmpxname and updwtmpx. (sysdep_headers): Add utmpx.h
and bits/utmpx.h.
* sysdeps/gnu/bits/utmpx.h [__USE_GNU] Include paths.h.
(_PATH_UTMPX): Define to _PATH_UTMP. (_PATH_WTMPX): Define to
_PATH_WTMPX. (RUN_LVL): Define only if __USE_GNU. (ACCOUNTING):
Define if __USE_GNU.
* sysdeps/gnu/setutxent.c: New file.
* sysdeps/gnu/getutxent.c: New file.
* sysdeps/gnu/endutxent.c: New file.
* sysdeps/gnu/getutxid.c: New file.
* sysdeps/gnu/getutxline.c: New file.
* sysdeps/gnu/pututxline.c: New file.
* sysdeps/gnu/utmpxname.c: New file.
* sysdeps/gnu/updwtmpx.c: New file.
* sysdeps/unix/sysv/linux/paths.h (_PATH_UTMP_DB): Remove.
* sysdeps/generic/bits/utmpx.h: Remove.
1998-04-20 Ulrich Drepper <drepper@cygnus.com>
* posix/wordexp-test.c (main): Initialize ifs element of ts for
~root test.
1998-04-17 07:53 H.J. Lu <hjl@gnu.org>
* sysdeps/unix/sysv/linux/i386/s_pread64.S: Fix a typo.
1998-04-17 11:32 Ulrich Drepper <drepper@cygnus.com>
* libio/oldfileops.c (_IO_old_file_seekoff): Define temporary st
variable using _G_stat64.
* libio/fileops.c: Remove macro definition of fstat, it is in the
global header.
Reported by Thorsten Kukuk <kukuk@weber.uni-paderborn.de>.
1998-04-17 Philip Blundell <pb@nexus.co.uk>
* sysdeps/arm/strlen.S: New file, based on code by Matthew Wilcox
<willy@odie.barnet.ac.uk>.
1998-04-16 Philip Blundell <Philip.Blundell@pobox.com>
* inet/netinet/in.h (IN6_IS_ADDR_MC_NODELOCAL): New macro,
required by IPv6 Basic API.
(IN6_IS_ADDR_MC_LINKLOCAL): Likewise.
(IN6_IS_ADDR_MC_SITELOCAL): Likewise.
(IN6_IS_ADDR_MC_ORGLOCAL): Likewise.
(IN6_IS_ADDR_MC_GLOBAL): Likewise.
1998-04-20 18:41:05 +00:00
|
|
|
printf ("tests failed: %d\n", fail);
|
|
|
|
|
1998-03-06 11:39:36 +00:00
|
|
|
return fail != 0;
|
|
|
|
}
|
|
|
|
|
2015-03-09 04:37:31 +00:00
|
|
|
static const char *
|
|
|
|
at_page_end (const char *words)
|
|
|
|
{
|
|
|
|
const int pagesize = getpagesize ();
|
|
|
|
char *start = mmap (0, 2 * pagesize, PROT_READ|PROT_WRITE,
|
|
|
|
MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
|
|
|
|
|
|
|
|
if (start == MAP_FAILED)
|
|
|
|
return start;
|
|
|
|
|
|
|
|
if (mprotect (start + pagesize, pagesize, PROT_NONE))
|
|
|
|
{
|
|
|
|
munmap (start, 2 * pagesize);
|
|
|
|
return MAP_FAILED;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Includes terminating NUL. */
|
|
|
|
const size_t words_size = strlen (words) + 1;
|
|
|
|
char *words_start = start + pagesize - words_size;
|
|
|
|
memcpy (words_start, words, words_size);
|
|
|
|
|
|
|
|
return words_start;
|
|
|
|
}
|
1998-03-06 11:39:36 +00:00
|
|
|
|
|
|
|
static int
|
|
|
|
testit (struct test_case_struct *tc)
|
|
|
|
{
|
|
|
|
int retval;
|
2000-02-24 23:07:31 +00:00
|
|
|
wordexp_t we, sav_we;
|
|
|
|
char *dummy;
|
1998-03-06 11:39:36 +00:00
|
|
|
int bzzzt = 0;
|
2000-02-24 23:07:31 +00:00
|
|
|
int start_offs = 0;
|
1998-03-06 11:39:36 +00:00
|
|
|
int i;
|
|
|
|
|
|
|
|
if (tc->env)
|
|
|
|
setenv ("var", tc->env, 1);
|
|
|
|
else
|
|
|
|
unsetenv ("var");
|
|
|
|
|
1998-04-07 16:19:36 +00:00
|
|
|
if (tc->ifs)
|
|
|
|
setenv ("IFS", tc->ifs, 1);
|
|
|
|
else
|
|
|
|
unsetenv ("IFS");
|
|
|
|
|
2000-02-24 23:07:31 +00:00
|
|
|
sav_we.we_wordc = 99;
|
|
|
|
sav_we.we_wordv = &dummy;
|
|
|
|
sav_we.we_offs = 3;
|
|
|
|
we = sav_we;
|
|
|
|
|
Update.
1998-04-20 18:00 Ulrich Drepper <drepper@cygnus.com>
* libc.map: Add __dgettext to GLIBC_2.0 and __libc_longjmp, and
__libc_siglongjmp to GLIBC_2.1.
* elf/dl-minimal.c (__assert_perror_fail): Don't use strerror, use
__strerror_r.
* iconv/Makefile: Don't run tests now.
* iconv/iconv_prog.c (process_block): If loop is repeated, call iconv
with correct output buffer.
Major rewrite of the low-level gconv functionality.
* iconv/gconv.c: Rewritten.
* iconv/gconv.h: Likewise.
* iconv/gconv_builtin.c: Likewise.
* iconv/gconv_builtin.h: Likewise.
* iconv/gconv_conf.c: Likewise.
* iconv/gconv_int.h: Likewise.
* iconv/gconv_open.c: Likewise.
* iconv/gconv_simple.c: Likewise.
* iconv/iconv.c: Likewise.
* iconvdata/8bit-gap.c: Likewise.
* iconvdata/8bit-generic.c: Likewise.
* iconvdata/Makefile: Likewise.
* iconvdata/big5.c: Likewise.
* iconvdata/cns11643.c: Likewise.
* iconvdata/cns11643.h: Likewise.
* iconvdata/cns11643l1.c: Likewise.
* iconvdata/cns11643l1.h: Likewise.
* iconvdata/ebcdic-at-de-a.c: Likewise.
* iconvdata/ebcdic-at-de.c: Likewise.
* iconvdata/ebcdic-ca-fr.c: Likewise.
* iconvdata/euccn.c: Likewise.
* iconvdata/eucjp.c: Likewise.
* iconvdata/euckr.c: Likewise.
* iconvdata/euctw.c: Likewise.
* iconvdata/gb2312.c: Likewise.
* iconvdata/gb2312.h: Likewise.
* iconvdata/hp-roman8.c: Likewise.
* iconvdata/iso646.c: Likewise.
* iconvdata/iso6937.c: Likewise.
* iconvdata/iso8859-1.c: Likewise.
* iconvdata/iso8859-10.c: Likewise.
* iconvdata/iso8859-2.c: Likewise.
* iconvdata/iso8859-3.c: Likewise.
* iconvdata/iso8859-4.c: Likewise.
* iconvdata/iso8859-5.c: Likewise.
* iconvdata/iso8859-6.c: Likewise.
* iconvdata/iso8859-7.c: Likewise.
* iconvdata/iso8859-8.c: Likewise.
* iconvdata/iso8859-9.c: Likewise.
* iconvdata/jis0201.c: Likewise.
* iconvdata/jis0201.h: Likewise.
* iconvdata/jis0208.c: Likewise.
* iconvdata/jis0208.h: Likewise.
* iconvdata/jis0212.c: Likewise.
* iconvdata/jis0212.h: Likewise.
* iconvdata/johab.c: Likewise.
* iconvdata/koi-8.c: Likewise.
* iconvdata/koi8-r.c: Likewise.
* iconvdata/ksc5601.c: Likewise.
* iconvdata/ksc5601.h: Likewise.
* iconvdata/latin-greek-1.c: Likewise.
* iconvdata/latin-greek.c: Likewise.
* iconvdata/run-iconv-test.sh: Likewise.
* iconvdata/sjis.c: Likewise.
* iconvdata/t61.c: Likewise.
* iconvdata/uhc.c: Likewise.
* wcsmbs/btowc.c: Likewise.
* wcsmbs/mbrtowc.c: Likewise.
* wcsmbs/mbsnrtowcs.c: Likewise.
* wcsmbs/mbsrtowcs.c: Likewise.
* wcsmbs/wcrtomb.c: Likewise.
* wcsmbs/wcsmbsload.c: Likewise.
* wcsmbs/wcsnrtombs.c: Likewise.
* wcsmbs/wcsrtombs.c: Likewise.
* wcsmbs/wctob.c: Likewise.
* iconv/loop.c: New file.
* iconv/skeleton.c: New file.
* stdlib/mblen.c: Handle empty input string correctly.
* stdlib/mbtowc.c: Likewise.
* posix/getopt.c: Various cleanups.
* sysdeps/arm/bits/setjmp.h: Add copyright text.
* sysdeps/i386/bits/setjmp.h: Likewise.
* sysdeps/m68k/bits/setjmp.h: Likewise.
* sysdeps/powerpc/bits/setjmp.h: Likewise.
* sysdeps/sparc/sparc32/bits/setjmp.h: Likewise.
* sysdeps/generic/longjmp.c: Rename function to __libc_siglongjmp
and make longjmp weak alias.
1998-04-18 20:29 Philip Blundell <Philip.Blundell@pobox.com>
* iconv/Makefile (routines): Only include gconv_dl if building for
an ELF system - dynamic linking is not available on a.out.
(CFLAGS-gconv_conf.c): Define STATIC_GCONV if omitting gconv_dl
due to above check.
* iconv/gconv_db.c: If STATIC_GCONV defined, don't try to call
routines from gconv_dl.
1998-04-17 Gordon Matzigkeit <gord@profitpress.com>
* csu/init.c (_IO_stdin_used): Protect with USE_IN_LIBIO so that
we can compile without libio.
1998-04-20 16:28 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/mach/hurd/Subdirs: Remove login.
1998-04-11 Gordon Matzigkeit <gord@profitpress.com>
* db2/compat.h: Include <errno.h>, to make sure we get the
definition of EFTYPE before we define it ourselves.
1998-04-10 Gordon Matzigkeit <gord@profitpress.com>
* sysdeps/generic/bits/socket.h: Protect against multiple inclusion.
* sysdeps/mach/hurd/bits/ioctls.h: Likewise.
Fix typo to allow inclusion from sys/ioctl.h again.
1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* iconvdata/*.[ch]: Clean up namespace. Optimize character lookup.
1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* libc.map: Export __strerror_r. Remove _strerror_internal.
1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/generic/strcasestr.c: Undefine strcasestr, not strstr.
Also undefine __strcasestr.
1998-04-16 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* posix/regex.c: Rename __re_max_failures back to re_max_failures,
aliases do not work with global variables due to copy relocations.
1998-04-20 15:12 Ulrich Drepper <drepper@cygnus.com>
* manual/creature.texi: Fix type. Patch by Andreas Schwab.
1998-04-20 13:47 Ulrich Drepper <drepper@cygnus.com>
* signal/sighold.c: Include stddef.h for NULL definition.
* signal/sigrelse.c: Likewise.
* sysdeps/posix/sigignore.c: Likewise.
* sysdeps/posix/sigset.c: Likewise.
* sysdeps/posix/waitid.c: Likewise.
* sysdeps/unix/sysv/linux/rt_sigsuspend.c: Likewise.
* sysdeps/unix/sysv/linux/rt_sigtimedwait.c: Likewise.
* sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise.
* wcsmbs/mbsrtowcs.c: Include stdlib.h for MB_CUR_MAX.
Patch by Franz Sirl <Franz.Sirl-kernel@lauterbach.com>.
1998-04-13 Mark Kettenis <kettenis@phys.uva.nl>
* login/Makefile (headers): Remove utmpx.h and bits/utmpx.h.
* login/getutent.c (getutxent): Remove alias.
* login/getutent_r.c (setutxent, pututxline, endutxent):
Remove aliases.
* login/getutid.c (getutxid): Remove alias.
* login/getutline.c (getutxline): Remove alias.
* login/utmp.h: Add prototypes for __updwtmp, __getutent,
__getutid, __getutline and __pututline.
* login/utmpx.h: Moved to ...
* sysdeps/gnu/utmpx.h: ... here. [__USE_GNU]: Define UTMPX_FILE,
UTMPX_FILENAME, WTMPX_FILE and WTMPX_FILENAME, declare utmpxname
and updwtmpx.
* login/updwtmp.c: Moved to ...
* sysdeps/generic/updwtmp.c: ... here. (updwtmp): Generalized by
allowing file name transformation.
* sysdeps/gnu/updwtmp.c: New file. Use generic implementation with
additional file name transformation.
* sysdeps/unix/sysv/linux/updwtmp.c: Likewise.
* login/utmp_file.c: Moved to ...
* sysdeps/generic/utmp_file.c: ... here. (setutent_file):
Generalized by allowing file name transformation. Do not
print error message. Library functions should not print them.
Reported by Jim Meyering.
* sysdeps/gnu/utmp_file.c: New file. Use generic implementation
with additional file name transformation.
* sysdeps/unix/sysv/linux/utmp_file.c: Likewise.
* sysdeps/gnu/Makefile [$(subdir)=login] (sysdep_routines): Add
setutxent, getutxent, endutxent, getutxid, getutxid, getutxline,
pututxline, utmpxname and updwtmpx. (sysdep_headers): Add utmpx.h
and bits/utmpx.h.
* sysdeps/gnu/bits/utmpx.h [__USE_GNU] Include paths.h.
(_PATH_UTMPX): Define to _PATH_UTMP. (_PATH_WTMPX): Define to
_PATH_WTMPX. (RUN_LVL): Define only if __USE_GNU. (ACCOUNTING):
Define if __USE_GNU.
* sysdeps/gnu/setutxent.c: New file.
* sysdeps/gnu/getutxent.c: New file.
* sysdeps/gnu/endutxent.c: New file.
* sysdeps/gnu/getutxid.c: New file.
* sysdeps/gnu/getutxline.c: New file.
* sysdeps/gnu/pututxline.c: New file.
* sysdeps/gnu/utmpxname.c: New file.
* sysdeps/gnu/updwtmpx.c: New file.
* sysdeps/unix/sysv/linux/paths.h (_PATH_UTMP_DB): Remove.
* sysdeps/generic/bits/utmpx.h: Remove.
1998-04-20 Ulrich Drepper <drepper@cygnus.com>
* posix/wordexp-test.c (main): Initialize ifs element of ts for
~root test.
1998-04-17 07:53 H.J. Lu <hjl@gnu.org>
* sysdeps/unix/sysv/linux/i386/s_pread64.S: Fix a typo.
1998-04-17 11:32 Ulrich Drepper <drepper@cygnus.com>
* libio/oldfileops.c (_IO_old_file_seekoff): Define temporary st
variable using _G_stat64.
* libio/fileops.c: Remove macro definition of fstat, it is in the
global header.
Reported by Thorsten Kukuk <kukuk@weber.uni-paderborn.de>.
1998-04-17 Philip Blundell <pb@nexus.co.uk>
* sysdeps/arm/strlen.S: New file, based on code by Matthew Wilcox
<willy@odie.barnet.ac.uk>.
1998-04-16 Philip Blundell <Philip.Blundell@pobox.com>
* inet/netinet/in.h (IN6_IS_ADDR_MC_NODELOCAL): New macro,
required by IPv6 Basic API.
(IN6_IS_ADDR_MC_LINKLOCAL): Likewise.
(IN6_IS_ADDR_MC_SITELOCAL): Likewise.
(IN6_IS_ADDR_MC_ORGLOCAL): Likewise.
(IN6_IS_ADDR_MC_GLOBAL): Likewise.
1998-04-20 18:41:05 +00:00
|
|
|
printf ("Test %d (%s): ", ++tests, tc->words);
|
2015-03-09 04:37:31 +00:00
|
|
|
fflush (NULL);
|
|
|
|
const char *words = at_page_end (tc->words);
|
2000-02-24 23:07:31 +00:00
|
|
|
|
2014-11-19 16:44:12 +00:00
|
|
|
if (tc->flags & WRDE_NOCMD)
|
|
|
|
registered_forks = 0;
|
|
|
|
|
2000-02-24 23:07:31 +00:00
|
|
|
if (tc->flags & WRDE_APPEND)
|
|
|
|
{
|
|
|
|
/* initial wordexp() call, to be appended to */
|
|
|
|
if (wordexp ("pre1 pre2", &we, tc->flags & ~WRDE_APPEND) != 0)
|
|
|
|
{
|
|
|
|
printf ("FAILED setup\n");
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
2015-03-09 04:37:31 +00:00
|
|
|
retval = wordexp (words, &we, tc->flags);
|
1998-03-06 11:39:36 +00:00
|
|
|
|
2014-11-19 16:44:12 +00:00
|
|
|
if ((tc->flags & WRDE_NOCMD)
|
|
|
|
&& (registered_forks > 0))
|
|
|
|
{
|
|
|
|
printf ("FAILED fork called for WRDE_NOCMD\n");
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2000-02-24 23:07:31 +00:00
|
|
|
if (tc->flags & WRDE_DOOFFS)
|
|
|
|
start_offs = sav_we.we_offs;
|
|
|
|
|
1998-03-16 18:30:44 +00:00
|
|
|
if (retval != tc->retval || (retval == 0 && we.we_wordc != tc->wordc))
|
1998-03-06 11:39:36 +00:00
|
|
|
bzzzt = 1;
|
2000-02-24 23:07:31 +00:00
|
|
|
else if (retval == 0)
|
|
|
|
{
|
|
|
|
for (i = 0; i < start_offs; ++i)
|
|
|
|
if (we.we_wordv[i] != NULL)
|
|
|
|
{
|
|
|
|
bzzzt = 1;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
for (i = 0; i < we.we_wordc; ++i)
|
|
|
|
if (we.we_wordv[i+start_offs] == NULL ||
|
|
|
|
strcmp (tc->wordv[i], we.we_wordv[i+start_offs]) != 0)
|
|
|
|
{
|
|
|
|
bzzzt = 1;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
1998-03-05 16:42:56 +00:00
|
|
|
|
1998-03-06 11:39:36 +00:00
|
|
|
if (bzzzt)
|
|
|
|
{
|
|
|
|
printf ("FAILED\n");
|
2001-02-26 19:32:00 +00:00
|
|
|
printf ("Test words: <%s>, need retval %d, wordc %Zd\n",
|
1998-03-06 11:39:36 +00:00
|
|
|
tc->words, tc->retval, tc->wordc);
|
2000-02-24 23:07:31 +00:00
|
|
|
if (start_offs != 0)
|
|
|
|
printf ("(preceded by %d NULLs)\n", start_offs);
|
2001-02-26 19:32:00 +00:00
|
|
|
printf ("Got retval %d, wordc %Zd: ", retval, we.we_wordc);
|
2000-02-24 23:07:31 +00:00
|
|
|
if (retval == 0 || retval == WRDE_NOSPACE)
|
|
|
|
{
|
|
|
|
for (i = 0; i < we.we_wordc + start_offs; ++i)
|
|
|
|
if (we.we_wordv[i] == NULL)
|
|
|
|
printf ("NULL ");
|
|
|
|
else
|
|
|
|
printf ("<%s> ", we.we_wordv[i]);
|
|
|
|
}
|
1998-03-06 11:39:36 +00:00
|
|
|
printf ("\n");
|
1998-03-05 16:42:56 +00:00
|
|
|
}
|
2000-02-24 23:07:31 +00:00
|
|
|
else if (retval != 0 && retval != WRDE_NOSPACE &&
|
|
|
|
(we.we_wordc != sav_we.we_wordc ||
|
|
|
|
we.we_wordv != sav_we.we_wordv ||
|
|
|
|
we.we_offs != sav_we.we_offs))
|
|
|
|
{
|
|
|
|
bzzzt = 1;
|
|
|
|
printf ("FAILED to restore wordexp_t members\n");
|
|
|
|
}
|
1998-03-06 11:39:36 +00:00
|
|
|
else
|
|
|
|
printf ("OK\n");
|
|
|
|
|
1998-09-15 21:24:37 +00:00
|
|
|
if (retval == 0 || retval == WRDE_NOSPACE)
|
|
|
|
wordfree (&we);
|
1998-03-05 16:42:56 +00:00
|
|
|
|
2015-03-09 04:37:31 +00:00
|
|
|
const int page_size = getpagesize ();
|
|
|
|
char *start = (char *) PTR_ALIGN_DOWN (words, page_size);
|
|
|
|
|
|
|
|
if (munmap (start, 2 * page_size) != 0)
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
fflush (NULL);
|
1998-03-06 11:39:36 +00:00
|
|
|
return bzzzt;
|
1998-03-05 16:42:56 +00:00
|
|
|
}
|