qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/3] bitsized task for glib conversion
@ 2016-04-07  2:46 Wei Jiangang
  2016-04-07  2:46 ` [Qemu-devel] [PATCH 1/3] linux-user: complete omission of removing uses of strdup Wei Jiangang
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Wei Jiangang @ 2016-04-07  2:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, Wei Jiangang, peter.maydell

The series used to change basename and dirname to
g_path_get_basename() and g_path_get_dirname() respectively.

Refer to http://wiki.qemu.org/BiteSizedTasks#API_conversion

*** BLURB HERE ***

Wei Jiangang (3):
  linux-user: complete omission of removing uses of strdup
  use g_path_get_dirname instead of dirname
  use g_path_get_basename instead of basename

 fsdev/virtfs-proxy-helper.c |  6 +++++-
 hw/9pfs/9p-local.c          |  6 +++---
 hw/vfio/pci.c               |  6 ++++--
 hw/vfio/platform.c          |  6 ++++--
 linux-user/elfload.c        |  7 ++-----
 os-posix.c                  |  3 ++-
 qemu-io.c                   | 33 ++++++++++++++++++++-------------
 qemu-nbd.c                  |  4 +++-
 qga/commands-posix.c        |  4 ++--
 util/oslib-posix.c          |  4 +++-
 10 files changed, 48 insertions(+), 31 deletions(-)

-- 
1.9.3

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Qemu-devel] [PATCH 1/3] linux-user: complete omission of removing uses of strdup
  2016-04-07  2:46 [Qemu-devel] [PATCH 0/3] bitsized task for glib conversion Wei Jiangang
@ 2016-04-07  2:46 ` Wei Jiangang
  2016-07-14 12:13   ` Paolo Bonzini
  2016-04-07  2:46 ` [Qemu-devel] [PATCH 2/3] use g_path_get_dirname instead of dirname Wei Jiangang
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 6+ messages in thread
From: Wei Jiangang @ 2016-04-07  2:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, Wei Jiangang, peter.maydell

The 900cfbc just removed two unchecked uses of strdup
in fill_psinfo and missed the rest in core_dump_filename.
This patch fixes it.

Signed-off-by: Wei Jiangang <weijg.fnst@cn.fujitsu.com>
---
 linux-user/elfload.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/linux-user/elfload.c b/linux-user/elfload.c
index e47caff..6373320 100644
--- a/linux-user/elfload.c
+++ b/linux-user/elfload.c
@@ -2718,7 +2718,6 @@ static int core_dump_filename(const TaskState *ts, char *buf,
                               size_t bufsize)
 {
     char timestamp[64];
-    char *filename = NULL;
     char *base_filename = NULL;
     struct timeval tv;
     struct tm tm;
@@ -2731,14 +2730,12 @@ static int core_dump_filename(const TaskState *ts, char *buf,
         return (-1);
     }
 
-    filename = strdup(ts->bprm->filename);
-    base_filename = strdup(basename(filename));
+    base_filename = g_path_get_basename(ts->bprm->filename);
     (void) strftime(timestamp, sizeof (timestamp), "%Y%m%d-%H%M%S",
                     localtime_r(&tv.tv_sec, &tm));
     (void) snprintf(buf, bufsize, "qemu_%s_%s_%d.core",
                     base_filename, timestamp, (int)getpid());
-    free(base_filename);
-    free(filename);
+    g_free(base_filename);
 
     return (0);
 }
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Qemu-devel] [PATCH 2/3] use g_path_get_dirname instead of dirname
  2016-04-07  2:46 [Qemu-devel] [PATCH 0/3] bitsized task for glib conversion Wei Jiangang
  2016-04-07  2:46 ` [Qemu-devel] [PATCH 1/3] linux-user: complete omission of removing uses of strdup Wei Jiangang
@ 2016-04-07  2:46 ` Wei Jiangang
  2016-04-07  2:46 ` [Qemu-devel] [PATCH 3/3] use g_path_get_basename instead of basename Wei Jiangang
  2016-04-12 11:05 ` [Qemu-devel] [PATCH 0/3] bitsized task for glib conversion Wei, Jiangang
  3 siblings, 0 replies; 6+ messages in thread
From: Wei Jiangang @ 2016-04-07  2:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, Wei Jiangang, peter.maydell

Use g_path_get_basename to get the directory components of
a file name, and free its return when no longer needed.

