Thread: [Flex-help] ctype.h trouble
flex is a tool for generating scanners
Brought to you by:
wlestes
From: Patrick W. <pr...@ca...> - 2008-08-19 18:10:29
Attachments:
ctype.pat
|
I have found the following patch necessary to get around problems with sending _signed_ char to ctype functions, e.g., http://www.opengroup.org/onlinepubs/009695399/functions/isspace.html Also, lastws and pstart are both pointers, so lastws - pstart may well be long. Also yytbl_data_getijk is defined but not used.. Hope this helps, Patrick |
From: Patrick W. <pr...@ca...> - 2008-09-07 20:46:58
|
There is a nice explanation at: http://publications.gbdirect.co.uk/c_book/chapter9/character_handling.html and you can see some nice breakage with WorkShop Compilers 5.0 98/12/15 C 5.0 (Is anybody still developing flex?) Cheers, Patrick On Tue, Aug 19, 2008 at 07:10:38PM +0100, Patrick Welche wrote: > I have found the following patch necessary to get around problems with > sending _signed_ char to ctype functions, e.g., > > http://www.opengroup.org/onlinepubs/009695399/functions/isspace.html > > Also, lastws and pstart are both pointers, so lastws - pstart may well be > long. > > Also yytbl_data_getijk is defined but not used.. > > Hope this helps, > > Patrick > ? ctype.pat > Index: misc.c > =================================================================== > RCS file: /cvsroot/flex/flex/misc.c,v > retrieving revision 2.78 > diff -u -r2.78 misc.c > --- misc.c 22 Mar 2006 12:49:41 -0000 2.78 > +++ misc.c 19 Aug 2008 18:02:35 -0000 > @@ -184,7 +184,7 @@ > register char *str; > { > while (*str) { > - if (!isascii ((Char) * str) || !islower (*str)) > + if (!isascii ((Char) * str) || !islower ((Char) * str)) > return 0; > ++str; > } > @@ -199,7 +199,7 @@ > register char *str; > { > while (*str) { > - if (!isascii ((Char) * str) || !isupper (*str)) > + if (!isascii ((Char) * str) || !isupper ((Char) * str)) > return 0; > ++str; > } > @@ -675,7 +675,7 @@ > 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 ... > Index: scanopt.c > =================================================================== > RCS file: /cvsroot/flex/flex/scanopt.c,v > retrieving revision 2.10 > diff -u -r2.10 scanopt.c > --- scanopt.c 12 May 2007 13:11:57 -0000 2.10 > +++ scanopt.c 19 Aug 2008 18:03:30 -0000 > @@ -189,7 +189,7 @@ > s->aux = (struct _aux *) malloc (s->optc * sizeof (struct _aux)); > > for (i = 0; i < s->optc; i++) { > - const char *p, *pname; > + const Char *p, *pname; > const struct optspec_t *opt; > struct _aux *aux; > > @@ -200,11 +200,11 @@ > > if (opt->opt_fmt[0] == '-' && opt->opt_fmt[1] == '-') { > aux->flags |= IS_LONG; > - pname = opt->opt_fmt + 2; > + pname = (const Char *)(opt->opt_fmt + 2); > s->has_long = 1; > } > else { > - pname = opt->opt_fmt + 1; > + pname = (const Char *)(opt->opt_fmt + 1); > s->has_short = 1; > } > aux->printlen = strlen (opt->opt_fmt); > @@ -481,7 +481,7 @@ > > while (*p && n < maxlen[1] > && *p != '\n') { > - if (isspace (*p) > + if (isspace ((Char)(*p)) > || *p == '-') lastws = > p; > n++; > @@ -504,8 +504,7 @@ > if (lastws) { > fprintf (fp, > "%.*s\n", > - lastws - > - pstart, > + (int)(lastws - pstart), > pstart); > pstart = > lastws + 1; > Index: tables.c > =================================================================== > RCS file: /cvsroot/flex/flex/tables.c,v > retrieving revision 2.15 > diff -u -r2.15 tables.c > --- tables.c 11 Apr 2006 16:54:47 -0000 2.15 > +++ tables.c 19 Aug 2008 18:03:31 -0000 > @@ -57,8 +57,10 @@ > int yytbl_write8 (struct yytbl_writer *wr, flex_uint8_t v); > int yytbl_writen (struct yytbl_writer *wr, void *v, flex_int32_t len); > static flex_int32_t yytbl_data_geti (const struct yytbl_data *tbl, int i); > +/* XXX Not used > static flex_int32_t yytbl_data_getijk (const struct yytbl_data *tbl, int i, > int j, int k); > + */ > > > /** Initialize the table writer. > @@ -330,6 +332,8 @@ > } > > > +/* XXX Not Used */ > +#if 0 > /** Extract data element [i][j] from array data tables. > * @param tbl data table > * @param i index into higher dimension array. i should be zero for one-dimensional arrays. > @@ -364,6 +368,7 @@ > > return 0; > } > +#endif /* Not used */ > > /** Extract data element [i] from array data tables treated as a single flat array of integers. > * Be careful for 2-dimensional arrays or for YYTD_ID_TRANSITION, which is an array > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's challenge > Build the coolest Linux based applications with Moblin SDK & win great prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Flex-help mailing list > Fle...@li... > https://lists.sourceforge.net/lists/listinfo/flex-help |
From: Aaron S. <aa...@se...> - 2008-09-08 04:09:31
|
I don't understand what capitalized 'Char' is in the patch below, but it is a good point that those functions expect a signed integer with valid signed char's (as returned by getchar, for example) represented as unsigned char (unsigned because if it were negative and then expanded to int, funny things may happen with sign extension). Flex is actively maintained, however there's no active development, per se, at the moment. There are some todo's that could use work for sure, though. Aaron On Sep 7, 2008, at 1:47 PM, Patrick Welche wrote: > There is a nice explanation at: > > http://publications.gbdirect.co.uk/c_book/chapter9/character_handling.html > > and you can see some nice breakage with WorkShop Compilers 5.0 > 98/12/15 C 5.0 > > > (Is anybody still developing flex?) > > > Cheers, > > Patrick > > > > On Tue, Aug 19, 2008 at 07:10:38PM +0100, Patrick Welche wrote: >> I have found the following patch necessary to get around problems >> with >> sending _signed_ char to ctype functions, e.g., >> >> http://www.opengroup.org/onlinepubs/009695399/functions/isspace.html >> >> Also, lastws and pstart are both pointers, so lastws - pstart may >> well be >> long. >> >> Also yytbl_data_getijk is defined but not used.. >> >> Hope this helps, >> >> Patrick > >> ? ctype.pat >> Index: misc.c >> =================================================================== >> RCS file: /cvsroot/flex/flex/misc.c,v >> retrieving revision 2.78 >> diff -u -r2.78 misc.c >> --- misc.c 22 Mar 2006 12:49:41 -0000 2.78 >> +++ misc.c 19 Aug 2008 18:02:35 -0000 >> @@ -184,7 +184,7 @@ >> register char *str; >> { >> while (*str) { >> - if (!isascii ((Char) * str) || !islower (*str)) >> + if (!isascii ((Char) * str) || !islower ((Char) * str)) >> return 0; >> ++str; >> } >> @@ -199,7 +199,7 @@ >> register char *str; >> { >> while (*str) { >> - if (!isascii ((Char) * str) || !isupper (*str)) >> + if (!isascii ((Char) * str) || !isupper ((Char) * str)) >> return 0; >> ++str; >> } >> @@ -675,7 +675,7 @@ >> 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 ... >> Index: scanopt.c >> =================================================================== >> RCS file: /cvsroot/flex/flex/scanopt.c,v >> retrieving revision 2.10 >> diff -u -r2.10 scanopt.c >> --- scanopt.c 12 May 2007 13:11:57 -0000 2.10 >> +++ scanopt.c 19 Aug 2008 18:03:30 -0000 >> @@ -189,7 +189,7 @@ >> s->aux = (struct _aux *) malloc (s->optc * sizeof (struct _aux)); >> >> for (i = 0; i < s->optc; i++) { >> - const char *p, *pname; >> + const Char *p, *pname; >> const struct optspec_t *opt; >> struct _aux *aux; >> >> @@ -200,11 +200,11 @@ >> >> if (opt->opt_fmt[0] == '-' && opt->opt_fmt[1] == '-') { >> aux->flags |= IS_LONG; >> - pname = opt->opt_fmt + 2; >> + pname = (const Char *)(opt->opt_fmt + 2); >> s->has_long = 1; >> } >> else { >> - pname = opt->opt_fmt + 1; >> + pname = (const Char *)(opt->opt_fmt + 1); >> s->has_short = 1; >> } >> aux->printlen = strlen (opt->opt_fmt); >> @@ -481,7 +481,7 @@ >> >> while (*p && n < maxlen[1] >> && *p != '\n') { >> - if (isspace (*p) >> + if (isspace ((Char)(*p)) >> || *p == '-') lastws = >> p; >> n++; >> @@ -504,8 +504,7 @@ >> if (lastws) { >> fprintf (fp, >> "%.*s\n", >> - lastws - >> - pstart, >> + (int)(lastws - pstart), >> pstart); >> pstart = >> lastws + 1; >> Index: tables.c >> =================================================================== >> RCS file: /cvsroot/flex/flex/tables.c,v >> retrieving revision 2.15 >> diff -u -r2.15 tables.c >> --- tables.c 11 Apr 2006 16:54:47 -0000 2.15 >> +++ tables.c 19 Aug 2008 18:03:31 -0000 >> @@ -57,8 +57,10 @@ >> int yytbl_write8 (struct yytbl_writer *wr, flex_uint8_t v); >> int yytbl_writen (struct yytbl_writer *wr, void *v, >> flex_int32_t len); >> static flex_int32_t yytbl_data_geti (const struct yytbl_data *tbl, >> int i); >> +/* XXX Not used >> static flex_int32_t yytbl_data_getijk (const struct yytbl_data >> *tbl, int i, >> int j, int k); >> + */ >> >> >> /** Initialize the table writer. >> @@ -330,6 +332,8 @@ >> } >> >> >> +/* XXX Not Used */ >> +#if 0 >> /** Extract data element [i][j] from array data tables. >> * @param tbl data table >> * @param i index into higher dimension array. i should be zero for >> one-dimensional arrays. >> @@ -364,6 +368,7 @@ >> >> return 0; >> } >> +#endif /* Not used */ >> >> /** Extract data element [i] from array data tables treated as a >> single flat array of integers. >> * Be careful for 2-dimensional arrays or for YYTD_ID_TRANSITION, >> which is an array > >> ------------------------------------------------------------------------- >> This SF.Net email is sponsored by the Moblin Your Move Developer's >> challenge >> Build the coolest Linux based applications with Moblin SDK & win >> great prizes >> Grand prize is a trip for two to an Open Source event anywhere in >> the world >> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >> _______________________________________________ >> Flex-help mailing list >> Fle...@li... >> https://lists.sourceforge.net/lists/listinfo/flex-help > > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win > great prizes > Grand prize is a trip for two to an Open Source event anywhere in > the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Flex-help mailing list > Fle...@li... > https://lists.sourceforge.net/lists/listinfo/flex-help |
From: Patrick W. <pr...@ca...> - 2008-09-08 17:52:49
|
On Sun, Sep 07, 2008 at 08:36:58PM -0700, Aaron Stone wrote: > I don't understand what capitalized 'Char' is in the patch below, but it > is a good point that those functions expect a signed integer with valid > signed char's (as returned by getchar, for example) represented as > unsigned char (unsigned because if it were negative and then expanded to > int, funny things may happen with sign extension). According to flexdef.h: #define Char unsigned char so I assumed that flex is used to using "Char" rather than "unsigned char" Maybe changing Char to unsigned char throughout (and possibly ansifying?) would make things more readable? > Flex is actively maintained, however there's no active development, per > se, at the moment. There are some todo's that could use work for sure, > though. If you are accepting patches, that's great! (Then we can move on to niggles like HAVE_STRCASECMP being used but not tested for, and what STRCASECMP might return on a 64 bit machine ;-) ) Cheers, Patrick > On Sep 7, 2008, at 1:47 PM, Patrick Welche wrote: > >> There is a nice explanation at: >> >> http://publications.gbdirect.co.uk/c_book/chapter9/character_handling.html >> >> and you can see some nice breakage with WorkShop Compilers 5.0 >> 98/12/15 C 5.0 >> >> >> (Is anybody still developing flex?) >> >> >> Cheers, >> >> Patrick >> >> >> >> On Tue, Aug 19, 2008 at 07:10:38PM +0100, Patrick Welche wrote: >>> I have found the following patch necessary to get around problems >>> with >>> sending _signed_ char to ctype functions, e.g., >>> >>> http://www.opengroup.org/onlinepubs/009695399/functions/isspace.html >>> >>> Also, lastws and pstart are both pointers, so lastws - pstart may >>> well be >>> long. >>> >>> Also yytbl_data_getijk is defined but not used.. >>> >>> Hope this helps, >>> >>> Patrick >> >>> ? ctype.pat >>> Index: misc.c >>> =================================================================== >>> RCS file: /cvsroot/flex/flex/misc.c,v >>> retrieving revision 2.78 >>> diff -u -r2.78 misc.c >>> --- misc.c 22 Mar 2006 12:49:41 -0000 2.78 >>> +++ misc.c 19 Aug 2008 18:02:35 -0000 >>> @@ -184,7 +184,7 @@ >>> register char *str; >>> { >>> while (*str) { >>> - if (!isascii ((Char) * str) || !islower (*str)) >>> + if (!isascii ((Char) * str) || !islower ((Char) * str)) >>> return 0; >>> ++str; >>> } >>> @@ -199,7 +199,7 @@ >>> register char *str; >>> { >>> while (*str) { >>> - if (!isascii ((Char) * str) || !isupper (*str)) >>> + if (!isascii ((Char) * str) || !isupper ((Char) * str)) >>> return 0; >>> ++str; >>> } >>> @@ -675,7 +675,7 @@ >>> 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 ... >>> Index: scanopt.c >>> =================================================================== >>> RCS file: /cvsroot/flex/flex/scanopt.c,v >>> retrieving revision 2.10 >>> diff -u -r2.10 scanopt.c >>> --- scanopt.c 12 May 2007 13:11:57 -0000 2.10 >>> +++ scanopt.c 19 Aug 2008 18:03:30 -0000 >>> @@ -189,7 +189,7 @@ >>> s->aux = (struct _aux *) malloc (s->optc * sizeof (struct _aux)); >>> >>> for (i = 0; i < s->optc; i++) { >>> - const char *p, *pname; >>> + const Char *p, *pname; >>> const struct optspec_t *opt; >>> struct _aux *aux; >>> >>> @@ -200,11 +200,11 @@ >>> >>> if (opt->opt_fmt[0] == '-' && opt->opt_fmt[1] == '-') { >>> aux->flags |= IS_LONG; >>> - pname = opt->opt_fmt + 2; >>> + pname = (const Char *)(opt->opt_fmt + 2); >>> s->has_long = 1; >>> } >>> else { >>> - pname = opt->opt_fmt + 1; >>> + pname = (const Char *)(opt->opt_fmt + 1); >>> s->has_short = 1; >>> } >>> aux->printlen = strlen (opt->opt_fmt); >>> @@ -481,7 +481,7 @@ >>> >>> while (*p && n < maxlen[1] >>> && *p != '\n') { >>> - if (isspace (*p) >>> + if (isspace ((Char)(*p)) >>> || *p == '-') lastws = >>> p; >>> n++; >>> @@ -504,8 +504,7 @@ >>> if (lastws) { >>> fprintf (fp, >>> "%.*s\n", >>> - lastws - >>> - pstart, >>> + (int)(lastws - pstart), >>> pstart); >>> pstart = >>> lastws + 1; >>> Index: tables.c >>> =================================================================== >>> RCS file: /cvsroot/flex/flex/tables.c,v >>> retrieving revision 2.15 >>> diff -u -r2.15 tables.c >>> --- tables.c 11 Apr 2006 16:54:47 -0000 2.15 >>> +++ tables.c 19 Aug 2008 18:03:31 -0000 >>> @@ -57,8 +57,10 @@ >>> int yytbl_write8 (struct yytbl_writer *wr, flex_uint8_t v); >>> int yytbl_writen (struct yytbl_writer *wr, void *v, flex_int32_t >>> len); >>> static flex_int32_t yytbl_data_geti (const struct yytbl_data *tbl, >>> int i); >>> +/* XXX Not used >>> static flex_int32_t yytbl_data_getijk (const struct yytbl_data *tbl, >>> int i, >>> int j, int k); >>> + */ >>> >>> >>> /** Initialize the table writer. >>> @@ -330,6 +332,8 @@ >>> } >>> >>> >>> +/* XXX Not Used */ >>> +#if 0 >>> /** Extract data element [i][j] from array data tables. >>> * @param tbl data table >>> * @param i index into higher dimension array. i should be zero for >>> one-dimensional arrays. >>> @@ -364,6 +368,7 @@ >>> >>> return 0; >>> } >>> +#endif /* Not used */ >>> >>> /** Extract data element [i] from array data tables treated as a >>> single flat array of integers. >>> * Be careful for 2-dimensional arrays or for YYTD_ID_TRANSITION, >>> which is an array >> >>> ------------------------------------------------------------------------- >>> This SF.Net email is sponsored by the Moblin Your Move Developer's >>> challenge >>> Build the coolest Linux based applications with Moblin SDK & win >>> great prizes >>> Grand prize is a trip for two to an Open Source event anywhere in >>> the world >>> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >>> _______________________________________________ >>> Flex-help mailing list >>> Fle...@li... >>> https://lists.sourceforge.net/lists/listinfo/flex-help >> >> >> ------------------------------------------------------------------------- >> This SF.Net email is sponsored by the Moblin Your Move Developer's >> challenge >> Build the coolest Linux based applications with Moblin SDK & win great >> prizes >> Grand prize is a trip for two to an Open Source event anywhere in the >> world >> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >> _______________________________________________ >> Flex-help mailing list >> Fle...@li... >> https://lists.sourceforge.net/lists/listinfo/flex-help > |
From: Aaron S. <aa...@se...> - 2008-09-08 18:17:21
|
On Sep 8, 2008, at 10:52 AM, Patrick Welche wrote: > On Sun, Sep 07, 2008 at 08:36:58PM -0700, Aaron Stone wrote: >> I don't understand what capitalized 'Char' is in the patch below, >> but it >> is a good point that those functions expect a signed integer with >> valid >> signed char's (as returned by getchar, for example) represented as >> unsigned char (unsigned because if it were negative and then >> expanded to >> int, funny things may happen with sign extension). > > According to flexdef.h: > > #define Char unsigned char Gotcha, never noticed that before! > > so I assumed that flex is used to using "Char" rather than "unsigned > char" > Maybe changing Char to unsigned char throughout (and possibly > ansifying?) > would make things more readable? Probably. > >> Flex is actively maintained, however there's no active development, >> per >> se, at the moment. There are some todo's that could use work for >> sure, >> though. > > If you are accepting patches, that's great! (Then we can move on to > niggles > like HAVE_STRCASECMP being used but not tested for, and what > STRCASECMP > might return on a 64 bit machine ;-) ) Patches definitely accepted! > > Cheers, > > Patrick > > >> On Sep 7, 2008, at 1:47 PM, Patrick Welche wrote: >> >>> There is a nice explanation at: >>> >>> http://publications.gbdirect.co.uk/c_book/chapter9/character_handling.html >>> >>> and you can see some nice breakage with WorkShop Compilers 5.0 >>> 98/12/15 C 5.0 >>> >>> >>> (Is anybody still developing flex?) >>> >>> >>> Cheers, >>> >>> Patrick >>> >>> >>> >>> On Tue, Aug 19, 2008 at 07:10:38PM +0100, Patrick Welche wrote: >>>> I have found the following patch necessary to get around problems >>>> with >>>> sending _signed_ char to ctype functions, e.g., >>>> >>>> http://www.opengroup.org/onlinepubs/009695399/functions/ >>>> isspace.html >>>> >>>> Also, lastws and pstart are both pointers, so lastws - pstart may >>>> well be >>>> long. >>>> >>>> Also yytbl_data_getijk is defined but not used.. >>>> >>>> Hope this helps, >>>> >>>> Patrick >>> >>>> ? ctype.pat >>>> Index: misc.c >>>> =================================================================== >>>> RCS file: /cvsroot/flex/flex/misc.c,v >>>> retrieving revision 2.78 >>>> diff -u -r2.78 misc.c >>>> --- misc.c 22 Mar 2006 12:49:41 -0000 2.78 >>>> +++ misc.c 19 Aug 2008 18:02:35 -0000 >>>> @@ -184,7 +184,7 @@ >>>> register char *str; >>>> { >>>> while (*str) { >>>> - if (!isascii ((Char) * str) || !islower (*str)) >>>> + if (!isascii ((Char) * str) || !islower ((Char) * str)) >>>> return 0; >>>> ++str; >>>> } >>>> @@ -199,7 +199,7 @@ >>>> register char *str; >>>> { >>>> while (*str) { >>>> - if (!isascii ((Char) * str) || !isupper (*str)) >>>> + if (!isascii ((Char) * str) || !isupper ((Char) * str)) >>>> return 0; >>>> ++str; >>>> } >>>> @@ -675,7 +675,7 @@ >>>> 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 ... >>>> Index: scanopt.c >>>> =================================================================== >>>> RCS file: /cvsroot/flex/flex/scanopt.c,v >>>> retrieving revision 2.10 >>>> diff -u -r2.10 scanopt.c >>>> --- scanopt.c 12 May 2007 13:11:57 -0000 2.10 >>>> +++ scanopt.c 19 Aug 2008 18:03:30 -0000 >>>> @@ -189,7 +189,7 @@ >>>> s->aux = (struct _aux *) malloc (s->optc * sizeof (struct _aux)); >>>> >>>> for (i = 0; i < s->optc; i++) { >>>> - const char *p, *pname; >>>> + const Char *p, *pname; >>>> const struct optspec_t *opt; >>>> struct _aux *aux; >>>> >>>> @@ -200,11 +200,11 @@ >>>> >>>> if (opt->opt_fmt[0] == '-' && opt->opt_fmt[1] == '-') { >>>> aux->flags |= IS_LONG; >>>> - pname = opt->opt_fmt + 2; >>>> + pname = (const Char *)(opt->opt_fmt + 2); >>>> s->has_long = 1; >>>> } >>>> else { >>>> - pname = opt->opt_fmt + 1; >>>> + pname = (const Char *)(opt->opt_fmt + 1); >>>> s->has_short = 1; >>>> } >>>> aux->printlen = strlen (opt->opt_fmt); >>>> @@ -481,7 +481,7 @@ >>>> >>>> while (*p && n < maxlen[1] >>>> && *p != '\n') { >>>> - if (isspace (*p) >>>> + if (isspace ((Char)(*p)) >>>> || *p == '-') lastws = >>>> p; >>>> n++; >>>> @@ -504,8 +504,7 @@ >>>> if (lastws) { >>>> fprintf (fp, >>>> "%.*s\n", >>>> - lastws - >>>> - pstart, >>>> + (int)(lastws - pstart), >>>> pstart); >>>> pstart = >>>> lastws + 1; >>>> Index: tables.c >>>> =================================================================== >>>> RCS file: /cvsroot/flex/flex/tables.c,v >>>> retrieving revision 2.15 >>>> diff -u -r2.15 tables.c >>>> --- tables.c 11 Apr 2006 16:54:47 -0000 2.15 >>>> +++ tables.c 19 Aug 2008 18:03:31 -0000 >>>> @@ -57,8 +57,10 @@ >>>> int yytbl_write8 (struct yytbl_writer *wr, flex_uint8_t v); >>>> int yytbl_writen (struct yytbl_writer *wr, void *v, >>>> flex_int32_t >>>> len); >>>> static flex_int32_t yytbl_data_geti (const struct yytbl_data *tbl, >>>> int i); >>>> +/* XXX Not used >>>> static flex_int32_t yytbl_data_getijk (const struct yytbl_data >>>> *tbl, >>>> int i, >>>> int j, int k); >>>> + */ >>>> >>>> >>>> /** Initialize the table writer. >>>> @@ -330,6 +332,8 @@ >>>> } >>>> >>>> >>>> +/* XXX Not Used */ >>>> +#if 0 >>>> /** Extract data element [i][j] from array data tables. >>>> * @param tbl data table >>>> * @param i index into higher dimension array. i should be zero for >>>> one-dimensional arrays. >>>> @@ -364,6 +368,7 @@ >>>> >>>> return 0; >>>> } >>>> +#endif /* Not used */ >>>> >>>> /** Extract data element [i] from array data tables treated as a >>>> single flat array of integers. >>>> * Be careful for 2-dimensional arrays or for YYTD_ID_TRANSITION, >>>> which is an array >>> >>>> ------------------------------------------------------------------------- >>>> This SF.Net email is sponsored by the Moblin Your Move Developer's >>>> challenge >>>> Build the coolest Linux based applications with Moblin SDK & win >>>> great prizes >>>> Grand prize is a trip for two to an Open Source event anywhere in >>>> the world >>>> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >>>> _______________________________________________ >>>> Flex-help mailing list >>>> Fle...@li... >>>> https://lists.sourceforge.net/lists/listinfo/flex-help >>> >>> >>> ------------------------------------------------------------------------- >>> This SF.Net email is sponsored by the Moblin Your Move Developer's >>> challenge >>> Build the coolest Linux based applications with Moblin SDK & win >>> great >>> prizes >>> Grand prize is a trip for two to an Open Source event anywhere in >>> the >>> world >>> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >>> _______________________________________________ >>> Flex-help mailing list >>> Fle...@li... >>> https://lists.sourceforge.net/lists/listinfo/flex-help >> > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win > great prizes > Grand prize is a trip for two to an Open Source event anywhere in > the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Flex-help mailing list > Fle...@li... > https://lists.sourceforge.net/lists/listinfo/flex-help |
From: Will E. <wl...@us...> - 2008-10-12 22:33:50
|
Thanks for your patch submission. YOur patch will be evaluated for inclusion in the flex codebase. Apologies for the long delay in responding to your submission. As you've noticed, flex developers are overloaded at the current time and we do appreciate your interest in flex. On Tuesday, 19 August 2008, 7:10 pm +0100, Patrick Welche <pr...@ca...> wrote: > I have found the following patch necessary to get around problems with > sending _signed_ char to ctype functions, e.g., > > http://www.opengroup.org/onlinepubs/009695399/functions/isspace.html > > Also, lastws and pstart are both pointers, so lastws - pstart may well be > long. > > Also yytbl_data_getijk is defined but not used.. > > Hope this helps, > > Patrick > ? ctype.pat > Index: misc.c > =================================================================== > RCS file: /cvsroot/flex/flex/misc.c,v > retrieving revision 2.78 > diff -u -r2.78 misc.c > --- misc.c 22 Mar 2006 12:49:41 -0000 2.78 > +++ misc.c 19 Aug 2008 18:02:35 -0000 > @@ -184,7 +184,7 @@ > register char *str; > { > while (*str) { > - if (!isascii ((Char) * str) || !islower (*str)) > + if (!isascii ((Char) * str) || !islower ((Char) * str)) > return 0; > ++str; > } > @@ -199,7 +199,7 @@ > register char *str; > { > while (*str) { > - if (!isascii ((Char) * str) || !isupper (*str)) > + if (!isascii ((Char) * str) || !isupper ((Char) * str)) > return 0; > ++str; > } > @@ -675,7 +675,7 @@ > 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 ... > Index: scanopt.c > =================================================================== > RCS file: /cvsroot/flex/flex/scanopt.c,v > retrieving revision 2.10 > diff -u -r2.10 scanopt.c > --- scanopt.c 12 May 2007 13:11:57 -0000 2.10 > +++ scanopt.c 19 Aug 2008 18:03:30 -0000 > @@ -189,7 +189,7 @@ > s->aux = (struct _aux *) malloc (s->optc * sizeof (struct _aux)); > > for (i = 0; i < s->optc; i++) { > - const char *p, *pname; > + const Char *p, *pname; > const struct optspec_t *opt; > struct _aux *aux; > > @@ -200,11 +200,11 @@ > > if (opt->opt_fmt[0] == '-' && opt->opt_fmt[1] == '-') { > aux->flags |= IS_LONG; > - pname = opt->opt_fmt + 2; > + pname = (const Char *)(opt->opt_fmt + 2); > s->has_long = 1; > } > else { > - pname = opt->opt_fmt + 1; > + pname = (const Char *)(opt->opt_fmt + 1); > s->has_short = 1; > } > aux->printlen = strlen (opt->opt_fmt); > @@ -481,7 +481,7 @@ > > while (*p && n < maxlen[1] > && *p != '\n') { > - if (isspace (*p) > + if (isspace ((Char)(*p)) > || *p == '-') lastws = > p; > n++; > @@ -504,8 +504,7 @@ > if (lastws) { > fprintf (fp, > "%.*s\n", > - lastws - > - pstart, > + (int)(lastws - pstart), > pstart); > pstart = > lastws + 1; > Index: tables.c > =================================================================== > RCS file: /cvsroot/flex/flex/tables.c,v > retrieving revision 2.15 > diff -u -r2.15 tables.c > --- tables.c 11 Apr 2006 16:54:47 -0000 2.15 > +++ tables.c 19 Aug 2008 18:03:31 -0000 > @@ -57,8 +57,10 @@ > int yytbl_write8 (struct yytbl_writer *wr, flex_uint8_t v); > int yytbl_writen (struct yytbl_writer *wr, void *v, flex_int32_t len); > static flex_int32_t yytbl_data_geti (const struct yytbl_data *tbl, int i); > +/* XXX Not used > static flex_int32_t yytbl_data_getijk (const struct yytbl_data *tbl, int i, > int j, int k); > + */ > > > /** Initialize the table writer. > @@ -330,6 +332,8 @@ > } > > > +/* XXX Not Used */ > +#if 0 > /** Extract data element [i][j] from array data tables. > * @param tbl data table > * @param i index into higher dimension array. i should be zero for one-dimensional arrays. > @@ -364,6 +368,7 @@ > > return 0; > } > +#endif /* Not used */ > > /** Extract data element [i] from array data tables treated as a single flat array of integers. > * Be careful for 2-dimensional arrays or for YYTD_ID_TRANSITION, which is an array > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's challenge > Build the coolest Linux based applications with Moblin SDK & win great prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Flex-help mailing list > Fle...@li... > https://lists.sourceforge.net/lists/listinfo/flex-help -- Will Estes (wl...@us...) Flex Project Maintainer http://flex.sourceforge.net/ |
From: Will E. <wl...@us...> - 2009-03-31 14:18:33
|
Your patch is pretty much included in the flex codebase. I'm putting the tables.c stuff a little differently, but thanks for the pointer. --Will > I have found the following patch necessary to get around problems with > sending _signed_ char to ctype functions, e.g., |