[Gnucash-changes] r13497 - gnucash/trunk - Use utf8 collation
routines when sorting splits in a register. Also,
David Hampton
hampton at cvs.gnucash.org
Sun Mar 5 16:14:20 EST 2006
Author: hampton
Date: 2006-03-05 16:14:19 -0500 (Sun, 05 Mar 2006)
New Revision: 13497
Trac: http://svn.gnucash.org/trac/changeset/13497
Modified:
gnucash/trunk/ChangeLog
gnucash/trunk/src/engine/Split.c
gnucash/trunk/src/engine/Transaction.c
Log:
Use utf8 collation routines when sorting splits in a register. Also,
only sort on the date of transactions (not date and time) since
gnucash doesn't allow times to be input. Fixes #127809.
Modified: gnucash/trunk/ChangeLog
===================================================================
--- gnucash/trunk/ChangeLog 2006-03-05 20:24:04 UTC (rev 13496)
+++ gnucash/trunk/ChangeLog 2006-03-05 21:14:19 UTC (rev 13497)
@@ -1,3 +1,11 @@
+2006-03-05 David Hampton <hampton at employees.org>
+
+ * src/engine/Transaction.c:
+ * src/engine/Split.c: Use utf8 collation routines when sorting
+ splits in a register. Also, only sort on the date of
+ transactions (not date and time) since gnucash doesn't allow times
+ to be input. Fixes #127809.
+
2006-03-05 Joshua Sled <jsled at asynchronous.org>
* packaging/gnucash-1.9.x.ebuild: Add checks for libgsf and
Modified: gnucash/trunk/src/engine/Split.c
===================================================================
--- gnucash/trunk/src/engine/Split.c 2006-03-05 20:24:04 UTC (rev 13496)
+++ gnucash/trunk/src/engine/Split.c 2006-03-05 21:14:19 UTC (rev 13497)
@@ -1108,14 +1108,18 @@
if (retval) return retval;
/* otherwise, sort on memo strings */
- da = sa->memo;
- db = sb->memo;
- SAFE_STRCMP (da, db);
+ da = sa->memo ? sa->memo : "";
+ db = sb->memo ? sb->memo : "";
+ retval = g_utf8_collate (da, db);
+ if (retval)
+ return retval;
/* otherwise, sort on action strings */
- da = sa->action;
- db = sb->action;
- SAFE_STRCMP (da, db);
+ da = sa->action ? sa->action : "";
+ db = sb->action ? sb->action : "";
+ retval = g_utf8_collate (da, db);
+ if (retval != 0)
+ return retval;
/* the reconciled flag ... */
if (sa->reconciled < sb->reconciled) return -1;
@@ -1242,7 +1246,7 @@
ab = sb->acc;
full_a = xaccAccountGetFullName(aa);
full_b = xaccAccountGetFullName(ab);
- retval = safe_strcmp(full_a, full_b);
+ retval = g_utf8_collate(full_a, full_b);
g_free(full_a);
g_free(full_b);
return retval;
Modified: gnucash/trunk/src/engine/Transaction.c
===================================================================
--- gnucash/trunk/src/engine/Transaction.c 2006-03-05 20:24:04 UTC (rev 13496)
+++ gnucash/trunk/src/engine/Transaction.c 2006-03-05 21:14:19 UTC (rev 13497)
@@ -1203,18 +1203,25 @@
return trans ? trans->version : 0;
}
+#define SECS_PER_DAY 86400
+
int
xaccTransOrder (const Transaction *ta, const Transaction *tb)
{
char *da, *db;
- int na, nb;
+ int na, nb, retval;
if ( ta && !tb ) return -1;
if ( !ta && tb ) return +1;
if ( !ta && !tb ) return 0;
- /* if dates differ, return */
- DATE_CMP(ta,tb,date_posted);
+ /* Only sort on the date, since time info isn't displayed */
+ na = ta->date_posted.tv_sec / SECS_PER_DAY;
+ nb = tb->date_posted.tv_sec / SECS_PER_DAY;
+ if (na < nb)
+ return -1;
+ if (na > nb)
+ return 1;
/* otherwise, sort on number string */
na = atoi(ta->num);
@@ -1222,13 +1229,17 @@
if (na < nb) return -1;
if (na > nb) return +1;
+#ifdef ANYONE_CARES_ABOUT_SORT_ON_DATE_ENTERED
/* if dates differ, return */
DATE_CMP(ta,tb,date_entered);
+#endif
/* otherwise, sort on description string */
- da = ta->description;
- db = tb->description;
- SAFE_STRCMP (da, db);
+ da = ta->description ? ta->description : "";
+ db = tb->description ? tb->description : "";
+ retval = g_utf8_collate (da, db);
+ if (retval)
+ return retval;
/* else, sort on guid - keeps sort stable. */
return guid_compare(&(ta->inst.entity.guid), &(tb->inst.entity.guid));
More information about the gnucash-changes
mailing list