libaacs | branch: master | npzacs <[email protected]> | Wed Oct 27 14:21:25 2010 +0300| [77b112c365b42cb7fbe16894409bb7d81b1ed196] | committer: npzacs
Added str_next_line() and str_get_hex_string() > http://git.videolan.org/gitweb.cgi/libaacs.git/?a=commit;h=77b112c365b42cb7fbe16894409bb7d81b1ed196 --- src/util/strutl.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ src/util/strutl.h | 3 +++ 2 files changed, 52 insertions(+), 0 deletions(-) diff --git a/src/util/strutl.c b/src/util/strutl.c index cf3f2b0..fb49f42 100644 --- a/src/util/strutl.c +++ b/src/util/strutl.c @@ -25,6 +25,7 @@ #include <stdio.h> #include <stdarg.h> #include <stdlib.h> +#include <ctype.h> /* Function to assigns proper hex value of character to uint8_t pointer */ @@ -193,3 +194,51 @@ char *str_printf(const char *fmt, ...) } } +const char *str_next_line(const char *p) +{ + while (*p && *p != '\r' && *p != '\n') { + p++; + } + while (*p && (*p == '\r' || *p == '\n')) { + p++; + } + + return p; +} + +static int _str_is_hex_string(const char *str, int len) +{ + int ii; + + for (ii = 0; ii < len; ii++) { + if (!isxdigit(str[ii])) { + return 0; + } + } + + return 1; +} + +static const char *_str_skip_space(const char *p) +{ + while (*p && (*p == ' ' || *p == '\r' || *p == '\n' || *p == '\t')) { + p++; + } + + return p; +} + +char *str_get_hex_string(const char *p, int n) +{ + p = _str_skip_space(p); + + if (!_str_is_hex_string(p, n)) { + return NULL; + } + + char *s = malloc(n + 1); + memcpy(s, p, n); + s[n] = 0; + + return s; +} diff --git a/src/util/strutl.h b/src/util/strutl.h index aa39459..0bfff73 100644 --- a/src/util/strutl.h +++ b/src/util/strutl.h @@ -30,4 +30,7 @@ AACS_PRIVATE int hex_array_to_hexstring(char *str, const uint8_t *hex_array, uin AACS_PRIVATE char *str_printf(const char *fmt, ...) AACS_ATTR_FORMAT_PRINTF(1,2) AACS_ATTR_MALLOC; +AACS_PRIVATE const char * str_next_line (const char *str); +AACS_PRIVATE char * str_get_hex_string(const char *str, int len) AACS_ATTR_MALLOC; + #endif // STRUTL_H_ _______________________________________________ libaacs-devel mailing list [email protected] http://mailman.videolan.org/listinfo/libaacs-devel
