Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
401c5a7e
Commit
401c5a7e
authored
Aug 02, 2009
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Win32: support loading plugins from directories with extra-ACP characters
parent
1b222b87
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1 addition
and
112 deletions
+1
-112
src/modules/modules.c
src/modules/modules.c
+0
-111
src/modules/os.c
src/modules/os.c
+1
-1
No files found.
src/modules/modules.c
View file @
401c5a7e
...
...
@@ -977,118 +977,9 @@ static void AllocateAllPlugins( vlc_object_t *p_this, module_bank_t *p_bank )
static
void
AllocatePluginDir
(
vlc_object_t
*
p_this
,
module_bank_t
*
p_bank
,
const
char
*
psz_dir
,
unsigned
i_maxdepth
)
{
/* FIXME: Needs to be ported to wide char on ALL Windows builds */
#ifdef WIN32
# undef opendir
# undef closedir
# undef readdir
#endif
#if defined( UNDER_CE ) || defined( _MSC_VER )
#ifdef UNDER_CE
wchar_t
psz_wpath
[
MAX_PATH
+
256
];
wchar_t
psz_wdir
[
MAX_PATH
];
#endif
char
psz_path
[
MAX_PATH
+
256
];
WIN32_FIND_DATA
finddata
;
HANDLE
handle
;
int
rc
;
char
*
psz_file
;
#endif
if
(
i_maxdepth
==
0
)
return
;
#if defined( UNDER_CE ) || defined( _MSC_VER )
#ifdef UNDER_CE
MultiByteToWideChar
(
CP_ACP
,
0
,
psz_dir
,
-
1
,
psz_wdir
,
MAX_PATH
);
rc
=
GetFileAttributes
(
psz_wdir
);
if
(
rc
<
0
||
!
(
rc
&
FILE_ATTRIBUTE_DIRECTORY
)
)
return
;
/* Not a directory */
/* Parse all files in the directory */
swprintf
(
psz_wpath
,
L"%ls
\\
*"
,
psz_wdir
);
#else
rc
=
GetFileAttributes
(
psz_dir
);
if
(
rc
<
0
||
!
(
rc
&
FILE_ATTRIBUTE_DIRECTORY
)
)
return
;
/* Not a directory */
#endif
/* Parse all files in the directory */
sprintf
(
psz_path
,
"%s
\\
*"
,
psz_dir
);
#ifdef UNDER_CE
handle
=
FindFirstFile
(
psz_wpath
,
&
finddata
);
#else
handle
=
FindFirstFile
(
psz_path
,
&
finddata
);
#endif
if
(
handle
==
INVALID_HANDLE_VALUE
)
{
/* Empty directory */
return
;
}
/* Parse the directory and try to load all files it contains. */
do
{
#ifdef UNDER_CE
unsigned
int
i_len
=
wcslen
(
finddata
.
cFileName
);
swprintf
(
psz_wpath
,
L"%ls
\\
%ls"
,
psz_wdir
,
finddata
.
cFileName
);
sprintf
(
psz_path
,
"%s
\\
%ls"
,
psz_dir
,
finddata
.
cFileName
);
#else
unsigned
int
i_len
=
strlen
(
finddata
.
cFileName
);
sprintf
(
psz_path
,
"%s
\\
%s"
,
psz_dir
,
finddata
.
cFileName
);
#endif
/* Skip ".", ".." */
if
(
!*
finddata
.
cFileName
||
!
strcmp
(
finddata
.
cFileName
,
"."
)
||
!
strcmp
(
finddata
.
cFileName
,
".."
)
)
{
if
(
!
FindNextFile
(
handle
,
&
finddata
)
)
break
;
continue
;
}
#ifdef UNDER_CE
if
(
GetFileAttributes
(
psz_wpath
)
&
FILE_ATTRIBUTE_DIRECTORY
)
#else
if
(
GetFileAttributes
(
psz_path
)
&
FILE_ATTRIBUTE_DIRECTORY
)
#endif
{
AllocatePluginDir
(
p_this
,
p_bank
,
psz_path
,
i_maxdepth
-
1
);
}
else
if
(
i_len
>
strlen
(
LIBEXT
)
/* We only load files ending with LIBEXT */
&&
!
strncasecmp
(
psz_path
+
strlen
(
psz_path
)
-
strlen
(
LIBEXT
),
LIBEXT
,
strlen
(
LIBEXT
)
)
)
{
WIN32_FILE_ATTRIBUTE_DATA
attrbuf
;
int64_t
i_time
=
0
,
i_size
=
0
;
#ifdef UNDER_CE
if
(
GetFileAttributesEx
(
psz_wpath
,
GetFileExInfoStandard
,
&
attrbuf
)
)
#else
if
(
GetFileAttributesEx
(
psz_path
,
GetFileExInfoStandard
,
&
attrbuf
)
)
#endif
{
i_time
=
attrbuf
.
ftLastWriteTime
.
dwHighDateTime
;
i_time
<<=
32
;
i_time
|=
attrbuf
.
ftLastWriteTime
.
dwLowDateTime
;
i_size
=
attrbuf
.
nFileSizeHigh
;
i_size
<<=
32
;
i_size
|=
attrbuf
.
nFileSizeLow
;
}
psz_file
=
psz_path
;
AllocatePluginFile
(
p_this
,
p_bank
,
psz_file
,
i_time
,
i_size
);
}
}
while
(
!
p_this
->
p_libvlc
->
b_die
&&
FindNextFile
(
handle
,
&
finddata
)
);
/* Close the directory */
FindClose
(
handle
);
#else
DIR
*
dh
=
utf8_opendir
(
psz_dir
);
if
(
dh
==
NULL
)
return
;
...
...
@@ -1128,8 +1019,6 @@ static void AllocatePluginDir( vlc_object_t *p_this, module_bank_t *p_bank,
free
(
path
);
}
closedir
(
dh
);
#endif
}
/*****************************************************************************
...
...
src/modules/os.c
View file @
401c5a7e
...
...
@@ -154,7 +154,7 @@ int module_Load( vlc_object_t *p_this, const char *psz_file,
#elif defined(HAVE_DL_WINDOWS)
wchar_t
psz_wfile
[
MAX_PATH
];
MultiByteToWideChar
(
CP_
ACP
,
0
,
psz_file
,
-
1
,
psz_wfile
,
MAX_PATH
);
MultiByteToWideChar
(
CP_
UTF8
,
0
,
psz_file
,
-
1
,
psz_wfile
,
MAX_PATH
);
#ifndef UNDER_CE
/* FIXME: this is not thread-safe -- Courmisch */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment