Revert "nptl files should #include <pthreadP.h> instead of "pthreadP.h""
[kopensolaris-gnu/glibc.git] / ctype / test_ctype.c
index f7faa5c..d577e88 100644 (file)
@@ -1,32 +1,35 @@
-/* Copyright (C) 1991 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+/* Copyright (C) 1991, 1994, 1996, 1997, 2000 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
 
-The GNU C Library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+   The GNU C Library is free software; you can redistribute it and/or
+   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.
 
-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
-Library General Public License for more details.
+   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
+   Lesser General Public License for more details.
 
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA.  */
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
 
-#include <ansidecl.h>
 #include <limits.h>
 #include <ctype.h>
 #include <stdio.h>
 #include <stdlib.h>
 
+#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#define XOR(e,f) (((e) && !(f)) || (!(e) && (f)))
+
 #ifdef __GNUC__
 __inline
 #endif
 static void
-DEFUN(print_char, (c), unsigned char c)
+print_char (unsigned char c)
 {
   printf("%d/", (int) c);
   if (isgraph(c))
@@ -36,44 +39,63 @@ DEFUN(print_char, (c), unsigned char c)
 }
 
 int
-DEFUN(main, (argc, argv), int argc AND char **argv)
+main (int argc, char **argv)
 {
-  register unsigned short int c;
+  unsigned short int c;
+  int lose = 0;
+
+#define TRYEM do {                                                           \
+      TRY (isascii);                                                         \
+      TRY (isalnum);                                                         \
+      TRY (isalpha);                                                         \
+      TRY (iscntrl);                                                         \
+      TRY (isdigit);                                                         \
+      TRY (isgraph);                                                         \
+      TRY (islower);                                                         \
+      TRY (isprint);                                                         \
+      TRY (ispunct);                                                         \
+      TRY (isspace);                                                         \
+      TRY (isupper);                                                         \
+      TRY (isxdigit);                                                        \
+      TRY (isblank);                                                         \
+    } while (0)
+
+  for (c = 0; c <= UCHAR_MAX; ++c)
+    {
+      print_char (c);
+
+      if (XOR (islower (c), ISLOWER (c)) || toupper (c) != TOUPPER (c))
+       {
+         fputs (" BOGUS", stdout);
+         ++lose;
+       }
+
+#define TRY(isfoo) if (isfoo (c)) fputs (" " #isfoo, stdout)
+      TRYEM;
+#undef TRY
+
+      fputs("; lower = ", stdout);
+      print_char(tolower(c));
+      fputs("; upper = ", stdout);
+      print_char(toupper(c));
+      putchar('\n');
+    }
+
+  fputs ("EOF", stdout);
+  if (tolower (EOF) != EOF)
+    {
+      ++lose;
+      printf (" tolower BOGUS %d;", tolower (EOF));
+    }
+  if (toupper (EOF) != EOF)
+    {
+      ++lose;
+      printf (" toupper BOGUS %d;", toupper (EOF));
+    }
 
-  for (c = 0; c <= UCHAR_MAX; ++c) {
-    print_char(c);
-    if (isascii(c))
-      fputs(" isascii", stdout);
-    if (isalnum(c))
-      fputs(" isalnum", stdout);
-    if (isalpha(c))
-      fputs(" isalpha", stdout);
-    if (iscntrl(c))
-      fputs(" iscntrl", stdout);
-    if (isdigit(c))
-      fputs(" isdigit", stdout);
-    if (isgraph(c))
-      fputs(" isgraph", stdout);
-    if (islower(c))
-      fputs(" islower", stdout);
-    if (isprint(c))
-      fputs(" isprint", stdout);
-    if (ispunct(c))
-      fputs(" ispunct", stdout);
-    if (isspace(c))
-      fputs(" isspace", stdout);
-    if (isupper(c))
-      fputs(" isupper", stdout);
-    if (isxdigit(c))
-      fputs(" isxdigit", stdout);
-    if (isblank(c))
-      fputs(" isblank", stdout);
-    fputs("; lower = ", stdout);
-    print_char(tolower(c));
-    fputs("; upper = ", stdout);
-    print_char(toupper(c));
-    putchar('\n');
-  }
+#define TRY(isfoo) if (isfoo (EOF)) fputs (" " #isfoo, stdout), ++lose
+  TRYEM;
+#undef TRY
 
-  exit(EXIT_SUCCESS);
+  return lose ? EXIT_FAILURE : EXIT_SUCCESS;
 }