From c10009b525f84f81e0081479af552c87b6b236bd Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Thu, 16 Feb 2012 22:18:01 +0000 Subject: [PATCH] - Use case insensitive search when checking for existing script names, since they're case insensitive in the engine. SVN r3366 (trunk) --- parse.c | 2 +- strlist.c | 43 +++++++++++++++++++++++++++++++++++++++++++ strlist.h | 1 + 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/parse.c b/parse.c index 491f41e..ca0bfac 100644 --- a/parse.c +++ b/parse.c @@ -560,7 +560,7 @@ static void OuterScript(void) } else if(tk_Token == TK_STRING) { // Named scripts start counting at -1 and go down from there. - scriptNumber = -1 - STR_FindInList(STRLIST_NAMEDSCRIPTS, tk_String); + scriptNumber = -1 - STR_FindInListInsensitive(STRLIST_NAMEDSCRIPTS, tk_String); TK_NextToken(); } else diff --git a/strlist.c b/strlist.c index 319a5e1..48188cb 100644 --- a/strlist.c +++ b/strlist.c @@ -17,6 +17,10 @@ // MACROS ------------------------------------------------------------------ +#ifdef _WIN32 +#define strcasecmp stricmp +#endif + // TYPES ------------------------------------------------------------------- typedef struct @@ -45,6 +49,7 @@ typedef struct static int STR_PutStringInSomeList(stringList_t *list, int index, char *name); static int STR_FindInSomeList(stringList_t *list, char *name); +static int STR_FindInSomeListInsensitive(stringList_t *list, char *name); static void DumpStrings(stringList_t *list, int lenadr, boolean quad, boolean crypt); static void Encrypt(void *data, int key, int len); @@ -175,6 +180,44 @@ static int STR_FindInSomeList(stringList_t *list, char *name) return STR_PutStringInSomeList(list, i, name); } +//========================================================================== +// +// STR_FindInListInsensitive +// +//========================================================================== + +int STR_FindInListInsensitive(int list, char *name) +{ + if (StringLists[list] == NULL) + { + StringLists[list] = MS_Alloc(sizeof(stringList_t), ERR_OUT_OF_MEMORY); + StringLists[list]->stringCount = 0; + NumStringLists++; + } + return STR_FindInSomeListInsensitive (StringLists[list], name); +} + +//========================================================================== +// +// STR_FindInSomeListInsensitive +// +//========================================================================== + +static int STR_FindInSomeListInsensitive(stringList_t *list, char *name) +{ + int i; + + for(i = 0; i < list->stringCount; i++) + { + if(strcasecmp(list->strings[i].name, name) == 0) + { + return i; + } + } + // Add to list + return STR_PutStringInSomeList(list, i, name); +} + //========================================================================== // // STR_GetString diff --git a/strlist.h b/strlist.h index 63a5b8c..40d7f37 100644 --- a/strlist.h +++ b/strlist.h @@ -25,6 +25,7 @@ void STR_WriteList(void); int STR_FindLanguage(char *name); int STR_FindInLanguage(int language, char *name); int STR_FindInList(int list, char *name); +int STR_FindInListInsensitive(int list, char *name); int STR_AppendToList(int list, char *name); const char *STR_GetString(int list, int index); void STR_WriteChunk(int language, boolean encrypt);