gnucash master: Multiple changes pushed
John Ralls
jralls at code.gnucash.org
Tue Jun 9 20:19:50 EDT 2015
Updated via https://github.com/Gnucash/gnucash/commit/9343ebe9 (commit)
via https://github.com/Gnucash/gnucash/commit/240e36f7 (commit)
via https://github.com/Gnucash/gnucash/commit/f1609376 (commit)
via https://github.com/Gnucash/gnucash/commit/073c7a69 (commit)
via https://github.com/Gnucash/gnucash/commit/79139c88 (commit)
via https://github.com/Gnucash/gnucash/commit/5a4a8ac5 (commit)
via https://github.com/Gnucash/gnucash/commit/f604348d (commit)
from https://github.com/Gnucash/gnucash/commit/9914a046 (commit)
commit 9343ebe9e4b92d769847427469ec73711ace6d75
Merge: 9914a04 240e36f
Author: John Ralls <jralls at ceridwen.us>
Date: Tue Jun 9 14:51:21 2015 -0700
Merge branch 'maint'
commit 240e36f73b2d0ab48aa97d4b69a7adc879dbcf2c
Author: Mike Evans <mikee at saxicola.co.uk>
Date: Tue Jun 2 10:33:35 2015 +0100
Bug 734183 - Set value to zero before calling gnc_exp_parser_parse.
diff --git a/src/plugins/bi_import/dialog-bi-import.c b/src/plugins/bi_import/dialog-bi-import.c
index 3c2a8b0..ec11ace 100644
--- a/src/plugins/bi_import/dialog-bi-import.c
+++ b/src/plugins/bi_import/dialog-bi-import.c
@@ -709,7 +709,7 @@ gnc_bi_import_create_bis (GtkListStore * store, QofBook * book,
gncEntrySetDateEntered (entry, today);
gncEntrySetDescription (entry, desc);
gncEntrySetAction (entry, action);
-
+ value = gnc_numeric_zero();
gnc_exp_parser_parse (quantity, &value, NULL);
gncEntrySetQuantity (entry, value);
acc = gnc_account_lookup_for_register (gnc_get_current_root_account (),
@@ -718,6 +718,7 @@ gnc_bi_import_create_bis (GtkListStore * store, QofBook * book,
if (g_ascii_strcasecmp (type, "BILL") == 0)
{
gncEntrySetBillAccount (entry, acc);
+ value = gnc_numeric_zero();
gnc_exp_parser_parse (price, &value, NULL);
gncEntrySetBillPrice (entry, value);
gncEntrySetBillTaxable (entry, text2bool (taxable));
@@ -730,11 +731,13 @@ gnc_bi_import_create_bis (GtkListStore * store, QofBook * book,
{
gncEntrySetNotes (entry, notes);
gncEntrySetInvAccount (entry, acc);
+ value = gnc_numeric_zero();
gnc_exp_parser_parse (price, &value, NULL);
gncEntrySetInvPrice (entry, value);
gncEntrySetInvTaxable (entry, text2bool (taxable));
gncEntrySetInvTaxIncluded (entry, text2bool (taxincluded));
gncEntrySetInvTaxTable (entry, gncTaxTableLookupByName (book, tax_table));
+ value = gnc_numeric_zero();
gnc_exp_parser_parse (discount, &value, NULL);
gncEntrySetInvDiscount (entry, value);
gncEntrySetInvDiscountType (entry, text2disc_type (disc_type));
commit f160937681d0b8daa7a2548d574bb5ba5c63c9c9
Author: Geert Janssens <janssens-geert at telenet.be>
Date: Sun May 31 10:07:44 2015 +0200
Bug 746163 - Custom register colors (table rows) not recognized from .gtkrc-2.0.gnucash file
Change the preference label and description to avoid confusion.
Translators: this patch introduces two updated strings.
diff --git a/src/gnome-utils/gtkbuilder/dialog-preferences.glade b/src/gnome-utils/gtkbuilder/dialog-preferences.glade
index 0cc05ef..5f723d8 100644
--- a/src/gnome-utils/gtkbuilder/dialog-preferences.glade
+++ b/src/gnome-utils/gtkbuilder/dialog-preferences.glade
@@ -2465,13 +2465,13 @@ many months before the current month:</property>
</child>
<child>
<object class="GtkCheckButton" id="pref/general.register/use-theme-colors">
- <property name="label" translatable="yes">_Use system theme colors</property>
+ <property name="label" translatable="yes">Don't _use GnuCash built-in colors</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="has_tooltip">True</property>
- <property name="tooltip_markup">If checked, the system color theme will be applied to register windows. If clear, the original GnuCash register colors will be used.</property>
- <property name="tooltip_text" translatable="yes">If checked, the system color theme will be applied to register windows. If clear, the original GnuCash register colors will be used.</property>
+ <property name="tooltip_markup">GnuCash uses a yellow/green theme by default for register windows. Check this if you want to use the system color theme instead.</property>
+ <property name="tooltip_text" translatable="yes">GnuCash uses a yellow/green theme by default for register windows. Check this if you want to use the system color theme instead.</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
</object>
commit 073c7a69adc8e496e7c04d737c93a417ba7b0905
Author: Joe Hansen <joedalton2 at yahoo.dk>
Date: Fri May 29 22:46:57 2015 +0200
Updated Danish translation
Copied from the translation project
diff --git a/po/da.po b/po/da.po
index 4ce4fe0..de997dc 100644
--- a/po/da.po
+++ b/po/da.po
@@ -1,5 +1,5 @@
# Danish translation of Gnucash.
-# Copyright (C) 2014 Free Software Foundation, Inc.
+# Copyright (C) 2015 Free Software Foundation, Inc.
# This file is distributed under the same license as the gnucash package.
# Kenneth Christiansen <kenneth at gnome.org>, 2000.
# Keld Simonsen <keld at dkuug.dk>, 2000-2002.
@@ -19,6 +19,7 @@
# bill -> regning
# billing term -> betalingsbetingelse
# book -> bog (regnskab)
+# business -> forretning (afklar om det skal være virksomhed)
# Cash Flow -> pengestrømsopgørelse
# charge -> betaling
# Chart of Accounts -> kontoplan
@@ -95,7 +96,7 @@ msgstr ""
"Project-Id-Version: gnucash 2.6.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-03-30 13:18-0700\n"
-"PO-Revision-Date: 2015-04-03 22:41+0200\n"
+"PO-Revision-Date: 2015-05-02 22:41+0200\n"
"Last-Translator: Joe Hansen <joedalton2 at yahoo.dk>\n"
"Language-Team: Danish <dansk at dansk-gruppen.dk>\n"
"Language: da\n"
@@ -160,11 +161,11 @@ msgstr "Kundenummer"
#: ../src/app-utils/business-prefs.scm:33
msgid "The format string to use for generating customer numbers. This is a printf-style format string."
-msgstr "Formatstrengen at bruge til oprettelse af kundenumre. Dette er en formatsstreng i printf-stil."
+msgstr "Formatstreng der anvendes ved oprettelse af kundenumre. Dette er en formatstreng i printf-stil."
#: ../src/app-utils/business-prefs.scm:34
msgid "The previous customer number generated. This number will be incremented to generate the next customer number."
-msgstr "Det forrige kundenummer oprettet. Dette nummer vil blive trinvist øget for at oprette det næste kundenummer."
+msgstr "Det forrige oprettet kundenummer. Dette nummer vil blive trinvist øget for at oprette det næste kundenummer."
#: ../src/app-utils/business-prefs.scm:35
msgid "Employee number format"
@@ -176,11 +177,11 @@ msgstr "Medarbejdernummer"
#: ../src/app-utils/business-prefs.scm:37
msgid "The format string to use for generating employee numbers. This is a printf-style format string."
-msgstr "Formatstrengen at bruge til oprettelse af medarbejdernummer. Dette er en formatstreng i printf-stil."
+msgstr "Formatstreng der anvendes ved oprettelse af medarbejdernumre. Dette er en formatstreng i printf-stil."
#: ../src/app-utils/business-prefs.scm:38
msgid "The previous employee number generated. This number will be incremented to generate the next employee number."
-msgstr "Det forrige medarbejdernummer oprettet. Dette nummer vil blive trinvist øget for at oprette det næste medarbejdernummer."
+msgstr "Det forrige oprettet medarbejdernummer. Dette nummer vil blive trinvist øget for at oprette det næste medarbejdernummer."
#: ../src/app-utils/business-prefs.scm:39
msgid "Invoice number format"
@@ -192,11 +193,11 @@ msgstr "Fakturanummer"
#: ../src/app-utils/business-prefs.scm:41
msgid "The format string to use for generating invoice numbers. This is a printf-style format string."
-msgstr "Formatstrengen at bruge for oprettelse af fakturanumre. Dette er en formatstreng i printf-stil."
+msgstr "Formatstreng der anvendes ved oprettelse af fakturanumre. Dette er en formatstreng i printf-stil."
#: ../src/app-utils/business-prefs.scm:42
msgid "The previous invoice number generated. This number will be incremented to generate the next invoice number."
-msgstr "Det forrige fakturanummer oprettet. Dette nummer vil blive trinvist øget for at oprette det næste fakturanummer."
+msgstr "Det forrige oprettet fakturanummer. Dette nummer vil blive trinvist øget for at oprette det næste fakturanummer."
#: ../src/app-utils/business-prefs.scm:43
msgid "Bill number format"
@@ -208,11 +209,11 @@ msgstr "Regningsnummer"
#: ../src/app-utils/business-prefs.scm:45
msgid "The format string to use for generating bill numbers. This is a printf-style format string."
-msgstr "Formatstrengen at bruge for oprettelse af regningsnumre. Dette er en formatstreng i printf-stil."
+msgstr "Formatstreng der anvendes ved oprettelse af regningsnumre. Dette er en formatstreng i printf-stil."
#: ../src/app-utils/business-prefs.scm:46
msgid "The previous bill number generated. This number will be incremented to generate the next bill number."
-msgstr "Det forrige regningsnummer oprettet. Dette nummer vil blive trinvist øget for at oprette det næste regningsnummer."
+msgstr "Det forrige oprettet regningsnummer. Dette nummer vil blive trinvist øget for at oprette det næste regningsnummer."
#: ../src/app-utils/business-prefs.scm:47
msgid "Expense voucher number format"
@@ -224,11 +225,11 @@ msgstr "Udgiftsbilagsnummer"
#: ../src/app-utils/business-prefs.scm:49
msgid "The format string to use for generating expense voucher numbers. This is a printf-style format string."
-msgstr "Formatstrengen at bruge for at oprette udgiftsbilagsnumre. Dette er en formatstreng i printf-stil."
+msgstr "Formatstreng er anvendes ved oprettelse af udgiftsbilagsnumre. Dette er en formatstreng i printf-stil."
#: ../src/app-utils/business-prefs.scm:50
msgid "The previous expense voucher number generated. This number will be incremented to generate the next voucher number."
-msgstr "Det forrige udgiftsbilagsnummer oprettet. Dette nummer vil blive trinvist øget for at oprette det næste bilagsnummer."
+msgstr "Det forrige oprettet udgiftsbilagsnummer. Dette nummer vil blive trinvist øget for at oprette det næste bilagsnummer."
#: ../src/app-utils/business-prefs.scm:51
msgid "Job number format"
@@ -241,11 +242,11 @@ msgstr "Jobnummer"
#: ../src/app-utils/business-prefs.scm:53
msgid "The format string to use for generating job numbers. This is a printf-style format string."
-msgstr "Formatstrengen at bruge for oprettelse af jobnumre. Dette er en formatstreng i printf-stil."
+msgstr "Formatstreng der anvendes ved oprettelse af jobnumre. Dette er en formatstreng i printf-stil."
#: ../src/app-utils/business-prefs.scm:54
msgid "The previous job number generated. This number will be incremented to generate the next job number."
-msgstr "Det forrige jobnummer oprettet. Dette nummer vil blive trinvist øget for at oprette det næste jobnummer."
+msgstr "Det forrige oprettet jobnummer. Dette nummer vil blive trinvist øget for at oprette det næste jobnummer."
#: ../src/app-utils/business-prefs.scm:55
msgid "Order number format"
@@ -257,11 +258,11 @@ msgstr "Ordrenummer"
#: ../src/app-utils/business-prefs.scm:57
msgid "The format string to use for generating order numbers. This is a printf-style format string."
-msgstr "Formatstregnen at bruge for at oprette ordrenumre. Dette er en formatstreng i printf-stil."
+msgstr "Formatstregn der anvendes ved oprettelse af ordrenumre. Dette er en formatstreng i printf-stil."
#: ../src/app-utils/business-prefs.scm:58
msgid "The previous order number generated. This number will be incremented to generate the next order number."
-msgstr "Det forrige ordrenummer oprettet. Dette nummer vil blive trinvist øget for at oprette det næste ordrenummer."
+msgstr "Det forrige oprettet ordrenummer. Dette nummer vil blive trinvist øget for at oprette det næste ordrenummer."
#: ../src/app-utils/business-prefs.scm:59
msgid "Vendor number format"
@@ -273,11 +274,11 @@ msgstr "Leverandørnummer"
#: ../src/app-utils/business-prefs.scm:61
msgid "The format string to use for generating vendor numbers. This is a printf-style format string."
-msgstr "Formatstrengen at bruge for oprettelse af leverandørnumre. Dette er en formatstreng i printf-stil."
+msgstr "Formatstreng er anvendes ved oprettelse af leverandørnumre. Dette er en formatstreng i printf-stil."
#: ../src/app-utils/business-prefs.scm:62
msgid "The previous vendor number generated. This number will be incremented to generate the next vendor number."
-msgstr "Det forrige leverandørnummer oprettet. Dette nummer vil blive trinvist øget for at oprette det næste leverandørnummer."
+msgstr "Det forrige oprettet leverandørnummer. Dette nummer vil blive trinvist øget for at oprette det næste leverandørnummer."
#: ../src/app-utils/business-prefs.scm:72
msgid "The name of your business."
@@ -305,12 +306,12 @@ msgstr "Din forretnings e-postadresse."
#: ../src/app-utils/business-prefs.scm:102
msgid "The URL address of your website."
-msgstr "URL-adressen på din internetside."
+msgstr "Din internetsides URL-adresse."
# ' forkert på engelsk?
#: ../src/app-utils/business-prefs.scm:107
msgid "The ID for your company (eg 'Tax-ID: 00-000000)."
-msgstr "Id'et på dit firma (f.eks. tax-id: 00-000000)."
+msgstr "Dit firmas id (f.eks. tax-id: 00-000000)."
#: ../src/app-utils/business-prefs.scm:112
msgid "Default Customer TaxTable"
@@ -338,7 +339,7 @@ msgstr "Standarddatoformatet brugt til smarte udskrevne datoer."
#: ../src/app-utils/business-prefs.scm:133
msgid "Check to have trading accounts used for transactions involving more than one currency or commodity."
-msgstr "Kontroller for at der er anvendt handelskonti for transaktioner, der involverer mere end en valuta eller vare."
+msgstr "Afkryds for at handelskonti bruges til transaktioner, der involverer mere end en valuta eller vare."
#: ../src/app-utils/business-prefs.scm:139
msgid "Choose the number of days after which transactions will be read-only and cannot be edited anymore. This threshold is marked by a red line in the account register windows. If zero, all transactions can be edited and none are read-only."
@@ -346,7 +347,7 @@ msgstr "Vælg antallet af dage hvorefter transaktioner vil være skrivebeskyttet
#: ../src/app-utils/business-prefs.scm:150
msgid "Check to have split action field used in registers for 'Num' field in place of transaction number; transaction number shown as 'T-Num' on second line of register. Has corresponding effect on business features, reporting and imports/exports."
-msgstr "Kontroller for at have del handling-feltet brugt i kassekladder for »Num«-feltet i stedet for transaktionsnummeret; transaktionsnummer vises som »T-Num« på den anden linje af kladden. Har tilsvarende effekt på forrentingsfunktioner, rapportering og import/eksport."
+msgstr "Afkryds for at have del handling-feltet brugt i kassekladder for »Num«-feltet i stedet for transaktionsnummeret; transaktionsnummer vises som »T-Num« på den anden linje af kladden. Har tilsvarende effekt på forrentingsfunktioner, rapportering og import/eksport."
#: ../src/app-utils/business-prefs.scm:158
msgid "Budget to be used when none has been otherwise specified."
@@ -424,15 +425,15 @@ msgstr "Regnskabsperiodens start"
#: ../src/app-utils/date-utilities.scm:877
msgid "First day of the accounting period, as set in the global preferences."
-msgstr "Første dag for regnskabsperioden, som angivet under globale præferencer."
+msgstr "Første dag i regnskabsperioden, som angivet under globale præferencer."
#: ../src/app-utils/date-utilities.scm:881
msgid "End of accounting period"
-msgstr "Regnskabsperiodens slutning"
+msgstr "Regnskabsperiodens afslutning"
#: ../src/app-utils/date-utilities.scm:884
msgid "Last day of the accounting period, as set in the global preferences."
-msgstr "Sidste dag for regnskabsperioden, som angivet under globale præferencer."
+msgstr "Sidste dag i regnskabsperioden, som angivet under globale præferencer."
#: ../src/app-utils/date-utilities.scm:888
#: ../src/gnome-utils/gnc-period-select.c:71
@@ -472,7 +473,7 @@ msgstr "Sidste dag i forrige måned."
#: ../src/app-utils/date-utilities.scm:916
msgid "Start of next month"
-msgstr "Start på næste måned"
+msgstr "Begyndelsen af næste måned"
#: ../src/app-utils/date-utilities.scm:919
msgid "First day of the next month."
@@ -509,7 +510,7 @@ msgstr "Start af forrige kvartal"
#: ../src/app-utils/date-utilities.scm:947
msgid "First day of the previous quarterly accounting period."
-msgstr "Første dag for den forrige kvartalsmæssige regnskabsperiode."
+msgstr "Første dag i den forrige kvartalsmæssige regnskabsperiode."
#: ../src/app-utils/date-utilities.scm:951
#: ../src/gnome-utils/gnc-period-select.c:90
@@ -518,15 +519,15 @@ msgstr "Slutningen af forrige kvartal."
#: ../src/app-utils/date-utilities.scm:954
msgid "Last day of previous quarterly accounting period."
-msgstr "Sidste dag for forrige kvartalsmæssige regnskabsperiode."
+msgstr "Sidste dag i forrige kvartalsmæssige regnskabsperiode."
#: ../src/app-utils/date-utilities.scm:958
msgid "Start of next quarter"
-msgstr "Starten af næste kvartal"
+msgstr "Begyndelsen af næste kvartal"
#: ../src/app-utils/date-utilities.scm:961
msgid "First day of the next quarterly accounting period."
-msgstr "Første dag for næste kvartalsmæssige regnskabsperiode."
+msgstr "Første dag i næste kvartalsmæssige regnskabsperiode."
#: ../src/app-utils/date-utilities.scm:965
msgid "End of next quarter"
@@ -534,7 +535,7 @@ msgstr "Slutningen af næste kvartal"
#: ../src/app-utils/date-utilities.scm:968
msgid "Last day of next quarterly accounting period."
-msgstr "Sidste dag for næste kvartalsmæssige regnskabsperiode."
+msgstr "Sidste dag i næste kvartalsmæssige regnskabsperiode."
#. CY Strings
#: ../src/app-utils/date-utilities.scm:972
@@ -2948,7 +2949,7 @@ msgstr "Smart faktura"
#: ../src/import-export/dialog-import.glade.h:1
#: ../src/import-export/qif-imp/dialog-account-picker.glade.h:1
msgid "Preferences"
-msgstr "Indstillinger"
+msgstr "Præferencer"
#: ../src/business/business-gnome/gtkbuilder/business-prefs.glade.h:6
msgid "<b>Invoices</b>"
@@ -6141,7 +6142,7 @@ msgstr "Gem ændringer til %s?"
#: ../src/gnome/gnc-plugin-page-register2.c:1617
#: ../src/gnome/gnc-plugin-page-register.c:1548
msgid "This register has pending changes to a transaction. Would you like to save the changes to this transaction, discard the transaction, or cancel the operation?"
-msgstr "Denne kassekladde har igangværende ændringer til en transaktion. Vil du gemme ændringerne til denne transaktion, fjerne transaktionen eller afbryde operationen?"
+msgstr "Denne kassekladde har igangværende ændringer til en transaktion. Vil du gemme ændringerne til denne transaktion, fjerne transaktionen eller afbryde handlingen?"
#: ../src/gnome/gnc-plugin-page-register2.c:1620
#: ../src/gnome/gnc-plugin-page-register.c:1551
@@ -6557,7 +6558,7 @@ msgstr ""
#: ../src/gnome/gschemas/org.gnucash.dialogs.checkprinting.gschema.xml.in.in.h:5
msgid "Number of checks to print on the first page."
-msgstr "Antallet af check at udskrive på den første side."
+msgstr "Antallet af check der udskrives på den første side."
#: ../src/gnome/gschemas/org.gnucash.dialogs.checkprinting.gschema.xml.in.in.h:6
msgid "Date format to use"
commit 79139c88691ff0c275c7f478fae145bb3f6ee827
Author: Geert Janssens <janssens-geert at telenet.be>
Date: Sat May 16 10:44:59 2015 +0200
Fix hidden panes in lot viewer
diff --git a/src/gnome/gtkbuilder/dialog-lot-viewer.glade b/src/gnome/gtkbuilder/dialog-lot-viewer.glade
index 739391e..bac27a6 100644
--- a/src/gnome/gtkbuilder/dialog-lot-viewer.glade
+++ b/src/gnome/gtkbuilder/dialog-lot-viewer.glade
@@ -172,7 +172,7 @@
</object>
<packing>
<property name="resize">True</property>
- <property name="shrink">True</property>
+ <property name="shrink">False</property>
</packing>
</child>
<child>
@@ -340,7 +340,7 @@
</object>
<packing>
<property name="resize">True</property>
- <property name="shrink">True</property>
+ <property name="shrink">False</property>
</packing>
</child>
</object>
commit 5a4a8ac5d6e038e8ce87a398e43b43998194e667
Author: Geert Janssens <janssens-geert at telenet.be>
Date: Fri May 8 21:43:40 2015 +0200
Bug 746873 - Gnucash asks sql passwords before wallet password
Work around a bug in libsecret. Under certain conditions
libsecret will silently fail to find a password even though
it is stored. The workaround uses another interface call
to force unlocking the secret store which works around the bug.
This workaround should be removed once a fix for
https://bugzilla.gnome.org/show_bug.cgi?id=748625
will be commonly available.
diff --git a/src/gnome-utils/gnc-keyring.c b/src/gnome-utils/gnc-keyring.c
index d6eaa23..5c91e06 100644
--- a/src/gnome-utils/gnc-keyring.c
+++ b/src/gnome-utils/gnc-keyring.c
@@ -180,6 +180,24 @@ gboolean gnc_keyring_get_password ( GtkWidget *parent,
*password = NULL;
#ifdef HAVE_LIBSECRET
+ /* Workaround for https://bugzilla.gnome.org/show_bug.cgi?id=746873
+ * and by extension for https://bugzilla.gnome.org/show_bug.cgi?id=748625
+ * Store a dummy password and delete it again. This forces libsecret
+ * to open the keychain, where only a call to secret_password_lookup_sync
+ * sometimes fails to do so. More details can be found in the bug reports
+ * referenced above. */
+ secret_password_store_sync (SECRET_SCHEMA_GNUCASH, SECRET_COLLECTION_DEFAULT,
+ "Dummy password", "dummy", NULL, &error,
+ "protocol", "gnucash",
+ "server", "gnucash",
+ "user", "gnucash",
+ NULL);
+ secret_password_clear_sync (SECRET_SCHEMA_GNUCASH, NULL, &error,
+ "protocol", "gnucash",
+ "server", "gnucash",
+ "user", "gnucash",
+ NULL);
+
/* Note: only use the port attribute if it was set by the user. */
if (port == 0)
libsecret_password = secret_password_lookup_sync (SECRET_SCHEMA_GNUCASH, NULL, &error,
commit f604348d9b1bc9bb715157c4f7c621358e6daf54
Author: Geert Janssens <janssens-geert at telenet.be>
Date: Tue Apr 28 10:38:37 2015 +0200
Bug 746873 - Gnucash asks sql passwords before wallet password
If libsecret is available use it to search for both
libsecret based passwords as gnome-keyring based ones.
This catches the situation where a password was stored
earlier using gnome-keyring, while the user is now trying
to retrieve it on a system that only has libsecret available.
This used to fail because gnucash depended on gnome-keyring
to be present in that situation.
diff --git a/src/gnome-utils/gnc-keyring.c b/src/gnome-utils/gnc-keyring.c
index 9a1e16f..d6eaa23 100644
--- a/src/gnome-utils/gnc-keyring.c
+++ b/src/gnome-utils/gnc-keyring.c
@@ -28,8 +28,7 @@
#include "gnc-keyring.h"
#ifdef HAVE_LIBSECRET
#include <libsecret/secret.h>
-#endif
-#if HAVE_GNOME_KEYRING
+#elif HAVE_GNOME_KEYRING
#define GNOME_KEYRING_DEPRECATED
#define GNOME_KEYRING_DEPRECATED_FOR(x)
#include <gnome-keyring.h>
@@ -77,13 +76,21 @@ void gnc_keyring_set_password (const gchar *access_method,
label = g_strdup_printf("GnuCash password for %s://%s@%s", access_method, user, server);
- secret_password_store_sync (SECRET_SCHEMA_GNUCASH, SECRET_COLLECTION_DEFAULT,
- label, password, NULL, &error,
- "protocol", access_method,
- "server", server,
- "port", port,
- "user", user,
- NULL);
+ if (port == 0)
+ secret_password_store_sync (SECRET_SCHEMA_GNUCASH, SECRET_COLLECTION_DEFAULT,
+ label, password, NULL, &error,
+ "protocol", access_method,
+ "server", server,
+ "user", user,
+ NULL);
+ else
+ secret_password_store_sync (SECRET_SCHEMA_GNUCASH, SECRET_COLLECTION_DEFAULT,
+ label, password, NULL, &error,
+ "protocol", access_method,
+ "server", server,
+ "port", port,
+ "user", user,
+ NULL);
g_free(label);
@@ -117,7 +124,7 @@ void gnc_keyring_set_password (const gchar *access_method,
* distinguish between these two.
*/
// FIXME I'm not sure this works if a password was already in the keychain
- // I may have to do a lookup first and if it exists, run some update
+ // I may have to do a lookup first and if it exists, run some
// update function instead
status = SecKeychainAddInternetPassword ( NULL, /* keychain */
strlen(server), server, /* servername */
@@ -152,11 +159,11 @@ gboolean gnc_keyring_get_password ( GtkWidget *parent,
gchar **password)
{
gboolean password_found = FALSE;
+ gchar *db_path, *heading;
#ifdef HAVE_LIBSECRET
GError* error = NULL;
char* libsecret_password;
-#endif
-#if HAVE_GNOME_KEYRING
+#elif HAVE_GNOME_KEYRING
GnomeKeyringResult gkr_result;
GList *found_list = NULL;
GnomeKeyringNetworkPasswordData *found;
@@ -173,55 +180,101 @@ gboolean gnc_keyring_get_password ( GtkWidget *parent,
*password = NULL;
#ifdef HAVE_LIBSECRET
+ /* Note: only use the port attribute if it was set by the user. */
+ if (port == 0)
+ libsecret_password = secret_password_lookup_sync (SECRET_SCHEMA_GNUCASH, NULL, &error,
+ "protocol", access_method,
+ "server", server,
+ "user", *user,
+ NULL);
+ else
+ libsecret_password = secret_password_lookup_sync (SECRET_SCHEMA_GNUCASH, NULL, &error,
+ "protocol", access_method,
+ "server", server,
+ "port", port,
+ "user", *user,
+ NULL);
+
+ if (libsecret_password != NULL) {
+ *password = g_strdup (libsecret_password);
+ secret_password_free (libsecret_password);
+ return TRUE;
+ }
+
+ /* No password found yet. Perhaps it was written with a port equal to 0.
+ * Gnucash versions prior to 2.6.7 did this unfortunately... */
libsecret_password = secret_password_lookup_sync (SECRET_SCHEMA_GNUCASH, NULL, &error,
"protocol", access_method,
"server", server,
- "port", port,
+ "port", 0,
"user", *user,
NULL);
- if (libsecret_password == NULL) {
- if (error != NULL) {
- PWARN ("libsecret access failed: %s.", error->message);
- g_error_free(error);
- }
- } else {
- password_found = TRUE;
+ if (libsecret_password != NULL) {
*password = g_strdup (libsecret_password);
secret_password_free (libsecret_password);
+
+ /* Ok, got an password with 0 port.
+ Store a copy in a more recent gnucash style. */
+ gnc_keyring_set_password(access_method, server, port, service, *user, *password);
+ return TRUE;
}
-#endif /* HAVE_LIBSECRET */
-#if HAVE_GNOME_KEYRING
- if (password_found == FALSE) {
- gkr_result = gnome_keyring_find_network_password_sync
- ( *user, NULL, server, service,
- access_method, NULL, port, &found_list );
+ /* No password was found while querying libsecret using the gnucash schema,
+ Look for a password stored via gnome-keyring instead */
+ if (port == 0)
+ libsecret_password = secret_password_lookup_sync (SECRET_SCHEMA_COMPAT_NETWORK, NULL, &error,
+ "protocol", access_method,
+ "server", server,
+ "object", service,
+ "user", *user,
+ NULL);
+ else
+ libsecret_password = secret_password_lookup_sync (SECRET_SCHEMA_COMPAT_NETWORK, NULL, &error,
+ "protocol", access_method,
+ "server", server,
+ "port", port,
+ "object", service,
+ "user", *user,
+ NULL);
- if (gkr_result == GNOME_KEYRING_RESULT_OK)
- {
- found = (GnomeKeyringNetworkPasswordData *) found_list->data;
- if (found->password)
- *password = g_strdup(found->password);
- password_found = TRUE;
- }
- else
- PWARN ("Gnome-keyring access failed: %s.",
- gnome_keyring_result_to_message(gkr_result));
+ if (libsecret_password != NULL) {
+ *password = g_strdup (libsecret_password);
+ secret_password_free (libsecret_password);
- gnome_keyring_network_password_list_free(found_list);
+ /* Ok, got an old gnome-keyring password.
+ * Store a copy of it in a libsecret compatible format. */
+ gnc_keyring_set_password(access_method, server, port, service, *user, *password);
+ return TRUE;
}
-#endif /* HAVE_GNOME_KEYRING */
-#if defined(HAVE_LIBSECRET) && defined(HAVE_GNOME_KEYRING)
- /* If we were not able to retrieve the password with libsecret and the new
- * schema and libgnome-keyring was successful to retrieve the password using
- * the old schema, we immediatly store it in the new schema.
- */
- if (libsecret_password == NULL && password_found == TRUE) {
- gnc_keyring_set_password(access_method, server, port, service, *user, *password);
+ /* Something went wrong while attempting to access libsecret
+ * Log the error message and carry on... */
+ if (error != NULL) {
+ PWARN ("libsecret access failed: %s.", error->message);
+ g_error_free(error);
}
-#endif /* HAVE_LIBSECRET && HAVE_GNOME_KEYRING */
+
+#elif HAVE_GNOME_KEYRING
+ gkr_result = gnome_keyring_find_network_password_sync
+ ( *user, NULL, server, service,
+ access_method, NULL, port, &found_list );
+
+ if (gkr_result == GNOME_KEYRING_RESULT_OK)
+ {
+ found = (GnomeKeyringNetworkPasswordData *) found_list->data;
+ if (found->password)
+ *password = g_strdup(found->password);
+ gnome_keyring_network_password_list_free(found_list);
+ return TRUE;
+ }
+
+ /* Something went wrong while attempting to access libsecret
+ * Log the error message and carry on... */
+ PWARN ("Gnome-keyring access failed: %s.",
+ gnome_keyring_result_to_message(gkr_result));
+ gnome_keyring_network_password_list_free(found_list);
+#endif /* HAVE_LIBSECRET or HAVE_GNOME_KEYRING */
#ifdef HAVE_OSX_KEYCHAIN
/* mysql and postgres aren't valid protocols on Mac OS X.
@@ -244,8 +297,8 @@ gboolean gnc_keyring_get_password ( GtkWidget *parent,
if ( status == noErr )
{
*password = g_strndup(password_data, password_length);
- password_found = TRUE;
SecKeychainItemFreeContent(NULL, password_data);
+ return TRUE;
}
else
{
@@ -258,46 +311,42 @@ gboolean gnc_keyring_get_password ( GtkWidget *parent,
}
#endif /* HAVE_OSX_KEYCHAIN */
- if ( !password_found )
+ /* If we got here, either no proper password store is
+ * available on this system, or we couldn't retrieve
+ * a password from it. In both cases, just ask the user
+ * to enter one
+ */
+
+ if ( port == 0 )
+ db_path = g_strdup_printf ( "%s://%s/%s", access_method, server, service );
+ else
+ db_path = g_strdup_printf ( "%s://%s:%d/%s", access_method, server, port, service );
+ heading = g_strdup_printf ( /* Translators: %s is a path to a database or any other url,
+ like mysql://user@server.somewhere/somedb, http://www.somequotes.com/thequotes */
+ _("Enter a user name and password to connect to: %s"),
+ db_path );
+
+ password_found = gnc_get_username_password ( parent, heading,
+ *user, NULL,
+ user, password );
+ g_free ( db_path );
+ g_free ( heading );
+
+ if ( password_found )
{
- /* If we got here, either no proper password store is
- * available on this system, or we couldn't retrieve
- * a password from it. In both cases, just ask the user
- * to enter one
- */
- gchar *db_path, *heading;
-
- if ( port == 0 )
- db_path = g_strdup_printf ( "%s://%s/%s", access_method, server, service );
- else
- db_path = g_strdup_printf ( "%s://%s:%d/%s", access_method, server, port, service );
- heading = g_strdup_printf ( /* Translators: %s is a path to a database or any other url,
- like mysql://user@server.somewhere/somedb, http://www.somequotes.com/thequotes */
- _("Enter a user name and password to connect to: %s"),
- db_path );
-
- password_found = gnc_get_username_password ( parent, heading,
- *user, NULL,
- user, password );
- g_free ( db_path );
- g_free ( heading );
-
- if ( password_found )
- {
- /* User entered new user/password information
- * Let's try to add it to a password store.
- */
- gchar *newuser = g_strdup( *user );
- gchar *newpassword = g_strdup( *password );
- gnc_keyring_set_password ( access_method,
- server,
- port,
- service,
- newuser,
- newpassword );
- g_free ( newuser );
- g_free ( newpassword );
- }
+ /* User entered new user/password information
+ * Let's try to add it to a password store.
+ */
+ gchar *newuser = g_strdup( *user );
+ gchar *newpassword = g_strdup( *password );
+ gnc_keyring_set_password ( access_method,
+ server,
+ port,
+ service,
+ newuser,
+ newpassword );
+ g_free ( newuser );
+ g_free ( newpassword );
}
return password_found;
Summary of changes:
po/da.po | 69 +++---
src/gnome-utils/gnc-keyring.c | 239 +++++++++++++--------
.../gtkbuilder/dialog-preferences.glade | 6 +-
src/gnome/gtkbuilder/dialog-lot-viewer.glade | 4 +-
src/plugins/bi_import/dialog-bi-import.c | 5 +-
5 files changed, 197 insertions(+), 126 deletions(-)
More information about the gnucash-changes
mailing list