[vlc-devel] commit: utf8_open: make third parameter optional ( Rémi Denis-Courmont )
git version control
git at videolan.org
Sat Aug 15 20:26:01 CEST 2009
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sat Aug 15 21:21:44 2009 +0300| [aee0317592c43b4fa6d9d84bc2e70968e4b93f5f] | committer: Rémi Denis-Courmont
utf8_open: make third parameter optional
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=aee0317592c43b4fa6d9d84bc2e70968e4b93f5f
---
include/vlc_charset.h | 2 +-
src/text/filesystem.c | 13 +++++++++++--
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/include/vlc_charset.h b/include/vlc_charset.h
index b8a9d4e..ab6d529 100644
--- a/include/vlc_charset.h
+++ b/include/vlc_charset.h
@@ -41,7 +41,7 @@ VLC_EXPORT( char *, ToLocale, ( const char * ) LIBVLC_USED );
VLC_EXPORT( char *, ToLocaleDup, ( const char * ) LIBVLC_USED );
/* TODO: move all of this to "vlc_fs.h" or something like that */
-VLC_EXPORT( int, utf8_open, ( const char *filename, int flags, mode_t mode ) LIBVLC_USED );
+VLC_EXPORT( int, utf8_open, ( const char *filename, int flags, ... ) LIBVLC_USED );
VLC_EXPORT( FILE *, utf8_fopen, ( const char *filename, const char *mode ) LIBVLC_USED );
VLC_EXPORT( DIR *, utf8_opendir, ( const char *dirname ) LIBVLC_USED );
VLC_EXPORT( char *, utf8_readdir, ( DIR *dir ) LIBVLC_USED );
diff --git a/src/text/filesystem.c b/src/text/filesystem.c
index cb3dc3d..6bec646 100644
--- a/src/text/filesystem.c
+++ b/src/text/filesystem.c
@@ -85,11 +85,20 @@ static int convert_path (const char *restrict path, wchar_t *restrict wpath)
*
* @param filename file path to open (with UTF-8 encoding)
* @param flags open() flags, see the C library open() documentation
- * @param mode file permissions if creating a new file
* @return a file handle on success, -1 on error (see errno).
+ * @note Contrary to standard open(), this function returns file handles
+ * with the close-on-exec flag enabled.
*/
-int utf8_open (const char *filename, int flags, mode_t mode)
+int utf8_open (const char *filename, int flags, ...)
{
+ mode_t mode = 0;
+ va_list ap;
+
+ va_start (ap, flags);
+ if (flags & O_CREAT)
+ mode = va_arg (ap, mode_t);
+ va_end (ap);
+
#ifdef UNDER_CE
/*_open translates to wchar internally on WinCE*/
return _open (filename, flags, mode);
More information about the vlc-devel
mailing list