diff --git a/lib/cobalt/rtdm.c b/lib/cobalt/rtdm.c index 6b8898e7095855f8ad8b31fb7e0c51519291f4cf..176210ddc575dc01c2320496cf05ba35d217dcfd 100644 --- a/lib/cobalt/rtdm.c +++ b/lib/cobalt/rtdm.c @@ -30,6 +30,12 @@ #include #include "internal.h" +/* support for very old c libraries not supporting O_TMPFILE */ +#ifndef O_TMPFILE +#define O_TMPFILE (020000000 | 0200000) +#endif + + static inline int set_errno(int ret) { if (ret >= 0) @@ -65,7 +71,7 @@ COBALT_IMPL(int, open, (const char *path, int oflag, ...)) mode_t mode = 0; va_list ap; - if (oflag & O_CREAT) { + if ((oflag & O_CREAT) || (oflag & O_TMPFILE) == O_TMPFILE) { va_start(ap, oflag); mode = va_arg(ap, int); va_end(ap); @@ -79,7 +85,7 @@ COBALT_IMPL(int, open64, (const char *path, int oflag, ...)) mode_t mode = 0; va_list ap; - if (oflag & O_CREAT) { + if ((oflag & O_CREAT) || (oflag & O_TMPFILE) == O_TMPFILE) { va_start(ap, oflag); mode = va_arg(ap, int); va_end(ap); diff --git a/lib/cobalt/wrappers.c b/lib/cobalt/wrappers.c index 20ad63a616e362d900f3824d46e0a54495727118..323f60b92e47cd5ef23049af7dac5e3bf583d3e0 100644 --- a/lib/cobalt/wrappers.c +++ b/lib/cobalt/wrappers.c @@ -44,6 +44,11 @@ #include #include +/* support for very old c libraries not supporting O_TMPFILE */ +#ifndef O_TMPFILE +#define O_TMPFILE (020000000 | 0200000) +#endif + /* sched */ __weak int __real_pthread_setschedparam(pthread_t thread, @@ -174,7 +179,7 @@ int __real_open(const char *path, int oflag, ...) mode_t mode = 0; va_list ap; - if (oflag & O_CREAT) { + if ((oflag & O_CREAT) || (oflag & O_TMPFILE) == O_TMPFILE) { va_start(ap, oflag); mode = va_arg(ap, mode_t); va_end(ap); @@ -190,7 +195,7 @@ int __real_open64(const char *path, int oflag, ...) mode_t mode = 0; va_list ap; - if (oflag & O_CREAT) { + if ((oflag & O_CREAT) || (oflag & O_TMPFILE) == O_TMPFILE) { va_start(ap, oflag); mode = va_arg(ap, mode_t); va_end(ap);