vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Sun Apr 3 19:33:21 2011 +0300| [07594e8b43fa52db73e356a99a5713a0d2699455] | committer: Rémi Denis-Courmont
dirfd: replacement > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=07594e8b43fa52db73e356a99a5713a0d2699455 --- compat/dirfd.c | 39 +++++++++++++++++++++++++++++++++++++++ configure.ac | 2 +- include/vlc_fixups.h | 9 +++++++++ modules/access/directory.c | 7 ------- 4 files changed, 49 insertions(+), 8 deletions(-) diff --git a/compat/dirfd.c b/compat/dirfd.c new file mode 100644 index 0000000..e8784f9 --- /dev/null +++ b/compat/dirfd.c @@ -0,0 +1,39 @@ +/***************************************************************************** + * dirfd.c: POSIX dirfd replacement + ***************************************************************************** + * Copyright © 2009-2011 Rémi Denis-Courmont + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + *****************************************************************************/ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <dirent.h> +#include <errno.h> + +int dirfd (DIR *dir) +{ +#if defined (__sun__) + return dir->dd_fd; +#else + (void) dir; +# ifdef ENOTSUP + errno = ENOTSUP; +# endif + return -1; +#endif +} diff --git a/configure.ac b/configure.ac index ef885e3..fb64c18 100644 --- a/configure.ac +++ b/configure.ac @@ -553,7 +553,7 @@ need_libc=false dnl Check for usual libc functions AC_CHECK_FUNCS([daemon fcntl fdopendir fstatvfs fork getenv getpwuid_r gettimeofday isatty lstat memalign mmap openat pread posix_fadvise posix_madvise posix_memalign setlocale stricmp strnicmp uselocale]) -AC_REPLACE_FUNCS([asprintf atof atoll getcwd getdelim getpid gmtime_r lldiv localtime_r nrand48 rewind setenv strcasecmp strcasestr strdup strlcpy strncasecmp strndup strnlen strsep strtof strtok_r strtoll swab tdestroy vasprintf]) +AC_REPLACE_FUNCS([asprintf atof atoll dirfd getcwd getdelim getpid gmtime_r lldiv localtime_r nrand48 rewind setenv strcasecmp strcasestr strdup strlcpy strncasecmp strndup strnlen strsep strtof strtok_r strtoll swab tdestroy vasprintf]) AC_CHECK_FUNCS(fdatasync,, [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.]) ]) diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h index 02f0dfa..5289e98 100644 --- a/include/vlc_fixups.h +++ b/include/vlc_fixups.h @@ -65,6 +65,10 @@ typedef struct # include <sys/types.h> /* ssize_t, pid_t */ #endif +#ifndef HAVE_DIRFD +# include <dirent.h> +#endif + #ifdef __cplusplus extern "C" { #endif @@ -162,6 +166,11 @@ pid_t getpid (void); char *strtok_r(char *, const char *, char **); #endif +/* dirent.h */ +#ifndef HAVE_DIRFD +int dirfd (DIR *); +#endif + #ifdef __cplusplus } /* extern "C" */ #endif diff --git a/modules/access/directory.c b/modules/access/directory.c index 7f29547..eff8d57 100644 --- a/modules/access/directory.c +++ b/modules/access/directory.c @@ -46,13 +46,6 @@ # include <io.h> #endif -#ifdef __sun__ -static inline int dirfd (DIR *dir) -{ - return dir->dd_fd; -} -#endif - #include <vlc_fs.h> #include <vlc_url.h> #include <vlc_strings.h> _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
