diff options
Diffstat (limited to 'src/corelib/kernel/qcore_unix_p.h')
-rw-r--r-- | src/corelib/kernel/qcore_unix_p.h | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/corelib/kernel/qcore_unix_p.h b/src/corelib/kernel/qcore_unix_p.h index 86bace3260..f78d2b9f24 100644 --- a/src/corelib/kernel/qcore_unix_p.h +++ b/src/corelib/kernel/qcore_unix_p.h @@ -55,6 +55,7 @@ #include <QtCore/private/qglobal_p.h> #include "qplatformdefs.h" #include "qatomic.h" +#include "qbytearray.h" #ifndef Q_OS_UNIX # error "qcore_unix_p.h included on a non-Unix system" @@ -102,6 +103,8 @@ struct sockaddr; QT_BEGIN_NAMESPACE +Q_DECLARE_TYPEINFO(pollfd, Q_PRIMITIVE_TYPE); + // Internal operator functions for timespecs inline timespec &normalizedTimespec(timespec &t) { @@ -183,10 +186,11 @@ static inline int qt_safe_open(const char *pathname, int flags, mode_t mode = 07 int fd; EINTR_LOOP(fd, QT_OPEN(pathname, flags, mode)); - // unknown flags are ignored, so we have no way of verifying if - // O_CLOEXEC was accepted +#ifndef O_CLOEXEC if (fd != -1) ::fcntl(fd, F_SETFD, FD_CLOEXEC); +#endif + return fd; } #undef QT_OPEN @@ -337,6 +341,22 @@ static inline pid_t qt_safe_waitpid(pid_t pid, int *status, int options) // in qelapsedtimer_mac.cpp or qtimestamp_unix.cpp timespec qt_gettime() Q_DECL_NOTHROW; void qt_nanosleep(timespec amount); +QByteArray qt_readlink(const char *path); + +/* non-static */ +inline bool qt_haveLinuxProcfs() +{ +#ifdef Q_OS_LINUX +# ifdef QT_LINUX_ALWAYS_HAVE_PROCFS + return true; +# else + static const bool present = (access("/proc/version", F_OK) == 0); + return present; +# endif +#else + return false; +#endif +} Q_CORE_EXPORT int qt_safe_poll(struct pollfd *fds, nfds_t nfds, const struct timespec *timeout_ts); |