When scanning for is*() function uses with signed chars, I found that lex(1) uses an unecessary #define for unsigned char. The below diff removes it and fixes an undefined is*() usage or two as well.
Index: ecs.c =================================================================== RCS file: /cvs/src/usr.bin/lex/ecs.c,v retrieving revision 1.6 diff -u -p -r1.6 ecs.c --- ecs.c 4 Jun 2003 17:34:44 -0000 1.6 +++ ecs.c 12 Oct 2015 14:13:36 -0000 @@ -107,9 +107,9 @@ int fwd[], bck[], num; /* mkeccl - update equivalence classes based on character class xtions * * synopsis - * Char ccls[]; + * unsigned char ccls[]; * int lenccl, fwd[llsiz], bck[llsiz], llsiz, NUL_mapping; - * void mkeccl( Char ccls[], int lenccl, int fwd[llsiz], int bck[llsiz], + * void mkeccl( unsigned char ccls[], int lenccl, int fwd[llsiz], int bck[llsiz], * int llsiz, int NUL_mapping ); * * ccls contains the elements of the character class, lenccl is the @@ -120,7 +120,7 @@ int fwd[], bck[], num; */ void mkeccl( ccls, lenccl, fwd, bck, llsiz, NUL_mapping ) -Char ccls[]; +unsigned char ccls[]; int lenccl, fwd[], bck[], llsiz, NUL_mapping; { int cclp, oldec, newec; Index: flexdef.h =================================================================== RCS file: /cvs/src/usr.bin/lex/flexdef.h,v retrieving revision 1.8 diff -u -p -r1.8 flexdef.h --- flexdef.h 10 Oct 2015 05:47:54 -0000 1.8 +++ flexdef.h 12 Oct 2015 14:13:36 -0000 @@ -81,7 +81,6 @@ /* Always be prepared to generate an 8-bit scanner. */ #define CSIZE 256 -#define Char unsigned char /* Size of input alphabet - should be size of ASCII set. */ #ifndef DEFAULT_CSIZE @@ -633,7 +632,7 @@ extern int end_of_buffer_state; extern int lastccl, *cclmap, *ccllen, *cclng, cclreuse; extern int current_maxccls, current_max_ccl_tbl_size; -extern Char *ccltbl; +extern unsigned char *ccltbl; /* Variables for miscellaneous information: @@ -701,10 +700,10 @@ void flex_free PROTO((void*)); (char *) reallocate_array( (void *) array, size, sizeof( char ) ) #define allocate_Character_array(size) \ - (Char *) allocate_array( size, sizeof( Char ) ) + (unsigned char *) allocate_array( size, sizeof( unsigned char ) ) #define reallocate_Character_array(array,size) \ - (Char *) reallocate_array( (void *) array, size, sizeof( Char ) ) + (unsigned char *) reallocate_array( (void *) array, size, sizeof( unsigned char ) ) /* Used to communicate between scanner and parser. The type should really @@ -755,7 +754,7 @@ extern void ccl2ecl PROTO((void)); extern int cre8ecs PROTO((int[], int[], int)); /* Update equivalence classes based on character class transitions. */ -extern void mkeccl PROTO((Char[], int, int[], int[], int, int)); +extern void mkeccl PROTO((unsigned char[], int, int[], int[], int, int)); /* Create equivalence class for single character. */ extern void mkechar PROTO((int, int[], int[])); @@ -834,16 +833,16 @@ extern void bubble PROTO((int [], int)); extern void check_char PROTO((int c)); /* Replace upper-case letter to lower-case. */ -extern Char clower PROTO((int)); +extern unsigned char clower PROTO((int)); /* Returns a dynamically allocated copy of a string. */ extern char *copy_string PROTO((register const char *)); /* Returns a dynamically allocated copy of a (potentially) unsigned string. */ -extern Char *copy_unsigned_string PROTO((register Char *)); +extern unsigned char *copy_unsigned_string PROTO((register unsigned char *)); /* Shell sort a character array. */ -extern void cshell PROTO((Char [], int, int)); +extern void cshell PROTO((unsigned char[], int, int)); /* Finish up a block of data declarations. */ extern void dataend PROTO((void)); @@ -858,7 +857,7 @@ extern void flexerror PROTO((const char[ extern void flexfatal PROTO((const char[])); /* Convert a hexadecimal digit string to an integer value. */ -extern int htoi PROTO((Char[])); +extern int htoi PROTO((unsigned char[])); /* Report an error message formatted with one integer argument. */ extern void lerrif PROTO((const char[], int)); @@ -886,10 +885,10 @@ extern void mkdata PROTO((int)); /* gene extern int myctoi PROTO((char [])); /* Return character corresponding to escape sequence. */ -extern Char myesc PROTO((Char[])); +extern unsigned char myesc PROTO((unsigned char[])); /* Convert an octal digit string to an integer value. */ -extern int otoi PROTO((Char [] )); +extern int otoi PROTO((unsigned char[] )); /* Output a (possibly-formatted) string to the generated scanner. */ extern void out PROTO((const char [])); @@ -1008,16 +1007,16 @@ extern int yywrap PROTO((void)); extern int addsym PROTO((register char[], char*, int, hash_table, int)); /* Save the text of a character class. */ -extern void cclinstal PROTO ((Char [], int)); +extern void cclinstal PROTO ((unsigned char[], int)); /* Lookup the number associated with character class. */ -extern int ccllookup PROTO((Char [])); +extern int ccllookup PROTO((unsigned char[])); /* Find symbol in symbol table. */ extern struct hash_entry *findsym PROTO((register char[], hash_table, int )); -extern void ndinstal PROTO((char[], Char[])); /* install a name definition */ -extern Char *ndlookup PROTO((char[])); /* lookup a name definition */ +extern void ndinstal PROTO((char[], unsigned char[])); /* install a name definition */ +extern unsigned char *ndlookup PROTO((char[])); /* lookup a name definition */ /* Increase maximum number of SC's. */ extern void scextend PROTO((void)); Index: initscan.c =================================================================== RCS file: /cvs/src/usr.bin/lex/initscan.c,v retrieving revision 1.14 diff -u -p -r1.14 initscan.c --- initscan.c 4 Nov 2013 17:03:32 -0000 1.14 +++ initscan.c 12 Oct 2015 14:13:36 -0000 @@ -1498,7 +1498,7 @@ YY_DECL int doing_codeblock = false; int i; - Char nmdef[MAXLINE], myesc(); + unsigned char nmdef[MAXLINE], myesc(); #line 1498 "scan.c" @@ -2268,7 +2268,7 @@ YY_RULE_SETUP /* Check to see if we've already encountered this * ccl. */ - if ( (cclval = ccllookup( (Char *) nmstr )) != 0 ) + if ( (cclval = ccllookup( (unsigned char *) nmstr )) != 0 ) { if ( input() != ']' ) synerr( _( "bad character class" ) ); @@ -2282,7 +2282,7 @@ YY_RULE_SETUP /* We fudge a bit. We know that this ccl will * soon be numbered as lastccl + 1 by cclinit. */ - cclinstal( (Char *) nmstr, lastccl + 1 ); + cclinstal( (unsigned char *) nmstr, lastccl + 1 ); /* Push back everything but the leading bracket * so the ccl can be rescanned. @@ -2298,8 +2298,8 @@ case 106: YY_RULE_SETUP #line 435 "scan.l" { - Char *nmdefptr; - Char *ndlookup(); + unsigned char *nmdefptr; + unsigned char *ndlookup(); strlcpy( nmstr, yytext + 1, sizeof nmstr ); nmstr[yyleng - 2] = '\0'; /* chop trailing brace */ @@ -2711,7 +2711,7 @@ case 162: YY_RULE_SETUP #line 633 "scan.l" { - yylval = myesc( (Char *) yytext ); + yylval = myesc( (unsigned char *) yytext ); if ( YY_START == FIRSTCCL ) BEGIN(CCL); Index: main.c =================================================================== RCS file: /cvs/src/usr.bin/lex/main.c,v retrieving revision 1.15 diff -u -p -r1.15 main.c --- main.c 10 Oct 2015 05:47:54 -0000 1.15 +++ main.c 12 Oct 2015 14:13:36 -0000 @@ -94,7 +94,7 @@ int *accsiz, *dhash, numas; int numsnpairs, jambase, jamstate; int lastccl, *cclmap, *ccllen, *cclng, cclreuse; int current_maxccls, current_max_ccl_tbl_size; -Char *ccltbl; +unsigned char *ccltbl; char nmstr[MAXLINE]; int sectnum, nummt, hshcol, dfaeql, numeps, eps2, num_reallocs; int tmpuses, totnst, peakpairs, numuniq, numdup, hshsave; Index: misc.c =================================================================== RCS file: /cvs/src/usr.bin/lex/misc.c,v retrieving revision 1.13 diff -u -p -r1.13 misc.c --- misc.c 27 Oct 2013 18:31:24 -0000 1.13 +++ misc.c 12 Oct 2015 14:13:36 -0000 @@ -109,7 +109,7 @@ char *str; { while ( *str ) { - if ( ! isascii( (Char) *str ) || ! islower( *str ) ) + if ( ! isascii( (unsigned char)*str ) || ! islower( (unsigned char)*str ) ) return 0; ++str; } @@ -125,7 +125,7 @@ char *str; { while ( *str ) { - if ( ! isascii( (Char) *str ) || ! isupper( *str ) ) + if ( ! isascii( (unsigned char)*str ) || ! isupper( (unsigned char)*str ) ) return 0; ++str; } @@ -187,10 +187,10 @@ int c; /* clower - replace upper-case letter to lower-case */ -Char clower( c ) +unsigned char clower( c ) int c; { - return (Char) ((isascii( c ) && isupper( c )) ? tolower( c ) : c); + return (unsigned char) ((isascii( c ) && isupper( c )) ? tolower( c ) : c); } @@ -225,11 +225,11 @@ const char *str; * returns a dynamically allocated copy of a (potentially) unsigned string */ -Char *copy_unsigned_string( str ) -Char *str; +unsigned char *copy_unsigned_string( str ) +unsigned char *str; { - Char *c; - Char *copy; + unsigned char *c; + unsigned char *copy; /* find length */ for ( c = str; *c; ++c ) @@ -248,7 +248,7 @@ Char *str; * * synopsis * - * Char v[n]; + * unsigned char v[n]; * int n, special_case_0; * cshell( v, n, special_case_0 ); * @@ -263,11 +263,11 @@ Char *str; */ void cshell( v, n, special_case_0 ) -Char v[]; +unsigned char v[]; int n, special_case_0; { int gap, i, j, jg; - Char k; + unsigned char k; for ( gap = n / 2; gap > 0; gap = gap / 2 ) for ( i = gap; i < n; ++i ) @@ -353,7 +353,7 @@ const char msg[]; /* htoi - convert a hexadecimal digit string to an integer value */ int htoi( str ) -Char str[]; +unsigned char str[]; { unsigned int result; @@ -535,10 +535,10 @@ char array[]; /* myesc - return character corresponding to escape sequence */ -Char myesc( array ) -Char array[]; +unsigned char myesc( array ) +unsigned char array[]; { - Char c, esc_char; + unsigned char c, esc_char; switch ( array[1] ) { @@ -590,7 +590,7 @@ Char array[]; int sptr = 2; while ( isascii( array[sptr] ) && - isxdigit( (char) array[sptr] ) ) + isxdigit( array[sptr] ) ) /* Don't increment inside loop control * because if isdigit() is a macro it might * expand into multiple increments ... @@ -616,7 +616,7 @@ Char array[]; /* otoi - convert an octal digit string to an integer value */ int otoi( str ) -Char str[]; +unsigned char str[]; { unsigned int result; Index: scan.l =================================================================== RCS file: /cvs/src/usr.bin/lex/scan.l,v retrieving revision 1.9 diff -u -p -r1.9 scan.l --- scan.l 6 Dec 2006 05:03:29 -0000 1.9 +++ scan.l 12 Oct 2015 14:13:36 -0000 @@ -105,7 +105,7 @@ LEXOPT [aceknopr] int doing_codeblock = false; int i; - Char nmdef[MAXLINE], myesc(); + unsigned char nmdef[MAXLINE], myesc(); <INITIAL>{ @@ -414,7 +414,7 @@ LEXOPT [aceknopr] /* Check to see if we've already encountered this * ccl. */ - if ( (cclval = ccllookup( (Char *) nmstr )) != 0 ) + if ( (cclval = ccllookup( (unsigned char *) nmstr )) != 0 ) { if ( input() != ']' ) synerr( _( "bad character class" ) ); @@ -428,7 +428,7 @@ LEXOPT [aceknopr] /* We fudge a bit. We know that this ccl will * soon be numbered as lastccl + 1 by cclinit. */ - cclinstal( (Char *) nmstr, lastccl + 1 ); + cclinstal( (unsigned char *) nmstr, lastccl + 1 ); /* Push back everything but the leading bracket * so the ccl can be rescanned. @@ -441,8 +441,8 @@ LEXOPT [aceknopr] } "{"{NAME}"}" { - register Char *nmdefptr; - Char *ndlookup(); + register unsigned char *nmdefptr; + unsigned char *ndlookup(); strlcpy( nmstr, yytext + 1, sizeof nmstr ); nmstr[yyleng - 2] = '\0'; /* chop trailing brace */ @@ -639,7 +639,7 @@ LEXOPT [aceknopr] <SECT2,QUOTE,FIRSTCCL,CCL>{ESCSEQ} { - yylval = myesc( (Char *) yytext ); + yylval = myesc( (unsigned char *) yytext ); if ( YY_START == FIRSTCCL ) BEGIN(CCL); Index: sym.c =================================================================== RCS file: /cvs/src/usr.bin/lex/sym.c,v retrieving revision 1.6 diff -u -p -r1.6 sym.c --- sym.c 4 Jun 2003 17:34:44 -0000 1.6 +++ sym.c 12 Oct 2015 14:13:36 -0000 @@ -106,13 +106,13 @@ int table_size; /* cclinstal - save the text of a character class */ void cclinstal( ccltxt, cclnum ) -Char ccltxt[]; +unsigned char ccltxt[]; int cclnum; { /* We don't bother checking the return status because we are not * called unless the symbol is new. */ - Char *copy_unsigned_string(); + unsigned char *copy_unsigned_string(); (void) addsym( (char *) copy_unsigned_string( ccltxt ), (char *) 0, cclnum, @@ -126,7 +126,7 @@ int cclnum; */ int ccllookup( ccltxt ) -Char ccltxt[]; +unsigned char ccltxt[]; { return findsym( (char *) ccltxt, ccltab, CCL_HASH_SIZE )->int_val; } @@ -184,10 +184,10 @@ int hash_size; void ndinstal( name, definition ) char name[]; -Char definition[]; +unsigned char definition[]; { char *copy_string(); - Char *copy_unsigned_string(); + unsigned char *copy_unsigned_string(); if ( addsym( copy_string( name ), (char *) copy_unsigned_string( definition ), 0, @@ -201,10 +201,10 @@ Char definition[]; * Returns a nil pointer if the name definition does not exist. */ -Char *ndlookup( nd ) +unsigned char *ndlookup( nd ) char nd[]; { - return (Char *) findsym( nd, ndtbl, NAME_TABLE_HASH_SIZE )->str_val; + return (unsigned char *) findsym( nd, ndtbl, NAME_TABLE_HASH_SIZE )->str_val; } Index: tblcmp.c =================================================================== RCS file: /cvs/src/usr.bin/lex/tblcmp.c,v retrieving revision 1.6 diff -u -p -r1.6 tblcmp.c --- tblcmp.c 4 Jun 2003 17:34:44 -0000 1.6 +++ tblcmp.c 12 Oct 2015 14:13:36 -0000 @@ -719,7 +719,7 @@ void mktemplate( state, statenum, comsta int state[], statenum, comstate; { int i, numdiff, tmpbase, tmp[CSIZE + 1]; - Char transset[CSIZE + 1]; + unsigned char transset[CSIZE + 1]; int tsptr; ++numtemps;