diff options
Diffstat (limited to 'include/asterisk/utils.h')
-rwxr-xr-x | include/asterisk/utils.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/include/asterisk/utils.h b/include/asterisk/utils.h index 06805e82d..13ced53d2 100755 --- a/include/asterisk/utils.h +++ b/include/asterisk/utils.h @@ -20,6 +20,7 @@ #include <arpa/inet.h> /* we want to override inet_ntoa */ #include <netdb.h> #include <limits.h> +#include <string.h> #include "asterisk/lock.h" @@ -135,21 +136,59 @@ struct ast_hostent { \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. @@ -160,7 +199,17 @@ char *ast_skip_nonblanks(char *str); 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. |