* [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
* 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
* [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
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).