OSDN Git Service

- added new AProps to ACC headers.
[zandronum/zandronum-acc.git] / strlist.c
index 319a5e1..baf0b07 100644 (file)
--- a/strlist.c
+++ b/strlist.c
@@ -45,6 +45,7 @@ typedef struct
 \r
 static int STR_PutStringInSomeList(stringList_t *list, int index, char *name);\r
 static int STR_FindInSomeList(stringList_t *list, char *name);\r
+static int STR_FindInSomeListInsensitive(stringList_t *list, char *name);\r
 static void DumpStrings(stringList_t *list, int lenadr, boolean quad, boolean crypt);\r
 static void Encrypt(void *data, int key, int len);\r
 \r
@@ -111,6 +112,10 @@ int STR_FindLanguage(char *name)
                }\r
                LanguageInfo[i]->list.stringCount = 0;\r
                NumLanguages++;\r
+               if(NumLanguages > 1 && pc_EnforceHexen)\r
+               {\r
+                       ERR_Error(ERR_HEXEN_COMPAT, YES);\r
+               }\r
        }\r
        return i;\r
 }\r
@@ -150,6 +155,10 @@ int STR_FindInList(int list, char *name)
                StringLists[list] = MS_Alloc(sizeof(stringList_t), ERR_OUT_OF_MEMORY);\r
                StringLists[list]->stringCount = 0;\r
                NumStringLists++;\r
+               if(pc_EnforceHexen)\r
+               {\r
+                       ERR_Error(ERR_HEXEN_COMPAT, YES);\r
+               }\r
        }\r
        return STR_FindInSomeList (StringLists[list], name);\r
 }\r
@@ -177,6 +186,48 @@ static int STR_FindInSomeList(stringList_t *list, char *name)
 \r
 //==========================================================================\r
 //\r
+// STR_FindInListInsensitive\r
+//\r
+//==========================================================================\r
+\r
+int STR_FindInListInsensitive(int list, char *name)\r
+{\r
+       if (StringLists[list] == NULL)\r
+       {\r
+               StringLists[list] = MS_Alloc(sizeof(stringList_t), ERR_OUT_OF_MEMORY);\r
+               StringLists[list]->stringCount = 0;\r
+               NumStringLists++;\r
+               if(pc_EnforceHexen)\r
+               {\r
+                       ERR_Error(ERR_HEXEN_COMPAT, YES);\r
+               }\r
+       }\r
+       return STR_FindInSomeListInsensitive (StringLists[list], name);\r
+}\r
+\r
+//==========================================================================\r
+//\r
+// STR_FindInSomeListInsensitive\r
+//\r
+//==========================================================================\r
+\r
+static int STR_FindInSomeListInsensitive(stringList_t *list, char *name)\r
+{\r
+       int i;\r
+\r
+       for(i = 0; i < list->stringCount; i++)\r
+       {\r
+               if(strcasecmp(list->strings[i].name, name) == 0)\r
+               {\r
+                       return i;\r
+               }\r
+       }\r
+       // Add to list\r
+       return STR_PutStringInSomeList(list, i, name);\r
+}\r
+\r
+//==========================================================================\r
+//\r
 // STR_GetString\r
 //\r
 //==========================================================================\r
@@ -207,6 +258,10 @@ int STR_AppendToList(int list, char *name)
                StringLists[list] = MS_Alloc(sizeof(stringList_t), ERR_OUT_OF_MEMORY);\r
                StringLists[list]->stringCount = 0;\r
                NumStringLists++;\r
+               if(pc_EnforceHexen)\r
+               {\r
+                       ERR_Error(ERR_HEXEN_COMPAT, YES);\r
+               }\r
        }\r
        return STR_PutStringInSomeList(StringLists[list], StringLists[list]->stringCount, name);\r
 }\r