From 722fc526e33df96994bd38f4ae7853d20d2e2544 Mon Sep 17 00:00:00 2001 From: Oleg Oshmyan Date: Sat, 17 May 2014 22:39:33 +0100 Subject: Move (r)skip_spaces to ass_utils --- libass/ass.c | 23 +---------------------- libass/ass_utils.c | 25 +++++++++++++++++++------ libass/ass_utils.h | 2 ++ 3 files changed, 22 insertions(+), 28 deletions(-) (limited to 'libass') diff --git a/libass/ass.c b/libass/ass.c index 3817134..2389740 100644 --- a/libass/ass.c +++ b/libass/ass.c @@ -153,22 +153,6 @@ void ass_free_style(ASS_Track *track, int sid) // ============================================================================================== -static void skip_spaces(char **str) -{ - char *p = *str; - while ((*p == ' ') || (*p == '\t')) - ++p; - *str = p; -} - -static void rskip_spaces(char **str, char *limit) -{ - char *p = *str; - while ((p >= limit) && ((*p == ' ') || (*p == '\t'))) - --p; - *str = p; -} - /** * \brief Set up default style * \param style style to edit to defaults @@ -297,12 +281,7 @@ static char *next_token(char **str) *p = '\0'; *str = p + 1; // ',' found, str will point to the next char (beginning of the next token) } - --p; // end of current token - rskip_spaces(&p, start); - if (p < start) - p = start; // empty token - else - ++p; // the first space character, or '\0' + rskip_spaces(&p, start); // end of current token: the first space character, or '\0' *p = '\0'; return start; } diff --git a/libass/ass_utils.c b/libass/ass_utils.c index 5140506..58ee96d 100644 --- a/libass/ass_utils.c +++ b/libass/ass_utils.c @@ -89,6 +89,22 @@ void ass_aligned_free(void *ptr) free(*((void **)ptr - 1)); } +void skip_spaces(char **str) +{ + char *p = *str; + while ((*p == ' ') || (*p == '\t')) + ++p; + *str = p; +} + +void rskip_spaces(char **str, char *limit) +{ + char *p = *str; + while ((p > limit) && ((p[-1] == ' ') || (p[-1] == '\t'))) + --p; + *str = p; +} + int mystrtoi(char **p, int *res) { double temp_res; @@ -177,8 +193,7 @@ int strtocolor(ASS_Library *library, char **q, uint32_t *res, int hex) // Return a boolean value for a string char parse_bool(char *str) { - while (*str == ' ' || *str == '\t') - str++; + skip_spaces(&str); if (!strncasecmp(str, "yes", 3)) return 1; else if (strtol(str, NULL, 10) > 0) @@ -188,14 +203,12 @@ char parse_bool(char *str) int parse_ycbcr_matrix(char *str) { - while (*str == ' ' || *str == '\t') - str++; + skip_spaces(&str); if (*str == '\0') return YCBCR_DEFAULT; char *end = str + strlen(str); - while (end[-1] == ' ' || end[-1] == '\t') - end--; + rskip_spaces(&end, str); // Trim a local copy of the input that we know is safe to // modify. The buffer is larger than any valid string + NUL, diff --git a/libass/ass_utils.h b/libass/ass_utils.h index 7228b36..7b16ca6 100644 --- a/libass/ass_utils.h +++ b/libass/ass_utils.h @@ -52,6 +52,8 @@ int has_avx2(void); void *ass_aligned_alloc(size_t alignment, size_t size); void ass_aligned_free(void *ptr); +void skip_spaces(char **str); +void rskip_spaces(char **str, char *limit); int mystrtoi(char **p, int *res); int mystrtoll(char **p, long long *res); int mystrtou32(char **p, int base, uint32_t *res); -- cgit v1.2.3