replaced glib function calls to g_file_get_contents()
[rocksndiamonds.git] / src / game_bd / bd_caveset.c
index e25fa6263a70c2acdfdec691d5afc1bf80839013..50598fb7a0ec4dbe69a68e0bc69f7bc582a4de78 100644 (file)
@@ -22,7 +22,7 @@
 
 
 /* this stores the caves. */
-GList *gd_caveset;
+List *gd_caveset;
 
 /* the data of the caveset: name, highscore, max number of lives, etc. */
 GdCavesetData *gd_caveset_data;
@@ -45,7 +45,7 @@ char *gd_caveset_extensions[] =
   NULL
 };
 
-#define CAVESET_OFFSET(property) (G_STRUCT_OFFSET(GdCavesetData, property))
+#define CAVESET_OFFSET(property) (STRUCT_OFFSET(GdCavesetData, property))
 
 const GdStructDescriptor gd_caveset_properties[] =
 {
@@ -115,8 +115,8 @@ void gd_caveset_clear(void)
 {
   if (gd_caveset)
   {
-    g_list_foreach(gd_caveset, (GFunc) gd_cave_free, NULL);
-    g_list_free(gd_caveset);
+    list_foreach(gd_caveset, (list_fn) gd_cave_free, NULL);
+    list_free(gd_caveset);
     gd_caveset = NULL;
   }
 
@@ -135,13 +135,13 @@ void gd_caveset_clear(void)
 /* return number of caves currently in memory. */
 int gd_caveset_count(void)
 {
-  return g_list_length(gd_caveset);
+  return list_length(gd_caveset);
 }
 
 /* return index of first selectable cave */
 static int caveset_first_selectable_cave_index(void)
 {
-  GList *iter;
+  List *iter;
   int i;
 
   for (i = 0, iter = gd_caveset; iter != NULL; i++, iter = iter->next)
@@ -161,7 +161,7 @@ static int caveset_first_selectable_cave_index(void)
 /* return a cave identified by its index */
 GdCave *gd_return_nth_cave(const int cave)
 {
-  return g_list_nth_data(gd_caveset, cave);
+  return list_nth_data(gd_caveset, cave);
 }
 
 /* get a selected cave from the loaded caveset (original, unmodified cave) */
@@ -318,11 +318,11 @@ static void brc_import(guint8 *data)
       imported[level * 20 + cavenum] = cave;
 
       if (cavenum < 16)
-       g_snprintf(cave->name, sizeof(GdString), "Cave %c/%d", 'A' + cavenum,
-                  level + 1);
+       snprintf(cave->name, sizeof(GdString), "Cave %c/%d", 'A' + cavenum,
+                level + 1);
       else
-       g_snprintf(cave->name, sizeof(GdString), "Intermission %d/%d",
-                  cavenum - 15, level + 1);
+       snprintf(cave->name, sizeof(GdString), "Intermission %d/%d",
+                cavenum - 15, level + 1);
 
       /* fixed intermission caves; are smaller. */
       if (cavenum >= 16)
@@ -469,20 +469,20 @@ static void brc_import(guint8 *data)
 
       /* append to caveset or forget it. */
       if (!only_dirt)
-       gd_caveset = g_list_append(gd_caveset, cave);
+       gd_caveset = list_append(gd_caveset, cave);
       else
        gd_cave_free(cave);
     }
   }
 }
 
-static void caveset_name_set_from_filename(const char *filename)
+static void caveset_name_set_from_filename(char *filename)
 {
   char *name;
   char *c;
 
   /* make up a caveset name from the filename. */
-  name = g_path_get_basename(filename);
+  name = getBaseName(filename);
   gd_strcpy(gd_caveset_data->name, name);
   free(name);
 
@@ -504,14 +504,13 @@ static void caveset_name_set_from_filename(const char *filename)
 */
 boolean gd_caveset_load_from_file(char *filename)
 {
-  GError *error = NULL;
   gsize length;
   char *buf;
-  boolean read;
-  GList *new_caveset;
+  List *new_caveset;
   struct stat st;
+  File *file;
 
-  if (g_stat(filename, &st) != 0)
+  if (stat(filename, &st) != 0)
   {
     Warn("cannot stat() file");
 
@@ -525,12 +524,22 @@ boolean gd_caveset_load_from_file(char *filename)
     return FALSE;
   }
 
-  read = g_file_get_contents (filename, &buf, &length, &error);
-  if (!read)
+  if (!(file = openFile(filename, MODE_READ)))
   {
-    Warn("%s", error->message);
+    Warn("cannot open file '%s'", filename);
 
-    g_error_free(error);
+    return FALSE;
+  }
+
+  buf = checked_malloc(st.st_size + 1);
+  length = readFile(file, buf, 1, st.st_size);
+  buf[length] = '\0';
+
+  closeFile(file);
+
+  if (length < st.st_size)
+  {
+    Warn("cannot read file '%s'", filename);
 
     return FALSE;
   }
@@ -606,7 +615,7 @@ boolean gd_caveset_load_from_file(char *filename)
 
 int gd_cave_check_replays(GdCave *cave, boolean report, boolean remove, boolean repair)
 {
-  GList *riter;
+  List *riter;
   int wrong = 0;
 
   riter = cave->replays;
@@ -615,7 +624,7 @@ int gd_cave_check_replays(GdCave *cave, boolean report, boolean remove, boolean
     GdReplay *replay = (GdReplay *)riter->data;
     guint32 checksum;
     GdCave *rendered;
-    GList *next = riter->next;
+    List *next = riter->next;
 
     rendered = gd_cave_new_rendered(cave, replay->level, replay->seed);
     checksum = gd_cave_adler_checksum(rendered);
@@ -646,7 +655,7 @@ int gd_cave_check_replays(GdCave *cave, boolean report, boolean remove, boolean
        if (remove)
        {
          /* may remove */
-         cave->replays = g_list_remove_link(cave->replays, riter);
+         cave->replays = list_remove_link(cave->replays, riter);
          gd_replay_free(replay);
        }
       }
@@ -661,7 +670,7 @@ int gd_cave_check_replays(GdCave *cave, boolean report, boolean remove, boolean
 
 boolean gd_caveset_has_replays(void)
 {
-  GList *citer;
+  List *citer;
 
   /* for all caves */
   for (citer = gd_caveset; citer != NULL; citer = citer->next)