2 * Copyright notice from original mutt:
3 * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>
4 * Copyright (C) 1999-2000 Thomas Roessler <roessler@does-not-exist.org>
6 * This file is part of mutt-ng, see http://www.muttng.org/.
7 * It's licensed under the GNU General Public License,
8 * please see the file GPL in the top level source directory.
15 #include <lib-lib/mem.h>
16 #include <lib-lib/str.h>
20 int str_casecmp (const char *a, const char *b)
22 return strcasecmp (NONULL (a), NONULL (b));
25 int str_ncmp (const char *a, const char *b, size_t l)
27 return strncmp (NONULL (a), NONULL (b), l);
30 int str_ncasecmp (const char *a, const char *b, size_t l)
32 return strncasecmp (NONULL (a), NONULL (b), l);
35 int str_coll (const char *a, const char *b)
37 return strcoll (NONULL (a), NONULL (b));
40 void str_replace (char **p, const char *s)
46 void str_adjust (char **p)
50 p_realloc(p, m_strlen(*p) + 1);
53 /* convert all characters in the string to lowercase */
54 char *str_tolower (char *s)
59 *p = tolower ((unsigned char) *p);
66 /* NULL-pointer aware string comparison functions */
68 char *str_substrcpy (char *dest, const char *beg, const char *end,
74 if (len > destlen - 1)
76 memcpy (dest, beg, len);
81 char *str_substrdup(const char *begin, const char *end)
83 return p_dupstr(begin, (end ? end - begin : strlen(begin)));
86 const char *str_isstr (const char *haystack, const char *needle)
95 while (*(p = haystack)) {
98 tolower ((unsigned char) *p) == tolower ((unsigned char) *q);
107 int str_eq (const char* s1, const char* s2) {
108 int l = m_strlen(s1);
110 if (l != m_strlen(s2))
112 return (str_ncmp (s1, s2, l) == 0);
115 char* str_skip_initws (char* s) {
120 void str_skip_trailws (char *s) {
123 for (p = s + m_strlen(s) - 1; p >= s && ISSPACE (*p); p--)