X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-lib%2Fstr.h;h=e319f2a40b69156858db08d06065d3c8cb745ab9;hp=d21e120cb3a7b04ef7c75b57eda3f266000b901a;hb=238b70e39b78f585c586bd51aef41988b3cc73d1;hpb=3e611c4b53a33408955152e1c9336f8643ea096e diff --git a/lib-lib/str.h b/lib-lib/str.h index d21e120..e319f2a 100644 --- a/lib-lib/str.h +++ b/lib-lib/str.h @@ -27,16 +27,53 @@ #define NONULL(x) (x?x:"") +static inline int m_strisempty(const char *s) { + return !s || !*s; +} + static inline ssize_t m_strlen(const char *s) { return s ? strlen(s) : 0; } +static inline ssize_t m_strnlen(const char *s, ssize_t n) { + const char *p = memchr(s, '\0', n); + return p ? p - s : n; +} + static inline char *m_strdup(const char *s) { - return p_dupstr(s, m_strlen(s)); + ssize_t len = m_strlen(s); + return len ? p_dup(s, len + 1) : NULL; } static inline int m_strcmp(const char *a, const char *b) { return strcmp(NONULL(a), NONULL(b)); } +static inline int m_strcasecmp(const char *a, const char *b) { + return strcasecmp(NONULL(a), NONULL(b)); +} + +static inline int m_strncmp(const char *a, const char *b, size_t n) { + return strncmp (NONULL(a), NONULL(b), n); +} + +static inline int m_strncasecmp(const char *a, const char *b, size_t n) { + return strncasecmp(NONULL(a), NONULL(b), n); +} + + +ssize_t m_strcpy(char *dst, ssize_t n, const char *src); +ssize_t m_strncpy(char *dst, ssize_t n, const char *src, ssize_t l); + +static inline ssize_t m_strcat(char *dst, ssize_t n, const char *src) { + ssize_t dlen = m_strnlen(dst, n - 1); + return dlen + m_strcpy(dst + dlen, n - dlen, src); +} + +static inline ssize_t +m_strncat(char *dst, ssize_t n, const char *src, ssize_t l) { + ssize_t dlen = m_strnlen(dst, n - 1); + return dlen + m_strncpy(dst + dlen, n - dlen, src, l); +} + #endif /* MUTT_LIB_LIB_STR_H */