changeset 29850:93947ce0e2cb

Support the range syntax (like dvd://2-5) also for dvdnav.
author reimar
date Wed, 11 Nov 2009 09:03:39 +0000
parents 77b9f0557384
children eaa7bfc52c2c
files parser-mpcmd.c
diffstat 1 files changed, 7 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/parser-mpcmd.c	Wed Nov 11 00:30:54 2009 +0000
+++ b/parser-mpcmd.c	Wed Nov 11 09:03:39 2009 +0000
@@ -70,7 +70,7 @@
 {
   int i,j,start_title=-1,end_title=-1;
   char *opt,*splitpos=NULL;
-  char entbuf[10];
+  char entbuf[15];
   int no_more_opts = 0;
   int opt_exit = 0; // flag indicating whether mplayer should exit without playing anything
   play_tree_t *last_parent, *last_entry = NULL, *root;
@@ -215,15 +215,17 @@
       }
     else /* filename */
       {
+        int is_dvdnav = strstr(argv[i],"dvdnav://") != NULL;
 	play_tree_t* entry = play_tree_new();
 	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 )
+        if ( strstr(argv[i],"dvd://") != NULL || is_dvdnav)
 	{
-             splitpos=strstr(argv[i]+6,"-");
+             int offset = is_dvdnav ? 9 : 6;
+             splitpos=strstr(argv[i]+offset,"-");
              if(splitpos != NULL)
              {
-               start_title=strtol(argv[i]+6,NULL,10);
+               start_title=strtol(argv[i]+offset,NULL,10);
 	       if (start_title<0) { //entries like dvd://-2 start title implied 1
 		   end_title=abs(start_title);
                    start_title=1;
@@ -237,7 +239,7 @@
                  {
                   if (j!=start_title)
                       entry=play_tree_new();
-                  snprintf(entbuf,9,"dvd://%d",j);
+                  snprintf(entbuf,sizeof(entbuf),is_dvdnav ? "dvdnav://%d" : "dvd://%d",j);
                   play_tree_add_file(entry,entbuf);
                   add_entry(&last_parent,&last_entry,entry);
 		  last_entry = entry;