+size_t modest_text_utils_strftime(char *s, size_t max, const char *fmt, time_t timet);
+
+
+
+/**
+ * modest_text_utils_get_display_address:
+ * @address: original address (UTF8 string)
+ *
+ * make a 'display address' from an address:
+ * "Foo Bar <foo@bar.cx> (Bla)" --> "Foo Bar"
+ * ie. removes "<...>" and "(...)" parts
+ * the change is in-place; removes leading/trailing whitespace
+ *
+ * Returns: the new address of the string; this new string
+ * is _NOT_ newly allocated, so should not be freed. (remember
+ * the old address of the parameter if that one needs to be freed)
+ *
+ * NULL in case of error or if address == NULL
+ */
+gchar* modest_text_utils_get_display_address (gchar *address);
+
+/**
+ * modest_text_utils_get_email_address:
+ * @full_address: original address (UTF8 string)
+ *
+ * make a 'foo@bar.cx' from an address:
+ * "Foo Bar <foo@bar.cx> (Bla)" --> "foo@bar.cx"
+ * If no "<...>" is found, then it returns the full
+ * strings.
+ *
+ * Returns: a newly allocated string with the copy.
+ *
+ * NULL in case of error or if address == NULL
+ */
+gchar* modest_text_utils_get_email_address (const gchar *email_address);
+
+
+/**
+ * modest_text_utils_get_subject_prefix_len:
+ * @subject: original subject (UTF8 string)
+ *
+ * determine the length of the "Re:/RE:/Fwd:" prefix in an e-mail address
+ *
+ * Returns: the length of the prefix, or 0 if there is none
+ */
+gint modest_text_utils_get_subject_prefix_len (const gchar *subject);
+
+
+/**
+ * modest_text_utils_utf8_strcmp:
+ * @s1: the first string
+ * @s2: the second string
+ * @insensitive: should the comparison be case-insensitive?
+ *
+ * a strcmp that is NULL-safe, can deal with UTF8 and case-insensitive comparison
+ *
+ * Returns: an integer less than, equal to, or greater than zero if s1 is found,
+ * respectively, to be less than, to match, or be greater than s2.
+ */
+gint modest_text_utils_utf8_strcmp (const gchar* s1, const gchar *s2, gboolean insensitive);
+
+
+
+/**
+ * modest_text_utils_get_display_date:
+ * @date: the date to display
+ *
+ * get a string representation for a date.
+ *
+ * Returns: the new display date, as a newly allocated string;
+ * free with g_free
+ */
+gchar* modest_text_utils_get_display_date (time_t date);
+
+
+/**
+ * modest_text_utils_get_display_size:
+ * @size: size in bytes
+ *
+ * get a string representation for a size in bytes.
+ *
+ * Returns: the newly allocated display string for the
+ * size in bytes. must be freed.
+ */
+gchar * modest_text_utils_get_display_size (guint64 size);
+
+
+
+/**
+ * modest_text_utils_validate_domain_name:
+ * @email_address: a NULL-terminated string
+ *
+ * validates the domain name passed as argument
+ *
+ * Returns: TRUE if the domain name is valid, FALSE otherwise
+ **/
+gboolean modest_text_utils_validate_domain_name (const gchar *domain);
+
+/**
+ * modest_text_utils_validate_email_address:
+ * @email_address: a string
+ * @invalid_char_position: pointer to the position of the invalid
+ * character in case validation failed because of this, or %NULL.
+ *
+ * validates the email address passed as argument
+ *
+ * Returns: TRUE if the address is valid, FALSE otherwise
+ **/
+gboolean modest_text_utils_validate_email_address (const gchar *email_address,
+ const gchar **invalid_char_position);
+
+
+/**
+ * modest_text_utils_validate_folder_name:
+ * @folder_name: a string
+ *
+ * validates the folder name passed as argument. a 'valid folder name'
+ * is a name which should be valid on both Unix and Windows file systems.
+ * of course, this might be stricter than strictly needed in some cases,
+ * but it's better to err on the safe side.
+ *
+ * Returns: TRUE if the folder name is valid, FALSE otherwise
+ **/
+gboolean modest_text_utils_validate_folder_name (const gchar *folder_name);