X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=src%2Ffileref.c;h=2b5cf53efd65d9f8c04bc32732699e16c6db33a4;hb=753658fb32fd78c0887e018892a0ad91b424e728;hp=1486e14e068bc1ba93ff9aeb921e5db8e4f455a4;hpb=062bbb9e7322c8e3f5162f86fc2f93bfc587b830;p=rodin%2Fchimara.git diff --git a/src/fileref.c b/src/fileref.c index 1486e14..2b5cf53 100644 --- a/src/fileref.c +++ b/src/fileref.c @@ -1,8 +1,10 @@ +#include #include #include #include #include #include "fileref.h" +#include "magic.h" #include "chimara-glk-private.h" extern ChimaraGlkPrivate *glk_data; @@ -21,6 +23,8 @@ extern ChimaraGlkPrivate *glk_data; frefid_t glk_fileref_iterate(frefid_t fref, glui32 *rockptr) { + VALID_FILEREF_OR_NULL(fref, return NULL); + GList *retnode; if(fref == NULL) @@ -48,7 +52,7 @@ glk_fileref_iterate(frefid_t fref, glui32 *rockptr) glui32 glk_fileref_get_rock(frefid_t fref) { - g_return_val_if_fail(fref != NULL, 0); + VALID_FILEREF(fref, return 0); return fref->rock; } @@ -59,6 +63,7 @@ fileref_new(gchar *filename, glui32 rock, glui32 usage, glui32 orig_filemode) g_return_val_if_fail(filename != NULL, NULL); frefid_t f = g_new0(struct glk_fileref_struct, 1); + f->magic = MAGIC_FILEREF; f->rock = rock; f->filename = g_strdup(filename); f->usage = usage; @@ -100,14 +105,14 @@ glk_fileref_create_temp(glui32 usage, glui32 rock) gint handle = g_file_open_tmp("glkXXXXXX", &filename, &error); if(handle == -1) { - g_warning("Error creating temporary file: %s", error->message); + WARNING_S("Error creating temporary file", error->message); if(filename) g_free(filename); return NULL; } - if(close(handle) == -1) /* There is no g_close()? */ + if(close(handle) == -1) /* There is no g_close() */ { - g_warning("Error closing temporary file."); + IO_WARNING( "Error closing temporary file", filename, g_strerror(errno) ); if(filename) g_free(filename); return NULL; @@ -214,7 +219,7 @@ glk_fileref_create_by_prompt(glui32 usage, glui32 fmode, glui32 rock) GTK_FILE_CHOOSER_ACTION_SAVE); break; default: - g_warning("glk_fileref_create_by_prompt: Unsupported mode"); + ILLEGAL_PARAM("Unknown file mode: %u", fmode); gdk_threads_leave(); return NULL; } @@ -289,7 +294,7 @@ glk_fileref_create_by_name(glui32 usage, char *name, glui32 rock) &error); if(osname == NULL) { - g_warning("Error during latin1->filename conversion: %s", error->message); + WARNING_S("Error during latin1->filename conversion", error->message); return NULL; } @@ -337,6 +342,7 @@ glk_fileref_create_by_name(glui32 usage, char *name, glui32 rock) frefid_t glk_fileref_create_from_fileref(glui32 usage, frefid_t fref, glui32 rock) { + VALID_FILEREF(fref, return NULL); return fileref_new(fref->filename, rock, usage, fref->orig_filemode); } @@ -355,9 +361,13 @@ glk_fileref_create_from_fileref(glui32 usage, frefid_t fref, glui32 rock) void glk_fileref_destroy(frefid_t fref) { + VALID_FILEREF(fref, return); + glk_data->fileref_list = g_list_delete_link(glk_data->fileref_list, fref->fileref_list); if(fref->filename) g_free(fref->filename); + + fref->magic = MAGIC_FREE; g_free(fref); } @@ -370,9 +380,10 @@ glk_fileref_destroy(frefid_t fref) void glk_fileref_delete_file(frefid_t fref) { + VALID_FILEREF(fref, return); if( glk_fileref_does_file_exist(fref) ) if(g_unlink(fref->filename) == -1) - g_warning("Error deleting file %s", fref->filename); + IO_WARNING( "Error deleting file", fref->filename, g_strerror(errno) ); } /** @@ -387,6 +398,7 @@ glk_fileref_delete_file(frefid_t fref) glui32 glk_fileref_does_file_exist(frefid_t fref) { + VALID_FILEREF(fref, return 0); if( g_file_test(fref->filename, G_FILE_TEST_EXISTS) ) return 1; return 0;