From c49d24973fd98debb0d2c8c16c80f03447b7397d Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Thu, 24 Sep 2020 00:54:33 -0300 Subject: [PATCH] Changing the default path of the session files to 'document' folder. --- src/include/v3270/keyfile.h | 1 + src/objects/os/linux/savedesktopicon.c | 14 ++++++++------ src/objects/window/keyfile.c | 17 ++++++++++++----- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/include/v3270/keyfile.h b/src/include/v3270/keyfile.h index 1ad9f3f..90ed7d9 100644 --- a/src/include/v3270/keyfile.h +++ b/src/include/v3270/keyfile.h @@ -43,6 +43,7 @@ typedef struct _V3270KeyFile V3270KeyFile; gchar * v3270_keyfile_get_default_filename(void); + gchar * v3270_key_file_get_default_path(GtkWidget *terminal, gboolean create); V3270KeyFile * v3270_key_file_open(GtkWidget *terminal, const gchar *name, GError **error); void v3270_key_file_close(GtkWidget *terminal); diff --git a/src/objects/os/linux/savedesktopicon.c b/src/objects/os/linux/savedesktopicon.c index aa47614..37ec483 100644 --- a/src/objects/os/linux/savedesktopicon.c +++ b/src/objects/os/linux/savedesktopicon.c @@ -197,7 +197,10 @@ X-Desktop-File-Install-Version=0.23 return dialog; } - static gchar * get_filename(GtkWidget *terminal) { + static gchar * get_filename(GtkWidget *terminal, const gchar *session_name) { + + if(!(session_name && *session_name)) + session_name = G_STRINGIFY(PRODUCT_NAME); g_autofree gchar * defname = v3270_keyfile_get_default_filename(); const gchar * current = v3270_key_file_get_filename(terminal); @@ -208,8 +211,7 @@ X-Desktop-File-Install-Version=0.23 } // It's the default one, create a new one on the user_config dir - g_autofree gchar * config_path = g_build_filename(g_get_user_config_dir(),G_STRINGIFY(PRODUCT_NAME),NULL); - g_mkdir_with_parents(config_path,0644); + g_autofree gchar * config_path = v3270_key_file_get_default_path(terminal,TRUE); // Use the hostname const char * hostname = lib3270_host_get_name(v3270_get_session(terminal)); @@ -218,12 +220,12 @@ X-Desktop-File-Install-Version=0.23 } // Build the filename - gchar *filename = g_strconcat(config_path,G_DIR_SEPARATOR_S,hostname,".3270",NULL); + gchar *filename = g_strconcat(config_path,G_DIR_SEPARATOR_S,hostname,".",session_name,".3270",NULL); unsigned int index = 0; while(g_file_test(filename,G_FILE_TEST_EXISTS)) { g_free(filename); - filename = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s.%u.3270",config_path,hostname,++index); + filename = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s.%s.%u.3270",config_path,hostname,session_name,++index); } v3270_key_file_save_to_file(terminal,filename); @@ -274,7 +276,7 @@ X-Desktop-File-Install-Version=0.23 } // Get session filename - g_autofree gchar * filename = get_filename(terminal); + g_autofree gchar * filename = get_filename(terminal,NULL); // Get program file name // https://stackoverflow.com/questions/4517425/how-to-get-program-path diff --git a/src/objects/window/keyfile.c b/src/objects/window/keyfile.c index 9f6d953..2b21d4c 100644 --- a/src/objects/window/keyfile.c +++ b/src/objects/window/keyfile.c @@ -222,12 +222,12 @@ void v3270_key_file_close(GtkWidget *terminal) { } /// @brief Search standard paths. - static gchar * v3270_get_configuration_folder(GtkWidget *terminal) { + gchar * v3270_key_file_get_default_path(GtkWidget *terminal, gboolean create) { size_t folder; const gchar *folders[] = { - g_get_user_special_dir(G_USER_DIRECTORY_DOCUMENTS), g_get_user_data_dir(), + g_get_user_special_dir(G_USER_DIRECTORY_DOCUMENTS), g_get_user_special_dir(G_USER_DIRECTORY_DESKTOP) }; @@ -270,9 +270,16 @@ void v3270_key_file_close(GtkWidget *terminal) { return g_path_get_dirname(filename); } - debug("%s: Using standard documents folder",__FUNCTION__); - return g_strdup(g_get_user_special_dir(G_USER_DIRECTORY_DOCUMENTS)); + if(!create) { + return g_strdup(g_get_user_special_dir(G_USER_DIRECTORY_DOCUMENTS)); + } + // Create folder. + { + gchar * default_dir = g_build_filename(g_get_user_special_dir(G_USER_DIRECTORY_DOCUMENTS),G_STRINGIFY(PRODUCT_NAME),NULL); + g_mkdir_with_parents(default_dir,0775); + return default_dir; + } } gchar * v3270_keyfile_get_default_filename(void) { @@ -294,7 +301,7 @@ void v3270_key_file_close(GtkWidget *terminal) { } debug("\n\n\n%s",__FUNCTION__); - g_autofree gchar * folder = v3270_get_configuration_folder(terminal); + g_autofree gchar * folder = v3270_key_file_get_default_path(terminal,FALSE); const char * hostname = lib3270_host_get_name(v3270_get_session(terminal)); debug("Hostname=\"%s\"",hostname); -- libgit2 0.21.2