diff options
author | kmkaplan <kmkaplan@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-01-24 23:02:59 +0000 |
---|---|---|
committer | kmkaplan <kmkaplan@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-01-24 23:02:59 +0000 |
commit | 6465fc7b734898965df040b8ab0ec2274f03f541 (patch) | |
tree | 8f538c3929456e47370ff8c8a853366295ad8490 /libmpdemux | |
parent | 8fcddee536c87a2dbe731c2d8df92743a887cb09 (diff) | |
download | mpv-6465fc7b734898965df040b8ab0ec2274f03f541.tar.bz2 mpv-6465fc7b734898965df040b8ab0ec2274f03f541.tar.xz |
Extended DVD chapter specification. Remove -last-chapter option.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4344 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r-- | libmpdemux/open.c | 34 | ||||
-rw-r--r-- | libmpdemux/stream.h | 1 |
2 files changed, 35 insertions, 0 deletions
diff --git a/libmpdemux/open.c b/libmpdemux/open.c index c2a576f330..059ab3ceb7 100644 --- a/libmpdemux/open.c +++ b/libmpdemux/open.c @@ -1,4 +1,5 @@ +#include <ctype.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -13,6 +14,7 @@ #include <sys/cdrio.h> #endif +#include "../cfgparser.h" #include "stream.h" #include "demuxer.h" @@ -421,6 +423,38 @@ tv_err: } +int dvd_parse_chapter_range(struct config *conf, const char *range){ + char *s, *t; + dvd_chapter = 1; + dvd_last_chapter = 0; + if (*range && isdigit(*range)) { + dvd_chapter = strtol(range, &s, 10); + if (range == s) { + mp_msg(MSGT_OPEN, MSGL_ERR, "Invalid chapter range specification %s\n", range); + return -1; + } + } + if (*s == 0) + return 0; + else if (*s != '-') { + mp_msg(MSGT_OPEN, MSGL_ERR, "Invalid chapter range specification %s\n", range); + return -1; + } + ++s; + if (*s == 0) + return 0; + if (! isdigit(*s)) { + mp_msg(MSGT_OPEN, MSGL_ERR, "Invalid chapter range specification %s\n", range); + return -1; + } + dvd_last_chapter = strtol(s, &t, 10); + if (s == t || *t) { + mp_msg(MSGT_OPEN, MSGL_ERR, "Invalid chapter range specification %s\n", range); + return -1; + } + return 0; +} + #ifdef USE_DVDREAD int dvd_aid_from_lang(stream_t *stream, unsigned char* lang){ diff --git a/libmpdemux/stream.h b/libmpdemux/stream.h index cd0a7bd5d1..d5f913afca 100644 --- a/libmpdemux/stream.h +++ b/libmpdemux/stream.h @@ -184,6 +184,7 @@ extern int dvd_title; extern int dvd_chapter; extern int dvd_last_chapter; extern int dvd_angle; +int dvd_parse_chapter_range(struct config*, const char*); //#endif #ifdef USE_DVDREAD |