X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-lib%2Fstr.h;h=d62dc0ad86435736cc93a229f11e37b7a9043660;hp=bb2d822d63feec2a33c0d3301556373024ffc942;hb=9fde23d2b9a4ba8076eb425a1af4342de1e485b5;hpb=93b012884de4ca5e1f2550f767d0b8680b9c0e9f diff --git a/lib-lib/str.h b/lib-lib/str.h index bb2d822..d62dc0a 100644 --- a/lib-lib/str.h +++ b/lib-lib/str.h @@ -16,15 +16,14 @@ * * Copyright © 2006 Pierre Habouzit */ +/* + * Copyright notice from original mutt: + * Copyright (C) 2001 Thomas Roessler + */ #ifndef MUTT_LIB_LIB_STR_H #define MUTT_LIB_LIB_STR_H -#include -#include - -#include "mem.h" - #define HUGE_STRING 5120 #define LONG_STRING 1024 #define STRING 256 @@ -57,6 +56,20 @@ static inline void m_strtolower(char *p) { *p = tolower((unsigned char)*p); } +static inline int ascii_toupper(int c) { + if ('a' <= c && c <= 'z') + return c & ~32; + + return c; +} + +static inline int ascii_tolower(int c) { + if ('A' <= c && c <= 'Z') + return c | 32; + + return c; +} + /****************************************************************************/ /* length related */ /****************************************************************************/ @@ -86,14 +99,17 @@ 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); } +int ascii_strcasecmp(const char *a, const char *b); +int ascii_strncasecmp(const char *a, const char *b, ssize_t n); + /****************************************************************************/ /* making copies */ /****************************************************************************/ @@ -130,6 +146,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++; @@ -153,4 +181,12 @@ m_stristr(const char *haystack, const char *needle) { return m_stristrn(haystack, needle, m_strlen(needle)); } + +/****************************************************************************/ +/* misc functions */ +/****************************************************************************/ + +/* replace any %s with src, or appends " $src" */ +ssize_t m_snsubst(char *dst, ssize_t n, const char *fmt, const char *src); + #endif /* MUTT_LIB_LIB_STR_H */