]> git.sesse.net Git - vlc/blobdiff - modules/services_discovery/mtp.c
Revert "freebox: Bring back freebox SD in C."
[vlc] / modules / services_discovery / mtp.c
index ecffca5e25f5fa89c329c795ccc21f0f2612c86b..96df1d6520c539f407c6d651f61286b8a67ed6a2 100644 (file)
 #include <vlc_common.h>
 #include <vlc_playlist.h>
 #include <vlc_plugin.h>
-#include <errno.h>
-#include <vlc_charset.h>
 #include <vlc_interface.h>
 #include <vlc_services_discovery.h>
 
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-
 #include "libmtp.h"
 
 /*****************************************************************************
@@ -44,6 +38,8 @@
 static int Open( vlc_object_t * );
 static void Close( vlc_object_t * );
 
+VLC_SD_PROBE_HELPER("mtp", "MTP devices", SD_CAT_DEVICES)
+
 vlc_module_begin()
     set_shortname( "MTP" )
     set_description( N_( "MTP devices" ) )
@@ -52,6 +48,8 @@ vlc_module_begin()
     set_capability( "services_discovery", 0 )
     set_callbacks( Open, Close )
     linked_with_a_crap_library_which_uses_atexit()
+
+    VLC_SD_PROBE_SUBMODULE
 vlc_module_end()
 
 
@@ -121,8 +119,7 @@ static void Close( vlc_object_t *p_this )
 {
     services_discovery_t *p_sd = ( services_discovery_t * )p_this;
 
-    if( p_sd->p_sys->psz_name != NULL )
-        free( p_sd->p_sys->psz_name );
+    free( p_sd->p_sys->psz_name );
     vlc_cancel (p_sd->p_sys->thread);
     vlc_join (p_sd->p_sys->thread, NULL);
     free( p_sd->p_sys );
@@ -198,7 +195,10 @@ static int AddDevice( services_discovery_t *p_sd,
         {
             if( !( p_sd->p_sys->pp_items = calloc( p_sd->p_sys->i_tracks_num,
                                                    sizeof( input_item_t * ) ) ) )
+            {
+                free( psz_name );
                 return VLC_ENOMEM;
+            }
             p_sd->p_sys->i_count = 0;
             while( p_track != NULL )
             {
@@ -240,12 +240,14 @@ static void AddTrack( services_discovery_t *p_sd, LIBMTP_track_t *p_track )
                                     p_track->title ) ) == NULL )
     {
         msg_Err( p_sd, "Error adding %s, skipping it", p_track->filename );
+        free( psz_string );
         return;
     }
+    free( psz_string );
+
     input_item_SetArtist( p_input, p_track->artist );
     input_item_SetGenre( p_input, p_track->genre );
     input_item_SetAlbum( p_input, p_track->album );
-    free( psz_string );
     if( asprintf( &psz_string, "%d", p_track->tracknumber ) != -1 )
     {
         input_item_SetTrackNum( p_input, psz_string );