Signed-off-by: Wei Jiangang <weijg.fnst@cn.fujitsu.com>
---
 os-posix.c         | 3 ++-
 util/oslib-posix.c | 4 +++-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/os-posix.c b/os-posix.c
index 107fde3..bcaef17 100644
--- a/os-posix.c
+++ b/os-posix.c
@@ -90,7 +90,7 @@ char *os_find_datadir(void)
     if (exec_dir == NULL) {
         return NULL;
     }
-    dir = dirname(exec_dir);
+    dir = g_path_get_dirname(exec_dir);
 
     max_len = strlen(dir) +
         MAX(strlen(SHARE_SUFFIX), strlen(BUILD_SUFFIX)) + 1;
@@ -104,6 +104,7 @@ char *os_find_datadir(void)
         }
     }
 
+    g_free(dir);
     g_free(exec_dir);
     return res;
 }
diff --git a/util/oslib-posix.c b/util/oslib-posix.c
index 20ca141..1d3248c 100644
--- a/util/oslib-posix.c
+++ b/util/oslib-posix.c
@@ -312,9 +312,11 @@ void qemu_init_exec_dir(const char *argv0)
             return;
         }
     }
-    dir = dirname(p);
+    dir = g_path_get_dirname(p);
 
     pstrcpy(exec_dir, sizeof(exec_dir), dir);
+
+    g_free(dir);
 }
 
 char *qemu_get_exec_dir(void)
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Qemu-devel] [PATCH 3/3] use g_path_get_basename instead of basename
  2016-04-07  2:46 [Qemu-devel] [PATCH 0/3] bitsized task for glib conversion Wei Jiangang
  2016-04-07  2:46 ` [Qemu-devel] [PATCH 1/3] linux-user: complete omission of removing uses of strdup Wei Jiangang
  2016-04-07  2:46 ` [Qemu-devel] [PATCH 2/3] use g_path_get_dirname instead of dirname Wei Jiangang
@ 2016-04-07  2:46 ` Wei Jiangang
  2016-04-12 11:05 ` [Qemu-devel] [PATCH 0/3] bitsized task for glib conversion Wei, Jiangang
  3 siblings, 0 replies; 6+ messages in thread
From: Wei Jiangang @ 2016-04-07  2:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, Wei Jiangang, peter.maydell

Using g_strdup and g_basename to get the last component
of filename is not the best solution,
Only g_path_get_basename can achive the purpose we want.

Signed-off-by: Wei Jiangang <weijg.fnst@cn.fujitsu.com>
---
 fsdev/virtfs-proxy-helper.c |  6 +++++-
 hw/9pfs/9p-local.c          |  6 +++---
 hw/vfio/pci.c               |  6 ++++--
 hw/vfio/platform.c          |  6 ++++--
 qemu-io.c                   | 33 ++++++++++++++++++++-------------
 qemu-nbd.c                  |  4 +++-
 qga/commands-posix.c        |  4 ++--
 7 files changed, 41 insertions(+), 24 deletions(-)

diff --git a/fsdev/virtfs-proxy-helper.c b/fsdev/virtfs-proxy-helper.c
index 54f7ad1..a0d6118 100644
--- a/fsdev/virtfs-proxy-helper.c
+++ b/fsdev/virtfs-proxy-helper.c
@@ -787,6 +787,8 @@ error:
 
 static void usage(char *prog)
 {
+    char *base_filename = g_path_get_basename(prog);
+
     fprintf(stderr, "usage: %s\n"
             " -p|--path <path> 9p path to export\n"
             " {-f|--fd <socket-descriptor>} socket file descriptor to be used\n"
@@ -795,7 +797,9 @@ static void usage(char *prog)
             " access to this socket\n"
             " \tNote: -s & -f can not be used together\n"
             " [-n|--nodaemon] Run as a normal program\n",
-            basename(prog));
+            base_filename);
+
+    g_free(base_filename);
 }
 
 static int process_reply(int sock, int type,
diff --git a/hw/9pfs/9p-local.c b/hw/9pfs/9p-local.c
index 16f45f4..4e6c17a 100644
--- a/hw/9pfs/9p-local.c
+++ b/hw/9pfs/9p-local.c
@@ -160,17 +160,17 @@ static int local_create_mapped_attr_dir(FsContext *ctx, const char *path)
 {
     int err;
     char *attr_dir;
-    char *tmp_path = g_strdup(path);
+    char *base_filename = g_path_get_basename(path);
 
     attr_dir = g_strdup_printf("%s/%s/%s",
-             ctx->fs_root, dirname(tmp_path), VIRTFS_META_DIR);
+             ctx->fs_root, base_filename, VIRTFS_META_DIR);
 
     err = mkdir(attr_dir, 0700);
     if (err < 0 && errno == EEXIST) {
         err = 0;
     }
     g_free(attr_dir);
-    g_free(tmp_path);
+    g_free(base_filename);
     return err;
 }
 
diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
index d091d8c..d23b871 100644
--- a/hw/vfio/pci.c
+++ b/hw/vfio/pci.c
@@ -2413,7 +2413,7 @@ static int vfio_initfn(PCIDevice *pdev)
         return -errno;
     }
 
-    vdev->vbasedev.name = g_strdup(basename(vdev->vbasedev.sysfsdev));
+    vdev->vbasedev.name = g_path_get_basename(vdev->vbasedev.sysfsdev);
     vdev->vbasedev.ops = &vfio_pci_ops;
     vdev->vbasedev.type = VFIO_DEVICE_TYPE_PCI;
 
@@ -2428,11 +2428,13 @@ static int vfio_initfn(PCIDevice *pdev)
 
     group_path[len] = 0;
 
-    group_name = basename(group_path);
+    group_name = g_path_get_basename(group_path);
     if (sscanf(group_name, "%d", &groupid) != 1) {
         error_report("vfio: error reading %s: %m", group_path);
+        g_free(group_name);
         return -errno;
     }
+    g_free(group_name);
 
     trace_vfio_initfn(vdev->vbasedev.name, groupid);
 
diff --git a/hw/vfio/platform.c b/hw/vfio/platform.c
index 1798a00..47134db 100644
--- a/hw/vfio/platform.c
+++ b/hw/vfio/platform.c
@@ -557,7 +557,7 @@ static int vfio_base_device_init(VFIODevice *vbasedev)
     /* @sysfsdev takes precedence over @host */
     if (vbasedev->sysfsdev) {
         g_free(vbasedev->name);
-        vbasedev->name = g_strdup(basename(vbasedev->sysfsdev));
+        vbasedev->name = g_path_get_basename(vbasedev->sysfsdev);
     } else {
         if (!vbasedev->name || strchr(vbasedev->name, '/')) {
             return -EINVAL;
@@ -584,11 +584,13 @@ static int vfio_base_device_init(VFIODevice *vbasedev)
 
     group_path[len] = 0;
 
-    group_name = basename(group_path);
+    group_name = g_path_get_basename(group_path);
     if (sscanf(group_name, "%d", &groupid) != 1) {
         error_report("vfio: error reading %s: %m", group_path);
+        g_free(group_name);
         return -errno;
     }
+    g_free(group_name);
 
     trace_vfio_platform_base_device_init(vbasedev->name, groupid);
 
diff --git a/qemu-io.c b/qemu-io.c
index 0a738f1..2f5c616 100644
--- a/qemu-io.c
+++ b/qemu-io.c
@@ -249,6 +249,12 @@ static char *get_prompt(void)
     return prompt;
 }
 
+static void cleanup_and_exit(int status)
+{
+    g_free(progname);
+    exit(status);
+}
+
 static void GCC_FMT_ATTR(2, 3) readline_printf_func(void *opaque,
                                                     const char *fmt, ...)
 {
@@ -440,7 +446,7 @@ int main(int argc, char **argv)
     signal(SIGPIPE, SIG_IGN);
 #endif
 
-    progname = basename(argv[0]);
+    progname = g_path_get_basename(argv[0]);
     qemu_init_exec_dir(argv[0]);
 
     module_call_init(MODULE_INIT_QOM);
@@ -459,7 +465,7 @@ int main(int argc, char **argv)
         case 'd':
             if (bdrv_parse_discard_flags(optarg, &flags) < 0) {
                 error_report("Invalid discard option: %s", optarg);
-                exit(1);
+                cleanup_and_exit(1);
             }
             break;
         case 'f':
@@ -480,26 +486,26 @@ int main(int argc, char **argv)
         case 't':
             if (bdrv_parse_cache_mode(optarg, &flags, &writethrough) < 0) {
                 error_report("Invalid cache option: %s", optarg);
-                exit(1);
+                cleanup_and_exit(1);
             }
             break;
         case 'T':
             if (!trace_init_backends()) {
-                exit(1); /* error message will have been printed */
+                cleanup_and_exit(1); /* error message will have been printed */
             }
             break;
         case 'V':
             printf("%s version %s\n", progname, QEMU_VERSION);
-            exit(0);
+            cleanup_and_exit(0);
         case 'h':
             usage(progname);
-            exit(0);
+            cleanup_and_exit(0);
         case OPTION_OBJECT: {
             QemuOpts *qopts;
             qopts = qemu_opts_parse_noisily(&qemu_object_opts,
                                             optarg, true);
             if (!qopts) {
-                exit(1);
+                cleanup_and_exit(1);
             }
         }   break;
         case OPTION_IMAGE_OPTS:
@@ -507,30 +513,30 @@ int main(int argc, char **argv)
             break;
         default:
             usage(progname);
-            exit(1);
+            cleanup_and_exit(1);
         }
     }
 
     if ((argc - optind) > 1) {
         usage(progname);
-        exit(1);
+        cleanup_and_exit(1);
     }
 
     if (format && imageOpts) {
         error_report("--image-opts and -f are mutually exclusive");
-        exit(1);
+        cleanup_and_exit(1);
     }
 
     if (qemu_init_main_loop(&local_error)) {
         error_report_err(local_error);
-        exit(1);
+        cleanup_and_exit(1);
     }
 
     if (qemu_opts_foreach(&qemu_object_opts,
                           user_creatable_add_opts_foreach,
                           NULL, &local_error)) {
         error_report_err(local_error);
-        exit(1);
+        cleanup_and_exit(1);
     }
 
     /* initialize commands */
