Commit 04fb7e89 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Namespace/rename make_path to vlc_uri2path

parent 7b331c54
...@@ -28,9 +28,34 @@ ...@@ -28,9 +28,34 @@
/** /**
* \file * \file
* This file defines functions for manipulating URL in vlc * This file defines functions for manipulating URL in vlc
*
* \ingroup strings
* @{
*/
/**
* Converts local path to URL.
*
* Builds a URL representation from a local UTF-8 null-terminated file path.
*
* @param path file path
* @param scheme URI scheme to use (default is auto: "file", "fd" or "smb")
* @return a heap-allocated URI string on success
* or NULL in case of error (errno will be set accordingly)
*/ */
VLC_API char *vlc_path2uri(const char *path, const char *scheme) VLC_MALLOC;
VLC_API char *vlc_path2uri (const char *path, const char *scheme) VLC_MALLOC; /**
* Converts a URI to a local path.
*
* Builds a local path (UTF-8-encoded null-terminated string) from a URI if
* the URI scheme allows.
*
* @param url URI
* @return a heap-allocated string or success
* or NULL on error
*/
VLC_API char *vlc_uri2path(const char *url) VLC_MALLOC;
struct vlc_url_t struct vlc_url_t
{ {
...@@ -48,8 +73,10 @@ struct vlc_url_t ...@@ -48,8 +73,10 @@ struct vlc_url_t
VLC_API char * decode_URI_duplicate( const char *psz ) VLC_MALLOC; VLC_API char * decode_URI_duplicate( const char *psz ) VLC_MALLOC;
VLC_API char * decode_URI( char *psz ); VLC_API char * decode_URI( char *psz );
VLC_API char * encode_URI_component( const char *psz ) VLC_MALLOC; VLC_API char * encode_URI_component( const char *psz ) VLC_MALLOC;
VLC_API char * make_path( const char *url ) VLC_MALLOC;
/** @} */
VLC_API void vlc_UrlParse (vlc_url_t *, const char *); VLC_API void vlc_UrlParse (vlc_url_t *, const char *);
VLC_API void vlc_UrlClean (vlc_url_t *); VLC_API void vlc_UrlClean (vlc_url_t *);
#endif #endif
...@@ -1070,7 +1070,7 @@ static int DrawStatus(intf_thread_t *intf, input_thread_t *p_input) ...@@ -1070,7 +1070,7 @@ static int DrawStatus(intf_thread_t *intf, input_thread_t *p_input)
char *path, *uri; char *path, *uri;
uri = input_item_GetURI(input_GetItem(p_input)); uri = input_item_GetURI(input_GetItem(p_input));
path = make_path(uri); path = vlc_uri2path(uri);
mvnprintw(y++, 0, COLS, _(" Source : %s"), path?path:uri); mvnprintw(y++, 0, COLS, _(" Source : %s"), path?path:uri);
free(uri); free(uri);
......
...@@ -281,7 +281,7 @@ void MetaPanel::update( input_item_t *p_item ) ...@@ -281,7 +281,7 @@ void MetaPanel::update( input_item_t *p_item )
char *psz_art = input_item_GetArtURL( p_item ); char *psz_art = input_item_GetArtURL( p_item );
if( psz_art ) if( psz_art )
{ {
char *psz = make_path( psz_art ); char *psz = vlc_uri2path( psz_art );
free( psz_art ); free( psz_art );
file = qfu( psz ); file = qfu( psz );
free( psz ); free( psz );
......
...@@ -313,7 +313,7 @@ void StandardPLPanel::popupAction( QAction *action ) ...@@ -313,7 +313,7 @@ void StandardPLPanel::popupAction( QAction *action )
case VLCModelSubInterface::ACTION_EXPLORE: case VLCModelSubInterface::ACTION_EXPLORE:
/* locally handled only */ /* locally handled only */
temp = model->getURI( index ); temp = model->getURI( index );
if( ! temp.isEmpty() ) path = make_path( temp.toLatin1().constData() ); if( ! temp.isEmpty() ) path = vlc_uri2path( temp.toLatin1().constData() );
if( path == NULL ) return; if( path == NULL ) return;
QDesktopServices::openUrl( QDesktopServices::openUrl(
QUrl::fromLocalFile( QFileInfo( qfu( path ) ).absolutePath() ) ); QUrl::fromLocalFile( QFileInfo( qfu( path ) ).absolutePath() ) );
......
...@@ -195,7 +195,7 @@ void MediaInfoDialog::updateURI( const QString& uri ) ...@@ -195,7 +195,7 @@ void MediaInfoDialog::updateURI( const QString& uri )
QString location; QString location;
/* If URI points to a local file, show the path instead of the URI */ /* If URI points to a local file, show the path instead of the URI */
char *path = make_path( qtu( uri ) ); char *path = vlc_uri2path( qtu( uri ) );
if( path != NULL ) if( path != NULL )
{ {
location = qfu( path ); location = qfu( path );
......
...@@ -781,7 +781,7 @@ void DialogsProvider::loadSubtitlesFile() ...@@ -781,7 +781,7 @@ void DialogsProvider::loadSubtitlesFile()
char *path2 = NULL; char *path2 = NULL;
if( path ) if( path )
{ {
path2 = make_path( path ); path2 = vlc_uri2path( path );
free( path ); free( path );
if( path2 ) if( path2 )
{ {
......
...@@ -718,7 +718,7 @@ const QString InputManager::decodeArtURL( input_item_t *p_item ) ...@@ -718,7 +718,7 @@ const QString InputManager::decodeArtURL( input_item_t *p_item )
char *psz_art = input_item_GetArtURL( p_item ); char *psz_art = input_item_GetArtURL( p_item );
if( psz_art ) if( psz_art )
{ {
char *psz = make_path( psz_art ); char *psz = vlc_uri2path( psz_art );
free( psz_art ); free( psz_art );
psz_art = psz; psz_art = psz;
} }
......
...@@ -88,7 +88,7 @@ void RecentsMRL::addRecent( const QString &mrl ) ...@@ -88,7 +88,7 @@ void RecentsMRL::addRecent( const QString &mrl )
#ifdef _WIN32 #ifdef _WIN32
/* Add to the Windows 7 default list in taskbar */ /* Add to the Windows 7 default list in taskbar */
char* path = make_path( qtu( mrl ) ); char* path = vlc_uri2path( qtu( mrl ) );
if( path ) if( path )
{ {
wchar_t *wmrl = ToWide( path ); wchar_t *wmrl = ToWide( path );
......
...@@ -264,7 +264,7 @@ void TopWindow::processEvent( EvtDragDrop &rEvtDragDrop ) ...@@ -264,7 +264,7 @@ void TopWindow::processEvent( EvtDragDrop &rEvtDragDrop )
if( files.size() == 1 && pInput != NULL ) if( files.size() == 1 && pInput != NULL )
{ {
std::list<std::string>::const_iterator it = files.begin(); std::list<std::string>::const_iterator it = files.begin();
char* psz_file = make_path( it->c_str() ); char* psz_file = vlc_uri2path( it->c_str() );
if( psz_file ) if( psz_file )
{ {
is_subtitle = !input_AddSubtitleOSD( pInput, psz_file, true, true ); is_subtitle = !input_AddSubtitleOSD( pInput, psz_file, true, true );
......
...@@ -754,7 +754,7 @@ void VlcProc::update_current_input() ...@@ -754,7 +754,7 @@ void VlcProc::update_current_input()
// Update local path (if possible) or full uri // Update local path (if possible) or full uri
char *psz_uri = input_item_GetURI( pItem ); char *psz_uri = input_item_GetURI( pItem );
char *psz_path = make_path( psz_uri ); char *psz_path = vlc_uri2path( psz_uri );
char *psz_save = psz_path ? psz_path : psz_uri; char *psz_save = psz_path ? psz_path : psz_uri;
SET_TEXT( m_cVarStreamURI, UString( getIntf(), psz_save ) ); SET_TEXT( m_cVarStreamURI, UString( getIntf(), psz_save ) );
free( psz_path ); free( psz_path );
......
...@@ -95,7 +95,7 @@ static int vlclua_make_uri( lua_State *L ) ...@@ -95,7 +95,7 @@ static int vlclua_make_uri( lua_State *L )
static int vlclua_make_path( lua_State *L ) static int vlclua_make_path( lua_State *L )
{ {
const char *psz_input = luaL_checkstring( L, 1 ); const char *psz_input = luaL_checkstring( L, 1 );
char *psz_path = make_path( psz_input); char *psz_path = vlc_uri2path( psz_input);
lua_pushstring( L, psz_path ); lua_pushstring( L, psz_path );
free( psz_path ); free( psz_path );
return 1; return 1;
......
...@@ -92,7 +92,7 @@ static int FindMeta( vlc_object_t *p_this ) ...@@ -92,7 +92,7 @@ static int FindMeta( vlc_object_t *p_this )
free( psz_uri ); free( psz_uri );
return VLC_EGENERIC; return VLC_EGENERIC;
} }
char *psz_basedir = make_path( psz_path ); char *psz_basedir = vlc_uri2path( psz_path );
FREENULL( psz_path ); FREENULL( psz_path );
if( psz_basedir == NULL ) if( psz_basedir == NULL )
{ {
...@@ -107,7 +107,7 @@ static int FindMeta( vlc_object_t *p_this ) ...@@ -107,7 +107,7 @@ static int FindMeta( vlc_object_t *p_this )
if ( psz_path == NULL ) if ( psz_path == NULL )
{ {
char *psz_basedir = make_path( psz_uri ); char *psz_basedir = vlc_uri2path( psz_uri );
if( psz_basedir == NULL ) if( psz_basedir == NULL )
{ {
free( psz_uri ); free( psz_uri );
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
#include <vlc_demux.h> /* demux_meta_t */ #include <vlc_demux.h> /* demux_meta_t */
#include <vlc_strings.h> /* vlc_b64_decode_binary */ #include <vlc_strings.h> /* vlc_b64_decode_binary */
#include <vlc_input.h> /* for attachment_new */ #include <vlc_input.h> /* for attachment_new */
#include <vlc_url.h> /* make_path */ #include <vlc_url.h> /* vlc_uri2path */
#include <vlc_mime.h> /* mime type */ #include <vlc_mime.h> /* mime type */
#include <vlc_fs.h> #include <vlc_fs.h>
...@@ -689,7 +689,7 @@ static int ReadMeta( vlc_object_t* p_this) ...@@ -689,7 +689,7 @@ static int ReadMeta( vlc_object_t* p_this)
if( unlikely(psz_uri == NULL) ) if( unlikely(psz_uri == NULL) )
return VLC_ENOMEM; return VLC_ENOMEM;
char *psz_path = make_path( psz_uri ); char *psz_path = vlc_uri2path( psz_uri );
free( psz_uri ); free( psz_uri );
if( psz_path == NULL ) if( psz_path == NULL )
return VLC_EGENERIC; return VLC_EGENERIC;
...@@ -916,7 +916,7 @@ static void WriteMetaToId3v2( ID3v2::Tag* tag, input_item_t* p_item ) ...@@ -916,7 +916,7 @@ static void WriteMetaToId3v2( ID3v2::Tag* tag, input_item_t* p_item )
if( psz_url == NULL ) if( psz_url == NULL )
return; return;
char *psz_path = make_path( psz_url ); char *psz_path = vlc_uri2path( psz_url );
free( psz_url ); free( psz_url );
if( psz_path == NULL ) if( psz_path == NULL )
return; return;
......
...@@ -108,7 +108,7 @@ static void DoChildren( playlist_export_t *p_export, playlist_item_t *p_root, ...@@ -108,7 +108,7 @@ static void DoChildren( playlist_export_t *p_export, playlist_item_t *p_root,
vlc_mutex_unlock( &p_current->p_input->lock ); vlc_mutex_unlock( &p_current->p_input->lock );
/* Stupid third party players don't understand file: URIs. */ /* Stupid third party players don't understand file: URIs. */
char *psz_path = make_path( psz_uri ); char *psz_path = vlc_uri2path( psz_uri );
if( psz_path != NULL ) if( psz_path != NULL )
{ {
free( psz_uri ); free( psz_uri );
......
...@@ -205,7 +205,7 @@ static int ItemChange( vlc_object_t *p_this, const char *psz_var, ...@@ -205,7 +205,7 @@ static int ItemChange( vlc_object_t *p_this, const char *psz_var,
if( psz_arturl ) if( psz_arturl )
{ {
char *psz = make_path( psz_arturl ); char *psz = vlc_uri2path( psz_arturl );
free( psz_arturl ); free( psz_arturl );
psz_arturl = psz; psz_arturl = psz;
} }
......
...@@ -257,7 +257,7 @@ static int ItemChange( vlc_object_t *p_this, const char *psz_var, ...@@ -257,7 +257,7 @@ static int ItemChange( vlc_object_t *p_this, const char *psz_var,
char *psz_arturl = input_item_GetArtURL( p_item ); char *psz_arturl = input_item_GetArtURL( p_item );
if( psz_arturl ) if( psz_arturl )
{ {
char *psz = make_path( psz_arturl ); char *psz = vlc_uri2path( psz_arturl );
free( psz_arturl ); free( psz_arturl );
psz_arturl = psz; psz_arturl = psz;
} }
......
...@@ -758,7 +758,7 @@ static void SDPHandleUrl( sout_stream_t *p_stream, const char *psz_url ) ...@@ -758,7 +758,7 @@ static void SDPHandleUrl( sout_stream_t *p_stream, const char *psz_url )
msg_Err( p_stream, "you can use sdp=file:// only once" ); msg_Err( p_stream, "you can use sdp=file:// only once" );
goto out; goto out;
} }
p_sys->psz_sdp_file = make_path( psz_url ); p_sys->psz_sdp_file = vlc_uri2path( psz_url );
if( p_sys->psz_sdp_file == NULL ) if( p_sys->psz_sdp_file == NULL )
goto out; goto out;
FileSetup( p_stream ); FileSetup( p_stream );
......
...@@ -44,12 +44,12 @@ char *get_path(const char *location) ...@@ -44,12 +44,12 @@ char *get_path(const char *location)
char *url, *path; char *url, *path;
/* Prepending "file://" is a bit hackish. But then again, we do not want /* Prepending "file://" is a bit hackish. But then again, we do not want
* to hard-code the list of schemes that use file paths in make_path(). * to hard-code the list of schemes that use file paths in vlc_uri2path().
*/ */
if (asprintf(&url, "file://%s", location) == -1) if (asprintf(&url, "file://%s", location) == -1)
return NULL; return NULL;
path = make_path (url); path = vlc_uri2path (url);
free (url); free (url);
return path; return path;
} }
......
...@@ -273,7 +273,7 @@ int input_item_WriteMeta( vlc_object_t *obj, input_item_t *p_item ) ...@@ -273,7 +273,7 @@ int input_item_WriteMeta( vlc_object_t *obj, input_item_t *p_item )
goto error; goto error;
char *psz_uri = input_item_GetURI( p_item ); char *psz_uri = input_item_GetURI( p_item );
p_export->psz_file = make_path( psz_uri ); p_export->psz_file = vlc_uri2path( psz_uri );
if( p_export->psz_file == NULL ) if( p_export->psz_file == NULL )
msg_Err( p_export, "cannot write meta to remote media %s", psz_uri ); msg_Err( p_export, "cannot write meta to remote media %s", psz_uri );
free( psz_uri ); free( psz_uri );
......
...@@ -259,7 +259,7 @@ char **subtitles_Detect( input_thread_t *p_this, char *psz_path, ...@@ -259,7 +259,7 @@ char **subtitles_Detect( input_thread_t *p_this, char *psz_path,
if( !psz_name_org ) if( !psz_name_org )
return NULL; return NULL;
char *psz_fname = make_path( psz_name_org ); char *psz_fname = vlc_uri2path( psz_name_org );
if( !psz_fname ) if( !psz_fname )
return NULL; return NULL;
......
...@@ -245,7 +245,7 @@ libvlc_ArtRequest ...@@ -245,7 +245,7 @@ libvlc_ArtRequest
vlc_UrlParse vlc_UrlParse
vlc_UrlClean vlc_UrlClean
vlc_path2uri vlc_path2uri
make_path vlc_uri2path
mdate mdate
module_config_free module_config_free
module_config_get module_config_get
......
...@@ -169,7 +169,7 @@ int main (void) ...@@ -169,7 +169,7 @@ int main (void)
assert (val != -1);*/ assert (val != -1);*/
/* URI to path tests */ /* URI to path tests */
#define test( a, b ) test (make_path, a, b) #define test( a, b ) test (vlc_uri2path, a, b)
test ("mailto:john@example.com", NULL); test ("mailto:john@example.com", NULL);
test ("http://www.example.com/file.html#ref", NULL); test ("http://www.example.com/file.html#ref", NULL);
test ("file://", NULL); test ("file://", NULL);
......
...@@ -143,13 +143,6 @@ char *encode_URI_component (const char *str) ...@@ -143,13 +143,6 @@ char *encode_URI_component (const char *str)
return ret; return ret;
} }
/**
* Builds a URL representation from a local file path.
* @param path path to convert (or URI to copy)
* @param scheme URI scheme to use (default is auto: "file", "fd" or "smb")
* @return a nul-terminated URI string (use free() to release it),
* or NULL in case of error (errno will be set accordingly)
*/
char *vlc_path2uri (const char *path, const char *scheme) char *vlc_path2uri (const char *path, const char *scheme)
{ {
if (path == NULL) if (path == NULL)
...@@ -252,13 +245,7 @@ char *vlc_path2uri (const char *path, const char *scheme) ...@@ -252,13 +245,7 @@ char *vlc_path2uri (const char *path, const char *scheme)
return buf; return buf;
} }
/** char *vlc_uri2path (const char *url)
* Tries to convert a URI to a local (UTF-8-encoded) file path.
* @param url URI to convert
* @return NULL on error, a nul-terminated string otherwise
* (use free() to release it)
*/
char *make_path (const char *url)
{ {
char *ret = NULL; char *ret = NULL;
char *end; char *end;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment