As far as I can tell the code should not change behaviour depending on locale in any of these places. Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>tags/n1.2
| @@ -1628,7 +1628,7 @@ int show_help(void *optctx, const char *opt, const char *arg) | |||||
| int read_yesno(void) | int read_yesno(void) | ||||
| { | { | ||||
| int c = getchar(); | int c = getchar(); | ||||
| int yesno = (toupper(c) == 'Y'); | |||||
| int yesno = (av_toupper(c) == 'Y'); | |||||
| while (c != '\n' && c != EOF) | while (c != '\n' && c != EOF) | ||||
| c = getchar(); | c = getchar(); | ||||
| @@ -19,7 +19,6 @@ | |||||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||
| */ | */ | ||||
| #include <ctype.h> | |||||
| #include <limits.h> | #include <limits.h> | ||||
| #include <stdlib.h> | #include <stdlib.h> | ||||
| @@ -1125,7 +1125,7 @@ static int extract_rates(char *rates, int ratelen, const char *request) | |||||
| if (av_strncasecmp(p, "Pragma:", 7) == 0) { | if (av_strncasecmp(p, "Pragma:", 7) == 0) { | ||||
| const char *q = p + 7; | const char *q = p + 7; | ||||
| while (*q && *q != '\n' && isspace(*q)) | |||||
| while (*q && *q != '\n' && av_isspace(*q)) | |||||
| q++; | q++; | ||||
| if (av_strncasecmp(q, "stream-switch-entry=", 20) == 0) { | if (av_strncasecmp(q, "stream-switch-entry=", 20) == 0) { | ||||
| @@ -1147,7 +1147,7 @@ static int extract_rates(char *rates, int ratelen, const char *request) | |||||
| if (stream_no < ratelen && stream_no >= 0) | if (stream_no < ratelen && stream_no >= 0) | ||||
| rates[stream_no] = rate_no; | rates[stream_no] = rate_no; | ||||
| while (*q && *q != '\n' && !isspace(*q)) | |||||
| while (*q && *q != '\n' && !av_isspace(*q)) | |||||
| q++; | q++; | ||||
| } | } | ||||
| @@ -1258,7 +1258,7 @@ static void get_word(char *buf, int buf_size, const char **pp) | |||||
| p = *pp; | p = *pp; | ||||
| skip_spaces(&p); | skip_spaces(&p); | ||||
| q = buf; | q = buf; | ||||
| while (!isspace(*p) && *p != '\0') { | |||||
| while (!av_isspace(*p) && *p != '\0') { | |||||
| if ((q - buf) < buf_size - 1) | if ((q - buf) < buf_size - 1) | ||||
| *q++ = *p; | *q++ = *p; | ||||
| p++; | p++; | ||||
| @@ -1275,7 +1275,7 @@ static void get_arg(char *buf, int buf_size, const char **pp) | |||||
| int quote; | int quote; | ||||
| p = *pp; | p = *pp; | ||||
| while (isspace(*p)) p++; | |||||
| while (av_isspace(*p)) p++; | |||||
| q = buf; | q = buf; | ||||
| quote = 0; | quote = 0; | ||||
| if (*p == '\"' || *p == '\'') | if (*p == '\"' || *p == '\'') | ||||
| @@ -1285,7 +1285,7 @@ static void get_arg(char *buf, int buf_size, const char **pp) | |||||
| if (*p == quote) | if (*p == quote) | ||||
| break; | break; | ||||
| } else { | } else { | ||||
| if (isspace(*p)) | |||||
| if (av_isspace(*p)) | |||||
| break; | break; | ||||
| } | } | ||||
| if (*p == '\0') | if (*p == '\0') | ||||
| @@ -1389,7 +1389,7 @@ static IPAddressACL* parse_dynamic_acl(FFStream *stream, HTTPContext *c) | |||||
| break; | break; | ||||
| line_num++; | line_num++; | ||||
| p = line; | p = line; | ||||
| while (isspace(*p)) | |||||
| while (av_isspace(*p)) | |||||
| p++; | p++; | ||||
| if (*p == '\0' || *p == '#') | if (*p == '\0' || *p == '#') | ||||
| continue; | continue; | ||||
| @@ -1540,7 +1540,7 @@ static int http_parse_request(HTTPContext *c) | |||||
| for (p = c->buffer; *p && *p != '\r' && *p != '\n'; ) { | for (p = c->buffer; *p && *p != '\r' && *p != '\n'; ) { | ||||
| if (av_strncasecmp(p, "User-Agent:", 11) == 0) { | if (av_strncasecmp(p, "User-Agent:", 11) == 0) { | ||||
| useragent = p + 11; | useragent = p + 11; | ||||
| if (*useragent && *useragent != '\n' && isspace(*useragent)) | |||||
| if (*useragent && *useragent != '\n' && av_isspace(*useragent)) | |||||
| useragent++; | useragent++; | ||||
| break; | break; | ||||
| } | } | ||||
| @@ -1668,7 +1668,7 @@ static int http_parse_request(HTTPContext *c) | |||||
| char *eoh; | char *eoh; | ||||
| char hostbuf[260]; | char hostbuf[260]; | ||||
| while (isspace(*hostinfo)) | |||||
| while (av_isspace(*hostinfo)) | |||||
| hostinfo++; | hostinfo++; | ||||
| eoh = strchr(hostinfo, '\n'); | eoh = strchr(hostinfo, '\n'); | ||||
| @@ -4100,7 +4100,7 @@ static int parse_ffconfig(const char *filename) | |||||
| break; | break; | ||||
| line_num++; | line_num++; | ||||
| p = line; | p = line; | ||||
| while (isspace(*p)) | |||||
| while (av_isspace(*p)) | |||||
| p++; | p++; | ||||
| if (*p == '\0' || *p == '#') | if (*p == '\0' || *p == '#') | ||||
| continue; | continue; | ||||
| @@ -4237,7 +4237,7 @@ static int parse_ffconfig(const char *filename) | |||||
| get_arg(arg, sizeof(arg), &p); | get_arg(arg, sizeof(arg), &p); | ||||
| p1 = arg; | p1 = arg; | ||||
| fsize = strtod(p1, &p1); | fsize = strtod(p1, &p1); | ||||
| switch(toupper(*p1)) { | |||||
| switch(av_toupper(*p1)) { | |||||
| case 'K': | case 'K': | ||||
| fsize *= 1024; | fsize *= 1024; | ||||
| break; | break; | ||||
| @@ -24,6 +24,7 @@ | |||||
| #include "libavutil/colorspace.h" | #include "libavutil/colorspace.h" | ||||
| #include "libavutil/opt.h" | #include "libavutil/opt.h" | ||||
| #include "libavutil/imgutils.h" | #include "libavutil/imgutils.h" | ||||
| #include "libavutil/avstring.h" | |||||
| //#define DEBUG | //#define DEBUG | ||||
| @@ -523,7 +524,7 @@ static void parse_palette(DVDSubContext *ctx, char *p) | |||||
| ctx->has_palette = 1; | ctx->has_palette = 1; | ||||
| for(i=0;i<16;i++) { | for(i=0;i<16;i++) { | ||||
| ctx->palette[i] = strtoul(p, &p, 16); | ctx->palette[i] = strtoul(p, &p, 16); | ||||
| while(*p == ',' || isspace(*p)) | |||||
| while(*p == ',' || av_isspace(*p)) | |||||
| p++; | p++; | ||||
| } | } | ||||
| } | } | ||||
| @@ -35,11 +35,11 @@ static int rt_event_to_ass(AVBPrint *buf, const char *p) | |||||
| while (*p) { | while (*p) { | ||||
| if (*p != '<') { | if (*p != '<') { | ||||
| if (!isspace(*p)) | |||||
| if (!av_isspace(*p)) | |||||
| av_bprint_chars(buf, *p, 1); | av_bprint_chars(buf, *p, 1); | ||||
| else if (!prev_chr_is_space) | else if (!prev_chr_is_space) | ||||
| av_bprint_chars(buf, ' ', 1); | av_bprint_chars(buf, ' ', 1); | ||||
| prev_chr_is_space = isspace(*p); | |||||
| prev_chr_is_space = av_isspace(*p); | |||||
| } else { | } else { | ||||
| const char *end = strchr(p, '>'); | const char *end = strchr(p, '>'); | ||||
| if (!end) | if (!end) | ||||
| @@ -52,7 +52,7 @@ static int sami_paragraph_to_ass(AVCodecContext *avctx, const char *src) | |||||
| p = av_stristr(p, "<P"); | p = av_stristr(p, "<P"); | ||||
| if (!p) | if (!p) | ||||
| break; | break; | ||||
| if (p[2] != '>' && !isspace(p[2])) { // avoid confusion with tags such as <PRE> | |||||
| if (p[2] != '>' && !av_isspace(p[2])) { // avoid confusion with tags such as <PRE> | |||||
| p++; | p++; | ||||
| continue; | continue; | ||||
| } | } | ||||
| @@ -70,7 +70,7 @@ static int sami_paragraph_to_ass(AVCodecContext *avctx, const char *src) | |||||
| } | } | ||||
| /* if empty event -> skip subtitle */ | /* if empty event -> skip subtitle */ | ||||
| while (isspace(*p)) | |||||
| while (av_isspace(*p)) | |||||
| p++; | p++; | ||||
| if (!strncmp(p, " ", 6)) { | if (!strncmp(p, " ", 6)) { | ||||
| ret = -1; | ret = -1; | ||||
| @@ -80,7 +80,7 @@ static int sami_paragraph_to_ass(AVCodecContext *avctx, const char *src) | |||||
| /* extract the text, stripping most of the tags */ | /* extract the text, stripping most of the tags */ | ||||
| while (*p) { | while (*p) { | ||||
| if (*p == '<') { | if (*p == '<') { | ||||
| if (!av_strncasecmp(p, "<P", 2) && (p[2] == '>' || isspace(p[2]))) | |||||
| if (!av_strncasecmp(p, "<P", 2) && (p[2] == '>' || av_isspace(p[2]))) | |||||
| break; | break; | ||||
| if (!av_strncasecmp(p, "<BR", 3)) | if (!av_strncasecmp(p, "<BR", 3)) | ||||
| av_bprintf(dst, "\\N"); | av_bprintf(dst, "\\N"); | ||||
| @@ -92,11 +92,11 @@ static int sami_paragraph_to_ass(AVCodecContext *avctx, const char *src) | |||||
| if (*p == '>') | if (*p == '>') | ||||
| p++; | p++; | ||||
| } | } | ||||
| if (!isspace(*p)) | |||||
| if (!av_isspace(*p)) | |||||
| av_bprint_chars(dst, *p, 1); | av_bprint_chars(dst, *p, 1); | ||||
| else if (!prev_chr_is_space) | else if (!prev_chr_is_space) | ||||
| av_bprint_chars(dst, ' ', 1); | av_bprint_chars(dst, ' ', 1); | ||||
| prev_chr_is_space = isspace(*p); | |||||
| prev_chr_is_space = av_isspace(*p); | |||||
| p++; | p++; | ||||
| } | } | ||||
| } | } | ||||
| @@ -2777,10 +2777,10 @@ int avpriv_unlock_avformat(void) | |||||
| unsigned int avpriv_toupper4(unsigned int x) | unsigned int avpriv_toupper4(unsigned int x) | ||||
| { | { | ||||
| return toupper(x & 0xFF) | |||||
| + (toupper((x >> 8) & 0xFF) << 8) | |||||
| + (toupper((x >> 16) & 0xFF) << 16) | |||||
| + (toupper((x >> 24) & 0xFF) << 24); | |||||
| return av_toupper(x & 0xFF) | |||||
| + (av_toupper((x >> 8) & 0xFF) << 8) | |||||
| + (av_toupper((x >> 16) & 0xFF) << 16) | |||||
| + (av_toupper((x >> 24) & 0xFF) << 24); | |||||
| } | } | ||||
| #if !HAVE_THREADS | #if !HAVE_THREADS | ||||
| @@ -23,6 +23,7 @@ | |||||
| #include "avcodec.h" | #include "avcodec.h" | ||||
| #include "internal.h" | #include "internal.h" | ||||
| #include "mathops.h" | #include "mathops.h" | ||||
| #include "libavutil/avstring.h" | |||||
| static av_cold int xbm_decode_init(AVCodecContext *avctx) | static av_cold int xbm_decode_init(AVCodecContext *avctx) | ||||
| { | { | ||||
| @@ -94,10 +95,10 @@ static int xbm_decode_frame(AVCodecContext *avctx, void *data, | |||||
| uint8_t val; | uint8_t val; | ||||
| ptr += strcspn(ptr, "x") + 1; | ptr += strcspn(ptr, "x") + 1; | ||||
| if (ptr < end && isxdigit(*ptr)) { | |||||
| if (ptr < end && av_isxdigit(*ptr)) { | |||||
| val = convert(*ptr); | val = convert(*ptr); | ||||
| ptr++; | ptr++; | ||||
| if (isxdigit(*ptr)) | |||||
| if (av_isxdigit(*ptr)) | |||||
| val = (val << 4) + convert(*ptr); | val = (val << 4) + convert(*ptr); | ||||
| *dst++ = ff_reverse[val]; | *dst++ = ff_reverse[val]; | ||||
| } else { | } else { | ||||
| @@ -20,7 +20,6 @@ | |||||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||
| */ | */ | ||||
| #include <ctype.h> | |||||
| #include <string.h> | #include <string.h> | ||||
| #include "libavutil/avassert.h" | #include "libavutil/avassert.h" | ||||
| @@ -20,7 +20,6 @@ | |||||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||
| */ | */ | ||||
| #include <ctype.h> | |||||
| #include <string.h> | #include <string.h> | ||||
| #include <stdio.h> | #include <stdio.h> | ||||
| @@ -30,6 +30,7 @@ | |||||
| #include "libavutil/opt.h" | #include "libavutil/opt.h" | ||||
| #include "libavutil/parseutils.h" | #include "libavutil/parseutils.h" | ||||
| #include "libavutil/random_seed.h" | #include "libavutil/random_seed.h" | ||||
| #include "libavutil/avstring.h" | |||||
| #include "avfilter.h" | #include "avfilter.h" | ||||
| #include "internal.h" | #include "internal.h" | ||||
| #include "formats.h" | #include "formats.h" | ||||
| @@ -133,7 +134,7 @@ static int init_pattern_from_string(AVFilterContext *ctx) | |||||
| if (*p == '\n' || !*p) | if (*p == '\n' || !*p) | ||||
| break; | break; | ||||
| else | else | ||||
| cellauto->buf[i] = !!isgraph(*(p++)); | |||||
| cellauto->buf[i] = !!av_isgraph(*(p++)); | |||||
| } | } | ||||
| return 0; | return 0; | ||||
| @@ -31,6 +31,7 @@ | |||||
| #include "libavutil/opt.h" | #include "libavutil/opt.h" | ||||
| #include "libavutil/parseutils.h" | #include "libavutil/parseutils.h" | ||||
| #include "libavutil/random_seed.h" | #include "libavutil/random_seed.h" | ||||
| #include "libavutil/avstring.h" | |||||
| #include "avfilter.h" | #include "avfilter.h" | ||||
| #include "internal.h" | #include "internal.h" | ||||
| #include "formats.h" | #include "formats.h" | ||||
| @@ -212,7 +213,7 @@ static int init_pattern_from_file(AVFilterContext *ctx) | |||||
| if (*p == '\n') { | if (*p == '\n') { | ||||
| p++; break; | p++; break; | ||||
| } else | } else | ||||
| life->buf[0][i*life->w + j] = isgraph(*(p++)) ? ALIVE_CELL : 0; | |||||
| life->buf[0][i*life->w + j] = av_isgraph(*(p++)) ? ALIVE_CELL : 0; | |||||
| } | } | ||||
| } | } | ||||
| life->buf_idx = 0; | life->buf_idx = 0; | ||||
| @@ -110,7 +110,7 @@ typedef struct HLSContext { | |||||
| static int read_chomp_line(AVIOContext *s, char *buf, int maxlen) | static int read_chomp_line(AVIOContext *s, char *buf, int maxlen) | ||||
| { | { | ||||
| int len = ff_get_line(s, buf, maxlen); | int len = ff_get_line(s, buf, maxlen); | ||||
| while (len > 0 && isspace(buf[len - 1])) | |||||
| while (len > 0 && av_isspace(buf[len - 1])) | |||||
| buf[--len] = '\0'; | buf[--len] = '\0'; | ||||
| return len; | return len; | ||||
| } | } | ||||
| @@ -71,7 +71,7 @@ typedef struct HLSContext { | |||||
| static int read_chomp_line(AVIOContext *s, char *buf, int maxlen) | static int read_chomp_line(AVIOContext *s, char *buf, int maxlen) | ||||
| { | { | ||||
| int len = ff_get_line(s, buf, maxlen); | int len = ff_get_line(s, buf, maxlen); | ||||
| while (len > 0 && isspace(buf[len - 1])) | |||||
| while (len > 0 && av_isspace(buf[len - 1])) | |||||
| buf[--len] = '\0'; | buf[--len] = '\0'; | ||||
| return len; | return len; | ||||
| } | } | ||||
| @@ -298,9 +298,9 @@ static int process_line(URLContext *h, char *line, int line_count, | |||||
| p = line; | p = line; | ||||
| if (line_count == 0) { | if (line_count == 0) { | ||||
| while (!isspace(*p) && *p != '\0') | |||||
| while (!av_isspace(*p) && *p != '\0') | |||||
| p++; | p++; | ||||
| while (isspace(*p)) | |||||
| while (av_isspace(*p)) | |||||
| p++; | p++; | ||||
| s->http_code = strtol(p, &end, 10); | s->http_code = strtol(p, &end, 10); | ||||
| @@ -325,7 +325,7 @@ static int process_line(URLContext *h, char *line, int line_count, | |||||
| *p = '\0'; | *p = '\0'; | ||||
| tag = line; | tag = line; | ||||
| p++; | p++; | ||||
| while (isspace(*p)) | |||||
| while (av_isspace(*p)) | |||||
| p++; | p++; | ||||
| if (!av_strcasecmp(tag, "Location")) { | if (!av_strcasecmp(tag, "Location")) { | ||||
| av_strlcpy(s->location, p, sizeof(s->location)); | av_strlcpy(s->location, p, sizeof(s->location)); | ||||
| @@ -27,7 +27,6 @@ | |||||
| #include "libavutil/md5.h" | #include "libavutil/md5.h" | ||||
| #include "urldecode.h" | #include "urldecode.h" | ||||
| #include "avformat.h" | #include "avformat.h" | ||||
| #include <ctype.h> | |||||
| static void handle_basic_params(HTTPAuthState *state, const char *key, | static void handle_basic_params(HTTPAuthState *state, const char *key, | ||||
| int key_len, char **dest, int *dest_len) | int key_len, char **dest, int *dest_len) | ||||
| @@ -80,8 +79,8 @@ static void choose_qop(char *qop, int size) | |||||
| char *ptr = strstr(qop, "auth"); | char *ptr = strstr(qop, "auth"); | ||||
| char *end = ptr + strlen("auth"); | char *end = ptr + strlen("auth"); | ||||
| if (ptr && (!*end || isspace(*end) || *end == ',') && | |||||
| (ptr == qop || isspace(ptr[-1]) || ptr[-1] == ',')) { | |||||
| if (ptr && (!*end || av_isspace(*end) || *end == ',') && | |||||
| (ptr == qop || av_isspace(ptr[-1]) || ptr[-1] == ',')) { | |||||
| av_strlcpy(qop, "auth", size); | av_strlcpy(qop, "auth", size); | ||||
| } else { | } else { | ||||
| qop[0] = 0; | qop[0] = 0; | ||||
| @@ -122,7 +122,7 @@ ff_vorbis_comment(AVFormatContext * as, AVDictionary **m, const uint8_t *buf, in | |||||
| } | } | ||||
| for (j = 0; j < tl; j++) | for (j = 0; j < tl; j++) | ||||
| tt[j] = toupper(t[j]); | |||||
| tt[j] = av_toupper(t[j]); | |||||
| tt[tl] = 0; | tt[tl] = 0; | ||||
| memcpy(ct, v, vl); | memcpy(ct, v, vl); | ||||
| @@ -236,7 +236,7 @@ static int rtmp_http_open(URLContext *h, const char *uri, int flags) | |||||
| goto fail; | goto fail; | ||||
| } | } | ||||
| } | } | ||||
| while (off > 0 && isspace(rt->client_id[off - 1])) | |||||
| while (off > 0 && av_isspace(rt->client_id[off - 1])) | |||||
| off--; | off--; | ||||
| rt->client_id[off] = '\0'; | rt->client_id[off] = '\0'; | ||||
| @@ -170,12 +170,12 @@ const char *ff_smil_get_attr_ptr(const char *s, const char *attr) | |||||
| while (*s) { | while (*s) { | ||||
| while (*s) { | while (*s) { | ||||
| if (!in_quotes && isspace(*s)) | |||||
| if (!in_quotes && av_isspace(*s)) | |||||
| break; | break; | ||||
| in_quotes ^= *s == '"'; // XXX: support escaping? | in_quotes ^= *s == '"'; // XXX: support escaping? | ||||
| s++; | s++; | ||||
| } | } | ||||
| while (isspace(*s)) | |||||
| while (av_isspace(*s)) | |||||
| s++; | s++; | ||||
| if (!av_strncasecmp(s, attr, len) && s[len] == '=') | if (!av_strncasecmp(s, attr, len) && s[len] == '=') | ||||
| return s + len + 1 + (s[len + 1] == '"'); | return s + len + 1 + (s[len + 1] == '"'); | ||||
| @@ -26,7 +26,6 @@ | |||||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||
| */ | */ | ||||
| #include <ctype.h> | |||||
| #include <string.h> | #include <string.h> | ||||
| #include "libavutil/mem.h" | #include "libavutil/mem.h" | ||||
| @@ -54,7 +53,7 @@ char *ff_urldecode(const char *url) | |||||
| if (c == '%' && s + 2 < url_len) { | if (c == '%' && s + 2 < url_len) { | ||||
| char c2 = url[s++]; | char c2 = url[s++]; | ||||
| char c3 = url[s++]; | char c3 = url[s++]; | ||||
| if (isxdigit(c2) && isxdigit(c3)) { | |||||
| if (av_isxdigit(c2) && av_isxdigit(c3)) { | |||||
| c2 = av_tolower(c2); | c2 = av_tolower(c2); | ||||
| c3 = av_tolower(c3); | c3 = av_tolower(c3); | ||||
| @@ -3641,11 +3641,11 @@ int av_get_frame_filename(char *buf, int buf_size, | |||||
| if (c == '%') { | if (c == '%') { | ||||
| do { | do { | ||||
| nd = 0; | nd = 0; | ||||
| while (isdigit(*p)) { | |||||
| while (av_isdigit(*p)) { | |||||
| nd = nd * 10 + *p++ - '0'; | nd = nd * 10 + *p++ - '0'; | ||||
| } | } | ||||
| c = *p++; | c = *p++; | ||||
| } while (isdigit(c)); | |||||
| } while (av_isdigit(c)); | |||||
| switch(c) { | switch(c) { | ||||
| case '%': | case '%': | ||||
| @@ -3866,7 +3866,7 @@ int ff_hex_to_data(uint8_t *data, const char *p) | |||||
| p += strspn(p, SPACE_CHARS); | p += strspn(p, SPACE_CHARS); | ||||
| if (*p == '\0') | if (*p == '\0') | ||||
| break; | break; | ||||
| c = toupper((unsigned char) *p++); | |||||
| c = av_toupper((unsigned char) *p++); | |||||
| if (c >= '0' && c <= '9') | if (c >= '0' && c <= '9') | ||||
| c = c - '0'; | c = c - '0'; | ||||
| else if (c >= 'A' && c <= 'F') | else if (c >= 'A' && c <= 'F') | ||||
| @@ -3989,7 +3989,7 @@ void ff_parse_key_value(const char *str, ff_parse_key_val_cb callback_get_buf, | |||||
| int key_len, dest_len = 0; | int key_len, dest_len = 0; | ||||
| /* Skip whitespace and potential commas. */ | /* Skip whitespace and potential commas. */ | ||||
| while (*ptr && (isspace(*ptr) || *ptr == ',')) | |||||
| while (*ptr && (av_isspace(*ptr) || *ptr == ',')) | |||||
| ptr++; | ptr++; | ||||
| if (!*ptr) | if (!*ptr) | ||||
| break; | break; | ||||
| @@ -4022,7 +4022,7 @@ void ff_parse_key_value(const char *str, ff_parse_key_val_cb callback_get_buf, | |||||
| if (*ptr == '\"') | if (*ptr == '\"') | ||||
| ptr++; | ptr++; | ||||
| } else { | } else { | ||||
| for (; *ptr && !(isspace(*ptr) || *ptr == ','); ptr++) | |||||
| for (; *ptr && !(av_isspace(*ptr) || *ptr == ','); ptr++) | |||||
| if (dest && dest < dest_end) | if (dest && dest < dest_end) | ||||
| *dest++ = *ptr; | *dest++ = *ptr; | ||||
| } | } | ||||
| @@ -23,7 +23,6 @@ | |||||
| #include <stdint.h> | #include <stdint.h> | ||||
| #include <stdio.h> | #include <stdio.h> | ||||
| #include <string.h> | #include <string.h> | ||||
| #include <ctype.h> | |||||
| #include "config.h" | #include "config.h" | ||||
| #include "common.h" | #include "common.h" | ||||
| @@ -43,7 +42,7 @@ int av_strstart(const char *str, const char *pfx, const char **ptr) | |||||
| int av_stristart(const char *str, const char *pfx, const char **ptr) | int av_stristart(const char *str, const char *pfx, const char **ptr) | ||||
| { | { | ||||
| while (*pfx && toupper((unsigned)*pfx) == toupper((unsigned)*str)) { | |||||
| while (*pfx && av_toupper((unsigned)*pfx) == av_toupper((unsigned)*str)) { | |||||
| pfx++; | pfx++; | ||||
| str++; | str++; | ||||
| } | } | ||||
| @@ -185,6 +185,30 @@ char *av_get_token(const char **buf, const char *term); | |||||
| */ | */ | ||||
| char *av_strtok(char *s, const char *delim, char **saveptr); | char *av_strtok(char *s, const char *delim, char **saveptr); | ||||
| /** | |||||
| * Locale-independent conversion of ASCII isdigit. | |||||
| */ | |||||
| static inline int av_isdigit(int c) | |||||
| { | |||||
| return c >= '0' && c <= '9'; | |||||
| } | |||||
| /** | |||||
| * Locale-independent conversion of ASCII isgraph. | |||||
| */ | |||||
| static inline int av_isgraph(int c) | |||||
| { | |||||
| return c > 32 && c < 127; | |||||
| } | |||||
| /** | |||||
| * Locale-independent conversion of ASCII isspace. | |||||
| */ | |||||
| static inline int av_isspace(int c) | |||||
| { | |||||
| return c == ' ' || c == '\f' || c == '\n' || c == '\r' || c == '\t' || c == '\v'; | |||||
| } | |||||
| /** | /** | ||||
| * Locale-independent conversion of ASCII characters to uppercase. | * Locale-independent conversion of ASCII characters to uppercase. | ||||
| */ | */ | ||||
| @@ -205,6 +229,15 @@ static inline int av_tolower(int c) | |||||
| return c; | return c; | ||||
| } | } | ||||
| /** | |||||
| * Locale-independent conversion of ASCII isxdigit. | |||||
| */ | |||||
| static inline int av_isxdigit(int c) | |||||
| { | |||||
| c = av_tolower(c); | |||||
| return av_isdigit(c) || (c >= 'a' && c <= 'z'); | |||||
| } | |||||
| /** | /** | ||||
| * Locale-independent case-insensitive compare. | * Locale-independent case-insensitive compare. | ||||
| * @note This means only ASCII-range characters are case-insensitive | * @note This means only ASCII-range characters are case-insensitive | ||||
| @@ -26,7 +26,6 @@ | |||||
| #ifndef AVUTIL_COMMON_H | #ifndef AVUTIL_COMMON_H | ||||
| #define AVUTIL_COMMON_H | #define AVUTIL_COMMON_H | ||||
| #include <ctype.h> | |||||
| #include <errno.h> | #include <errno.h> | ||||
| #include <inttypes.h> | #include <inttypes.h> | ||||
| #include <limits.h> | #include <limits.h> | ||||
| @@ -18,7 +18,6 @@ | |||||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||
| */ | */ | ||||
| #include <ctype.h> | |||||
| #include <string.h> | #include <string.h> | ||||
| #include "avstring.h" | #include "avstring.h" | ||||
| @@ -50,7 +49,7 @@ av_dict_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int | |||||
| for(; i<m->count; i++){ | for(; i<m->count; i++){ | ||||
| const char *s= m->elems[i].key; | const char *s= m->elems[i].key; | ||||
| if(flags & AV_DICT_MATCH_CASE) for(j=0; s[j] == key[j] && key[j]; j++); | if(flags & AV_DICT_MATCH_CASE) for(j=0; s[j] == key[j] && key[j]; j++); | ||||
| else for(j=0; toupper(s[j]) == toupper(key[j]) && key[j]; j++); | |||||
| else for(j=0; av_toupper(s[j]) == av_toupper(key[j]) && key[j]; j++); | |||||
| if(key[j]) | if(key[j]) | ||||
| continue; | continue; | ||||
| if(s[j] && !(flags & AV_DICT_IGNORE_SUFFIX)) | if(s[j] && !(flags & AV_DICT_IGNORE_SUFFIX)) | ||||
| @@ -33,6 +33,7 @@ | |||||
| #include "log.h" | #include "log.h" | ||||
| #include "mathematics.h" | #include "mathematics.h" | ||||
| #include "time.h" | #include "time.h" | ||||
| #include "avstring.h" | |||||
| typedef struct Parser { | typedef struct Parser { | ||||
| const AVClass *class; | const AVClass *class; | ||||
| @@ -637,7 +638,7 @@ int av_expr_parse(AVExpr **expr, const char *s, | |||||
| return AVERROR(ENOMEM); | return AVERROR(ENOMEM); | ||||
| while (*s) | while (*s) | ||||
| if (!isspace(*s++)) *wp++ = s[-1]; | |||||
| if (!av_isspace(*s++)) *wp++ = s[-1]; | |||||
| *wp++ = 0; | *wp++ = 0; | ||||
| p.class = &class; | p.class = &class; | ||||
| @@ -426,7 +426,7 @@ static int date_get_num(const char **pp, | |||||
| val = 0; | val = 0; | ||||
| for(i = 0; i < len_max; i++) { | for(i = 0; i < len_max; i++) { | ||||
| c = *p; | c = *p; | ||||
| if (!isdigit(c)) | |||||
| if (!av_isdigit(c)) | |||||
| break; | break; | ||||
| val = (val * 10) + c - '0'; | val = (val * 10) + c - '0'; | ||||
| p++; | p++; | ||||
| @@ -446,8 +446,8 @@ char *av_small_strptime(const char *p, const char *fmt, struct tm *dt) | |||||
| for(;;) { | for(;;) { | ||||
| /* consume time string until a non whitespace char is found */ | /* consume time string until a non whitespace char is found */ | ||||
| while (isspace(*fmt)) { | |||||
| while (isspace(*p)) | |||||
| while (av_isspace(*fmt)) { | |||||
| while (av_isspace(*p)) | |||||
| p++; | p++; | ||||
| fmt++; | fmt++; | ||||
| } | } | ||||
| @@ -611,11 +611,11 @@ int av_parse_time(int64_t *timeval, const char *timestr, int duration) | |||||
| int n; | int n; | ||||
| q++; | q++; | ||||
| for (n = 100000; n >= 1; n /= 10, q++) { | for (n = 100000; n >= 1; n /= 10, q++) { | ||||
| if (!isdigit(*q)) | |||||
| if (!av_isdigit(*q)) | |||||
| break; | break; | ||||
| microseconds += n * (*q - '0'); | microseconds += n * (*q - '0'); | ||||
| } | } | ||||
| while (isdigit(*q)) | |||||
| while (av_isdigit(*q)) | |||||
| q++; | q++; | ||||
| } | } | ||||