From: Michael Jeanson Date: Wed, 14 Oct 2015 21:05:24 +0000 (-0400) Subject: Port: Add Solaris dirent compat X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=commitdiff_plain;h=5a2451c97bd93d882a37fdd6e67ba4a82231a710 Port: Add Solaris dirent compat Signed-off-by: Michael Jeanson Signed-off-by: Jérémie Galarneau --- diff --git a/configure.ac b/configure.ac index c922e3224..5d286beb0 100644 --- a/configure.ac +++ b/configure.ac @@ -111,7 +111,7 @@ AC_CHECK_FUNCS([ \ gethostbyname gethostname getpagesize localtime_r memchr memset \ mkdir munmap putenv realpath rmdir socket strchr strcspn strdup \ strncasecmp strndup strnlen strpbrk strrchr strstr strtol strtoul \ - strtoull \ + strtoull dirfd \ ]) # Babeltrace viewer check diff --git a/src/common/compat/Makefile.am b/src/common/compat/Makefile.am index b3973847d..69e2dc590 100644 --- a/src/common/compat/Makefile.am +++ b/src/common/compat/Makefile.am @@ -8,6 +8,6 @@ else COMPAT=compat-poll.c endif -libcompat_la_SOURCES = poll.h fcntl.h endian.h mman.h \ +libcompat_la_SOURCES = poll.h fcntl.h endian.h mman.h dirent.h \ socket.h compat-fcntl.c uuid.h tid.h \ getenv.h string.h prctl.h paths.h $(COMPAT) diff --git a/src/common/compat/dirent.h b/src/common/compat/dirent.h new file mode 100644 index 000000000..d3c73a6d3 --- /dev/null +++ b/src/common/compat/dirent.h @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2015 Michael Jeanson + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#ifndef _COMPAT_DIRENT_H +#define _COMPAT_DIRENT_H + +#include + +#ifdef HAVE_DIRFD +static inline +int lttng_dirfd(DIR *dir) { + return dirfd(dir); +} +#else +# ifndef __XOPEN_OR_POSIX +static inline +int lttng_dirfd(DIR *dir) { + return dir->dd_fd; +} +# else +static inline +int lttng_dirfd(DIR *dir) { + return dir->d_fd; +} +# endif +#endif + +#endif /* _COMPAT_DIRENT_H */ diff --git a/src/common/utils.c b/src/common/utils.c index b9af7b9da..e3f1bf7e6 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -30,12 +30,12 @@ #include #include #include -#include #include #include #include #include +#include #include "utils.h" #include "defaults.h" @@ -1212,9 +1212,9 @@ int utils_recursive_rmdir(const char *path) PERROR("Cannot open '%s' path", path); return -1; } - dir_fd = dirfd(dir); + dir_fd = lttng_dirfd(dir); if (dir_fd < 0) { - PERROR("dirfd"); + PERROR("lttng_dirfd"); return -1; }