[Gnucash-changes] fix bug #170444.

Derek Atkins warlord at cvs.gnucash.org
Mon Aug 29 15:40:44 EDT 2005


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

	* src/engine/date.[ch]: fix for bug #170444 -- pass a better
	  tm value to strftime.

Tags:
----
gnucash-1-8-branch

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

Revision Data
-------------
Index: ChangeLog
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/ChangeLog,v
retrieving revision 1.1461.2.418
retrieving revision 1.1461.2.419
diff -LChangeLog -LChangeLog -u -r1.1461.2.418 -r1.1461.2.419
--- ChangeLog
+++ ChangeLog
@@ -1,3 +1,8 @@
+2005-08-29  Derek Atkins  <derek at ihtfp.com>
+
+	* src/engine/date.[ch]: fix for bug #170444 -- pass a better
+	  tm value to strftime.
+
 2005-08-16  Christian Stimming  <stimming at tuhh.de>
 
 	* src/import-export/hbci/hbci-interaction.c (inputBoxCB): Aaarg,
Index: date.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/Attic/date.c,v
retrieving revision 1.59.2.3
retrieving revision 1.59.2.4
diff -Lsrc/engine/date.c -Lsrc/engine/date.c -u -r1.59.2.3 -r1.59.2.4
--- src/engine/date.c
+++ src/engine/date.c
@@ -361,12 +361,11 @@
     case DATE_FORMAT_CE:
       sprintf (buff, "%2d.%2d.%-4d", day, month, year);
       break;
-    case DATE_FORMAT_ISO:
-      sprintf (buff, "%04d-%02d-%02d", year, month, day);
-      break;
     case DATE_FORMAT_LOCALE:
       {
         struct tm tm_str;
+	time_t t;
+	int n;
 
         tm_str.tm_mday = day;
         tm_str.tm_mon = month - 1;    /* tm_mon = 0 through 11 */
@@ -374,10 +373,16 @@
                                        * says, it's not a Y2K thing */
 
 	gnc_tm_set_day_start (&tm_str);
-        strftime (buff, MAX_DATE_LENGTH, GNC_D_FMT, &tm_str);
+	t = mktime (&tm_str);
+	localtime_r (&t, &tm_str);
+        n = strftime (buff, MAX_DATE_LENGTH, GNC_D_FMT, &tm_str);
+	if (n != 0)
+	  break;
       }
+      /* FALLTHROUGH */
+    case DATE_FORMAT_ISO:
+      sprintf (buff, "%04d-%02d-%02d", year, month, day);
       break;
-
     case DATE_FORMAT_US:
     default:
       sprintf (buff, "%2d/%2d/%-4d", month, day, year);
Index: date.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/Attic/date.h,v
retrieving revision 1.43.2.1
retrieving revision 1.43.2.2
diff -Lsrc/engine/date.h -Lsrc/engine/date.h -u -r1.43.2.1 -r1.43.2.2
--- src/engine/date.h
+++ src/engine/date.h
@@ -58,7 +58,7 @@
 #define DATE_FORMAT_LAST  DATE_FORMAT_LOCALE
 
 /** The maximum length of a string created by the date printers */
-#define MAX_DATE_LENGTH 11
+#define MAX_DATE_LENGTH 31
 
 
 /** Datatypes *******************************************************/


More information about the gnucash-changes mailing list