[vlc-commits] posix: open directories with close-on-exec flag
Rémi Denis-Courmont
git at videolan.org
Mon Mar 19 21:24:18 CET 2012
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Mon Mar 19 20:38:31 2012 +0200| [7f3120af8fb80008ee5683c51c36cd5022797b8b] | committer: Rémi Denis-Courmont
posix: open directories with close-on-exec flag
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=7f3120af8fb80008ee5683c51c36cd5022797b8b
---
src/posix/filesystem.c | 16 +++++++++-------
1 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/src/posix/filesystem.c b/src/posix/filesystem.c
index 03fe5d3..5d8625f 100644
--- a/src/posix/filesystem.c
+++ b/src/posix/filesystem.c
@@ -162,15 +162,17 @@ int vlc_mkdir (const char *dirname, mode_t mode)
*/
DIR *vlc_opendir (const char *dirname)
{
- const char *local_name = ToLocale (dirname);
- if (unlikely(local_name == NULL))
- {
- errno = ENOENT;
+#ifdef O_DIRECTORY
+ int fd = vlc_open (dirname, O_RDONLY | O_DIRECTORY);
+#else /* If O_DIRECTORY is missing. fdopendir() will deal with ENOTDIR. */
+ int fd = vlc_open (dirname, O_RDONLY);
+#endif
+ if (fd == -1)
return NULL;
- }
- DIR *dir = opendir (local_name);
- LocaleFree (local_name);
+ DIR *dir = fdopendir (fd);
+ if (dir == NULL)
+ close (fd);
return dir;
}
More information about the vlc-commits
mailing list