@@ -557,7 +563,7 @@ int main(int argc, char **argv)
             QemuOpts *qopts = NULL;
             qopts = qemu_opts_parse_noisily(&file_opts, argv[optind], false);
             if (!qopts) {
-                exit(1);
+                cleanup_and_exit(1);
             }
             opts = qemu_opts_to_qdict(qopts, NULL);
             openfile(NULL, flags, writethrough, opts);
@@ -578,5 +584,6 @@ int main(int argc, char **argv)
 
     blk_unref(qemuio_blk);
     g_free(readline_state);
+    g_free(progname);
     return 0;
 }
diff --git a/qemu-nbd.c b/qemu-nbd.c
index ca4a724..c54d82f 100644
--- a/qemu-nbd.c
+++ b/qemu-nbd.c
@@ -808,7 +808,9 @@ int main(int argc, char **argv)
 
     if (device != NULL && sockpath == NULL) {
         sockpath = g_malloc(128);
-        snprintf(sockpath, 128, SOCKET_PATH, basename(device));
+        char *base_filename = g_path_get_basename(device);
+        snprintf(sockpath, 128, SOCKET_PATH, base_filename);
+        g_free(base_filename);
     }
 
     saddr = nbd_build_socket_address(sockpath, bindto, port);
diff --git a/qga/commands-posix.c b/qga/commands-posix.c
index 2ae3725..cc8736b 100644
--- a/qga/commands-posix.c
+++ b/qga/commands-posix.c
@@ -805,7 +805,7 @@ static char *get_pci_driver(char const *syspath, int pathlen, Error **errp)
     len = readlink(dpath, buf, sizeof(buf) - 1);
     if (len != -1) {
         buf[len] = 0;
-        driver = g_strdup(basename(buf));
+        driver = g_path_get_basename(buf);
     }
     g_free(dpath);
     g_free(path);
@@ -1048,7 +1048,7 @@ static void build_guest_fsinfo_for_device(char const *devpath,
     }
 
     if (!fs->name) {
-        fs->name = g_strdup(basename(syspath));
+        fs->name = g_path_get_basename(syspath);
     }
 
     g_debug("  parse sysfs path '%s'", syspath);
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] [PATCH 0/3] bitsized task for glib conversion
  2016-04-07  2:46 [Qemu-devel] [PATCH 0/3] bitsized task for glib conversion Wei Jiangang
                   ` (2 preceding siblings ...)
  2016-04-07  2:46 ` [Qemu-devel] [PATCH 3/3] use g_path_get_basename instead of basename Wei Jiangang
