rc: ressuscite the goto command
authorRafaël Carré <funman@videolan.org>
Wed, 3 Oct 2007 23:17:55 +0000 (23:17 +0000)
committerRafaël Carré <funman@videolan.org>
Wed, 3 Oct 2007 23:17:55 +0000 (23:17 +0000)
modules/control/rc.c

index 48ae3bb..d09e1d2 100644 (file)
@@ -1343,8 +1343,23 @@ static int Playlist( vlc_object_t *p_this, char const *psz_cmd,
     }
     else if (!strcmp( psz_cmd, "goto" ) )
     {
-        msg_rc( _("goto is deprecated" ) );
-        msg_Err( p_playlist, "goto is deprecated" );
+        int i_pos = atoi( newval.psz_string );
+        /* The playlist stores 2 times the same item: onelevel & category */
+        int i_size = p_playlist->items.i_size / 2;
+
+        if( i_pos <= 0 )
+            msg_rc( _("Error: `goto' needs an argument greater than zero.") );
+        else if( i_pos <= i_size )
+        {
+            playlist_item_t *p_item, *p_parent;
+            p_item = p_parent = p_playlist->items.p_elems[i_pos*2-1];
+            while( p_parent->p_parent )
+                p_parent = p_parent->p_parent;
+            playlist_Control( p_playlist, PLAYLIST_VIEWPLAY, VLC_TRUE,
+                    p_parent, p_item );
+        }
+        else
+            msg_rc( _("Playlist has only %d elements"), i_size );
     }
     else if( !strcmp( psz_cmd, "stop" ) )
     {