X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_bd%2Fbd_caveset.c;h=50598fb7a0ec4dbe69a68e0bc69f7bc582a4de78;hb=a320610bbc4a03e1254efa9316d5b11350b4a89b;hp=49b6e1003a3ce3af82d66ecc5f23d43429107531;hpb=01bf4018243f57cefbc0308e49f4dd2d40a0c054;p=rocksndiamonds.git diff --git a/src/game_bd/bd_caveset.c b/src/game_bd/bd_caveset.c index 49b6e100..50598fb7 100644 --- a/src/game_bd/bd_caveset.c +++ b/src/game_bd/bd_caveset.c @@ -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) @@ -476,13 +476,13 @@ static void brc_import(guint8 *data) } } -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; 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; }