@ 2016-04-12 11:05 ` Wei, Jiangang
  3 siblings, 0 replies; 6+ messages in thread
From: Wei, Jiangang @ 2016-04-12 11:05 UTC (permalink / raw)
  To: qemu-devel@nongnu.org; +Cc: pbonzini@redhat.com, peter.maydell@linaro.org

ping...
Any comments? Thanks in advance.
On Thu, 2016-04-07 at 10:46 +0800, Wei Jiangang wrote:
> The series used to change basename and dirname to
> g_path_get_basename() and g_path_get_dirname() respectively.
> 
> Refer to http://wiki.qemu.org/BiteSizedTasks#API_conversion
> 
> *** BLURB HERE ***
> 
> Wei Jiangang (3):
>   linux-user: complete omission of removing uses of strdup
>   use g_path_get_dirname instead of dirname
>   use g_path_get_basename instead of basename
> 
>  fsdev/virtfs-proxy-helper.c |  6 +++++-
>  hw/9pfs/9p-local.c          |  6 +++---
>  hw/vfio/pci.c               |  6 ++++--
>  hw/vfio/platform.c          |  6 ++++--
>  linux-user/elfload.c        |  7 ++-----
>  os-posix.c                  |  3 ++-
>  qemu-io.c                   | 33 ++++++++++++++++++++-------------
>  qemu-nbd.c                  |  4 +++-
>  qga/commands-posix.c        |  4 ++--
>  util/oslib-posix.c          |  4 +++-
>  10 files changed, 48 insertions(+), 31 deletions(-)
> 




^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] [PATCH 1/3] linux-user: complete omission of removing uses of strdup
  2016-04-07  2:46 ` [Qemu-devel] [PATCH 1/3] linux-user: complete omission of removing uses of strdup Wei Jiangang
@ 2016-07-14 12:13   ` Paolo Bonzini
  0 siblings, 0 replies; 6+ messages in thread
From: Paolo Bonzini @ 2016-07-14 12:13 UTC (permalink / raw)
  To: Wei Jiangang, qemu-devel; +Cc: peter.maydell, Riku Voipio

On 07/04/2016 04:46, Wei Jiangang wrote:
> The 900cfbc just removed two unchecked uses of strdup
> in fill_psinfo and missed the rest in core_dump_filename.
> This patch fixes it.
> 
> Signed-off-by: Wei Jiangang <weijg.fnst@cn.fujitsu.com>
> ---
>  linux-user/elfload.c | 7 ++-----
>  1 file changed, 2 insertions(+), 5 deletions(-)
> 
> diff --git a/linux-user/elfload.c b/linux-user/elfload.c
> index e47caff..6373320 100644
> --- a/linux-user/elfload.c
> +++ b/linux-user/elfload.c
> @@ -2718,7 +2718,6 @@ static int core_dump_filename(const TaskState *ts, char *buf,
>                                size_t bufsize)
>  {
>      char timestamp[64];
> -    char *filename = NULL;
>      char *base_filename = NULL;
>      struct timeval tv;
>      struct tm tm;
> @@ -2731,14 +2730,12 @@ static int core_dump_filename(const TaskState *ts, char *buf,
>          return (-1);
>      }
>  
> -    filename = strdup(ts->bprm->filename);
> -    base_filename = strdup(basename(filename));
> +    base_filename = g_path_get_basename(ts->bprm->filename);
>      (void) strftime(timestamp, sizeof (timestamp), "%Y%m%d-%H%M%S",
>                      localtime_r(&tv.tv_sec, &tm));
>      (void) snprintf(buf, bufsize, "qemu_%s_%s_%d.core",
>                      base_filename, timestamp, (int)getpid());
> -    free(base_filename);
> -    free(filename);
> +    g_free(base_filename);
>  
>      return (0);
>  }
> 

This patch fell through the cracks, I think.

Paolo

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-07-14 12:13 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-07  2:46 [Qemu-devel] [PATCH 0/3] bitsized task for glib conversion Wei Jiangang
2016-04-07  2:46 ` [Qemu-devel] [PATCH 1/3] linux-user: complete omission of removing uses of strdup Wei Jiangang
2016-07-14 12:13   ` Paolo Bonzini
2016-04-07  2:46 ` [Qemu-devel] [PATCH 2/3] use g_path_get_dirname instead of dirname Wei Jiangang
2016-04-07  2:46 ` [Qemu-devel] [PATCH 3/3] use g_path_get_basename instead of basename Wei Jiangang
2016-04-12 11:05 ` [Qemu-devel] [PATCH 0/3] bitsized task for glib conversion Wei, Jiangang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).