/* Calisto (c) 1998-1999 Peter Howkins, Matthew Howkins, Simon Howkins $Id: strplus.h,v 1.3 2000/01/14 19:53:16 peter Exp $ $Log: strplus.h,v $ Revision 1.3 2000/01/14 19:53:16 peter Added strchomp() function, reminiscent of Perl's chomp Revision 1.2 2000/01/10 22:15:13 peter Added STRNCOPY and STRNAPPEND macros to simplify buffer size checks Revision 1.1 1999/12/21 20:37:49 peter Initial revision */ #ifndef strplus_h #define strplus_h #include <string.h> #ifndef BOOL #define BOOL typedef int bool; #define FALSE ((bool) 0) #define TRUE ((bool) 1) #endif /* BOOL */ #define STREQ(s1, s2) (strcmp(s1, s2) == 0) #define STRNEQ(s1, s2, n) (strncmp(s1, s2, n) == 0) #define STRIEQ(s1, s2) (stricmp(s1, s2) == 0) #define STRINEQ(s1, s2, n) (strnicmp(s1, s2, n) == 0) /* Copy ct to s. n is sizeof buffer at s. */ #define STRNCOPY(s, ct, n) ((void) ((n > 0) && \ (strncpy(s, ct, n), (s)[(n) - 1] = '\0'))) /* Append ct to s. n is sizeof buffer at s. */ #define STRNAPPEND(s, ct, n) do { \ int len = strlen(s); \ if (len < n - 1) \ strncat(s + len, ct, n - len - 1); \ } while (0) void strlower(char *s); void strupper(char *s); void strmunch(char *source, char **first, char **rest); /* If the last character of the string is a \n, remove it, by replacing with \0. Do nothing if no \n found. Returns number of \n's chomped. (Can only be 0 or 1) */ int strchomp(char *s); int stricmp(const char *s1, const char *s2); int strnicmp(const char *s1, const char *s2, size_t n); bool strisalnum(const char *s); bool strisalpha(const char *s); bool striscntrl(const char *s); bool strisdigit(const char *s); bool strisgraph(const char *s); bool strislower(const char *s); bool strisprint(const char *s); bool strispunct(const char *s); bool strisspace(const char *s); bool strisupper(const char *s); bool strisxdigit(const char *s); char *strip_leading_white_space(const char *s); void strip_trailing_white_space(char *s); #endif /* strplus_h */