msg_230_uchar.c revision 1.4 1 1.4 rillig /* $NetBSD: msg_230_uchar.c,v 1.4 2021/08/28 15:25:10 rillig Exp $ */
2 1.1 rillig # 3 "msg_230_uchar.c"
3 1.1 rillig
4 1.1 rillig // Test for message: nonportable character comparison, op %s [230]
5 1.1 rillig
6 1.1 rillig /* lint1-flags: -S -g -p -w */
7 1.2 rillig /* lint1-only-if: uchar */
8 1.1 rillig
9 1.4 rillig /*
10 1.4 rillig * C11 6.2.5p15 defines that 'char' has the same range, representation, and
11 1.4 rillig * behavior as either 'signed char' or 'unsigned char'.
12 1.4 rillig *
13 1.4 rillig * The portable range of 'char' is from 0 to 127 since all lint platforms
14 1.4 rillig * define CHAR_SIZE to be 8.
15 1.4 rillig *
16 1.4 rillig * See msg_162.c, which covers 'signed char' and 'unsigned char'.
17 1.4 rillig */
18 1.4 rillig
19 1.4 rillig void
20 1.4 rillig compare_plain_char(char c)
21 1.4 rillig {
22 1.4 rillig /* expect+1: warning: nonportable character comparison, op == [230] */
23 1.4 rillig if (c == -129)
24 1.4 rillig return;
25 1.4 rillig /* expect+1: warning: nonportable character comparison, op == [230] */
26 1.4 rillig if (c == -128)
27 1.4 rillig return;
28 1.4 rillig /* expect+1: warning: nonportable character comparison, op == [230] */
29 1.4 rillig if (c == -1)
30 1.4 rillig return;
31 1.4 rillig if (c == 0)
32 1.4 rillig return;
33 1.4 rillig if (c == 127)
34 1.4 rillig return;
35 1.4 rillig /* expect+1: warning: nonportable character comparison, op == [230] */
36 1.4 rillig if (c == 128)
37 1.4 rillig return;
38 1.4 rillig /* expect+1: warning: nonportable character comparison, op == [230] */
39 1.4 rillig if (c == 255)
40 1.4 rillig return;
41 1.4 rillig /* expect+1: warning: nonportable character comparison, op == [230] */
42 1.4 rillig if (c == 256)
43 1.4 rillig return;
44 1.4 rillig }
45 1.4 rillig
46 1.4 rillig void
47 1.4 rillig compare_plain_char_yoda(char c)
48 1.4 rillig {
49 1.4 rillig /* expect+1: warning: nonportable character comparison, op == [230] */
50 1.4 rillig if (-129 == c)
51 1.4 rillig return;
52 1.4 rillig /* expect+1: warning: nonportable character comparison, op == [230] */
53 1.4 rillig if (-128 == c)
54 1.4 rillig return;
55 1.4 rillig /* expect+1: warning: nonportable character comparison, op == [230] */
56 1.4 rillig if (-1 == c)
57 1.4 rillig return;
58 1.4 rillig if (0 == c)
59 1.4 rillig return;
60 1.4 rillig if (127 == c)
61 1.4 rillig return;
62 1.4 rillig /* expect+1: warning: nonportable character comparison, op == [230] */
63 1.4 rillig if (128 == c)
64 1.4 rillig return;
65 1.4 rillig /* expect+1: warning: nonportable character comparison, op == [230] */
66 1.4 rillig if (255 == c)
67 1.4 rillig return;
68 1.4 rillig /* expect+1: warning: nonportable character comparison, op == [230] */
69 1.4 rillig if (256 == c)
70 1.4 rillig return;
71 1.4 rillig }
72 1.4 rillig
73 1.4 rillig void
74 1.4 rillig compare_lt(char c)
75 1.1 rillig {
76 1.4 rillig
77 1.4 rillig /* expect+1: warning: nonportable character comparison, op > [230] */
78 1.4 rillig if (c > -2)
79 1.1 rillig return;
80 1.4 rillig /* expect+1: warning: nonportable character comparison, op >= [230] */
81 1.4 rillig if (c >= -1)
82 1.1 rillig return;
83 1.4 rillig
84 1.4 rillig /*
85 1.4 rillig * XXX: The following two comparisons have the same effect, yet lint
86 1.4 rillig * only warns about one of them.
87 1.4 rillig */
88 1.4 rillig /* expect+1: warning: nonportable character comparison, op > [230] */
89 1.4 rillig if (c > -1)
90 1.4 rillig return;
91 1.4 rillig /*
92 1.4 rillig * This warning only occurs on uchar platforms since on these
93 1.4 rillig * platforms it is always true. Code that needs this ordered
94 1.4 rillig * comparison on values of type plain char is questionable since it
95 1.4 rillig * behaves differently depending on the platform. Such a comparison
96 1.4 rillig * should never be needed.
97 1.4 rillig */
98 1.4 rillig /* expect+1: warning: comparison of char with 0, op >= [162] */
99 1.4 rillig if (c >= 0)
100 1.1 rillig return;
101 1.1 rillig
102 1.1 rillig /*
103 1.4 rillig * XXX: The following two comparisons have the same effect, yet lint
104 1.4 rillig * only warns about one of them.
105 1.3 rillig */
106 1.4 rillig if (c > 127)
107 1.1 rillig return;
108 1.4 rillig /* expect+1: warning: nonportable character comparison, op >= [230] */
109 1.4 rillig if (c >= 128)
110 1.4 rillig return;
111 1.4 rillig
112 1.4 rillig /* expect+1: warning: nonportable character comparison, op > [230] */
113 1.4 rillig if (c > 128)
114 1.1 rillig return;
115 1.4 rillig /* expect+1: warning: nonportable character comparison, op >= [230] */
116 1.4 rillig if (c >= 129)
117 1.1 rillig return;
118 1.1 rillig }
119