diff options
author | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-05-26 22:39:38 +0000 |
---|---|---|
committer | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-05-26 22:39:38 +0000 |
commit | a62a42f3f1e597117e6cf99d966fc1ceed105f22 (patch) | |
tree | d250286a1e95d888c00a392bc2783dd6b11e0b3f /codec-cfg.c | |
parent | 2aa7abdc0050e6d2d7bad788c4be778c4760d05a (diff) | |
download | mpv-a62a42f3f1e597117e6cf99d966fc1ceed105f22.tar.bz2 mpv-a62a42f3f1e597117e6cf99d966fc1ceed105f22.tar.xz |
codecs.conf versioning - patch by Joey Parrish <joey@yunamusic.com>
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@6201 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'codec-cfg.c')
-rw-r--r-- | codec-cfg.c | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/codec-cfg.c b/codec-cfg.c index 981c5421bc..fafedddc41 100644 --- a/codec-cfg.c +++ b/codec-cfg.c @@ -368,10 +368,10 @@ static FILE *fp; static int line_num = 0; static char *line; static char *token[MAX_NR_TOKEN]; +static int read_nextline = 1; static int get_token(int min, int max) { - static int read_nextline = 1; static int line_pos; int i; char c; @@ -466,15 +466,33 @@ int parse_codec_cfg(char *cfgfile) mp_msg(MSGT_CODECCFG,MSGL_FATAL,"can't get memory for 'line': %s\n", strerror(errno)); return 0; } + read_nextline = 1; /* - * check if the cfgfile starts with 'audiocodec' or - * with 'videocodec' + * this only catches release lines at the start of + * codecs.conf, before audiocodecs and videocodecs. */ while ((tmp = get_token(1, 1)) == RET_EOL) /* NOTHING */; if (tmp == RET_EOF) goto out; + if (!strcmp(token[0], "release")) { + if (get_token(1, 2) < 0) + goto err_out_parse_error; + tmp = atoi(token[0]); + if (tmp < CODEC_CFG_MIN) + goto err_out_release_num; + while ((tmp = get_token(1, 1)) == RET_EOL) + /* NOTHING */; + if (tmp == RET_EOF) + goto out; + } else + goto err_out_release_num; + + /* + * check if the next block starts with 'audiocodec' or + * with 'videocodec' + */ if (!strcmp(token[0], "audiocodec") || !strcmp(token[0], "videocodec")) goto loop_enter; goto err_out_parse_error; @@ -652,11 +670,15 @@ err_out: free(line); line=NULL; + line_num = 0; fclose(fp); return 0; err_out_not_valid: mp_msg(MSGT_CODECCFG,MSGL_ERR,"codec is not defined correctly"); goto err_out_print_linenum; +err_out_release_num: + mp_msg(MSGT_CODECCFG,MSGL_ERR,"this codecs.conf is too old, incompatible with this mplayer release!"); + goto err_out_print_linenum; } codecs_t *find_audio_codec(unsigned int fourcc, unsigned int *fourccmap, |