#include <arpa/inet.h> /* we want to override inet_ntoa */
#include <netdb.h>
#include <limits.h>
+#include <string.h>
#include "asterisk/lock.h"
\param str the input string
\return a pointer to the first non-whitespace character
*/
+#ifdef LOW_MEMORY
char *ast_skip_blanks(char *str);
+#else
+static inline char *ast_skip_blanks(char *str)
+{
+ while (*str && *str < 33)
+ str++;
+ return str;
+}
+#endif
/*!
\brief Trims trailing whitespace characters from a string.
\param str the input string
\return a pointer to the NULL following the string
*/
+#ifdef LOW_MEMORY
char *ast_trim_blanks(char *str);
+#else
+static inline char *ast_trim_blanks(char *str)
+{
+ char *work = str;
+
+ if (work) {
+ work += strlen(work) - 1;
+ /* It's tempting to only want to erase after we exit this loop,
+ but since ast_trim_blanks *could* receive a constant string
+ (which we presumably wouldn't have to touch), we shouldn't
+ actually set anything unless we must, and it's easier just
+ to set each position to \0 than to keep track of a variable
+ for it */
+ while ((work >= str) && *work < 33)
+ *(work--) = '\0';
+ }
+ return str;
+}
+#endif
/*!
\brief Gets a pointer to first whitespace character in a string.
\param str the input string
\return a pointer to the first whitespace character
*/
+#ifdef LOW_MEMORY
char *ast_skip_nonblanks(char *str);
+#else
+static inline char *ast_skip_nonblanks(char *str)
+{
+ while (*str && *str > 32)
+ str++;
+ return str;
+}
+#endif
/*!
\brief Strip leading/trailing whitespace from a string.
characters from the input string, and returns a pointer to
the resulting string. The string is modified in place.
*/
+#ifdef LOW_MEMORY
char *ast_strip(char *s);
+#else
+static inline char *ast_strip(char *s)
+{
+ s = ast_skip_blanks(s);
+ if (s)
+ ast_trim_blanks(s);
+ return s;
+}
+#endif
/*!
\brief Strip leading/trailing whitespace and quotes from a string.
static char base64[64];
static char b2a[256];
+#ifdef LOW_MEMORY
char *ast_skip_blanks(char *str)
{
while (*str && *str < 33)
{
char *work = str;
- if (work && !ast_strlen_zero(work)) {
+ if (work) {
work += strlen(work) - 1;
- while ((work >= str) && *work && *work < 33)
- work--;
- *(++work) = '\0'; /* terminate string */
+ /* It's tempting to only want to erase after we exit this loop,
+ but since ast_trim_blanks *could* receive a constant string
+ (which we presumably wouldn't have to touch), we shouldn't
+ actually set anything unless we must, and it's easier just
+ to set each position to \0 than to keep track of a variable
+ for it */
+ while ((work >= str) && *work < 33)
+ *(work--) = '\0';
}
- return work;
+ return str;
}
char *ast_skip_nonblanks(char *str)
ast_trim_blanks(s);
return s;
}
+#endif
char *ast_strip_quoted(char *s, const char *beg_quotes, const char *end_quotes)
{