X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-lib%2Fstr.h;h=4786d2766852c05ab2e4478d4b9e8ecc914efb67;hp=01e6c6231fa85e2dab0707aa91d79da0210421ce;hb=d23094706c228c63c7c7ab8f337fb5dd886c4109;hpb=81884ccb464c69a8dba9de1b97af261a8a02b2c7 diff --git a/lib-lib/str.h b/lib-lib/str.h index 01e6c62..4786d27 100644 --- a/lib-lib/str.h +++ b/lib-lib/str.h @@ -23,8 +23,6 @@ #include #include -#include "../lib/str.h" - #include "mem.h" #define HUGE_STRING 5120 @@ -37,20 +35,28 @@ extern unsigned char const __m_strdigits[128]; extern signed char const __m_b64digits[128]; +extern char const __m_b64chars[64]; + +extern char const __m_b36chars_lower[36]; +extern char const __m_b36chars_upper[36]; /****************************************************************************/ -/* char related */ +/* conversions */ /****************************************************************************/ static inline int hexval(int c) { - int v = __m_strdigits[c]; - return !(c & ~127) && v < 16 ? v : -1; + return !(c & ~127) && __m_strdigits[c] < 16 ? __m_strdigits[c] : -1; } static inline int base64val(int c) { return (c & ~127) ? -1 : __m_b64digits[c]; } +static inline void m_strtolower(char *p) { + for (; *p; p++) + *p = tolower((unsigned char)*p); +} + /****************************************************************************/ /* length related */ /****************************************************************************/ @@ -80,11 +86,11 @@ 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) { +static inline int m_strncmp(const char *a, const char *b, ssize_t n) { return strncmp (NONULL(a), NONULL(b), n); } -static inline int m_strncasecmp(const char *a, const char *b, size_t n) { +static inline int m_strncasecmp(const char *a, const char *b, ssize_t n) { return strncasecmp(NONULL(a), NONULL(b), n); } @@ -97,6 +103,15 @@ static inline char *m_strdup(const char *s) { return len ? p_dup(s, len + 1) : NULL; } +static inline char *m_substrdup(const char *s, const char *end) { + return p_dupstr(s, end ? end - s : m_strlen(s)); +} + +static inline char *m_strreplace(char **p, const char *s) { + p_delete(p); + return (*p = m_strdup(s)); +} + 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); @@ -115,6 +130,18 @@ m_strncat(char *dst, ssize_t n, const char *src, ssize_t l) { /* parsing related */ /****************************************************************************/ +static inline const char *m_strchrnul(const char *s, int c) { + while (*s && *s != c) + s++; + return s; +} + +static inline const char *m_strnextsp(const char *s) { + while (*s && !isspace((unsigned char)*s)) + s++; + return s; +} + static inline const char *skipspaces(const char *s) { while (*s && isspace((unsigned char)*s)) s++; @@ -124,4 +151,18 @@ static inline char *vskipspaces(const char *s) { return (char *)skipspaces(s); } +char *m_strrtrim(char *s); + +/****************************************************************************/ +/* search */ +/****************************************************************************/ + +const char * +m_stristrn(const char *haystack, const char *needle, ssize_t nlen); + +static inline const char * +m_stristr(const char *haystack, const char *needle) { + return m_stristrn(haystack, needle, m_strlen(needle)); +} + #endif /* MUTT_LIB_LIB_STR_H */