This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Fri, 2006-11-24 at 14:17 +0000, Nick Clifton wrote: > Hi Danny, > > > One of the examples in the Boling book has lines in the resource file > > that look like this : > > > > aboutbox DIALOG discardable 10, 10, 132, 40 > > > The problem is that binutils's windres appears to expect all the > > keywords such as DISCARDABLE to be in upper case. > > Do you know if windres accepts mixed case keywords as well, eg > "DiScArDaBlE", or just either all-upper-case or all-lower-case ? It doesn't, as you would expect by reading the code. It just accepts all upper case. > > A trivial fix for src/binutils/binutils/rclex.l is below. Obviously this > > fixes only that keyword, I'd expect all of them need to be treated in > > the same way. > > It would probably be neater to move the keyword recognition code into > the string recognising code and to just use strcasecmp(). eg: > > [A-Za-z][^ ,\t\r\n]* { > char * s; > int i; > struct { char * word; int token } keywords[] = > { > { "BLOCK", BLOCK }, > { "DISCARDABLE", DISCARDABLE }, > ... > { NULL, STRING } > }; > s = get_string (strlen (yytext) + 1); > for (i = 0; keywords[i].word != NULL; i++) > if (strcasecmp (keywords[i].word, s) == 0) > break; > if (keywords[i].word == NULL) > { > strcpy (s, yytext); > yylval.s = s; > } > MAYBE_RETURN (keywords[i].token); > } Your code submission is greatly appreciated :-) The strcasecmp line needs to compare against yytext, not s. That hasn't gotten a value yet. Otherwise it appears to work just fine. I've edited the source and will test some more, then I'll send you the working patch. Ok ? Danny > > This looks pretty lame, there must be a reason why this isn't > > implemented like this to begin with. Does anyone see a reason ? > > The reason is probably that the syntax that the original coders had to > work with only showed upper case keywords. > > > Thanks, > > > > Danny > > > > dannypc: {75} svn diff rclex.l > > Index: rclex.l > > =================================================================== > > --- rclex.l (revision 819) > > +++ rclex.l (working copy) > > @@ -151,7 +151,7 @@ > > "IMPURE" { MAYBE_RETURN (IMPURE); } > > "PRELOAD" { MAYBE_RETURN (PRELOAD); } > > "LOADONCALL" { MAYBE_RETURN (LOADONCALL); } > > -"DISCARDABLE" { MAYBE_RETURN (DISCARDABLE); } > > +[dD][iI][sS][cC][aA][rR][dD][aA][bB][lL][eE] { MAYBE_RETURN > > (DISCARDABLE); } > > "NOT" { MAYBE_RETURN (NOT); } > > > > "BLOCK"[ \t\n]*"\""[^\#\n]*"\"" { > > -- Danny Backx ; danny.backx - at - scarlet.be ; http://danny.backx.info
Attachment:
signature.asc
Description: This is a digitally signed message part
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |