X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fplaylist%2Floadsave.c;h=64b44b8333de3071136617489e7d7bdebeaa13f8;hb=36d1d663db8961cbb85e578f43f90ecfde11016e;hp=4fe2807e9a910a17a2a4b3cf86827b44f976f6ed;hpb=9de3b003216bf70d3617968b5175672bbf819213;p=vlc diff --git a/src/playlist/loadsave.c b/src/playlist/loadsave.c index 4fe2807e9a..64b44b8333 100644 --- a/src/playlist/loadsave.c +++ b/src/playlist/loadsave.c @@ -24,7 +24,7 @@ # include "config.h" #endif -#include +#include #include #include #include "playlist_internal.h" @@ -50,10 +50,7 @@ int playlist_Export( playlist_t * p_playlist, const char *psz_filename , /* Prepare the playlist_export_t structure */ p_export = (playlist_export_t *)malloc( sizeof(playlist_export_t) ); if( !p_export) - { - msg_Err( p_playlist, "out of memory" ); return VLC_ENOMEM; - } p_export->psz_filename = NULL; if ( psz_filename ) p_export->psz_filename = strdup( psz_filename ); @@ -68,15 +65,15 @@ int playlist_Export( playlist_t * p_playlist, const char *psz_filename , p_export->p_root = p_export_root; /* Lock the playlist */ - vlc_mutex_lock( &p_playlist->object_lock ); + vlc_object_lock( p_playlist ); p_playlist->p_private = (void *)p_export; /* And call the module ! All work is done now */ - p_module = module_Need( p_playlist, "playlist export", psz_type, VLC_TRUE); + p_module = module_Need( p_playlist, "playlist export", psz_type, true); if( !p_module ) { msg_Warn( p_playlist, "exporting playlist failed" ); - vlc_mutex_unlock( &p_playlist->object_lock ); + vlc_object_unlock( p_playlist ); return VLC_ENOOBJ; } module_Unneed( p_playlist , p_module ); @@ -86,7 +83,7 @@ int playlist_Export( playlist_t * p_playlist, const char *psz_filename , free( p_export->psz_filename ); free ( p_export ); p_playlist->p_private = NULL; - vlc_mutex_unlock( &p_playlist->object_lock ); + vlc_object_unlock( p_playlist ); return VLC_SUCCESS; } @@ -103,12 +100,12 @@ static void input_item_subitem_added( const vlc_event_t * p_event, /* playlist_AddInput() can fail, but we have no way to report that .. * Any way when it has failed, either the playlist is dying, either OOM */ playlist_AddInput( p_playlist, p_item, PLAYLIST_APPEND, PLAYLIST_END, - VLC_FALSE, VLC_FALSE ); + false, false ); } int playlist_MLLoad( playlist_t *p_playlist ) { - const char *psz_datadir = p_playlist->p_libvlc->psz_datadir; + char *psz_datadir = config_GetUserDataDir(); char *psz_uri = NULL; input_item_t *p_input; @@ -127,18 +124,18 @@ int playlist_MLLoad( playlist_t *p_playlist ) struct stat p_stat; /* checks if media library file is present */ if( utf8_stat( psz_uri , &p_stat ) ) - { - free( psz_uri ); - return VLC_EGENERIC; - } + goto error; free( psz_uri ); + /* FIXME: WTF? stat() should never be used right before open()! */ if( asprintf( &psz_uri, "file/xspf-open://%s" DIR_SEP "ml.xspf", psz_datadir ) == -1 ) { psz_uri = NULL; goto error; } + free( psz_datadir ); + psz_datadir = NULL; const char *const psz_option = "meta-file"; /* that option has to be cleaned in input_item_subitem_added() */ @@ -163,15 +160,15 @@ int playlist_MLLoad( playlist_t *p_playlist ) vlc_event_attach( &p_input->event_manager, vlc_InputItemSubItemAdded, input_item_subitem_added, p_playlist ); - p_playlist->b_doing_ml = VLC_TRUE; + p_playlist->b_doing_ml = true; PL_UNLOCK; stats_TimerStart( p_playlist, "ML Load", STATS_TIMER_ML_LOAD ); - input_Read( p_playlist, p_input, VLC_TRUE ); + input_Read( p_playlist, p_input, true ); stats_TimerStop( p_playlist,STATS_TIMER_ML_LOAD ); PL_LOCK; - p_playlist->b_doing_ml = VLC_FALSE; + p_playlist->b_doing_ml = false; PL_UNLOCK; vlc_event_detach( &p_input->event_manager, vlc_InputItemSubItemAdded, @@ -183,12 +180,13 @@ int playlist_MLLoad( playlist_t *p_playlist ) error: free( psz_uri ); + free( psz_datadir ); return VLC_ENOMEM; } int playlist_MLDump( playlist_t *p_playlist ) { - char *psz_datadir = p_playlist->p_libvlc->psz_datadir; + char *psz_datadir = config_GetUserDataDir(); if( !config_GetInt( p_playlist, "media-library") ) return VLC_SUCCESS; if( !psz_datadir ) /* XXX: This should never happen */ { @@ -196,9 +194,9 @@ int playlist_MLDump( playlist_t *p_playlist ) return VLC_EGENERIC; } - char psz_dirname[ strlen( psz_datadir ) - + sizeof( DIR_SEP "ml.xspf")]; - sprintf( psz_dirname, "%s", psz_datadir ); + char psz_dirname[ strlen( psz_datadir ) + sizeof( DIR_SEP "ml.xspf")]; + strcpy( psz_dirname, psz_datadir ); + free( psz_datadir ); if( config_CreateDir( (vlc_object_t *)p_playlist, psz_dirname ) ) { return VLC_EGENERIC;