formatting. Add of ecore_str_has_prefix/suffix functions

SVN revision: 28118
This commit is contained in:
doursse 2007-01-25 23:43:46 +00:00 committed by doursse
parent a001030668
commit edfbe7f65d
2 changed files with 65 additions and 21 deletions

View File

@ -38,10 +38,17 @@ extern "C" {
# endif
# endif
/* strlcpy implementation for libc's lacking it */
EAPI size_t ecore_strlcpy(char *dst, const char *src, size_t siz);
/* strlcpy implementation for libc's lacking it */
EAPI size_t ecore_strlcpy(char *dst, const char *src, size_t siz);
EAPI int ecore_str_has_prefix(const char *str, const char *prefix);
EAPI int ecore_str_has_suffix(const char *str, const char *suffix);
#ifdef __cplusplus
}
#endif
#endif /* _ECORE_STR_H */

View File

@ -29,28 +29,65 @@ size_t
ecore_strlcpy(char *dst, const char *src, size_t siz)
{
#ifdef HAVE_STRLCPY
return strlcpy(dst, src, siz);
return strlcpy(dst, src, siz);
#else
char *d = dst;
const char *s = src;
size_t n = siz;
char *d = dst;
const char *s = src;
size_t n = siz;
/* Copy as many bytes as will fit */
if (n != 0) {
while (--n != 0) {
if ((*d++ = *s++) == '\0')
break;
}
}
/* Copy as many bytes as will fit */
if (n != 0)
{
while (--n != 0)
{
if ((*d++ = *s++) == '\0')
break;
}
}
/* Not enough room in dst, add NUL and traverse rest of src */
if (n == 0) {
if (siz != 0)
*d = '\0'; /* NUL-terminate dst */
while (*s++)
;
}
/* Not enough room in dst, add NUL and traverse rest of src */
if (n == 0)
{
if (siz != 0)
*d = '\0'; /* NUL-terminate dst */
while (*s++)
;
}
return(s - src - 1); /* count does not include NUL */
return(s - src - 1); /* count does not include NUL */
#endif
}
int
ecore_str_has_prefix(const char *str, const char *prefix)
{
int str_len;
int prefix_len;
if (!str || !prefix)
return 0;
str_len = strlen(str);
prefix_len = strlen(prefix);
if (prefix_len > str_len)
return 0;
return (strncmp(str, prefix, prefix_len) == 0);
}
int
ecore_str_has_suffix(const char *str, const char *suffix)
{
int str_len;
int suffix_len;
if (!str || !suffix)
return 0;
str_len = strlen(str);
suffix_len = strlen(suffix);
if (suffix_len > str_len)
return 0;
return (strncmp(str + str_len - suffix_len, suffix, suffix_len) == 0);
}