#include "http.h"
#include <limits.h>
-
-#include <assert.h>
+#include <errno.h>
+#include <ctype.h>
+#include <fcntl.h>
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#include <vlc_fs.h>
+#include <vlc_services_discovery.h>
/* Utility function for scandir */
static int Filter( const char *foo )
v->value = strdup( value ? value : "" );
v->i_field = 0;
- v->field = malloc( sizeof( mvar_t * ) );
+ v->field = xmalloc( sizeof( mvar_t * ) );
v->field[0] = NULL;
return v;
void mvar_AppendVar( mvar_t *v, mvar_t *f )
{
- v->field = realloc( v->field, sizeof( mvar_t * ) * ( v->i_field + 2 ) );
+ v->field = xrealloc( v->field, sizeof( mvar_t * ) * ( v->i_field + 2 ) );
v->field[v->i_field] = f;
v->i_field++;
}
void mvar_PushVar( mvar_t *v, mvar_t *f )
{
- v->field = realloc( v->field, sizeof( mvar_t * ) * ( v->i_field + 2 ) );
+ v->field = xrealloc( v->field, sizeof( mvar_t * ) * ( v->i_field + 2 ) );
if( v->i_field > 0 )
{
memmove( &v->field[1], &v->field[0], sizeof( mvar_t * ) * v->i_field );
return s;
}
-mvar_t *mvar_ObjectSetNew( intf_thread_t *p_intf, char *psz_name,
- const char *psz_capability )
+mvar_t *mvar_ServicesSetNew( intf_thread_t *p_intf, char *psz_name )
{
mvar_t *s = mvar_New( psz_name, "set" );
- size_t i;
-
- module_t **p_list = module_list_get( NULL );
+ char **longnames;
+ char **names = vlc_sd_GetNames( p_intf, &longnames, NULL );
+ if( names == NULL )
+ goto out;
- for( i = 0; p_list[i]; i++ )
+ for( size_t i = 0; names[i]; i++ )
{
- module_t *p_parser = p_list[i];
- if( module_provides( p_parser, psz_capability ) )
- {
- mvar_t *sd = mvar_New( "sd", module_get_object( p_parser ) );
- mvar_AppendNewVar( sd, "name",
- module_get_name( p_parser, true ) );
- mvar_AppendVar( s, sd );
- }
+ mvar_t *sd = mvar_New( "sd", names[i] );
+ mvar_AppendNewVar( sd, "name", longnames[i] );
+ mvar_AppendVar( s, sd );
+ free( names[i] );
+ free( longnames[i] );
}
- module_list_free( p_list );
-
+ free( longnames );
+ free( names );
+out:
return s;
}
for( i = 0; i < val_list.p_list->i_count; i++ )
{
- char psz_int[16];
+ char psz_int[21];
mvar_t *itm;
switch( i_type & VLC_VAR_TYPE )
case VLC_VAR_INTEGER:
itm = mvar_New( name, "set" );
mvar_AppendNewVar( itm, "name", text_list.p_list->p_values[i].psz_string );
- snprintf( psz_int, sizeof(psz_int), "%d",
+ snprintf( psz_int, sizeof(psz_int), "%"PRId64,
val_list.p_list->p_values[i].i_int );
mvar_AppendNewVar( itm, "id", psz_int );
snprintf( psz_int, sizeof(psz_int), "%d",
psz_dir = RealPath( psz_dir );
/* parse psz_src dir */
- if( ( i_dir_content = utf8_scandir( psz_dir, &ppsz_dir_content, Filter,
+ if( ( i_dir_content = vlc_scandir( psz_dir, &ppsz_dir_content, Filter,
InsensitiveAlphasort ) ) == -1 )
{
if( errno != ENOENT && errno != ENOTDIR )
sprintf( psz_tmp, "%s"DIR_SEP"%s", psz_dir, psz_name );
#ifdef HAVE_SYS_STAT_H
- if( utf8_stat( psz_tmp, &stat_info ) == -1 )
+ if( vlc_stat( psz_tmp, &stat_info ) == -1 )
{
free( psz_name );
continue;