Our tree uses lex pretty much as-is from upstream, so this refactoring isn't the way to go.
If you find an actual bug however.. fix them, using the established practice. > 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; >