diff mbox

[1/2] osdep: Introduce qemu_dup

Message ID 20160622080211.7126-2-famz@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Fam Zheng June 22, 2016, 8:02 a.m. UTC
And use it in qemu_dup_flags.

Signed-off-by: Fam Zheng <famz@redhat.com>
---
 include/qemu/osdep.h |  3 +++
 util/osdep.c         | 23 +++++++++++++++--------
 2 files changed, 18 insertions(+), 8 deletions(-)

Comments

Kevin Wolf June 22, 2016, 12:27 p.m. UTC | #1
Am 22.06.2016 um 10:02 hat Fam Zheng geschrieben:
> And use it in qemu_dup_flags.
> 
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  include/qemu/osdep.h |  3 +++
>  util/osdep.c         | 23 +++++++++++++++--------
>  2 files changed, 18 insertions(+), 8 deletions(-)
> 
> diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
> index e63da28..7361006 100644
> --- a/include/qemu/osdep.h
> +++ b/include/qemu/osdep.h
> @@ -278,6 +278,9 @@ int qemu_madvise(void *addr, size_t len, int advice);
>  
>  int qemu_open(const char *name, int flags, ...);
>  int qemu_close(int fd);
> +#ifndef _WIN32
> +int qemu_dup(int fd);
> +#endif
>  
>  #if defined(__HAIKU__) && defined(__i386__)
>  #define FMT_pid "%ld"
> diff --git a/util/osdep.c b/util/osdep.c
> index ff004e8..c746e9f 100644
> --- a/util/osdep.c
> +++ b/util/osdep.c
> @@ -83,14 +83,7 @@ static int qemu_dup_flags(int fd, int flags)
>      int serrno;
>      int dup_flags;
>  
> -#ifdef F_DUPFD_CLOEXEC
> -    ret = fcntl(fd, F_DUPFD_CLOEXEC, 0);
> -#else
> -    ret = dup(fd);
> -    if (ret != -1) {
> -        qemu_set_cloexec(ret);
> -    }
> -#endif
> +    ret = qemu_dup(fd);
>      if (ret == -1) {
>          goto fail;
>      }
> @@ -129,6 +122,20 @@ fail:
>      return -1;
>  }
>  
> +int qemu_dup(int fd)
> +{
> +    int r;

Why the rename? (Not necessarily objecting, just curious.)

> +#ifdef F_DUPFD_CLOEXEC
> +    r = fcntl(fd, F_DUPFD_CLOEXEC, 0);
> +#else
> +    r = dup(fd);
> +    if (r != -1) {
> +        qemu_set_cloexec(raw_s->fd);

This won't compile.

Kevin
Fam Zheng June 22, 2016, 12:38 p.m. UTC | #2
On Wed, 06/22 14:27, Kevin Wolf wrote:
> > diff --git a/util/osdep.c b/util/osdep.c
> > index ff004e8..c746e9f 100644
> > --- a/util/osdep.c
> > +++ b/util/osdep.c
> > @@ -83,14 +83,7 @@ static int qemu_dup_flags(int fd, int flags)
> >      int serrno;
> >      int dup_flags;
> >  
> > -#ifdef F_DUPFD_CLOEXEC
> > -    ret = fcntl(fd, F_DUPFD_CLOEXEC, 0);
> > -#else
> > -    ret = dup(fd);
> > -    if (ret != -1) {
> > -        qemu_set_cloexec(ret);
> > -    }
> > -#endif
> > +    ret = qemu_dup(fd);
> >      if (ret == -1) {
> >          goto fail;
> >      }
> > @@ -129,6 +122,20 @@ fail:
> >      return -1;
> >  }
> >  
> > +int qemu_dup(int fd)
> > +{
> > +    int r;
> 
> Why the rename? (Not necessarily objecting, just curious.)

Obviously I should have copied from qemu_dup_flags instead of
raw_reopen_prepare. :(

> 
> > +#ifdef F_DUPFD_CLOEXEC
> > +    r = fcntl(fd, F_DUPFD_CLOEXEC, 0);
> > +#else
> > +    r = dup(fd);
> > +    if (r != -1) {
> > +        qemu_set_cloexec(raw_s->fd);
> 
> This won't compile.

Will fix.

Fam
Eric Blake June 22, 2016, 3:18 p.m. UTC | #3
On 06/22/2016 02:02 AM, Fam Zheng wrote:
> And use it in qemu_dup_flags.
> 
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  include/qemu/osdep.h |  3 +++
>  util/osdep.c         | 23 +++++++++++++++--------
>  2 files changed, 18 insertions(+), 8 deletions(-)

> +int qemu_dup(int fd)
> +{
> +    int r;
> +#ifdef F_DUPFD_CLOEXEC
> +    r = fcntl(fd, F_DUPFD_CLOEXEC, 0);
> +#else
> +    r = dup(fd);
> +    if (r != -1) {
> +        qemu_set_cloexec(raw_s->fd);

Uhh, don't you mean s/raw_s->fd/r/ ?

> +    }
> +#endif
> +    return r;
> +}
> +
>  static int qemu_parse_fdset(const char *param)
>  {
>      return qemu_parse_fd(param);
>
diff mbox

Patch

diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
index e63da28..7361006 100644
--- a/include/qemu/osdep.h
+++ b/include/qemu/osdep.h
@@ -278,6 +278,9 @@  int qemu_madvise(void *addr, size_t len, int advice);
 
 int qemu_open(const char *name, int flags, ...);
 int qemu_close(int fd);
+#ifndef _WIN32
+int qemu_dup(int fd);
+#endif
 
 #if defined(__HAIKU__) && defined(__i386__)
 #define FMT_pid "%ld"
diff --git a/util/osdep.c b/util/osdep.c
index ff004e8..c746e9f 100644
--- a/util/osdep.c
+++ b/util/osdep.c
@@ -83,14 +83,7 @@  static int qemu_dup_flags(int fd, int flags)
     int serrno;
     int dup_flags;
 
-#ifdef F_DUPFD_CLOEXEC
-    ret = fcntl(fd, F_DUPFD_CLOEXEC, 0);
-#else
-    ret = dup(fd);
-    if (ret != -1) {
-        qemu_set_cloexec(ret);
-    }
-#endif
+    ret = qemu_dup(fd);
     if (ret == -1) {
         goto fail;
     }
@@ -129,6 +122,20 @@  fail:
     return -1;
 }
 
+int qemu_dup(int fd)
+{
+    int r;
+#ifdef F_DUPFD_CLOEXEC
+    r = fcntl(fd, F_DUPFD_CLOEXEC, 0);
+#else
+    r = dup(fd);
+    if (r != -1) {
+        qemu_set_cloexec(raw_s->fd);
+    }
+#endif
+    return r;
+}
+
 static int qemu_parse_fdset(const char *param)
 {
     return qemu_parse_fd(param);