heraia_io.c
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <libheraia.h>
00028
00029 static GladeXML *load_glade_xml_if_it_exists(char *file_to_load);
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 gboolean load_file_to_analyse(heraia_window_t *main_window, gchar *filename)
00040 {
00041 struct stat *stat_buf = NULL;
00042 gboolean success = FALSE;
00043
00044 doc_t* doc = NULL;
00045
00046 g_return_val_if_fail(filename != NULL, FALSE);
00047 g_return_val_if_fail(main_window != NULL, FALSE);
00048
00049 stat_buf = (struct stat *) g_malloc0 (sizeof(struct stat));
00050 stat(filename, stat_buf);
00051
00052 log_message(main_window, G_LOG_LEVEL_DEBUG, "filename to load : %s", filename);
00053
00054 if (S_ISREG(stat_buf->st_mode) && stat_buf->st_size>0)
00055 {
00056
00057 doc = heraia_hex_document_new(main_window, filename);
00058
00059 if (doc != NULL)
00060 {
00061 add_new_tab_in_main_window(main_window, doc);
00062
00063 log_message(main_window, G_LOG_LEVEL_DEBUG, "Hexwidget : %p", doc->hex_widget);
00064
00065 success = TRUE;
00066
00067
00068 update_main_window_name(main_window);
00069 set_notebook_tab_name(main_window);
00070
00071
00072 grey_main_widgets(main_window->xmls->main, FALSE);
00073
00074 log_message(main_window, G_LOG_LEVEL_DEBUG, "file %s loaded !", filename);
00075 }
00076 else
00077 {
00078 log_message(main_window, G_LOG_LEVEL_ERROR, "Error while trying to load file %s", filename);
00079 success = FALSE;
00080 }
00081
00082 }
00083 else
00084 {
00085 if (S_ISREG(stat_buf->st_mode))
00086 {
00087 log_message(main_window, G_LOG_LEVEL_WARNING, "The file %s is empty !", filename);
00088 }
00089 else
00090 {
00091 log_message(main_window, G_LOG_LEVEL_WARNING, "The file %s does not exist !", filename);
00092 }
00093 success = FALSE;
00094 }
00095
00096 g_free(stat_buf);
00097
00098 return success;
00099 }
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109 static GladeXML *load_glade_xml_if_it_exists(gchar *file_to_load)
00110 {
00111 struct stat *stat_buf;
00112 GladeXML *xml = NULL;
00113
00114 stat_buf = (struct stat *) g_malloc0 (sizeof(struct stat));
00115
00116 stat(file_to_load, stat_buf);
00117 if (S_ISREG(stat_buf->st_mode) && stat_buf->st_size>0)
00118 {
00119 xml = glade_xml_new(file_to_load, NULL, NULL);
00120 }
00121 else
00122 {
00123 xml = NULL;
00124 }
00125
00126 g_free(stat_buf);
00127
00128 return xml;
00129 }
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140 GladeXML *load_glade_xml_file(GList *location_list, gchar *filename)
00141 {
00142 gchar *file_to_load = NULL;
00143 GList *list = g_list_first(location_list);
00144 GladeXML *xml = NULL;
00145
00146 while (list != NULL && xml == NULL)
00147 {
00148 file_to_load = g_build_filename((gchar *) list->data, filename, NULL);
00149
00150 xml = load_glade_xml_if_it_exists(file_to_load);
00151
00152 if (xml == NULL)
00153 {
00154 list = list->next;
00155 }
00156 g_free(file_to_load);
00157 }
00158
00159 return xml;
00160 }
00161
00162
00163
00164
00165
00166
00167
00168
00169 gboolean load_preference_file(heraia_window_t *main_window)
00170 {
00171 if (main_window != NULL && main_window->prefs != NULL)
00172 {
00173 return g_key_file_load_from_file(main_window->prefs->file, main_window->prefs->filename, G_KEY_FILE_KEEP_COMMENTS & G_KEY_FILE_KEEP_TRANSLATIONS, NULL);
00174 }
00175 else
00176 {
00177 return FALSE;
00178 }
00179 }
00180
00181
00182
00183
00184
00185
00186
00187
00188 gboolean save_preferences_to_file(prefs_t *prefs)
00189 {
00190 gsize length = 0;
00191 gchar *contents = NULL;
00192 gboolean result = FALSE;
00193
00194 if (prefs != NULL && prefs->file != NULL && prefs->filename != NULL)
00195 {
00196 contents = g_key_file_to_data(prefs->file, &length, NULL);
00197 result = g_file_set_contents(prefs->filename, contents, length, NULL);
00198 g_free(contents);
00199 }
00200
00201 return result;
00202 }