int playlist_MLDump( playlist_t *p_playlist ) { char *psz_datadir; psz_datadir = config_GetUserDir( VLC_DATA_DIR ); if( !psz_datadir ) /* XXX: This should never happen */ { msg_Err( p_playlist, "no data directory, cannot save media library") ; return VLC_EGENERIC; } 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; } strcat( psz_dirname, DIR_SEP "ml.xspf" ); stats_TimerStart( p_playlist, "ML Dump", STATS_TIMER_ML_DUMP ); playlist_Export( p_playlist, psz_dirname, p_playlist->p_media_library, "export-xspf" ); stats_TimerStop( p_playlist, STATS_TIMER_ML_DUMP ); return VLC_SUCCESS; }
void CmdPlaylistSave::execute() { const char *psz_module; if( m_file.find( ".xsp", 0 ) != std::string::npos ) psz_module = "export-xspf"; else if( m_file.find( "m3u", 0 ) != std::string::npos ) psz_module = "export-m3u"; else if( m_file.find( "html", 0 ) != std::string::npos ) psz_module = "export-html"; else { msg_Err(getIntf(),"Did not recognise playlist export file type"); return; } playlist_Export( getPL(), m_file.c_str(), psz_module ); }
int playlist_MLDump( playlist_t *p_playlist ) { char *psz_temp; psz_temp = config_GetUserDir( VLC_DATA_DIR ); if( !psz_temp ) /* XXX: This should never happen */ { msg_Err( p_playlist, "no data directory, cannot save media library") ; return VLC_EGENERIC; } char psz_dirname[ strlen( psz_temp ) + sizeof( DIR_SEP "ml.xspf")]; strcpy( psz_dirname, psz_temp ); free( psz_temp ); if( config_CreateDir( (vlc_object_t *)p_playlist, psz_dirname ) ) { return VLC_EGENERIC; } strcat( psz_dirname, DIR_SEP "ml.xspf" ); if ( asprintf( &psz_temp, "%s.tmp%"PRIu32, psz_dirname, (uint32_t)getpid() ) < 1 ) return VLC_EGENERIC; int i_ret = playlist_Export( p_playlist, psz_temp, p_playlist->p_media_library, "export-xspf" ); if ( i_ret != VLC_SUCCESS ) { vlc_unlink( psz_temp ); free( psz_temp ); return i_ret; } i_ret = vlc_rename( psz_temp, psz_dirname ); free( psz_temp ); if( i_ret == -1 ) { msg_Err( p_playlist, "could not rename %s.tmp: %s", psz_dirname, vlc_strerror_c(errno) ); return VLC_EGENERIC; } return VLC_SUCCESS; }