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.
14 #include <sys/types.h>
16 #define NONULL(x) x?x:""
18 # define HUGE_STRING 5120
19 # define LONG_STRING 1024
21 # define SHORT_STRING 128
24 * Create a format string to be used with scanf.
25 * To use it, write, for instance, MUTT_FORMAT(HUGE_STRING).
27 * See K&R 2nd ed, p. 231 for an explanation.
29 # define _MUTT_FORMAT_2(a,b) "%" a b
30 # define _MUTT_FORMAT_1(a, b) _MUTT_FORMAT_2(#a, b)
31 # define MUTT_FORMAT(a) _MUTT_FORMAT_1(a, "s")
32 # define MUTT_FORMAT2(a,b) _MUTT_FORMAT_1(a, b)
34 # define ISSPACE(c) isspace((unsigned char)c)
35 # define ISBLANK(c) (c == ' ' || c == '\t')
36 # define strfcpy(A,B,C) strncpy(A,B,C), *(A+(C)-1)=0
37 /* this macro must check for *c == 0 since isspace(0) has
38 * unreliable behavior on some systems */
39 # define SKIPWS(c) while (*(c) && isspace ((unsigned char) *(c))) c++;
42 * safety wrappers/replacements
43 * (mostly only difference: safely handle NULL strings)
45 char *safe_strdup (const char*);
46 char *safe_strcat (char*, size_t, const char*);
47 char *safe_strncat (char*, size_t, const char*, size_t);
48 int safe_strcmp (const char*, const char*);
49 int safe_strcasecmp (const char*, const char*);
50 int safe_strncmp (const char*, const char*, size_t);
51 int safe_strncasecmp (const char*, const char*, size_t);
52 int safe_strcoll (const char*, const char*);
53 size_t safe_strlen (const char*);
58 char *str_tolower (char*);
59 char *str_substrcpy (char*, const char*, const char*, size_t);
60 char *str_substrdup (const char*, const char*);
61 void str_replace (char**, const char*);
62 void str_adjust (char**);
63 int str_eq (const char*, const char*);
64 const char *str_isstr (const char*, const char*);
65 char* str_skip_initws (char*);
66 void str_skip_trailws (char*);
68 #endif /* !_LIB_STR_H */