On 07/06/13 16:13, Petr Salinger wrote: > Package: gnome-terminal > Version: 3.8.2-1 > Severity: serious > Tags: patch > User: [email protected] > Usertags: kfreebsd > > > Hi, > > the current version fails to build on GNU/kFreeBSD. > The F_DUPFD_CLOEXEC is not widespread fcntl, see also changes between > http://pubs.opengroup.org/onlinepubs/009695399/functions/fcntl.html > http://pubs.opengroup.org/onlinepubs/9699919799/functions/fcntl.html
Seems like a POSIX.2008 addition. > Please allow also fallback variant. The patch seems fine but given that F_DUPFD_CLOEXEC has been implemented in FreeBSD[1], I wonder if the __linux__ test shouldn't be changed to a HAVE_F_DUPFD_CLOEXEC check (or to a hurd one). How long do you think it'll take for Debian's freebsd kernel to have that? I'll look at making an upload later today. Thanks for the fix! Regards, Emilio [1] http://www.freebsd.org/releases/8.4R/relnotes-detailed.html > --- src/terminal-screen.c > +++ src/terminal-screen.c > @@ -190,8 +190,20 @@ > static TerminalURLFlavour *url_regex_flavors; > static guint n_url_regexes; > > +#ifdef __linux__ > +static inline int dup_cloexec(int fd, int hint) > +{ > + return fcntl (fd, F_DUPFD_CLOEXEC, hint); > +} > +#else > +static inline int dup_cloexec(int fd, int hint) > +{ > + if ((fd = fcntl (fd, F_DUPFD, hint)) == -1) > + return -1; > + return fcntl (fd, F_SETFD, FD_CLOEXEC); > +} > + > /* See bug #697024 */ > -#ifndef __linux__ > > #undef dup3 > #define dup3 fake_dup3 > @@ -1342,7 +1355,7 @@ > for (j = 0; j < n_fds; j++) { > if (fds[j] == target_fd) { > do { > - fd = fcntl (fds[j], F_DUPFD_CLOEXEC, 10); > + fd = dup_cloexec(fds[j], 10); > } while (fd == -1 && errno == EINTR); > if (fd == -1) > _exit (127); > > _______________________________________________ > pkg-gnome-maintainers mailing list > [email protected] > http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-gnome-maintainers > -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected]

