database: move striping of trailing '/' into helper function

Stripping trailing character is not that uncommon
operation. Particularly, the next patch has to perform it as
well. Lets move it to the separate function to avoid code duplication.

Also the new function has a little improvement: if the character to
strip is repeated several times in the end of a string, function
strips them all.

Signed-off-by: Yuri Volchkov <yuri.volchkov@gmail.com>
This commit is contained in:
Yuri Volchkov 2017-08-21 17:44:45 +02:00 committed by David Bremner
parent 49d4f52f27
commit cec4a87539
3 changed files with 16 additions and 2 deletions

View file

@ -858,8 +858,7 @@ notmuch_database_open_verbose (const char *path,
notmuch->status_string = NULL;
notmuch->path = talloc_strdup (notmuch, path);
if (notmuch->path[strlen (notmuch->path) - 1] == '/')
notmuch->path[strlen (notmuch->path) - 1] = '\0';
strip_trailing(notmuch->path, '/');
notmuch->mode = mode;
notmuch->atomic_nesting = 0;

View file

@ -255,3 +255,16 @@ strcase_hash (const void *ptr)
return hash;
}
void
strip_trailing (char *str, char ch)
{
int i;
for (i = strlen (str) - 1; i >= 0; i--) {
if (str[i] == ch)
str[i] = '\0';
else
break;
}
}

View file

@ -75,6 +75,8 @@ int strcase_equal (const void *a, const void *b);
/* GLib GHashFunc compatible case insensitive hash function */
unsigned int strcase_hash (const void *ptr);
void strip_trailing (char *str, char ch);
#ifdef __cplusplus
}
#endif