]> git.sesse.net Git - vlc/blobdiff - src/input/item.c
Force to specify options flags in input_item_New*.
[vlc] / src / input / item.c
index ef1c67346eddcc7fb9ef3dccc502d6a92e931589..55a5b8fc491e20077807a53a63246bfa654433a9 100644 (file)
@@ -223,9 +223,9 @@ void input_item_CopyOptions( input_item_t *p_parent,
         if( !strcmp( p_parent->ppsz_options[i], "meta-file" ) )
             continue;
 
-        input_item_AddOpt( p_child,
-                           p_parent->ppsz_options[i],
-                           p_parent->optflagv[i] );
+        input_item_AddOption( p_child,
+                              p_parent->ppsz_options[i],
+                              p_parent->optflagv[i] );
     }
 
     vlc_mutex_unlock( &p_parent->lock );
@@ -251,11 +251,6 @@ void input_item_AddSubItem( input_item_t *p_parent, input_item_t *p_child )
     vlc_event_send( &p_parent->event_manager, &event );
 }
 
-int input_item_AddOption( input_item_t *p_item, const char *psz_option )
-{
-    return input_item_AddOpt( p_item, psz_option, VLC_INPUT_OPTION_TRUSTED );
-}
-
 bool input_item_HasErrorWhenReading( input_item_t *p_item )
 {
     vlc_mutex_lock( &p_item->lock );
@@ -331,14 +326,27 @@ char *input_item_GetURI( input_item_t *p_i )
     vlc_mutex_unlock( &p_i->lock );
     return psz_s;
 }
-void input_item_SetURI( input_item_t *p_i, char *psz_uri )
+void input_item_SetURI( input_item_t *p_i, const char *psz_uri )
 {
     vlc_mutex_lock( &p_i->lock );
 
     free( p_i->psz_uri );
     p_i->psz_uri = strdup( psz_uri );
+
     GuessType( p_i );
 
+    if( !p_i->psz_name && p_i->i_type == ITEM_TYPE_FILE )
+    {
+        const char *psz_filename = strrchr( p_i->psz_uri, DIR_SEP_CHAR );
+        if( psz_filename && *psz_filename == DIR_SEP_CHAR )
+            psz_filename++;
+        if( psz_filename && *psz_filename )
+            p_i->psz_name = strdup( psz_filename );
+    }
+
+    if( !p_i->psz_name )
+        p_i->psz_name = strdup( p_i->psz_uri );
+
     vlc_mutex_unlock( &p_i->lock );
 }
 
@@ -438,8 +446,8 @@ static void input_item_Destroy ( gc_object_t *p_gc )
     free( p_item );
 }
 
-int input_item_AddOpt( input_item_t *p_input, const char *psz_option,
-                      unsigned flags )
+int input_item_AddOption( input_item_t *p_input, const char *psz_option,
+                          unsigned flags )
 {
     int err = VLC_SUCCESS;
 
@@ -619,10 +627,11 @@ input_item_t *__input_item_NewExt( vlc_object_t *p_obj, const char *psz_uri,
                                   const char *psz_name,
                                   int i_options,
                                   const char *const *ppsz_options,
+                                  unsigned i_option_flags,
                                   mtime_t i_duration )
 {
     return input_item_NewWithType( p_obj, psz_uri, psz_name,
-                                  i_options, ppsz_options,
+                                  i_options, ppsz_options, i_option_flags,
                                   i_duration, ITEM_TYPE_UNKNOWN );
 }
 
@@ -631,6 +640,7 @@ input_item_t *input_item_NewWithType( vlc_object_t *p_obj, const char *psz_uri,
                                 const char *psz_name,
                                 int i_options,
                                 const char *const *ppsz_options,
+                                unsigned i_option_flags,
                                 mtime_t i_duration,
                                 int i_type )
 {
@@ -649,34 +659,22 @@ input_item_t *input_item_NewWithType( vlc_object_t *p_obj, const char *psz_uri,
 
     p_input->b_fixed_name = false;
 
-    if( psz_uri )
-        p_input->psz_uri = strdup( psz_uri );
-    else
-        p_input->psz_uri = NULL;
-
     p_input->i_type = i_type;
     p_input->b_prefers_tree = false;
 
-    if( p_input->i_type == ITEM_TYPE_UNKNOWN )
-        GuessType( p_input );
+    if( psz_uri )
+        input_item_SetURI( p_input, psz_uri );
 
-    if( psz_name != NULL )
-        p_input->psz_name = strdup( psz_name );
-    else if( p_input->i_type == ITEM_TYPE_FILE && p_input->psz_uri )
-    {
-        const char *psz_filename = strrchr( p_input->psz_uri, DIR_SEP_CHAR );
-        if( psz_filename && *psz_filename == DIR_SEP_CHAR )
-            psz_filename++;
-        p_input->psz_name = strdup( psz_filename && *psz_filename
-                                    ? psz_filename : p_input->psz_uri );
-    }
-    else
-        p_input->psz_name = p_input->psz_uri ? strdup( p_input->psz_uri ) : NULL;
+    if( i_type != ITEM_TYPE_UNKNOWN )
+        p_input->i_type = i_type;
+
+    if( psz_name )
+        input_item_SetName( p_input, psz_name );
 
     p_input->i_duration = i_duration;
 
     for( int i = 0; i < i_options; i++ )
-        input_item_AddOption( p_input, ppsz_options[i] );
+        input_item_AddOption( p_input, ppsz_options[i], i_option_flags );
     return p_input;
 }