Home | History | Annotate | Line # | Download | only in lint1
msg_230.c revision 1.8
      1  1.8  rillig /*	$NetBSD: msg_230.c,v 1.8 2021/08/28 15:25:10 rillig Exp $	*/
      2  1.1  rillig # 3 "msg_230.c"
      3  1.1  rillig 
      4  1.1  rillig // Test for message: nonportable character comparison, op %s [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.7  rillig 	/* expect+1: warning: nonportable character comparison, op == [230] */
     23  1.7  rillig 	if (c == -129)
     24  1.7  rillig 		return;
     25  1.7  rillig 	/* expect+1: warning: nonportable character comparison, op == [230] */
     26  1.7  rillig 	if (c == -128)
     27  1.7  rillig 		return;
     28  1.7  rillig 	/* expect+1: warning: nonportable character comparison, op == [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.7  rillig 	/* expect+1: warning: nonportable character comparison, op == [230] */
     36  1.7  rillig 	if (c == 128)
     37  1.7  rillig 		return;
     38  1.7  rillig 	/* expect+1: warning: nonportable character comparison, op == [230] */
     39  1.7  rillig 	if (c == 255)
     40  1.7  rillig 		return;
     41  1.7  rillig 	/* expect+1: warning: nonportable character comparison, op == [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.7  rillig 	/* expect+1: warning: nonportable character comparison, op == [230] */
     50  1.7  rillig 	if (-129 == c)
     51  1.7  rillig 		return;
     52  1.7  rillig 	/* expect+1: warning: nonportable character comparison, op == [230] */
     53  1.7  rillig 	if (-128 == c)
     54  1.7  rillig 		return;
     55  1.7  rillig 	/* expect+1: warning: nonportable character comparison, op == [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.7  rillig 	/* expect+1: warning: nonportable character comparison, op == [230] */
     63  1.7  rillig 	if (128 == c)
     64  1.7  rillig 		return;
     65  1.7  rillig 	/* expect+1: warning: nonportable character comparison, op == [230] */
     66  1.7  rillig 	if (255 == c)
     67  1.7  rillig 		return;
     68  1.7  rillig 	/* expect+1: warning: nonportable character comparison, op == [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.7  rillig compare_lt(char c)
     75  1.7  rillig {
     76  1.7  rillig 
     77  1.7  rillig 	/* expect+1: warning: nonportable character comparison, op > [230] */
     78  1.7  rillig 	if (c > -2)
     79  1.7  rillig 		return;
     80  1.7  rillig 	/* expect+1: warning: nonportable character comparison, op >= [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.7  rillig 	/* expect+1: warning: nonportable character comparison, op > [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.7  rillig 	/* expect+1: warning: nonportable character comparison, op >= [230] */
    105  1.7  rillig 	if (c >= 128)
    106  1.4  rillig 		return;
    107  1.6  rillig 
    108  1.7  rillig 	/* expect+1: warning: nonportable character comparison, op > [230] */
    109  1.7  rillig 	if (c > 128)
    110  1.6  rillig 		return;
    111  1.7  rillig 	/* expect+1: warning: nonportable character comparison, op >= [230] */
    112  1.7  rillig 	if (c >= 129)
    113  1.6  rillig 		return;
    114  1.2  rillig }
    115