Added directory checking, fixed charset conversion, removed tmp directory removal
This commit is contained in:
parent
49160269b9
commit
7490eb04f9
|
@ -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
|
||||
|
|
Reference in New Issue