gnucash unstable: Use a platform dependent package name for gnc_user[config|data]_dir

Geert Janssens gjanssens at code.gnucash.org
Mon Feb 19 16:53:48 EST 2018


Updated	 via  https://github.com/Gnucash/gnucash/commit/50e2a3de (commit)
	from  https://github.com/Gnucash/gnucash/commit/36ad5064 (commit)



commit 50e2a3def7f913ad27f92f7f2719e1fd71fc8290
Author: Geert Janssens <geert at kobaltwit.be>
Date:   Mon Feb 19 22:53:13 2018 +0100

    Use a platform dependent package name for gnc_user[config|data]_dir
    
    Windows and OS X expect the directory name to be capitalized while linux typically uses an all-lowercase name.

diff --git a/libgnucash/core-utils/gnc-filepath-utils.cpp b/libgnucash/core-utils/gnc-filepath-utils.cpp
index 21e3f69..3e956ea 100644
--- a/libgnucash/core-utils/gnc-filepath-utils.cpp
+++ b/libgnucash/core-utils/gnc-filepath-utils.cpp
@@ -580,6 +580,13 @@ get_userconfig_home(void)
     return userconfig_home;
 }
 
+#if defined G_OS_WIN32 ||defined MAC_INTEGRATION
+constexpr auto path_package = PACKAGE_NAME;
+#else
+constexpr auto path_package = PACKAGE;
+#endif
+
+
 gboolean
 gnc_filepath_init (void)
 {
@@ -640,7 +647,7 @@ gnc_filepath_init (void)
         /* Determine platform dependent default userdata_home_path
          * and check whether it's valid */
         auto userdata_home = get_userdata_home();
-        gnc_userdata_home = userdata_home / PACKAGE;
+        gnc_userdata_home = userdata_home / path_package;
         try
         {
             gnc_userdata_home_exists = bfs::exists (gnc_userdata_home);
@@ -737,8 +744,8 @@ gnc_userdata_dir (void)
 const gchar *
 gnc_userconfig_dir (void)
 {
-    auto path_string = get_userconfig_home() / PACKAGE;
-    return g_strdup(path_string.string().c_str());
+    auto config_path = get_userconfig_home() / path_package;
+    return g_strdup(config_path.string().c_str());
 }
 
 static const bfs::path&
diff --git a/libgnucash/core-utils/test/test-userdata-dir.c b/libgnucash/core-utils/test/test-userdata-dir.c
index a702a56..8eb2c4b 100644
--- a/libgnucash/core-utils/test/test-userdata-dir.c
+++ b/libgnucash/core-utils/test/test-userdata-dir.c
@@ -59,6 +59,13 @@ usr_confpath_strings strs2[] =
     { 0, NULL, NULL },
 };
 
+#if defined G_OS_WIN32 ||defined MAC_INTEGRATION
+const char *path_package = PACKAGE_NAME;
+#else
+const char *path_package = PACKAGE;
+#endif
+
+
 static char*
 test_get_userdatadir ()
 {
@@ -177,25 +184,25 @@ main(int argc, char **argv)
 
         if (strs2[i].func_num == 0)
         {
-            wantout = g_build_filename(userdata_dir, PACKAGE, "foo",
+            wantout = g_build_filename(userdata_dir, path_package, "foo",
                                        (gchar *)NULL);
             daout = gnc_build_userdata_path("foo");
         }
         else if (strs2[i].func_num == 1)
         {
-            wantout = g_build_filename(userdata_dir, PACKAGE, strs2[i].output, "foo",
+            wantout = g_build_filename(userdata_dir, path_package, strs2[i].output, "foo",
                                        (gchar *)NULL);
             daout = gnc_build_book_path("foo");
         }
         else if (strs2[i].func_num == 2)
         {
-            wantout = g_build_filename(userdata_dir, PACKAGE, strs2[i].output, "foo",
+            wantout = g_build_filename(userdata_dir, path_package, strs2[i].output, "foo",
                                        (gchar *)NULL);
             daout = gnc_build_translog_path("foo");
         }
         else // if (strs2[i].prefix_home == 3)
         {
-            wantout = g_build_filename(userdata_dir, PACKAGE, strs2[i].output, "foo",
+            wantout = g_build_filename(userdata_dir, path_package, strs2[i].output, "foo",
                                        (gchar *)NULL);
             daout = gnc_build_data_path("foo");
         }
@@ -209,16 +216,16 @@ main(int argc, char **argv)
     }
     g_unsetenv("XDG_DATA_HOME");
     /* Remove intermediate directories again */
-    tmp_dir = g_build_filename(userdata_dir, PACKAGE, "data", (gchar *)NULL);
+    tmp_dir = g_build_filename(userdata_dir, path_package, "data", (gchar *)NULL);
     g_rmdir (tmp_dir);
     g_free (tmp_dir);
-    tmp_dir = g_build_filename(userdata_dir, PACKAGE, "translog", (gchar *)NULL);
+    tmp_dir = g_build_filename(userdata_dir, path_package, "translog", (gchar *)NULL);
     g_rmdir (tmp_dir);
     g_free (tmp_dir);
-    tmp_dir = g_build_filename(userdata_dir, PACKAGE, "books", (gchar *)NULL);
+    tmp_dir = g_build_filename(userdata_dir, path_package, "books", (gchar *)NULL);
     g_rmdir (tmp_dir);
     g_free (tmp_dir);
-    tmp_dir = g_build_filename(userdata_dir, PACKAGE, (gchar *)NULL);
+    tmp_dir = g_build_filename(userdata_dir, path_package, (gchar *)NULL);
     g_rmdir (tmp_dir);
     g_free (tmp_dir);
     g_rmdir(userdata_dir);
@@ -240,25 +247,25 @@ main(int argc, char **argv)
 
         if (strs2[i].func_num == 0)
         {
-            wantout = g_build_filename(userdata_dir, PACKAGE, "foo",
+            wantout = g_build_filename(userdata_dir, path_package, "foo",
                                        (gchar *)NULL);
             daout = gnc_build_userdata_path("foo");
         }
         else if (strs2[i].func_num == 1)
         {
-            wantout = g_build_filename(userdata_dir, PACKAGE, strs2[i].output, "foo",
+            wantout = g_build_filename(userdata_dir, path_package, strs2[i].output, "foo",
                                        (gchar *)NULL);
             daout = gnc_build_book_path("foo");
         }
         else if (strs2[i].func_num == 2)
         {
-            wantout = g_build_filename(userdata_dir, PACKAGE, strs2[i].output, "foo",
+            wantout = g_build_filename(userdata_dir, path_package, strs2[i].output, "foo",
                                        (gchar *)NULL);
             daout = gnc_build_translog_path("foo");
         }
         else // if (strs2[i].prefix_home == 3)
         {
-            wantout = g_build_filename(userdata_dir, PACKAGE, strs2[i].output, "foo",
+            wantout = g_build_filename(userdata_dir, path_package, strs2[i].output, "foo",
                                        (gchar *)NULL);
             daout = gnc_build_data_path("foo");
         }
@@ -271,19 +278,19 @@ main(int argc, char **argv)
         g_free(daout);
     }
     /* Remove intermediate directories again */
-    tmp_dir = g_build_filename(userdata_dir, PACKAGE, "data", (gchar *)NULL);
+    tmp_dir = g_build_filename(userdata_dir, path_package, "data", (gchar *)NULL);
     g_rmdir (tmp_dir);
     g_free (tmp_dir);
-    tmp_dir = g_build_filename(userdata_dir, PACKAGE, "translog", (gchar *)NULL);
+    tmp_dir = g_build_filename(userdata_dir, path_package, "translog", (gchar *)NULL);
     g_rmdir (tmp_dir);
     g_free (tmp_dir);
-    tmp_dir = g_build_filename(userdata_dir, PACKAGE, "books", (gchar *)NULL);
+    tmp_dir = g_build_filename(userdata_dir, path_package, "books", (gchar *)NULL);
     g_rmdir (tmp_dir);
     g_free (tmp_dir);
 #ifndef MAC_INTEGRATION
 #ifndef G_OS_WIN32
     /* Don't delete these on OS X or Windows. They may point at real user directories */
-    tmp_dir = g_build_filename(userdata_dir, PACKAGE, (gchar *)NULL);
+    tmp_dir = g_build_filename(userdata_dir, path_package, (gchar *)NULL);
     g_rmdir (tmp_dir);
     g_free (tmp_dir);
     g_rmdir(userdata_dir);



Summary of changes:
 libgnucash/core-utils/gnc-filepath-utils.cpp   | 13 +++++++--
 libgnucash/core-utils/test/test-userdata-dir.c | 39 +++++++++++++++-----------
 2 files changed, 33 insertions(+), 19 deletions(-)



More information about the gnucash-changes mailing list