]> git.ipfire.org Git - thirdparty/glibc.git/blame - ctype/test_ctype.c
[powerpc] No need to enter "Ignore Exceptions Mode"
[thirdparty/glibc.git] / ctype / test_ctype.c
CommitLineData
04277e02 1/* Copyright (C) 1991-2019 Free Software Foundation, Inc.
c84142e8 2 This file is part of the GNU C Library.
28f540f4 3
c84142e8 4 The GNU C Library is free software; you can redistribute it and/or
41bdb6e2
AJ
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
28f540f4 8
c84142e8
UD
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
41bdb6e2 12 Lesser General Public License for more details.
28f540f4 13
41bdb6e2 14 You should have received a copy of the GNU Lesser General Public
59ba27a6 15 License along with the GNU C Library; if not, see
5a82c748 16 <https://www.gnu.org/licenses/>. */
28f540f4 17
28f540f4
RM
18#include <limits.h>
19#include <ctype.h>
20#include <stdio.h>
21#include <stdlib.h>
22
23#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
24#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
25#define XOR(e,f) (((e) && !(f)) || (!(e) && (f)))
26
27#ifdef __GNUC__
28__inline
29#endif
30static void
c84142e8 31print_char (unsigned char c)
28f540f4
RM
32{
33 printf("%d/", (int) c);
34 if (isgraph(c))
35 printf("'%c'", c);
36 else
37 printf("'\\%.3o'", c);
38}
39
40int
c84142e8 41main (int argc, char **argv)
28f540f4 42{
c84142e8 43 unsigned short int c;
28f540f4
RM
44 int lose = 0;
45
4f2a1df0
RM
46#define TRYEM do { \
47 TRY (isascii); \
48 TRY (isalnum); \
49 TRY (isalpha); \
50 TRY (iscntrl); \
51 TRY (isdigit); \
52 TRY (isgraph); \
53 TRY (islower); \
54 TRY (isprint); \
55 TRY (ispunct); \
56 TRY (isspace); \
57 TRY (isupper); \
58 TRY (isxdigit); \
59 TRY (isblank); \
60 } while (0)
61
28f540f4
RM
62 for (c = 0; c <= UCHAR_MAX; ++c)
63 {
64 print_char (c);
65
66 if (XOR (islower (c), ISLOWER (c)) || toupper (c) != TOUPPER (c))
67 {
68 fputs (" BOGUS", stdout);
69 ++lose;
70 }
71
4f2a1df0
RM
72#define TRY(isfoo) if (isfoo (c)) fputs (" " #isfoo, stdout)
73 TRYEM;
74#undef TRY
75
28f540f4
RM
76 fputs("; lower = ", stdout);
77 print_char(tolower(c));
78 fputs("; upper = ", stdout);
79 print_char(toupper(c));
80 putchar('\n');
81 }
82
4f2a1df0
RM
83 fputs ("EOF", stdout);
84 if (tolower (EOF) != EOF)
85 {
86 ++lose;
87 printf (" tolower BOGUS %d;", tolower (EOF));
88 }
89 if (toupper (EOF) != EOF)
90 {
91 ++lose;
92 printf (" toupper BOGUS %d;", toupper (EOF));
93 }
94
95#define TRY(isfoo) if (isfoo (EOF)) fputs (" " #isfoo, stdout), ++lose
96 TRYEM;
97#undef TRY
98
bf4de8f3 99 return lose ? EXIT_FAILURE : EXIT_SUCCESS;
28f540f4 100}