int i_options; /**< Number of input options */
char **ppsz_options; /**< Array of input options */
+ uint8_t *optflagv; /**< Some flags of input options */
+ unsigned optflagc;
mtime_t i_duration; /**< Duration in milliseconds*/
p_child->i_options *
sizeof( char * ) );
p_child->ppsz_options[p_child->i_options-1] = psz_option;
+ p_child->optflagc++;
+ p_child->optflagv = (uint8_t *)realloc( p_child->optflagv,
+ p_child->optflagc );
+ p_child->optflagv[p_child->optflagc - 1] = p_parent->optflagv[i];
}
}
vlc_event_send( &p_parent->event_manager, &event );
}
-#define VLC_INPUT_OPTION_UNIQUE 0x1
+/* Flags handled past input_ItemAddOpt() */
#define VLC_INPUT_OPTION_TRUSTED 0x2
-VLC_EXPORT( void, input_ItemAddOpt, ( input_item_t *, const char *str, unsigned flags ) );
+/* Flags handled within input_ItemAddOpt() */
+#define VLC_INPUT_OPTION_UNIQUE 0x100
+
+VLC_EXPORT( int, input_ItemAddOpt, ( input_item_t *, const char *str, unsigned flags ) );
static inline
-void input_ItemAddOption (input_item_t *item, const char *str)
+int input_ItemAddOption (input_item_t *item, const char *str)
{
- input_ItemAddOpt (item, str, VLC_INPUT_OPTION_TRUSTED);
+ return input_ItemAddOpt (item, str, VLC_INPUT_OPTION_TRUSTED);
}
static inline void input_ItemClean( input_item_t *p_i )
for( i = 0; i < p_i->i_options; i++ )
free( p_i->ppsz_options[i] );
TAB_CLEAN( p_i->i_options, p_i->ppsz_options );
+ free( p_i->optflagv);
for( i = 0; i < p_i->i_es; i++ )
{
p_i->psz_uri = NULL;
TAB_INIT( p_i->i_es, p_i->es );
TAB_INIT( p_i->i_options, p_i->ppsz_options );
+ p_i->optflagv = NULL, p_i->optflagc = 0;
TAB_INIT( p_i->i_categories, p_i->pp_categories );
p_i->i_type = ITEM_TYPE_UNKNOWN;
free( p_input );
}
-void input_ItemAddOpt( input_item_t *p_input, const char *psz_option,
- unsigned flags )
+int input_ItemAddOpt( input_item_t *p_input, const char *psz_option,
+ unsigned flags )
{
+ int err = VLC_SUCCESS;
+
if( psz_option == NULL )
- return;
+ return VLC_EGENERIC;
vlc_mutex_lock( &p_input->lock );
if (flags & VLC_INPUT_OPTION_UNIQUE)
goto out;
}
+ uint8_t *flagv = realloc (p_input->optflagv, p_input->optflagc + 1);
+ if (flagv == NULL)
+ {
+ err = VLC_ENOMEM;
+ goto out;
+ }
+ p_input->optflagv = flagv;
+ flagv[p_input->optflagc++] = flags;
+
INSERT_ELEM( p_input->ppsz_options, p_input->i_options,
p_input->i_options, strdup( psz_option ) );
out:
vlc_mutex_unlock( &p_input->lock );
+ return err;
}
int input_ItemAddInfo( input_item_t *p_i,
p_input->psz_name = strdup( p_input->psz_uri );
p_input->i_duration = i_duration;
- p_input->ppsz_options = NULL;
- p_input->i_options = 0;
for( int i = 0; i < i_options; i++ )
input_ItemAddOption( p_input, ppsz_options[i] );