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);