2011/7/8 Eric Blake <eblake(a)redhat.com>:
No need to repeat common code.
* src/util/bridge.c (brInit): Use virSetCloseExec.
(brSetInterfaceUp): Prefer unsigned flags.
* src/uml/uml_driver.c (umlSetCloseExec): Delete.
(umlStartVMDaemon): Use util version instead.
---
v2: new patch
src/uml/uml_driver.c | 19 +++----------------
src/util/bridge.c | 19 +++++--------------
2 files changed, 8 insertions(+), 30 deletions(-)
diff --git a/src/util/bridge.c b/src/util/bridge.c
index 7204e64..a6b5768 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;
}
Is it guaranteed that calloc will set ENOMEM, or do we need some
gnulib module to guarantee this?
(*ctlp)->fd = fd;
@@ -599,7 +590,7 @@ brSetInterfaceUp(brControl *ctl,
int up)
{
struct ifreq ifr;
- int flags;
+ unsigned int flags;
flags is used used with ifr.ifr_flags that is signed (actually it's a
short). So I'd prefer renaming it to ifflags and keep it as int.
ACK, with that questions/comments answered/addressed.
--
Matthias Bolte
http://photron.blogspot.com