On Mon, Jun 08, 2015 at 11:37:31AM -0500, Derek Foreman wrote: > Reviewed-by: Pekka Paalanen <pekka.paala...@collabora.co.uk> > Signed-off-by: Derek Foreman <der...@osg.samsung.com>
Thanks, pushed: To ssh://git.freedesktop.org/git/wayland/weston 4a8a3a1..6bc33d6 master -> master > --- > > Nested the os_fd_set_cloexec() call so calling weston_log_file_open() multiple > times behaves as expected. > > shared/os-compatibility.c | 22 ++++++++++++++-------- > shared/os-compatibility.h | 3 +++ > src/log.c | 7 ++++++- > 3 files changed, 23 insertions(+), 9 deletions(-) > > diff --git a/shared/os-compatibility.c b/shared/os-compatibility.c > index 611e7c8..d0ff1c8 100644 > --- a/shared/os-compatibility.c > +++ b/shared/os-compatibility.c > @@ -33,8 +33,8 @@ > > #include "os-compatibility.h" > > -static int > -set_cloexec_or_close(int fd) > +int > +os_fd_set_cloexec(int fd) > { > long flags; > > @@ -43,16 +43,22 @@ set_cloexec_or_close(int fd) > > flags = fcntl(fd, F_GETFD); > if (flags == -1) > - goto err; > + return -1; > > if (fcntl(fd, F_SETFD, flags | FD_CLOEXEC) == -1) > - goto err; > + return -1; > > - return fd; > + return 0; > +} > > -err: > - close(fd); > - return -1; > +static int > +set_cloexec_or_close(int fd) > +{ > + if (os_fd_set_cloexec(fd) != 0) { > + close(fd); > + return -1; > + } > + return fd; > } > > int > diff --git a/shared/os-compatibility.h b/shared/os-compatibility.h > index 172bb7e..60ae7fd 100644 > --- a/shared/os-compatibility.h > +++ b/shared/os-compatibility.h > @@ -38,6 +38,9 @@ backtrace(void **buffer, int size) > #endif > > int > +os_fd_set_cloexec(int fd); > + > +int > os_socketpair_cloexec(int domain, int type, int protocol, int *sv); > > int > diff --git a/src/log.c b/src/log.c > index 99bbe18..0dae3b2 100644 > --- a/src/log.c > +++ b/src/log.c > @@ -33,6 +33,8 @@ > > #include "compositor.h" > > +#include "os-compatibility.h" > + > static FILE *weston_logfile = NULL; > > static int cached_tm_mday = -1; > @@ -74,8 +76,11 @@ weston_log_file_open(const char *filename) > { > wl_log_set_handler_server(custom_handler); > > - if (filename != NULL) > + if (filename != NULL) { > weston_logfile = fopen(filename, "a"); > + if (weston_logfile) > + os_fd_set_cloexec(fileno(weston_logfile)); > + } > > if (weston_logfile == NULL) > weston_logfile = stderr; > -- > 2.1.4 > > _______________________________________________ > wayland-devel mailing list > wayland-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/wayland-devel _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel