Index: parser-mpcmd.c =================================================================== RCS file: /cvsroot/mplayer/main/parser-mpcmd.c,v retrieving revision 1.17 diff --unified -B -b -r1.17 parser-mpcmd.c --- parser-mpcmd.c 14 Jul 2004 09:25:47 -0000 1.17 +++ parser-mpcmd.c 18 Oct 2004 23:58:13 -0000 @@ -196,41 +196,71 @@ } else /* filename */ { - play_tree_t* entry = play_tree_new(); + play_tree_t* entry; + char * tail; + int start, end; + char buffer[0xf]; + mp_msg(MSGT_CFGPARSER, MSGL_DBG2,"Adding file %s\n",argv[i]); - // if required expand DVD filename entries like dvd://1-3 into component titles - if ( strstr(argv[i],"dvd://") != NULL ) - { - splitpos=strstr(argv[i]+6,"-"); - if(splitpos != NULL) - { - start_title=strtol(argv[i]+6,NULL,10); - if (start_title<0) { //entries like dvd://-2 start title implied 1 - end_title=abs(start_title); - start_title=1; - } else { - end_title=strtol(splitpos+1,NULL,10); + +#define DVD_PREFIX_LENGTH 6 // 'dvd://' +#define DVD_TITLE_START 1 +#define DVD_TITLE_END 1 + + if ( strstr(argv[i],"dvd://") != NULL ) { + + /* + * Forward unchanged argv[i] if in extended mode + * (has : or @ in it) + */ + if(strchr(argv[i] + DVD_PREFIX_LENGTH,':') || + strchr(argv[i] + DVD_PREFIX_LENGTH,'@')) { + entry = play_tree_new(); + play_tree_add_file(entry,argv[i]); } + else { - if (dvd_range(start_title) && dvd_range(end_title) && (start_title