5 * \file rpmio/rpmstring.h
6 * String manipulation helper functions
13 /** \ingroup rpmstring
14 * Locale insensitive islower(3)
16 static inline int xislower(int c) {
17 return (c >= 'a' && c <= 'z');
20 /** \ingroup rpmstring
21 * Locale insensitive isupper(3)
23 static inline int xisupper(int c) {
24 return (c >= 'A' && c <= 'Z');
27 /** \ingroup rpmstring
28 * Locale insensitive isalpha(3)
30 static inline int xisalpha(int c) {
31 return (xislower(c) || xisupper(c));
34 /** \ingroup rpmstring
35 * Locale insensitive isdigit(3)
37 static inline int xisdigit(int c) {
38 return (c >= '0' && c <= '9');
41 /** \ingroup rpmstring
42 * Locale insensitive isalnum(3)
44 static inline int xisalnum(int c) {
45 return (xisalpha(c) || xisdigit(c));
48 /** \ingroup rpmstring
49 * Locale insensitive isblank(3)
51 static inline int xisblank(int c) {
52 return (c == ' ' || c == '\t');
55 /** \ingroup rpmstring
56 * Locale insensitive isspace(3)
58 static inline int xisspace(int c) {
59 return (xisblank(c) || c == '\n' || c == '\r' || c == '\f' || c == '\v');
62 /** \ingroup rpmstring
63 * Locale insensitive tolower(3)
65 static inline int xtolower(int c) {
66 return ((xisupper(c)) ? (c | ('a' - 'A')) : c);
69 /** \ingroup rpmstring
70 * Locale insensitive toupper(3)
72 static inline int xtoupper(int c) {
73 return ((xislower(c)) ? (c & ~('a' - 'A')) : c);
76 /** \ingroup rpmstring
77 * Locale insensitive strcasecmp(3).
79 int xstrcasecmp(const char * s1, const char * s2) ;
81 /** \ingroup rpmstring
82 * Locale insensitive strncasecmp(3).
84 int xstrncasecmp(const char *s1, const char * s2, size_t n) ;
86 /** \ingroup rpmstring
87 * Split string into fields separated by a character.
89 * @param length length of string
90 * @param sep separator character
91 * @return (malloc'd) argv array
93 char ** splitString(const char * str, size_t length, char sep);
95 /** \ingroup rpmstring
96 * Free split string argv array.
97 * @param list argv array
99 void freeSplitString( char ** list);
101 /** \ingroup rpmstring
102 * Remove occurences of trailing character from string.
104 * @param c character to strip
107 char * stripTrailingChar(char * s, char c);
109 /** \ingroup rpmstring
111 typedef struct StringBufRec *StringBuf;
113 /** \ingroup rpmstring
115 StringBuf newStringBuf(void);
117 /** \ingroup rpmstring
119 StringBuf freeStringBuf( StringBuf sb);
121 /** \ingroup rpmstring
123 void truncStringBuf(StringBuf sb);
125 /** \ingroup rpmstring
127 char * getStringBuf(StringBuf sb);
129 /** \ingroup rpmstring
131 void stripTrailingBlanksStringBuf(StringBuf sb);
133 /** \ingroup rpmstring
135 #define appendStringBuf(sb, s) appendStringBufAux(sb, s, 0)
137 /** \ingroup rpmstring
139 #define appendLineStringBuf(sb, s) appendStringBufAux(sb, s, 1)
141 /** \ingroup rpmstring
143 void appendStringBufAux(StringBuf sb, const char * s, int nl);
149 #endif /* _RPMSTRING_H_ */