about summary refs log tree commit diff
path: root/posix/wordexp-test.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-03-06 11:39:36 +0000
committerUlrich Drepper <drepper@redhat.com>1998-03-06 11:39:36 +0000
commitac16e90592f0b9842e193e2ebe0b3756f0b4361d (patch)
tree0b993b3126a76f47b80cf7254916627be7b55a67 /posix/wordexp-test.c
parenta788b6c2163aa8b7c526a61542d01b7cbbc8859e (diff)
downloadglibc-ac16e90592f0b9842e193e2ebe0b3756f0b4361d.tar.gz
glibc-ac16e90592f0b9842e193e2ebe0b3756f0b4361d.tar.xz
glibc-ac16e90592f0b9842e193e2ebe0b3756f0b4361d.zip
Update.
1998-03-06 11:35  Ulrich Drepper  <drepper@cygnus.com>

	* posix/wordexp-test.c: Change testsuite so that it can run even
	for ~root != /root.

1998-03-06  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* math/libm-test.c (catanh_test): Change epsilon for gcc 2.8.1.

1998-03-05  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/unix/sysv/linux/i386/sysdep.h (SYSCALL_ERROR_HANDLER):
	Don't store into global errno if we already store through
	__errno_location.
	* sysdeps/unix/i386/sysdep.S: Likewise.
	* sysdeps/unix/alpha/sysdep.S: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/brk.S: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/clone.S: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Likewise.  Add
	missing return to SYSCALL_ERROR_HANDLER for (!_LIBC_REENTRANT &&
	PIC).

1998-03-05  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/generic/sysdep.h (L): Remove definition.
	* sysdeps/i386/sysdep.h (L): Define it here instead.

1998-03-05  Thorsten Kukuk  <kukuk@vt.uni-paderborn.de>
	* nss/getXXbyYY_r.c: Check __nss_not_use_nscd_* variable for
	running nscd.
	* nscd/nscd_getgr_r.c: Set __nss_not_use_nscd_group variable.
	* nscd/nscd_getpw_r.c: Set __nss_not_use_nscd_passwd variable.
	* nscd/nscd_proto.h: Declare __nss_not_use_nscd_* variables.
Diffstat (limited to 'posix/wordexp-test.c')
-rw-r--r--posix/wordexp-test.c105
1 files changed, 65 insertions, 40 deletions
diff --git a/posix/wordexp-test.c b/posix/wordexp-test.c
index 2e403caa0e..604e685607 100644
--- a/posix/wordexp-test.c
+++ b/posix/wordexp-test.c
@@ -16,9 +16,10 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include <wordexp.h>
+#include <pwd.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <wordexp.h>
 
 struct test_case_struct
 {
@@ -33,63 +34,87 @@ struct test_case_struct
     { 0, NULL, "one", 0, 1, { "one", } },
     { 0, NULL, "one two", 0, 2, { "one", "two", } },
     { 0, NULL, "one two three", 0, 3, { "one", "two", "three", } },
-    { 0, NULL, "~root", 0, 1, { "/root", } },
     { 0, "foo", "${var}", 0, 1, { "foo", } },
     { 0, "foo", "$var", 0, 1, { "foo", } },
     { 0, NULL, "\"quoted\"", 0, 1, { "quoted", } },
     { -1, NULL, NULL, 0, 0, { NULL, } },
   };
 
+static int testit (struct test_case_struct *tc);
+
 int
 main (int argc, char * argv[])
 {
-  wordexp_t we;
+  struct passwd *pw;
   int test;
   int fail = 0;
-  int retval;
-  int i;
 
   setenv ("IFS", " \t\n", 1);
   for (test = 0; test_case[test].retval != -1; test++)
+    if (testit (&test_case[test]))
+      ++fail;
+
+  pw = getpwnam ("root");
+  if (pw != NULL)
     {
-      int bzzzt = 0;
-
-      if (test_case[test].env)
-	setenv ("var", test_case[test].env, 1);
-      else
-	unsetenv ("var");
-
-      printf ("Test %d: ", test);
-      retval = wordexp (test_case[test].words, &we, test_case[test].flags);
-
-      if (retval != test_case[test].retval ||
-	  we.we_wordc != test_case[test].wordc)
-	bzzzt = 1;
-      else
-	for (i = 0; i < we.we_wordc; i++)
-	  if (strcmp (test_case[test].wordv[i], we.we_wordv[i]) != 0)
-	    {
-	      bzzzt = 1;
-	      break;
-	    }
-
-      if (bzzzt)
+      struct test_case_struct ts;
+
+      ts.retval = 0;
+      ts.env = NULL;
+      ts.words = "~root";
+      ts.flags = 0;
+      ts.wordc = 1;
+      ts.wordv[0] = pw->pw_dir;
+
+      if (testit (&ts))
+	++fail;
+    }
+
+  return fail != 0;
+}
+
+
+static int
+testit (struct test_case_struct *tc)
+{
+  static int test;
+  int retval;
+  wordexp_t we;
+  int bzzzt = 0;
+  int i;
+
+  if (tc->env)
+    setenv ("var", tc->env, 1);
+  else
+    unsetenv ("var");
+
+  printf ("Test %d: ", ++test);
+  retval = wordexp (tc->words, &we, tc->flags);
+
+  if (retval != tc->retval || we.we_wordc != tc->wordc)
+    bzzzt = 1;
+  else
+    for (i = 0; i < we.we_wordc; ++i)
+      if (strcmp (tc->wordv[i], we.we_wordv[i]) != 0)
 	{
-	  ++fail;
-	  printf ("FAILED\n");
-	  printf ("Test words: <%s>, need retval %d, wordc %d\n",
-		  test_case[test].words, test_case[test].retval,
-		  test_case[test].wordc);
-	  printf ("Got retval %d, wordc %d: ", retval, we.we_wordc);
-	  for (i = 0; i < we.we_wordc; i++)
-	    printf ("<%s> ", we.we_wordv[i]);
-	  printf ("\n");
+	  bzzzt = 1;
+	  break;
 	}
-      else
-	printf ("OK\n");
 
-      wordfree (&we);
+  if (bzzzt)
+    {
+      printf ("FAILED\n");
+      printf ("Test words: <%s>, need retval %d, wordc %d\n",
+	      tc->words, tc->retval, tc->wordc);
+      printf ("Got retval %d, wordc %d: ", retval, we.we_wordc);
+      for (i = 0; i < we.we_wordc; ++i)
+	printf ("<%s> ", we.we_wordv[i]);
+      printf ("\n");
     }
+  else
+    printf ("OK\n");
+
+  wordfree (&we);
 
-  return fail;
+  return bzzzt;
 }