diff --git a/gnoemoe/gm-world.c b/gnoemoe/gm-world.c index 9034262..0e7a4f6 100644 --- a/gnoemoe/gm-world.c +++ b/gnoemoe/gm-world.c @@ -88,17 +88,11 @@ G_DEFINE_TYPE(GmWorld, gm_world, G_TYPE_OBJECT) static void gm_world_finalize(GObject *object) { GmWorld *world = GM_WORLD(object); - gchar *tmp_dir; if (world->priv->path) { gm_options_save(world->priv->options); gm_world_save_input_history(world); gm_triggers_save(world->priv->triggers); - - // Removing all tmp files - tmp_dir = g_strconcat(world->priv->path, "/tmp", NULL); - gm_directory_remove_all(tmp_dir, FALSE); - g_free(tmp_dir); } if (world->priv->fd_log > 0) { @@ -423,6 +417,22 @@ gm_world_reconnect(GmWorld *world) { return FALSE; } +void +gm_world_check_dirs(GmWorld *world) { + gchar *tmp_path; + + tmp_path = g_strconcat(world->priv->path, G_DIR_SEPARATOR_S, "logs", + NULL); + + if (!g_file_test(tmp_path, G_FILE_TEST_EXISTS)) { + mkdir(tmp_path, 0750); + } else { + chmod(tmp_path, 0750); + } + + g_free(tmp_path); +} + /* Public */ GmWorld * gm_world_new(gchar *path) { @@ -449,6 +459,8 @@ gm_world_new(gchar *path) { gm_world_load_input_history(world); gm_world_load_triggers(world); + + gm_world_check_dirs(world); } /* CHECK: all done? */ @@ -1027,7 +1039,7 @@ gm_world_sendln_log(GmWorld *world, gchar *text, GmLogType logtype) { gchar *normal; // Convert text from utf-8 to the correct locale - normal = gm_to_utf8_with_fallback(text, -1, + normal = gm_from_utf8_with_fallback(text, -1, gm_options_get(world->priv->options, "charset"), "?"); if (!normal) { @@ -1111,6 +1123,8 @@ gm_world_name_changed(GmWorld *world) { NULL); gm_triggers_save_as(world->priv->triggers, tmp_path); g_free(tmp_path); + + gm_world_check_dirs(world); g_object_notify(G_OBJECT(world), "name"); } @@ -1209,6 +1223,7 @@ void on_gm_world_net_net_error(GmNet *net, gchar *error, gint code, GmWorld *world) { g_signal_emit(world, world_signals[WORLD_ERROR], 0, error, code); + gm_world_log(world, LOG_STATUS, error); } void