diff options
Diffstat (limited to 'addressbook')
-rw-r--r-- | addressbook/ChangeLog | 5 | ||||
-rw-r--r-- | addressbook/ename/e-name-western.c | 19 |
2 files changed, 18 insertions, 6 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog index d510b59338..4a73b5d248 100644 --- a/addressbook/ChangeLog +++ b/addressbook/ChangeLog @@ -1,3 +1,8 @@ +2000-05-07 Chris Toshok <toshok@helixcode.com> + + * ename/e-name-western.c (e_name_western_cleanup_string): comment + function, and fix an ABR. + 2000-05-08 Christopher James Lahey <clahey@helixcode.com> * gui/minicard/e-minicard.c: Added saving in minicard view. diff --git a/addressbook/ename/e-name-western.c b/addressbook/ename/e-name-western.c index 98e03a6682..755d7eabed 100644 --- a/addressbook/ename/e-name-western.c +++ b/addressbook/ename/e-name-western.c @@ -51,18 +51,25 @@ e_name_western_cleanup_string (char **str) if (*str == NULL) return; + /* skip any spaces and commas at the start of the string */ p = *str; while (isspace (*p) || *p == ',') p ++; + /* make the copy we're going to return */ newstr = g_strdup (p); - p = newstr + strlen (newstr) - 1; - while (isspace (*p) || *p == ',') - p --; - if ((! isspace (*p)) && *p != ',') - p ++; - *p = '\0'; + if ( strlen(newstr) > 0) { + /* now search from the back, skipping over any spaces and commas */ + p = newstr + strlen (newstr) - 1; + while (isspace (*p) || *p == ',') + p --; + /* advance p to after the character that caused us to exit the + previous loop, and end the string. */ + if ((! isspace (*p)) && *p != ',') + p ++; + *p = '\0'; + } g_free (*str); *str = newstr; |