[evolution] [backup-restore] Dir separator removal breaks DConf settings restore
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] [backup-restore] Dir separator removal breaks DConf settings restore
- Date: Thu, 7 Mar 2013 12:25:55 +0000 (UTC)
commit 77f3f2b068950aebe5818aa2e00164896bf3775b
Author: Milan Crha <mcrha redhat com>
Date: Thu Mar 7 13:21:12 2013 +0100
[backup-restore] Dir separator removal breaks DConf settings restore
DConf load command requires a slash at the end of the path to load,
but the replace_variables() code always removed the trailing slash,
which made the configuration load nonfunctional.
modules/backup-restore/evolution-backup-tool.c | 26 +++++++++++++----------
1 files changed, 15 insertions(+), 11 deletions(-)
---
diff --git a/modules/backup-restore/evolution-backup-tool.c b/modules/backup-restore/evolution-backup-tool.c
index 7c8fc72..10522c5 100644
--- a/modules/backup-restore/evolution-backup-tool.c
+++ b/modules/backup-restore/evolution-backup-tool.c
@@ -156,7 +156,8 @@ strip_home_dir (const gchar *dir)
}
static GString *
-replace_variables (const gchar *str)
+replace_variables (const gchar *str,
+ gboolean remove_dir_sep)
{
GString *res = NULL, *use;
const gchar *strip_datadir, *strip_configdir;
@@ -185,9 +186,11 @@ replace_variables (const gchar *str)
g_return_val_if_fail (res != NULL, NULL);
- /* remove trailing dir separator */
- while (res->len > 0 && res->str[res->len - 1] == G_DIR_SEPARATOR) {
- g_string_truncate (res, res->len - 1);
+ if (remove_dir_sep) {
+ /* remove trailing dir separator */
+ while (res->len > 0 && res->str[res->len - 1] == G_DIR_SEPARATOR) {
+ g_string_truncate (res, res->len - 1);
+ }
}
return res;
@@ -208,7 +211,7 @@ replace_in_file (const gchar *filename,
g_return_if_fail (replace != NULL);
if (strstr (filename, "$")) {
- filenamestr = replace_variables (filename);
+ filenamestr = replace_variables (filename, TRUE);
if (!filenamestr) {
g_warning (
@@ -258,7 +261,7 @@ run_cmd (const gchar *cmd)
if (strstr (cmd, "$") != NULL) {
/* read the doc for g_get_home_dir to know why replacing it here */
- GString *str = replace_variables (cmd);
+ GString *str = replace_variables (cmd, FALSE);
if (str) {
print_and_run (str->str);
@@ -280,14 +283,15 @@ write_dir_file (void)
GString *content, *filename;
GError *error = NULL;
- filename = replace_variables ("$HOME/" EVOLUTION_DIR_FILE);
+ filename = replace_variables ("$HOME/" EVOLUTION_DIR_FILE, TRUE);
g_return_if_fail (filename != NULL);
content = replace_variables (
"[" KEY_FILE_GROUP "]\n"
"Version=" VERSION "\n"
"UserDataDir=$STRIPDATADIR\n"
- "UserConfigDir=$STRIPCONFIGDIR\n");
+ "UserConfigDir=$STRIPCONFIGDIR\n"
+ , TRUE);
g_return_if_fail (content != NULL);
g_file_set_contents (filename->str, content->str, content->len, &error);
@@ -453,7 +457,7 @@ get_source_manager_reload_command (void)
GString *tmp;
gchar *command;
- tmp = replace_variables (DBUS_SOURCE_REGISTRY_SERVICE_FILE);
+ tmp = replace_variables (DBUS_SOURCE_REGISTRY_SERVICE_FILE, TRUE);
if (tmp) {
GKeyFile *key_file;
gchar *str = NULL;
@@ -535,7 +539,7 @@ restore (const gchar *filename,
run_cmd (command);
g_free (command);
- dir_fn = replace_variables ("$TMP" G_DIR_SEPARATOR_S EVOLUTION_DIR_FILE);
+ dir_fn = replace_variables ("$TMP" G_DIR_SEPARATOR_S EVOLUTION_DIR_FILE, TRUE);
if (!dir_fn) {
g_warning ("Failed to create evolution's dir filename");
goto end;
@@ -607,7 +611,7 @@ restore (const gchar *filename,
if (is_new_format) {
/* new format has it in DATADIR... */
- GString *file = replace_variables (EVOLUTION_DIR ANCIENT_GCONF_DUMP_FILE);
+ GString *file = replace_variables (EVOLUTION_DIR ANCIENT_GCONF_DUMP_FILE, TRUE);
if (file && g_file_test (file->str, G_FILE_TEST_EXISTS)) {
/* ancient backup */
replace_in_file (
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]