[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