[Gnucash-changes] Fix bug #170444.

Derek Atkins warlord at cvs.gnucash.org
Mon Aug 29 15:41:30 EDT 2005


Log Message:
-----------
Fix bug #170444.

	* src/engine/gnc-date.c: fix bug #170444 by making sure we
	  pass a full tm to strftime()

Tags:
----
gnucash-gnome2-dev

Modified Files:
--------------
    gnucash:
        ChangeLog
    gnucash/src/engine:
        gnc-date.c

Revision Data
-------------
Index: ChangeLog
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/ChangeLog,v
retrieving revision 1.1487.2.275
retrieving revision 1.1487.2.276
diff -LChangeLog -LChangeLog -u -r1.1487.2.275 -r1.1487.2.276
--- ChangeLog
+++ ChangeLog
@@ -1,3 +1,8 @@
+2005-08-29  Derek Atkins  <derek at ihtfp.com>
+
+	* src/engine/gnc-date.c: fix bug #170444 by making sure we
+	  pass a full tm to strftime()
+
 2005-08-28  Christian Stimming  <stimming at tuhh.de>
 
 	* macros/autogen.sh: Make build system up to date: Remove
Index: gnc-date.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/gnc-date.c,v
retrieving revision 1.6.2.5
retrieving revision 1.6.2.6
diff -Lsrc/engine/gnc-date.c -Lsrc/engine/gnc-date.c -u -r1.6.2.5 -r1.6.2.6
--- src/engine/gnc-date.c
+++ src/engine/gnc-date.c
@@ -463,10 +463,10 @@
     case QOF_DATE_FORMAT_CE:
       flen = g_snprintf (buff, len, "%2d.%2d.%-4d", day, month, year);
       break;
-    case QOF_DATE_FORMAT_ISO:
-      flen = g_snprintf (buff, len, "%04d-%02d-%02d", year, month, day);
-      break;
+ /*
     case QOF_DATE_FORMAT_UTC:
+    // Is there any reason to go through strftime() here when we're using
+    // the same format as with ISO?  The output is the same either way.
 	{
 		struct tm tm_str;
 
@@ -477,9 +477,11 @@
 		flen = strftime(buff, MAX_DATE_LENGTH, "%Y-%m-%d", &tm_str);
 		break;
 	}
+ */
     case QOF_DATE_FORMAT_LOCALE:
       {
         struct tm tm_str;
+	time_t t;
 
         tm_str.tm_mday = day;
         tm_str.tm_mon = month - 1;    /* tm_mon = 0 through 11 */
@@ -487,10 +489,17 @@
                                        * says, it's not a Y2K thing */
 
         gnc_tm_set_day_start (&tm_str);
+	t = mktime (&tm_str);
+	localtime_r (&t, &tm_str);
         flen = strftime (buff, len, GNC_D_FMT, &tm_str);
+	if (flen != 0)
+	  break;
       }
+      /* FALLTHROUGH */
+    case QOF_DATE_FORMAT_ISO:
+    case QOF_DATE_FORMAT_UTC:
+      flen = g_snprintf (buff, len, "%04d-%02d-%02d", year, month, day);
       break;
-
     case QOF_DATE_FORMAT_US:
     default:
       flen = g_snprintf (buff, len, "%2d/%2d/%-4d", month, day, year);


More information about the gnucash-changes mailing list