Double-check really every string from aqbanking for valid utf-8 characters.

BP

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@14680 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Christian Stimming 2006-08-15 20:05:43 +00:00
parent dfaec6654b
commit 267c41f2e0
3 changed files with 27 additions and 8 deletions

View File

@ -1,5 +1,9 @@
2006-08-15 Christian Stimming <stimming@tuhh.de>
* src/import-export/hbci/dialog-hbcitrans.c, druid-hbci-initial.c:
Double-check really every string from aqbanking for valid utf-8
characters.
* src/core-utils/gnc-glib-utils.[hc]: Add
gnc_utf8_strip_invalid_strdup() that returns a stripped copy
instead of working in-place.

View File

@ -45,6 +45,7 @@
#include "gtk-compat.h"
#include "dialog-utils.h"
#include "gnc-glib-utils.h"
#include "gnc-ui.h"
#include "gnc-amount-edit.h"
#include "dialog-transfer.h"
@ -246,7 +247,7 @@ gnc_hbci_dialog_new (GtkWidget *parent,
GList *templates)
{
GladeXML *xml;
const char *hbci_bankid, *hbci_bankname;
const char *hbci_bankid;
HBCITransDialog *td;
GtkTreeSelection *selection;
GtkTreeViewColumn *column;
@ -258,7 +259,6 @@ gnc_hbci_dialog_new (GtkWidget *parent,
td->trans_type = trans_type;
g_assert (h_acc);
hbci_bankid = AB_Account_GetBankCode(h_acc);
hbci_bankname = AB_Account_GetBankName(h_acc);
#if HAVE_KTOBLZCHECK_H
td->blzcheck = AccountNumberCheck_new();
#endif
@ -272,6 +272,7 @@ gnc_hbci_dialog_new (GtkWidget *parent,
GTK_WINDOW (parent));
{
gchar *hbci_bankname, *hbci_ownername;
GtkWidget *heading_label;
GtkWidget *recp_name_heading;
GtkWidget *recp_account_heading;
@ -394,9 +395,16 @@ gnc_hbci_dialog_new (GtkWidget *parent,
/* Make this button insensitive since it's still unimplemented. */
gtk_widget_destroy (exec_later_button);
/* aqbanking up to 2.3.0 did not guarantee the following strings
to be correct utf8; mentioned in bug#351371. */
hbci_bankname =
gnc_utf8_strip_invalid_strdup (AB_Account_GetBankName(h_acc));
hbci_ownername =
gnc_utf8_strip_invalid_strdup (AB_Account_GetOwnerName(h_acc));
/* Fill in the values from the objects */
gtk_label_set_text (GTK_LABEL (orig_name_label),
AB_Account_GetOwnerName (h_acc));
hbci_ownername);
gtk_label_set_text (GTK_LABEL (orig_account_label),
AB_Account_GetAccountNumber (h_acc));
gtk_label_set_text (GTK_LABEL (orig_bankname_label),
@ -405,6 +413,8 @@ gnc_hbci_dialog_new (GtkWidget *parent,
_("(unknown)")));
gtk_label_set_text (GTK_LABEL (orig_bankcode_label),
hbci_bankid);
g_free (hbci_ownername);
g_free (hbci_bankname);
/* fill list for choosing a transaction template */
gtk_tree_view_set_headers_visible(td->template_gtktreeview, FALSE);

View File

@ -37,6 +37,7 @@
#include "import-account-matcher.h"
#include "gnc-hbci-utils.h"
#include "gnc-glib-utils.h"
#include "dialog-utils.h"
#include "druid-utils.h"
#include "gnc-ui-util.h"
@ -117,21 +118,25 @@ delete_initial_druid (HBCIInitialInfo *info)
static gchar *gnc_hbci_account_longname(const AB_ACCOUNT *hacc)
{
const char *bankname;
gchar *bankname;
gchar *result;
const char *bankcode;
g_assert(hacc);
bankname = AB_Account_GetBankName (hacc);
bankname =
gnc_utf8_strip_invalid_strdup (AB_Account_GetBankName (hacc));
bankcode = AB_Account_GetBankCode (hacc);
/* Translators: Strings are 1. Account code, 2. Bank name, 3. Bank code. */
if (bankname)
return g_strdup_printf(_("%s at %s (code %s)"),
if (strlen(bankname) > 0)
result = g_strdup_printf(_("%s at %s (code %s)"),
AB_Account_GetAccountNumber (hacc),
bankname,
bankcode);
else
return g_strdup_printf(_("%s at bank code %s"),
result = g_strdup_printf(_("%s at bank code %s"),
AB_Account_GetAccountNumber (hacc),
bankcode);
g_free (bankname);
return result;
}