From 1d01c8dad13eeab68241617b0ca981a8582b8215 Mon Sep 17 00:00:00 2001 From: Bertrand Guiheneuf Date: Sun, 30 May 1999 11:40:05 +0000 Subject: remove leading and trailing spaces in recipient addresses. * camel/camel-mime-message.c (_set_recipient_list_from_string): remove leading and trailing spaces in recipient addresses. * camel/gmime-utils.c (_store_header_pair_from_gstring): remove leading and trailing spaces from header values. * camel/gstring-util.c (g_string_trim): new func: remove leading or trailng chars from a specified char set. (g_string_split): allow trimming of substrings. * tests/test1.c (main): remove gtk_main call svn path=/trunk/; revision=958 --- ChangeLog | 15 ++++++++++++++ camel/camel-folder.c | 2 +- camel/camel-mime-message.c | 2 +- camel/gmime-utils.c | 7 ++++--- camel/gstring-util.c | 49 ++++++++++++++++++++++++++++++++++++++++------ camel/gstring-util.h | 19 +++++++++++++----- tests/test1.c | 2 +- 7 files changed, 79 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index dbb9066bf6..a2f338eda1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +1999-05-30 bertrand + + * camel/camel-mime-message.c (_set_recipient_list_from_string): + remove leading and trailing spaces in recipient addresses. + + * camel/gmime-utils.c (_store_header_pair_from_gstring): + remove leading and trailing spaces from header values. + + * camel/gstring-util.c (g_string_trim): new + func: remove leading or trailng chars from + a specified char set. + (g_string_split): allow trimming of substrings. + + * tests/test1.c (main): remove gtk_main call + 1999-05-28 bertrand * camel/camel-mime-part.c diff --git a/camel/camel-folder.c b/camel/camel-folder.c index 26b051c4d7..d7b54075be 100644 --- a/camel/camel-folder.c +++ b/camel/camel-folder.c @@ -367,7 +367,7 @@ _create(CamelFolder *folder) if (folder->parent_folder) camel_folder_create(folder->parent_folder); else { if (folder->full_name) { - dich_result = g_string_dichotomy(folder->full_name, sep, &prefix, NULL, STRIP_TRAILING | RIGHT_DIR); + dich_result = g_string_dichotomy(folder->full_name, sep, &prefix, NULL, DICHOTOMY_STRIP_TRAILING | DICHOTOMY_RIGHT_DIR); if (dich_result!='o') { g_warning("I have to handle the case where the path is not OK\n"); return FALSE; diff --git a/camel/camel-mime-message.c b/camel/camel-mime-message.c index 2a4a9e8897..b0768d1aa7 100644 --- a/camel/camel-mime-message.c +++ b/camel/camel-mime-message.c @@ -558,7 +558,7 @@ _set_recipient_list_from_string (CamelMimeMessage *message, GString *recipient_t { GList *recipients_list; CAMEL_LOG (FULL_DEBUG,"CamelMimeMessage::_set_recipient_list_from_string parsing ##%s##\n", recipients_string->str); - recipients_list = g_string_split (recipients_string, ','); + recipients_list = g_string_split (recipients_string, ',', " ", TRIM_STRIP_TRAILING | TRIM_STRIP_LEADING); g_hash_table_insert (message->recipients, recipient_type, recipients_list); } diff --git a/camel/gmime-utils.c b/camel/gmime-utils.c index 9f489a257a..92d04d5bf8 100644 --- a/camel/gmime-utils.c +++ b/camel/gmime-utils.c @@ -99,14 +99,16 @@ _store_header_pair_from_gstring (GHashTable *header_table, GString *header_line) g_assert (header_table); if ( (header_line) && (header_line->str) ) { - dich_result = g_string_dichotomy(header_line, ':', &header_name, &header_value, NONE); + dich_result = g_string_dichotomy(header_line, ':', &header_name, &header_value, DICHOTOMY_NONE); if (dich_result != 'o') camel_log(WARNING, "store_header_pair_from_gstring : dichotomy result is %c" "header line is :\n--\n%s\n--\n"); - else + else { + g_string_trim (header_value, " \t", TRIM_STRIP_LEADING | TRIM_STRIP_TRAILING); g_hash_table_insert (header_table, header_name, header_value); + } } } @@ -159,7 +161,6 @@ get_header_table_from_file (FILE *file) if (!end_of_header_line) next_char = fgetc (file); } while ( !end_of_header_line ); - if ( strlen(header_line->str) ) _store_header_pair_from_gstring (header_table, header_line); g_string_free (header_line, FALSE); diff --git a/camel/gstring-util.c b/camel/gstring-util.c index 32ecb9b031..b8a92ce10f 100644 --- a/camel/gstring-util.c +++ b/camel/gstring-util.c @@ -103,10 +103,10 @@ g_string_dichotomy (GString *string, gchar sep, GString **prefix, GString **suff } first = 0; - if ( (options & STRIP_LEADING ) && (tmp[first] == sep) ) + if ( (options & DICHOTOMY_STRIP_LEADING ) && (tmp[first] == sep) ) do {first++;} while ( (firststr)) return; + str = string->str; + length = strlen (str); + if (!length) return; + + first_ok = 0; + last_ok = length - 1; + + CAMEL_LOG (FULL_DEBUG,"g_string_trim:: trim_options:%d\n", options); + if (options & TRIM_STRIP_LEADING) + while ( (first_ok <= last_ok) && (strchr (chars, str[first_ok]) != NULL) ) + first_ok++; + + if (options & TRIM_STRIP_TRAILING) + while ( (first_ok <= last_ok) && (strchr (chars, str[last_ok])) ) + last_ok++; + CAMEL_LOG (FULL_DEBUG,"g_string_trim::\n\t\"%s\":first ok:%d last_ok:%d\n", string->str, first_ok, last_ok); + if (first_ok>0) g_string_erase (string, 0, first_ok); + if (last_ok typedef enum { - NONE = 0, - RIGHT_DIR = 1, - STRIP_TRAILING = 2, - STRIP_LEADING = 4, + DICHOTOMY_NONE = 0, + DICHOTOMY_RIGHT_DIR = 1, + DICHOTOMY_STRIP_TRAILING = 2, + DICHOTOMY_STRIP_LEADING = 4, } DichotomyOption; +typedef enum { + TRIM_NONE = 0, + TRIM_STRIP_TRAILING = 1, + TRIM_STRIP_LEADING = 2, + +} TrimOption; + gboolean g_string_equals(GString *string1, GString *string2); GString *g_string_clone(GString *string); @@ -52,7 +59,9 @@ gboolean g_string_equal_for_hash (gconstpointer v, gconstpointer v2); gboolean g_string_equal_for_glist (gconstpointer v, gconstpointer v2); guint g_string_hash (gconstpointer v); void g_string_list_free (GList *string_list); -GList *g_string_split (GString *string, char sep); + +GList *g_string_split (GString *string, char sep, gchar *trim_chars, TrimOption trim_options); +void g_string_trim (GString *string, gchar *chars, TrimOption options); #ifdef __cplusplus } diff --git a/tests/test1.c b/tests/test1.c index 013f9e72bf..28a65ae5c5 100644 --- a/tests/test1.c +++ b/tests/test1.c @@ -37,5 +37,5 @@ main (int argc, char**argv) - gtk_main(); + } -- cgit v1.2.3