1 1.11 rillig /* $NetBSD: msg_230.c,v 1.11 2022/02/26 11:13:01 rillig Exp $ */ 2 1.1 rillig # 3 "msg_230.c" 3 1.1 rillig 4 1.9 rillig // Test for message: nonportable character comparison '%s %d' [230] 5 1.1 rillig 6 1.2 rillig /* lint1-flags: -S -g -p -w */ 7 1.5 rillig /* lint1-only-if: schar */ 8 1.2 rillig 9 1.7 rillig /* 10 1.7 rillig * C11 6.2.5p15 defines that 'char' has the same range, representation, and 11 1.7 rillig * behavior as either 'signed char' or 'unsigned char'. 12 1.7 rillig * 13 1.7 rillig * The portable range of 'char' is from 0 to 127 since all lint platforms 14 1.7 rillig * define CHAR_SIZE to be 8. 15 1.7 rillig * 16 1.7 rillig * See msg_162.c, which covers 'signed char' and 'unsigned char'. 17 1.7 rillig */ 18 1.7 rillig 19 1.7 rillig void 20 1.7 rillig compare_plain_char(char c) 21 1.2 rillig { 22 1.9 rillig /* expect+1: warning: nonportable character comparison '== -129' [230] */ 23 1.7 rillig if (c == -129) 24 1.7 rillig return; 25 1.9 rillig /* expect+1: warning: nonportable character comparison '== -128' [230] */ 26 1.7 rillig if (c == -128) 27 1.7 rillig return; 28 1.9 rillig /* expect+1: warning: nonportable character comparison '== -1' [230] */ 29 1.7 rillig if (c == -1) 30 1.7 rillig return; 31 1.7 rillig if (c == 0) 32 1.4 rillig return; 33 1.7 rillig if (c == 127) 34 1.4 rillig return; 35 1.9 rillig /* expect+1: warning: nonportable character comparison '== 128' [230] */ 36 1.7 rillig if (c == 128) 37 1.7 rillig return; 38 1.9 rillig /* expect+1: warning: nonportable character comparison '== 255' [230] */ 39 1.7 rillig if (c == 255) 40 1.7 rillig return; 41 1.9 rillig /* expect+1: warning: nonportable character comparison '== 256' [230] */ 42 1.7 rillig if (c == 256) 43 1.7 rillig return; 44 1.7 rillig } 45 1.7 rillig 46 1.7 rillig void 47 1.7 rillig compare_plain_char_yoda(char c) 48 1.7 rillig { 49 1.9 rillig /* expect+1: warning: nonportable character comparison '== -129' [230] */ 50 1.7 rillig if (-129 == c) 51 1.7 rillig return; 52 1.9 rillig /* expect+1: warning: nonportable character comparison '== -128' [230] */ 53 1.7 rillig if (-128 == c) 54 1.7 rillig return; 55 1.9 rillig /* expect+1: warning: nonportable character comparison '== -1' [230] */ 56 1.7 rillig if (-1 == c) 57 1.7 rillig return; 58 1.7 rillig if (0 == c) 59 1.7 rillig return; 60 1.7 rillig if (127 == c) 61 1.7 rillig return; 62 1.9 rillig /* expect+1: warning: nonportable character comparison '== 128' [230] */ 63 1.7 rillig if (128 == c) 64 1.7 rillig return; 65 1.9 rillig /* expect+1: warning: nonportable character comparison '== 255' [230] */ 66 1.7 rillig if (255 == c) 67 1.7 rillig return; 68 1.9 rillig /* expect+1: warning: nonportable character comparison '== 256' [230] */ 69 1.7 rillig if (256 == c) 70 1.7 rillig return; 71 1.7 rillig } 72 1.7 rillig 73 1.7 rillig void 74 1.11 rillig compare_greater(char c) 75 1.7 rillig { 76 1.7 rillig 77 1.9 rillig /* expect+1: warning: nonportable character comparison '> -2' [230] */ 78 1.7 rillig if (c > -2) 79 1.7 rillig return; 80 1.9 rillig /* expect+1: warning: nonportable character comparison '>= -1' [230] */ 81 1.7 rillig if (c >= -1) 82 1.4 rillig return; 83 1.2 rillig 84 1.2 rillig /* 85 1.7 rillig * XXX: The following two comparisons have the same effect, yet lint 86 1.7 rillig * only warns about one of them. 87 1.4 rillig */ 88 1.9 rillig /* expect+1: warning: nonportable character comparison '> -1' [230] */ 89 1.7 rillig if (c > -1) 90 1.7 rillig return; 91 1.8 rillig /* 92 1.8 rillig * On platforms where char is unsigned, lint warns that the 93 1.8 rillig * comparison always evaluates to true; see msg_230_uchar.c. 94 1.8 rillig */ 95 1.7 rillig if (c >= 0) 96 1.4 rillig return; 97 1.7 rillig 98 1.7 rillig /* 99 1.7 rillig * XXX: The following two comparisons have the same effect, yet lint 100 1.7 rillig * only warns about one of them. 101 1.7 rillig */ 102 1.7 rillig if (c > 127) 103 1.4 rillig return; 104 1.9 rillig /* expect+1: warning: nonportable character comparison '>= 128' [230] */ 105 1.7 rillig if (c >= 128) 106 1.4 rillig return; 107 1.6 rillig 108 1.9 rillig /* expect+1: warning: nonportable character comparison '> 128' [230] */ 109 1.7 rillig if (c > 128) 110 1.6 rillig return; 111 1.9 rillig /* expect+1: warning: nonportable character comparison '>= 129' [230] */ 112 1.7 rillig if (c >= 129) 113 1.6 rillig return; 114 1.2 rillig } 115 1.10 rillig 116 1.10 rillig void 117 1.10 rillig compare_with_character_literal(char ch) 118 1.10 rillig { 119 1.10 rillig /* 120 1.10 rillig * FIXME: These comparisons are portable since the character constant 121 1.10 rillig * is interpreted using the type 'char' on the exact same platform 122 1.10 rillig * as where the comparison takes place. 123 1.10 rillig */ 124 1.10 rillig /* expect+1: warning: nonportable character comparison '== -128' [230] */ 125 1.10 rillig if (ch == '\200') 126 1.10 rillig return; 127 1.10 rillig /* expect+1: warning: nonportable character comparison '== -1' [230] */ 128 1.10 rillig if (ch == '\377') 129 1.10 rillig return; 130 1.10 rillig if (ch == '\000') 131 1.10 rillig return; 132 1.10 rillig } 133