diff --git a/include/charset.h b/include/charset.h index 56c1b6f7cb8ab3c9a2eac7f4b84121b732f93ab2..7a534faaa1f973d1ee436c72da4757c4f36441dd 100644 --- a/include/charset.h +++ b/include/charset.h @@ -63,8 +63,9 @@ static inline char *FromWide( const wchar_t *in ) } -VLC_EXPORT( char *, __vlc_fix_readdir_charset, ( vlc_object_t *, const char * ) ); -#define vlc_fix_readdir_charset(a,b) __vlc_fix_readdir_charset(VLC_OBJECT(a),b) +#if !defined (__PLUGIN__) +extern char *vlc_fix_readdir ( const char * ); +#endif VLC_EXPORT( const char *, GetFallbackEncoding, ( void ) ); diff --git a/include/vlc_symbols.h b/include/vlc_symbols.h index 3c7ad98428aa8a5d4a674a31b865418be1efebca..127781a02fef06fab5b6dae92242794cd978a328 100644 --- a/include/vlc_symbols.h +++ b/include/vlc_symbols.h @@ -390,7 +390,7 @@ struct module_symbols_t void (*LocaleFree_inner) (const char *); char * (*ToLocale_inner) (const char *); char * (*EnsureUTF8_inner) (char *); - char * (*__vlc_fix_readdir_charset_inner) (vlc_object_t *, const char *); + void *__vlc_fix_readdir_charset_deprecated; int (*vlc_scandir_inner) (const char *name, struct dirent ***namelist, int (*filter) ( const struct dirent * ), int (*compar) ( const struct dirent **, const struct dirent ** )); int (*vlc_alphasort_inner) (const struct dirent **a, const struct dirent **b); osd_state_t * (*__osd_StateChange_inner) (osd_state_t *, const int); @@ -898,7 +898,6 @@ struct module_symbols_t # define LocaleFree (p_symbols)->LocaleFree_inner # define ToLocale (p_symbols)->ToLocale_inner # define EnsureUTF8 (p_symbols)->EnsureUTF8_inner -# define __vlc_fix_readdir_charset (p_symbols)->__vlc_fix_readdir_charset_inner # define vlc_scandir (p_symbols)->vlc_scandir_inner # define vlc_alphasort (p_symbols)->vlc_alphasort_inner # define __osd_StateChange (p_symbols)->__osd_StateChange_inner @@ -1381,7 +1380,6 @@ struct module_symbols_t ((p_symbols)->LocaleFree_inner) = LocaleFree; \ ((p_symbols)->ToLocale_inner) = ToLocale; \ ((p_symbols)->EnsureUTF8_inner) = EnsureUTF8; \ - ((p_symbols)->__vlc_fix_readdir_charset_inner) = __vlc_fix_readdir_charset; \ ((p_symbols)->vlc_scandir_inner) = vlc_scandir; \ ((p_symbols)->vlc_alphasort_inner) = vlc_alphasort; \ ((p_symbols)->__osd_StateChange_inner) = __osd_StateChange; \ @@ -1552,6 +1550,7 @@ struct module_symbols_t (p_symbols)->playlist_Move_deprecated = NULL; \ (p_symbols)->playlist_NodeGroup_deprecated = NULL; \ (p_symbols)->playlist_NodeRemoveParent_deprecated = NULL; \ + (p_symbols)->__vlc_fix_readdir_charset_deprecated = NULL; \ (p_symbols)->__intf_Interact_deprecated = NULL; \ (p_symbols)->__intf_UserProgress_deprecated = NULL; \ (p_symbols)->__intf_UserProgressUpdate_deprecated = NULL; \ diff --git a/src/misc/charset.c b/src/misc/charset.c index 525f600efa756a50bc6a8254b17519f3cebf214f..e33d3551c3673a69b4b0bc40134601dfc6881c80 100644 --- a/src/misc/charset.c +++ b/src/misc/charset.c @@ -340,10 +340,9 @@ vlc_bool_t vlc_current_charset( char **psz_charset ) return VLC_FALSE; } -char *__vlc_fix_readdir_charset( vlc_object_t *p_this, const char *psz_string ) -{ - (void)p_this; +char *vlc_fix_readdir( const char *psz_string ) +{ #ifdef __APPLE__ vlc_iconv_t hd = vlc_iconv_open( "UTF-8", "UTF-8-MAC" ); @@ -366,10 +365,12 @@ char *__vlc_fix_readdir_charset( vlc_object_t *p_this, const char *psz_string ) *psz_out = '\0'; return psz_utf8; } -#endif +#else return strdup( psz_string ); +#endif } + static inline int locale_match (const char *tab, const char *locale) { for (;*tab; tab += 2) diff --git a/src/misc/unicode.c b/src/misc/unicode.c index 48710259ee004d4b3b0701239173a4e4c312736a..eb96c25770bee76f1feb9a7bb4691a58e1df48aa 100644 --- a/src/misc/unicode.c +++ b/src/misc/unicode.c @@ -471,8 +471,6 @@ void *utf8_opendir( const char *dirname ) } -#define darwin_readdir_fix( a ) __vlc_fix_readdir_charset (NULL, a) - char *utf8_readdir( void *dir ) { struct dirent *ent; @@ -481,11 +479,7 @@ char *utf8_readdir( void *dir ) if( ent == NULL ) return NULL; -#ifdef __APPLE__ - return darwin_readdir_fix( ent->d_name ); -#else - return strdup( ent->d_name ); -#endif + return vlc_fix_readdir( ent->d_name ); } static int dummy_select( const char *str )