r16556 - gnucash/branches/gda-dev/src/backend/gda - When reading dates back from the db, some providers provide a string
Phil Longstaff
plongstaff at cvs.gnucash.org
Mon Oct 8 16:34:33 EDT 2007
Author: plongstaff
Date: 2007-10-08 16:34:32 -0400 (Mon, 08 Oct 2007)
New Revision: 16556
Trac: http://svn.gnucash.org/trac/changeset/16556
Modified:
gnucash/branches/gda-dev/src/backend/gda/gnc-backend-util-gda.c
Log:
When reading dates back from the db, some providers provide a string
rather than a boxed GDate.
Modified: gnucash/branches/gda-dev/src/backend/gda/gnc-backend-util-gda.c
===================================================================
--- gnucash/branches/gda-dev/src/backend/gda/gnc-backend-util-gda.c 2007-10-07 22:45:28 UTC (rev 16555)
+++ gnucash/branches/gda-dev/src/backend/gda/gnc-backend-util-gda.c 2007-10-08 20:34:32 UTC (rev 16556)
@@ -520,12 +520,28 @@
if( gda_value_is_null( val ) ) {
(*setter)( pObject, NULL );
} else {
- date = (GDate*)g_value_get_boxed( val );
- if( date != NULL ) {
- ts = gnc_dmy2timespec( g_date_get_day( date ),
+ if( G_VALUE_HOLDS_STRING( val ) ) {
+ const gchar* s = g_value_get_string( val );
+ gchar* buf;
+ buf = g_strdup_printf( "%c%c%c%c-%c%c-%c%c 00:00:00",
+ s[6], s[7], s[8], s[9],
+ s[0], s[1],
+ s[3], s[4] );
+ ts = gnc_iso8601_to_timespec_gmt( buf );
+ (*setter)( pObject, &ts );
+ g_free( buf );
+
+ } else if( G_VALUE_HOLDS_BOXED( val ) ) {
+ const gchar* n = g_type_name( val->g_type );
+ date = (GDate*)g_value_get_boxed( val );
+ if( date != NULL ) {
+ ts = gnc_dmy2timespec( g_date_get_day( date ),
g_date_get_month( date ),
g_date_get_year( date ) );
- (*setter)( pObject, &ts );
+ (*setter)( pObject, &ts );
+ }
+ } else {
+ g_warning( "Unknown timespec type: %s", G_VALUE_TYPE_NAME( val ) );
}
}
}
More information about the gnucash-changes
mailing list