diff options
-rw-r--r-- | common/stringx.c | 54 | ||||
-rw-r--r-- | common/stringx.h | 33 |
2 files changed, 66 insertions, 21 deletions
diff --git a/common/stringx.c b/common/stringx.c index 37a3df9..3705cb9 100644 --- a/common/stringx.c +++ b/common/stringx.c @@ -45,15 +45,17 @@ #include <strings.h> #include "usuals.h" -#include "stringx.h" +#include "compat.h" + +#ifndef HAVE_STRCLN void -remove_cr(char* data) +strcln(char* data, char ch) { char* p; for(p = data; *data; data++, p++) { - while(*data == '\r') + while(*data == ch) data++; *p = *data; } @@ -62,16 +64,24 @@ remove_cr(char* data) *p = 0; } +#endif /* HAVE_STRCLN */ + +#ifndef HAVE_STRBTRIM + char* -trim_start(const char* data) +strbtrim(const char* data) { while(*data && isspace(*data)) ++data; return (char*)data; } +#endif /* HAVE_STRBTRIM */ + +#ifndef HAVE_STRETRIM + void -trim_end(char* data) +stretrim(char* data) { char* t = data + strlen(data); while(t > data && isspace(*(t - 1))) @@ -81,16 +91,24 @@ trim_end(char* data) } } +#endif /* HAVE_STRETRIM */ + +#ifndef HAVE_STRTRIM + char* -trim_space(char* data) +strtrim(char* data) { data = (char*)trim_start(data); trim_end(data); return data; } -/* String to bool helper function */ -int strtob(const char* str) +#endif /* HAVE_STRTRIM */ + +#ifndef HAVE_STRTOB + +int +strtob(const char* str) { if(strcasecmp(str, "0") == 0 || strcasecmp(str, "no") == 0 || @@ -109,6 +127,11 @@ int strtob(const char* str) return -1; } +#endif /* HAVE_STRTOB */ + + +#ifndef HAVE_STRLCPY + size_t strlcpy(char *dst, const char *src, size_t len) { @@ -123,19 +146,22 @@ strlcpy(char *dst, const char *src, size_t len) return (ret); } -size_t strlcat(char* dst, const char* src, size_t siz) +#endif /* HAVE_STRLCPY */ + +#ifndef HAVE_STRLCAT + +size_t +strlcat(char* dst, const char* src, size_t siz) { char* d = dst; const char* s = src; size_t n = siz; size_t dlen; - /* Find the end of dst and adjust bytes left but don't go past end */ while(n-- != 0 && *d != '\0') - d++; + d++; dlen = d - dst; n = siz - dlen; - if(n == 0) return dlen + strlen(s); while(*s != '\0') @@ -148,8 +174,8 @@ size_t strlcat(char* dst, const char* src, size_t siz) s++; } - *d = '\0'; - return dlen + (s - src); /* count does not include NUL */ } + +#endif /* HAVE_STRLCAT */ diff --git a/common/stringx.h b/common/stringx.h index 042cf2d..3949d70 100644 --- a/common/stringx.h +++ b/common/stringx.h @@ -36,18 +36,37 @@ * */ -#ifndef __STRINGX_H__ -#define __STRINGX_H__ +#ifndef __COMPAT_H__ +#define __COMPAT_H__ -void remove_cr(char* data); +#include "config.h" +#ifndef HAVE_STRLCPY +size_t strlcpy(char *dst, const char *src, size_t len); +#endif + +#ifndef HAVE_STRLCAT +size_t strlcat(char* dst, const char* src, size_t siz); +#endif + +#ifndef HAVE_STRCLN +void strcln(char* data); +#endif + +#ifndef HAVE_STRBTRIM char* trim_start(const char* data); +#endif + +#ifndef HAVE_STRETRIM void trim_end(char* data); +#endif + +#ifndef HAVE_STRTRIM char* trim_space(char* data); +#endif +#ifndef HAVE_STRTOB int strtob(const char* str); +#endif -size_t -strlcpy(char *dst, const char *src, size_t len); - -#endif /* __STRINGX_H__ */ +#endif /* __COMPAT_H__ */ |