From ef4116efc233878b0226d132a857e122ac7ec7b7 Mon Sep 17 00:00:00 2001 From: "Dirk-Jan C. Binnema" Date: Wed, 3 Nov 2010 07:43:46 +0200 Subject: [PATCH] * make mu_msg_str_date[_s] take an strftime-like argument for the format; update callers --- mug/mug-msg-list-view.c | 4 ++-- src/mu-cmd-view.c | 2 +- src/mu-msg-str.c | 12 +++++++----- src/mu-msg-str.h | 12 +++++++----- src/mu-output-plain.c | 4 ++-- src/tests/test-mu-msg-str.c | 6 +++--- 6 files changed, 22 insertions(+), 18 deletions(-) diff --git a/mug/mug-msg-list-view.c b/mug/mug-msg-list-view.c index 291c32de..5754de33 100644 --- a/mug/mug-msg-list-view.c +++ b/mug/mug-msg-list-view.c @@ -210,7 +210,7 @@ mug_msg_list_view_move_first (MugMsgListView *self) { GtkTreePath *path; - g_return_val_if_fail (MUG_IS_MSG_LIST_VIEW(self), FALSE); + g_return_if_fail (MUG_IS_MSG_LIST_VIEW(self)); path = gtk_tree_path_new_first (); gtk_tree_view_set_cursor (GTK_TREE_VIEW(self), path, @@ -303,7 +303,7 @@ update_model (GtkListStore *store, const char *xpath, const char *query) GtkTreeIter treeiter; const gchar *date, *from, *subject, *path, *to; - date = mu_msg_str_date_s (mu_msg_iter_get_date (iter)); + date = mu_msg_str_date_s ("%x", mu_msg_iter_get_date (iter)); from = mu_msg_iter_get_from(iter); to = mu_msg_iter_get_to (iter); subject = mu_msg_iter_get_subject (iter); diff --git a/src/mu-cmd-view.c b/src/mu-cmd-view.c index c389ab3f..196828e1 100644 --- a/src/mu-cmd-view.c +++ b/src/mu-cmd-view.c @@ -57,7 +57,7 @@ view_file (const gchar *path, const gchar *fields, size_t summary_len) g_print ("Subject: %s\n", field); if ((date = mu_msg_get_date (msg))) - g_print ("Date: %s\n", mu_msg_str_date_s (date)); + g_print ("Date: %s\n", mu_msg_str_date_s ("%c", date)); if (summary_len > 0) { field = mu_msg_get_summary (msg, summary_len); diff --git a/src/mu-msg-str.c b/src/mu-msg-str.c index ca555c62..f5a05d26 100644 --- a/src/mu-msg-str.c +++ b/src/mu-msg-str.c @@ -50,22 +50,24 @@ mu_msg_str_normalize (const char *str, gboolean downcase) const char* -mu_msg_str_date_s (time_t t) +mu_msg_str_date_s (const char* frm, time_t t) { struct tm *tmbuf; - static char buf[64]; + static char buf[128]; + g_return_val_if_fail (frm, NULL); + tmbuf = localtime(&t); - strftime (buf, sizeof(buf), "%x", tmbuf); + strftime (buf, sizeof(buf), frm, tmbuf); return buf; } char* -mu_msg_str_date (time_t t) +mu_msg_str_date (const char* frm, time_t t) { - return g_strdup (mu_msg_str_date_s(t)); + return g_strdup (mu_msg_str_date_s(frm, t)); } diff --git a/src/mu-msg-str.h b/src/mu-msg-str.h index ddd793bd..fe2d41ad 100644 --- a/src/mu-msg-str.h +++ b/src/mu-msg-str.h @@ -31,19 +31,21 @@ G_BEGIN_DECLS /** * get a display string for a given time_t; * use the preferred date/time for the current locale - * (ie., '%c' in strftime). * * mu_msg_str_date_s returns a ptr to a static buffer, * while mu_msg_str_date returns dynamically allocated * memory that must be freed after use. * + * @param frm the format of the string (in strftime(3) format) * @param t the time as time_t * - * @return a string representation of the time; see above - * for what to do with it + * @return a string representation of the time; see above for what to + * do with it. Lenght is max. 128 bytes, inc. the ending \0. if the + * format is too long, the value will be truncated. in practice this + * should not happen. */ -const char* mu_msg_str_date_s (time_t t) G_GNUC_CONST; -char* mu_msg_str_date (time_t t) G_GNUC_WARN_UNUSED_RESULT; +const char* mu_msg_str_date_s (const char* frm, time_t t) G_GNUC_CONST; +char* mu_msg_str_date (const char* frm, time_t t) G_GNUC_WARN_UNUSED_RESULT; /** diff --git a/src/mu-output-plain.c b/src/mu-output-plain.c index 5d792120..258d806c 100644 --- a/src/mu-output-plain.c +++ b/src/mu-output-plain.c @@ -64,11 +64,11 @@ display_field (MuMsgIter *iter, const MuMsgField* field) case MU_MSG_FIELD_TYPE_TIME_T: val = mu_msg_iter_get_field_numeric (iter, field); - return mu_msg_str_date_s ((time_t)val); + return mu_msg_str_date_s ("%c", (time_t)val); case MU_MSG_FIELD_TYPE_BYTESIZE: val = mu_msg_iter_get_field_numeric (iter, field); - return mu_msg_str_size_s ((time_t)val); + return mu_msg_str_size_s ((unsigned)val); default: g_return_val_if_reached (NULL); } diff --git a/src/tests/test-mu-msg-str.c b/src/tests/test-mu-msg-str.c index 21184ee0..acfa2016 100644 --- a/src/tests/test-mu-msg-str.c +++ b/src/tests/test-mu-msg-str.c @@ -44,13 +44,13 @@ test_mu_msg_str_date_01 (void) strftime (buf, 64, "%x", tmbuf); /* $ date -ud@1234567890; Fri Feb 13 23:31:30 UTC 2009 */ - g_assert_cmpstr (mu_msg_str_date_s (some_time), ==, buf); + g_assert_cmpstr (mu_msg_str_date_s ("%x", some_time), ==, buf); /* date -ud@987654321 Thu Apr 19 04:25:21 UTC 2001 */ some_time = 987654321; tmbuf = localtime (&some_time); - strftime (buf, 64, "%x", tmbuf); - tmp = mu_msg_str_date (some_time); + strftime (buf, 64, "%c", tmbuf); + tmp = mu_msg_str_date ("%c", some_time); g_assert_cmpstr (tmp, ==, buf); g_free (tmp);