All pastes #331738 Raw Copy code Copy link Edit

Gnucash 2.0 proposed diff

public unlisted c v1 · immutable
#331738 ·published 2007-01-29 04:19 UTC
rendered paste body
Index: src/core-utils/gnc-gkeyfile-utils.c===================================================================--- src/core-utils/gnc-gkeyfile-utils.c	(revision 15413)+++ src/core-utils/gnc-gkeyfile-utils.c	(working copy)@@ -146,5 +146,121 @@   return success; } ++/* Compatability functions to handle reading key names both with and+ * without embedded spaces.  The 2.0 release uses names containing+ * spaces, while 2.2 uses names without spaces. These functions allow+ * you to fall back to using 2.0 after trying a 2.2 release.  */ ++static gchar *+gnc_key_file_translate_key (const gchar *key)+{+  gchar **parts, *part, *newkey;+  gint j;++  parts = g_strsplit(key, " ", -1);+  for (j = 0, part = parts[j++]; part; part = parts[j++])+    part[0] = g_ascii_toupper(part[0]);+  newkey = g_strjoinv("", parts);+  g_strfreev(parts);++  return newkey;+}+++gboolean+gnc_key_file_get_boolean (GKeyFile *key_file,+			  const gchar *group_name,+			  const gchar *key,+			  GError **error)+{+  gchar *new_key;+  gboolean result;+  GError *local_error = NULL;++  result = g_key_file_get_boolean (key_file, group_name, key, &local_error);+  if (local_error == NULL)+    return result;++  g_clear_error(&local_error);+  new_key = gnc_key_file_translate_key(key);+  result = g_key_file_get_boolean (key_file, group_name, new_key, &local_error);+  g_free(new_key);+  if (local_error)+    g_propagate_error(error, local_error);+  return result;+}++gint+gnc_key_file_get_integer (GKeyFile *key_file,+			  const gchar *group_name,+			  const gchar *key,+			  GError **error)+{+  gchar *new_key;+  gint result;+  GError *local_error = NULL;++  result = g_key_file_get_integer (key_file, group_name, key, &local_error);+  if (local_error == NULL)+    return result;++  g_clear_error(&local_error);+  new_key = gnc_key_file_translate_key(key);+  result = g_key_file_get_integer (key_file, group_name, new_key, &local_error);+  g_free(new_key);+  if (local_error)+    g_propagate_error(error, local_error);+  return result;+}++gint *+gnc_key_file_get_integer_list (GKeyFile *key_file,+			       const gchar *group_name,+			       const gchar *key,+			       gsize *length,+			       GError **error)+{+  gchar *new_key;+  gint *result;+  GError *local_error = NULL;++  result = g_key_file_get_integer_list (key_file, group_name, key, length, &local_error);+  if (local_error == NULL)+    return result;++  g_clear_error(&local_error);+  new_key = gnc_key_file_translate_key(key);+  result = g_key_file_get_integer_list (key_file, group_name, new_key, length, &local_error);+  g_free(new_key);+  if (local_error)+    g_propagate_error(error, local_error);+  return result;+}++gchar *+gnc_key_file_get_string (GKeyFile *key_file,+			 const gchar *group_name,+			 const gchar *key,+			 GError **error)+{+  gchar *new_key;+  gchar *result;+  GError *local_error = NULL;++  result = g_key_file_get_string (key_file, group_name, key, &local_error);+  if (local_error == NULL)+    return result;++  g_clear_error(&local_error);+  new_key = gnc_key_file_translate_key(key);+  result = g_key_file_get_string (key_file, group_name, new_key, &local_error);+  g_free(new_key);+  if (local_error)+    g_propagate_error(error, local_error);+  return result;+}++ /** @} */ /** @} */Index: src/core-utils/gnc-gkeyfile-utils.h===================================================================--- src/core-utils/gnc-gkeyfile-utils.h	(revision 15413)+++ src/core-utils/gnc-gkeyfile-utils.h	(working copy)@@ -77,6 +77,31 @@ 				    GKeyFile *key_file, 				    GError **error); +++/* Compatability functions to handle reading key names both with and+ * without embedded spaces.  The 2.0 release uses names containing+ * spaces, while 2.2 uses names without spaces. These functions allow+ * you to fall back to using 2.0 after trying a 2.2 release.  */ +gboolean gnc_key_file_get_boolean (GKeyFile *key_file,+				   const gchar *group_name,+				   const gchar *key,+				   GError **error);+gint gnc_key_file_get_integer (GKeyFile *key_file,+			       const gchar *group_name,+			       const gchar *key,+			       GError **error);+gint *gnc_key_file_get_integer_list (GKeyFile *key_file,+				     const gchar *group_name,+				     const gchar *key,+				     gsize *length,+				     GError **error);+gchar *gnc_key_file_get_string (GKeyFile *key_file,+				const gchar *group_name,+				const gchar *key,+				GError **error);++ #endif /* GNC_GKEYFILE_UTILS_H */ /** @} */ /** @} */Index: src/report/report-gnome/gnc-plugin-page-report.c===================================================================--- src/report/report-gnome/gnc-plugin-page-report.c	(revision 15413)+++ src/report/report-gnome/gnc-plugin-page-report.c	(working copy)@@ -58,6 +58,7 @@ #include "gnc-html-history.h" #include "gnc-html.h" #include "gnc-file.h"+#include "gnc-gkeyfile-utils.h" #include "gnc-plugin.h" #include "gnc-plugin-page-report.h" #include "gnc-report.h"@@ -646,6 +647,7 @@  *  options. */ #define SCHEME_OPTIONS   "Scheme Options" #define SCHEME_OPTIONS_N "Scheme Options %d"+#define SCHEME_OPTIONS_NEW "SchemeOptions"   /** Save enough information about this report page that it can be@@ -759,9 +761,10 @@ 	}  	for (i = 0; i < num_keys; i++) {-	  if (strncmp(keys[i], SCHEME_OPTIONS, strlen(SCHEME_OPTIONS)) != 0)+	  if ((strncmp(keys[i], SCHEME_OPTIONS, strlen(SCHEME_OPTIONS)) != 0) &&+	      (strncmp(keys[i], SCHEME_OPTIONS_NEW, strlen(SCHEME_OPTIONS_NEW)) != 0)) 	    continue;-	  option_string = g_key_file_get_string(key_file, group_name,+	  option_string = gnc_key_file_get_string(key_file, group_name, 						keys[i], &error); 	  if (error) { 	    g_warning("error reading group %s key %s: %s",@@ -780,7 +783,8 @@ 	  }  	  if (final_id == SCM_BOOL_F) {-	    if (strcmp(keys[i], SCHEME_OPTIONS) == 0) {+	    if ((strcmp(keys[i], SCHEME_OPTIONS) == 0) ||+		(strcmp(keys[i], SCHEME_OPTIONS_NEW) == 0)) { 	      final_id = scm_id; 	    } 	  }Index: src/business/business-gnome/dialog-invoice.c===================================================================--- src/business/business-gnome/dialog-invoice.c	(revision 15413)+++ src/business/business-gnome/dialog-invoice.c	(working copy)@@ -38,6 +38,7 @@ #include "gnc-component-manager.h" #include "gnc-ui.h" #include "gnc-gconf-utils.h"+#include "gnc-gkeyfile-utils.h" #include "gnc-gui-query.h" #include "gnc-ui-util.h" #include "qof.h"@@ -1703,7 +1704,7 @@   GncOwner owner = { 0 };    /* Get Invoice Type */-  tmp_string = g_key_file_get_string(key_file, group_name,+  tmp_string = gnc_key_file_get_string(key_file, group_name, 				     KEY_INVOICE_TYPE, &error);   if (error) {     g_warning("Error reading group %s key %s: %s.",@@ -1714,7 +1715,7 @@   g_free(tmp_string);    /* Get Invoice GUID */-  tmp_string = g_key_file_get_string(key_file, group_name,+  tmp_string = gnc_key_file_get_string(key_file, group_name, 				     KEY_INVOICE_GUID, &error);   if (error) {     g_warning("Error reading group %s key %s: %s.",@@ -1734,7 +1735,7 @@   g_free(tmp_string);    /* Get Owner Type */-  owner_type = g_key_file_get_string(key_file, group_name,+  owner_type = gnc_key_file_get_string(key_file, group_name, 				     KEY_OWNER_TYPE, &error);   if (error) {     g_warning("Error reading group %s key %s: %s.",@@ -1743,7 +1744,7 @@   }    /* Get Owner GUID */-  tmp_string = g_key_file_get_string(key_file, group_name,+  tmp_string = gnc_key_file_get_string(key_file, group_name, 				     KEY_OWNER_GUID, &error);   if (error) {     g_warning("Error reading group %s key %s: %s.",Index: src/gnome-utils/gnc-main-window.c===================================================================--- src/gnome-utils/gnc-main-window.c	(revision 15413)+++ src/gnome-utils/gnc-main-window.c	(working copy)@@ -439,7 +439,7 @@    priv = GNC_MAIN_WINDOW_GET_PRIVATE(window);   page_group = g_strdup_printf(PAGE_STRING, data->page_offset + data->page_num);-  page_type = g_key_file_get_string(data->key_file, page_group,+  page_type = gnc_key_file_get_string(data->key_file, page_group, 				    PAGE_TYPE, &error);   if (error) {     g_warning("error reading group %s key %s: %s",@@ -467,7 +467,7 @@       }        /* Restore the page name */-      name = g_key_file_get_string(data->key_file, page_group,+      name = gnc_key_file_get_string(data->key_file, page_group, 				       PAGE_NAME, &error);       if (error) { 	g_warning("error reading group %s key %s: %s",@@ -517,7 +517,7 @@   window_group = g_strdup_printf(WINDOW_STRING, data->window_num + 1);    /* Get this window's notebook info */-  page_count = g_key_file_get_integer(data->key_file,+  page_count = gnc_key_file_get_integer(data->key_file, 				      window_group, WINDOW_PAGECOUNT, &error);   if (error) {     g_warning("error reading group %s key %s: %s",@@ -529,7 +529,7 @@      * check doesn't hurt anything. */     goto cleanup;   }-  page_start = g_key_file_get_integer(data->key_file,+  page_start = gnc_key_file_get_integer(data->key_file, 				      window_group, WINDOW_FIRSTPAGE, &error);   if (error) {     g_warning("error reading group %s key %s: %s",@@ -550,7 +550,7 @@   priv = GNC_MAIN_WINDOW_GET_PRIVATE(window);    /* Get the window coordinates, etc. */-  pos = g_key_file_get_integer_list(data->key_file, window_group,+  pos = gnc_key_file_get_integer_list(data->key_file, window_group, 				    WINDOW_POSITION, &length, &error);   if (error) {     g_warning("error reading group %s key %s: %s",@@ -568,7 +568,7 @@     g_free(pos);   } -  geom = g_key_file_get_integer_list(data->key_file, window_group,+  geom = gnc_key_file_get_integer_list(data->key_file, window_group, 				     WINDOW_GEOMETRY, &length, &error);   if (error) {     g_warning("error reading group %s key %s: %s",@@ -586,7 +586,7 @@     g_free(geom);   } -  max = g_key_file_get_boolean(data->key_file, window_group,+  max = gnc_key_file_get_boolean(data->key_file, window_group, 			       WINDOW_MAXIMIZED, &error);   if (error) {     g_warning("error reading group %s key %s: %s",@@ -600,7 +600,7 @@   /* Common view menu items */   action = gnc_main_window_find_action(window, "ViewToolbarAction");   visible = gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(action));-  desired_visibility = g_key_file_get_boolean(data->key_file, window_group,+  desired_visibility = gnc_key_file_get_boolean(data->key_file, window_group, 					      TOOLBAR_VISIBLE, &error);   if (error) {     g_warning("error reading group %s key %s: %s",@@ -613,7 +613,7 @@    action = gnc_main_window_find_action(window, "ViewSummaryAction");   visible = gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(action));-  desired_visibility = g_key_file_get_boolean(data->key_file, window_group,+  desired_visibility = gnc_key_file_get_boolean(data->key_file, window_group, 					      SUMMARYBAR_VISIBLE, &error);   if (error) {     g_warning("error reading group %s key %s: %s",@@ -626,7 +626,7 @@    action = gnc_main_window_find_action(window, "ViewStatusbarAction");   visible = gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(action));-  desired_visibility = g_key_file_get_boolean(data->key_file, window_group,+  desired_visibility = gnc_key_file_get_boolean(data->key_file, window_group, 					      STATUSBAR_VISIBLE, &error);   if (error) {     g_warning("error reading group %s key %s: %s",@@ -651,7 +651,7 @@   /* Restore page ordering within the notebook. Use +1 notation so the    * numbers in the page order match the page sections, at least for    * the one window case. */-  order = g_key_file_get_integer_list(data->key_file, window_group,+  order = gnc_key_file_get_integer_list(data->key_file, window_group,  				      WINDOW_PAGEORDER, &length, &error);   if (error) {     g_warning("error reading group %s key %s: %s",@@ -697,7 +697,7 @@   /* We use the same struct for reading and for writing, so we cast      away the const. */   data.key_file = (GKeyFile *) keyfile;-  window_count = g_key_file_get_integer(data.key_file, STATE_FILE_TOP, +  window_count = gnc_key_file_get_integer(data.key_file, STATE_FILE_TOP,                                          WINDOW_COUNT, &error);   if (error) {     g_warning("error reading group %s key %s: %s",Index: src/gnome-utils/gnc-tree-view-account.c===================================================================--- src/gnome-utils/gnc-tree-view-account.c	(revision 15413)+++ src/gnome-utils/gnc-tree-view-account.c	(working copy)@@ -43,6 +43,7 @@ #include "gnc-commodity.h" #include "gnc-component-manager.h" #include "gnc-engine.h"+#include "gnc-gkeyfile-utils.h" #include "gnc-glib-utils.h" #include "gnc-gobject-utils.h" #include "gnc-hooks.h"@@ -2054,7 +2055,7 @@     gboolean show;	      /* Filter information. Ignore missing keys. */-    show = g_key_file_get_boolean(key_file, group_name, SHOW_HIDDEN, &error);+    show = gnc_key_file_get_boolean(key_file, group_name, SHOW_HIDDEN, &error);     if (error) {         g_warning("error reading group %s key %s: %s",                   group_name, SHOW_HIDDEN, error->message);@@ -2064,7 +2065,7 @@     }     fd->show_hidden = show;     -    show = g_key_file_get_boolean(key_file, group_name, SHOW_ZERO, &error);+    show = gnc_key_file_get_boolean(key_file, group_name, SHOW_ZERO, &error);     if (error) {         g_warning("error reading group %s key %s: %s",                   group_name, SHOW_ZERO, error->message);@@ -2074,7 +2075,7 @@     }     fd->show_zero_total = show;     -    i = g_key_file_get_integer(key_file, group_name, ACCT_TYPES, &error);+    i = gnc_key_file_get_integer(key_file, group_name, ACCT_TYPES, &error);     if (error) {         g_warning("error reading group %s key %s: %s",                   group_name, ACCT_TYPES, error->message);@@ -2085,11 +2086,11 @@     fd->visible_types = i;          /* Expanded accounts. Skip if count key missing. */-    count = g_key_file_get_integer(key_file, group_name, ACCT_COUNT, &error);+    count = gnc_key_file_get_integer(key_file, group_name, ACCT_COUNT, &error);     if (error == NULL) {         for (i = 1; i <= count; i++) { 	    key = g_strdup_printf(ACCT_OPEN, i);-	    value = g_key_file_get_string(key_file, group_name, key, &error);+	    value = gnc_key_file_get_string(key_file, group_name, key, &error); 	    if (error) {                 g_warning("error reading group %s key %s: %s",                           group_name, key, error->message);@@ -2107,7 +2108,7 @@     }          /* Selected account (if any) */-    value = g_key_file_get_string(key_file, group_name, ACCT_SELECTED, NULL);+    value = gnc_key_file_get_string(key_file, group_name, ACCT_SELECTED, NULL);     if (value) {         tree_restore_selected_row(view, value);         g_free(value);Index: src/gnome/gnc-plugin-page-register.c===================================================================--- src/gnome/gnc-plugin-page-register.c	(revision 15413)+++ src/gnome/gnc-plugin-page-register.c	(working copy)@@ -58,6 +58,7 @@ #include "gnc-date-edit.h" #include "gnc-engine.h" #include "gnc-event.h"+#include "gnc-gkeyfile-utils.h" #include "gnc-gnome-utils.h" #include "gnc-gobject-utils.h" #include "gnc-gui-query.h"@@ -931,7 +932,7 @@   priv = GNC_PLUGIN_PAGE_REGISTER_GET_PRIVATE(page);    /* Convert the style name to an index */-  style_name = g_key_file_get_string(key_file, group_name,+  style_name = gnc_key_file_get_string(key_file, group_name, 				     KEY_REGISTER_STYLE, &error);   for (i = 0 ; style_names[i]; i++) {     if (g_ascii_strcasecmp(style_name, style_names[i]) == 0) {@@ -950,7 +951,7 @@    /* Update the  double line action on this page */   use_double_line =-    g_key_file_get_boolean(key_file, group_name, KEY_DOUBLE_LINE, &error);+    gnc_key_file_get_boolean(key_file, group_name, KEY_DOUBLE_LINE, &error);   DEBUG("Setting double_line_mode: %d", use_double_line);   action = gnc_plugin_page_get_action(page, "ViewStyleDoubleLineAction");   gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), use_double_line);@@ -985,14 +986,14 @@   ENTER("key_file %p, group_name %s", key_file, group_name);    /* Create the new page. */-  reg_type = g_key_file_get_string(key_file, group_name,+  reg_type = gnc_key_file_get_string(key_file, group_name, 					 KEY_REGISTER_TYPE, &error);   DEBUG("Page type: %s", reg_type);   if ((g_ascii_strcasecmp(reg_type, LABEL_ACCOUNT) == 0) ||       (g_ascii_strcasecmp(reg_type, LABEL_SUBACCOUNT) == 0)) {     include_subs = (g_ascii_strcasecmp(reg_type, LABEL_SUBACCOUNT) == 0);     DEBUG("Include subs: %d", include_subs);-    acct_name = g_key_file_get_string(key_file, group_name,+    acct_name = gnc_key_file_get_string(key_file, group_name, 				      KEY_ACCOUNT_NAME, &error);     book = qof_session_get_book(gnc_get_current_session());     account = xaccGetAccountFromFullName(xaccGetAccountGroup(book),Index: src/gnome/top-level.c===================================================================--- src/gnome/top-level.c	(revision 15413)+++ src/gnome/top-level.c	(working copy)@@ -271,7 +271,7 @@ #endif          /* validate top level info */-    file_guid = g_key_file_get_string(keyfile, STATE_FILE_TOP, +    file_guid = gnc_key_file_get_string(keyfile, STATE_FILE_TOP,                                        STATE_FILE_BOOK_GUID, &error);     if (error) {         g_warning("error reading group %s key %s: %s",Index: src/gnome/gnc-plugin-page-budget.c===================================================================--- src/gnome/gnc-plugin-page-budget.c	(revision 15413)+++ src/gnome/gnc-plugin-page-budget.c	(working copy)@@ -48,6 +48,7 @@  #include "dialog-options.h" #include "dialog-utils.h"+#include "gnc-gkeyfile-utils.h" #include "gnc-gnome-utils.h" #include "gnc-html.h" #include "gnc-icons.h"@@ -525,7 +526,7 @@     g_return_val_if_fail(group_name, NULL);     ENTER("key_file %p, group_name %s", key_file, group_name); -    guid_str = g_key_file_get_string(key_file, group_name, BUDGET_GUID, +    guid_str = gnc_key_file_get_string(key_file, group_name, BUDGET_GUID,                                       &error);     if (error) {         g_warning("error reading group %s key %s: %s",Index: src/app-utils/file-utils.c===================================================================--- src/app-utils/file-utils.c	(revision 15413)+++ src/app-utils/file-utils.c	(working copy)@@ -177,7 +177,6 @@ {   gchar *basename, *original = NULL, *filename, *tmp, *file_guid;   GKeyFile *key_file = NULL;-  GError *error = NULL;   gint i;    ENTER("url %s, guid %s", url, guid);@@ -206,11 +205,11 @@       break;     } -    file_guid = g_key_file_get_string(key_file,+    file_guid = gnc_key_file_get_string(key_file, 				      STATE_FILE_TOP, STATE_FILE_BOOK_GUID,-				      &error);+				      NULL);     DEBUG("File GUID is %s", file_guid);-    if (strcmp(guid, file_guid) == 0) {+    if (safe_strcmp(guid, file_guid) == 0) {       DEBUG("Matched !!!");       g_free(file_guid);       break;