From ff98359d51f44455b93b39a892c206c664c2858b Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Thu, 7 Jul 2011 17:42:05 -0600 Subject: [PATCH] build: don't hand-roll cloexec code No need to repeat common code. * bootstrap.conf (gnulib_modules): Import calloc-posix. * src/util/bridge.c (brInit): Use virSetCloseExec. (brSetInterfaceUp): Adjust flags name. * src/uml/uml_driver.c (umlSetCloseExec): Delete. (umlStartVMDaemon): Use util version instead. --- bootstrap.conf | 1 + src/uml/uml_driver.c | 19 +++---------------- src/util/bridge.c | 25 ++++++++----------------- 3 files changed, 12 insertions(+), 33 deletions(-) diff --git a/bootstrap.conf b/bootstrap.conf index 3c3d0e07de..2fc457e8ac 100644 --- a/bootstrap.conf +++ b/bootstrap.conf @@ -27,6 +27,7 @@ byteswap c-ctype c-strcase c-strcasestr +calloc-posix canonicalize-lgpl chown close diff --git a/src/uml/uml_driver.c b/src/uml/uml_driver.c index da91687c10..6eede55b40 100644 --- a/src/uml/uml_driver.c +++ b/src/uml/uml_driver.c @@ -114,19 +114,6 @@ static int umlOpenMonitor(struct uml_driver *driver, static int umlReadPidFile(struct uml_driver *driver, virDomainObjPtr vm); -static int umlSetCloseExec(int fd) { - int flags; - if ((flags = fcntl(fd, F_GETFD)) < 0) - goto error; - flags |= FD_CLOEXEC; - if ((fcntl(fd, F_SETFD, flags)) < 0) - goto error; - return 0; - error: - VIR_ERROR(_("Failed to set close-on-exec file descriptor flag")); - return -1; -} - static int umlStartVMDaemon(virConnectPtr conn, struct uml_driver *driver, virDomainObjPtr vm); @@ -889,9 +876,9 @@ static int umlStartVMDaemon(virConnectPtr conn, } VIR_FREE(logfile); - if (umlSetCloseExec(logfd) < 0) { - virReportSystemError(errno, - "%s", _("Unable to set VM logfile close-on-exec flag")); + if (virSetCloseExec(logfd) < 0) { + virReportSystemError(errno, "%s", + _("Unable to set VM logfile close-on-exec flag")); VIR_FORCE_CLOSE(logfd); return -1; } diff --git a/src/util/bridge.c b/src/util/bridge.c index 7204e64827..0f4b6397f3 100644 --- a/src/util/bridge.c +++ b/src/util/bridge.c @@ -72,25 +72,16 @@ int brInit(brControl **ctlp) { int fd; - int flags; if (!ctlp || *ctlp) return EINVAL; fd = socket(AF_INET, SOCK_STREAM, 0); - if (fd < 0) - return errno; - - if ((flags = fcntl(fd, F_GETFD)) < 0 || - fcntl(fd, F_SETFD, flags | FD_CLOEXEC) < 0) { - int err = errno; - VIR_FORCE_CLOSE(fd); - return err; - } - - if (VIR_ALLOC(*ctlp) < 0) { + if (fd < 0 || + virSetCloseExec(fd) < 0 || + VIR_ALLOC(*ctlp) < 0) { VIR_FORCE_CLOSE(fd); - return ENOMEM; + return errno; } (*ctlp)->fd = fd; @@ -599,7 +590,7 @@ brSetInterfaceUp(brControl *ctl, int up) { struct ifreq ifr; - int flags; + int ifflags; if (!ctl || !ifname) return EINVAL; @@ -612,10 +603,10 @@ brSetInterfaceUp(brControl *ctl, if (ioctl(ctl->fd, SIOCGIFFLAGS, &ifr) < 0) return errno; - flags = up ? (ifr.ifr_flags | IFF_UP) : (ifr.ifr_flags & ~IFF_UP); + ifflags = up ? (ifr.ifr_flags | IFF_UP) : (ifr.ifr_flags & ~IFF_UP); - if (ifr.ifr_flags != flags) { - ifr.ifr_flags = flags; + if (ifr.ifr_flags != ifflags) { + ifr.ifr_flags = ifflags; if (ioctl(ctl->fd, SIOCSIFFLAGS, &ifr) < 0) return errno; -- 2.47.2