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