rnd-20041114-1-src
[rocksndiamonds.git] / src / libgame / setup.c
index 1d5a35919715dc5d48f4341aeb182e7e89b047b9..d63bc561997645c6416b1c9746202a55dce411b8 100644 (file)
@@ -404,7 +404,12 @@ char *getEditorSetupFilename()
   static char *filename = NULL;
 
   checked_free(filename);
+  filename = getPath2(getCurrentLevelDir(), EDITORSETUP_FILENAME);
 
+  if (fileExists(filename))
+    return filename;
+
+  checked_free(filename);
   filename = getPath2(getSetupDir(), EDITORSETUP_FILENAME);
 
   return filename;
@@ -438,8 +443,8 @@ char *getLevelSetInfoFilename()
   char *basenames[] =
   {
     "README",
-    "README.txt",
     "README.TXT",
+    "README.txt",
     "Readme",
     "Readme.txt",
     "readme",
@@ -452,8 +457,8 @@ char *getLevelSetInfoFilename()
   for (i = 0; basenames[i] != NULL; i++)
   {
     checked_free(filename);
-
     filename = getPath2(getCurrentLevelDir(), basenames[i]);
+
     if (fileExists(filename))
       return filename;
   }
@@ -1593,23 +1598,23 @@ static LevelDirTree ldi;
 static struct TokenInfo levelinfo_tokens[] =
 {
   /* level directory info */
-  { TYPE_STRING,  &ldi.identifier,     "identifier"    },
-  { TYPE_STRING,  &ldi.name,           "name"          },
-  { TYPE_STRING,  &ldi.name_sorting,   "name_sorting"  },
-  { TYPE_STRING,  &ldi.author,         "author"        },
-  { TYPE_STRING,  &ldi.imported_from,  "imported_from" },
-  { TYPE_INTEGER, &ldi.levels,         "levels"        },
-  { TYPE_INTEGER, &ldi.first_level,    "first_level"   },
-  { TYPE_INTEGER, &ldi.sort_priority,  "sort_priority" },
-  { TYPE_BOOLEAN, &ldi.latest_engine,  "latest_engine" },
-  { TYPE_BOOLEAN, &ldi.level_group,    "level_group"   },
-  { TYPE_BOOLEAN, &ldi.readonly,       "readonly"      },
-  { TYPE_STRING,  &ldi.graphics_set,   "graphics_set"  },
-  { TYPE_STRING,  &ldi.sounds_set,     "sounds_set"    },
-  { TYPE_STRING,  &ldi.music_set,      "music_set"     },
-  { TYPE_STRING,  &ldi.level_filename, "filename"      },
-  { TYPE_STRING,  &ldi.level_filetype, "filetype"      },
-  { TYPE_STRING,  &ldi.handicap,       "handicap"      }
+  { TYPE_STRING,       &ldi.identifier,        "identifier"    },
+  { TYPE_STRING,       &ldi.name,              "name"          },
+  { TYPE_STRING,       &ldi.name_sorting,      "name_sorting"  },
+  { TYPE_STRING,       &ldi.author,            "author"        },
+  { TYPE_STRING,       &ldi.imported_from,     "imported_from" },
+  { TYPE_INTEGER,      &ldi.levels,            "levels"        },
+  { TYPE_INTEGER,      &ldi.first_level,       "first_level"   },
+  { TYPE_INTEGER,      &ldi.sort_priority,     "sort_priority" },
+  { TYPE_BOOLEAN,      &ldi.latest_engine,     "latest_engine" },
+  { TYPE_BOOLEAN,      &ldi.level_group,       "level_group"   },
+  { TYPE_BOOLEAN,      &ldi.readonly,          "readonly"      },
+  { TYPE_STRING,       &ldi.graphics_set,      "graphics_set"  },
+  { TYPE_STRING,       &ldi.sounds_set,        "sounds_set"    },
+  { TYPE_STRING,       &ldi.music_set,         "music_set"     },
+  { TYPE_STRING,       &ldi.level_filename,    "filename"      },
+  { TYPE_STRING,       &ldi.level_filetype,    "filetype"      },
+  { TYPE_BOOLEAN,      &ldi.handicap,          "handicap"      }
 };
 
 static void setTreeInfoToDefaults(TreeInfo *ldi, int type)
@@ -1786,6 +1791,8 @@ static void freeTreeInfo(TreeInfo *ldi)
 
   if (ldi->type == TREE_TYPE_LEVEL_DIR)
   {
+    checked_free(ldi->imported_from);
+
     checked_free(ldi->graphics_set);
     checked_free(ldi->sounds_set);
     checked_free(ldi->music_set);
@@ -1793,6 +1800,9 @@ static void freeTreeInfo(TreeInfo *ldi)
     checked_free(ldi->graphics_path);
     checked_free(ldi->sounds_path);
     checked_free(ldi->music_path);
+
+    checked_free(ldi->level_filename);
+    checked_free(ldi->level_filetype);
   }
 }
 
@@ -2628,7 +2638,9 @@ static void SaveUserLevelInfo()
   for (i = 0; i < NUM_LEVELINFO_TOKENS; i++)
     if (i != LEVELINFO_TOKEN_IDENTIFIER &&
        i != LEVELINFO_TOKEN_NAME_SORTING &&
-       i != LEVELINFO_TOKEN_IMPORTED_FROM)
+       i != LEVELINFO_TOKEN_IMPORTED_FROM &&
+       i != LEVELINFO_TOKEN_FILENAME &&
+       i != LEVELINFO_TOKEN_FILETYPE)
       fprintf(file, "%s\n", getSetupLine(levelinfo_tokens, "", i));
 
   fclose(file);