X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-lib%2Fstr.h;h=01e6c6231fa85e2dab0707aa91d79da0210421ce;hp=7dc15d6a78a7f1826bba67338ead81f9ad5712cf;hb=81884ccb464c69a8dba9de1b97af261a8a02b2c7;hpb=c98480f8568e6c1bc927c6c5f2b5e80b4aa6548c diff --git a/lib-lib/str.h b/lib-lib/str.h index 7dc15d6..01e6c62 100644 --- a/lib-lib/str.h +++ b/lib-lib/str.h @@ -21,11 +21,43 @@ #define MUTT_LIB_LIB_STR_H #include +#include + #include "../lib/str.h" #include "mem.h" +#define HUGE_STRING 5120 +#define LONG_STRING 1024 +#define STRING 256 +#define SHORT_STRING 128 + #define NONULL(x) (x?x:"") +#define ISSPACE(c) isspace((unsigned char)c) + +extern unsigned char const __m_strdigits[128]; +extern signed char const __m_b64digits[128]; + +/****************************************************************************/ +/* char related */ +/****************************************************************************/ + +static inline int hexval(int c) { + int v = __m_strdigits[c]; + return !(c & ~127) && v < 16 ? v : -1; +} + +static inline int base64val(int c) { + return (c & ~127) ? -1 : __m_b64digits[c]; +} + +/****************************************************************************/ +/* length related */ +/****************************************************************************/ + +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; @@ -36,10 +68,9 @@ static inline ssize_t m_strnlen(const char *s, ssize_t n) { return p ? p - s : n; } -static inline char *m_strdup(const char *s) { - ssize_t len = m_strlen(s); - return len ? p_dup(s, len + 1) : NULL; -} +/****************************************************************************/ +/* comparisons */ +/****************************************************************************/ static inline int m_strcmp(const char *a, const char *b) { return strcmp(NONULL(a), NONULL(b)); @@ -57,6 +88,14 @@ static inline int m_strncasecmp(const char *a, const char *b, size_t n) { return strncasecmp(NONULL(a), NONULL(b), n); } +/****************************************************************************/ +/* making copies */ +/****************************************************************************/ + +static inline char *m_strdup(const char *s) { + ssize_t len = m_strlen(s); + return len ? p_dup(s, len + 1) : NULL; +} 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); @@ -72,4 +111,17 @@ m_strncat(char *dst, ssize_t n, const char *src, ssize_t l) { return dlen + m_strncpy(dst + dlen, n - dlen, src, l); } +/****************************************************************************/ +/* parsing related */ +/****************************************************************************/ + +static inline const char *skipspaces(const char *s) { + while (*s && isspace((unsigned char)*s)) + s++; + return s; +} +static inline char *vskipspaces(const char *s) { + return (char *)skipspaces(s); +} + #endif /* MUTT_LIB_LIB_STR_H */