From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57305) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bkYHw-0003GA-I7 for qemu-devel@nongnu.org; Thu, 15 Sep 2016 11:09:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bkYHq-0000vj-Rh for qemu-devel@nongnu.org; Thu, 15 Sep 2016 11:09:19 -0400 Received: from 5.mo177.mail-out.ovh.net ([46.105.39.154]:58445) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bkYHq-0000v3-Ge for qemu-devel@nongnu.org; Thu, 15 Sep 2016 11:09:14 -0400 Received: from player699.ha.ovh.net (b9.ovh.net [213.186.33.59]) by mo177.mail-out.ovh.net (Postfix) with ESMTP id B52D4100453B for ; Thu, 15 Sep 2016 17:09:13 +0200 (CEST) References: <147394943723.684.13967719989878111420.stgit@bahia> <147394946678.684.4033631335977230764.stgit@bahia> From: =?UTF-8?Q?C=c3=a9dric_Le_Goater?= Message-ID: <16c125fb-b380-b0ac-2e90-b2b853e93500@kaod.org> Date: Thu, 15 Sep 2016 17:09:08 +0200 MIME-Version: 1.0 In-Reply-To: <147394946678.684.4033631335977230764.stgit@bahia> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH 4/4] 9pfs: introduce v9fs_path_sprintf() helper List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Greg Kurz , qemu-devel@nongnu.org Cc: "Aneesh Kumar K.V" On 09/15/2016 04:24 PM, Greg Kurz wrote: > This helper is similar to v9fs_string_sprintf(), but it includes the > terminating NUL character in the size field. NULL > This is to avoid doing v9fs_string_sprintf((V9fsString *) &path) and > then bumping the size. >=20 > Affected users are changed to use this new helper. Reviewed-by: C=C3=A9dric Le Goater =20 > Signed-off-by: Greg Kurz > --- > hw/9pfs/9p-local.c | 7 ++----- > hw/9pfs/9p-proxy.c | 7 ++----- > hw/9pfs/9p.c | 19 ++++++++++++++++--- > hw/9pfs/9p.h | 1 + > 4 files changed, 21 insertions(+), 13 deletions(-) >=20 > diff --git a/hw/9pfs/9p-local.c b/hw/9pfs/9p-local.c > index 3f271fcbd2c5..845675e7a1bb 100644 > --- a/hw/9pfs/9p-local.c > +++ b/hw/9pfs/9p-local.c > @@ -1058,17 +1058,14 @@ static int local_lremovexattr(FsContext *ctx, V= 9fsPath *fs_path, > =20 > static int local_name_to_path(FsContext *ctx, V9fsPath *dir_path, > const char *name, V9fsPath *target) > { > if (dir_path) { > - v9fs_string_sprintf((V9fsString *)target, "%s/%s", > - dir_path->data, name); > + v9fs_path_sprintf(target, "%s/%s", dir_path->data, name); > } else { > - v9fs_string_sprintf((V9fsString *)target, "%s", name); > + v9fs_path_sprintf(target, "%s", name); > } > - /* Bump the size for including terminating NULL */ > - target->size++; > return 0; > } > =20 > static int local_renameat(FsContext *ctx, V9fsPath *olddir, > const char *old_name, V9fsPath *newdir, > diff --git a/hw/9pfs/9p-proxy.c b/hw/9pfs/9p-proxy.c > index d091564b6fd2..f2417b7fd73d 100644 > --- a/hw/9pfs/9p-proxy.c > +++ b/hw/9pfs/9p-proxy.c > @@ -1021,17 +1021,14 @@ static int proxy_lremovexattr(FsContext *ctx, V= 9fsPath *fs_path, > =20 > static int proxy_name_to_path(FsContext *ctx, V9fsPath *dir_path, > const char *name, V9fsPath *target) > { > if (dir_path) { > - v9fs_string_sprintf((V9fsString *)target, "%s/%s", > - dir_path->data, name); > + v9fs_path_sprintf(target, "%s/%s", dir_path->data, name); > } else { > - v9fs_string_sprintf((V9fsString *)target, "%s", name); > + v9fs_path_sprintf(target, "%s", name); > } > - /* Bump the size for including terminating NULL */ > - target->size++; > return 0; > } > =20 > static int proxy_renameat(FsContext *ctx, V9fsPath *olddir, > const char *old_name, V9fsPath *newdir, > diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c > index d8f48ca76c47..639f93930285 100644 > --- a/hw/9pfs/9p.c > +++ b/hw/9pfs/9p.c > @@ -10,10 +10,11 @@ > * the COPYING file in the top-level directory. > * > */ > =20 > #include "qemu/osdep.h" > +#include > #include "hw/virtio/virtio.h" > #include "qapi/error.h" > #include "qemu/error-report.h" > #include "qemu/iov.h" > #include "qemu/sockets.h" > @@ -177,10 +178,24 @@ void v9fs_path_free(V9fsPath *path) > g_free(path->data); > path->data =3D NULL; > path->size =3D 0; > } > =20 > + > +void GCC_FMT_ATTR(2, 3) > +v9fs_path_sprintf(V9fsPath *path, const char *fmt, ...) > +{ > + va_list ap; > + > + v9fs_path_free(path); > + > + va_start(ap, fmt); > + /* Bump the size for including terminating NULL */ > + path->size =3D g_vasprintf(&path->data, fmt, ap) + 1; > + va_end(ap); > +} > + > void v9fs_path_copy(V9fsPath *lhs, V9fsPath *rhs) > { > v9fs_path_free(lhs); > lhs->data =3D g_malloc(rhs->size); > memcpy(lhs->data, rhs->data, rhs->size); > @@ -915,14 +930,12 @@ static void print_sg(struct iovec *sg, int cnt) > static void v9fs_fix_path(V9fsPath *dst, V9fsPath *src, int len) > { > V9fsPath str; > v9fs_path_init(&str); > v9fs_path_copy(&str, dst); > - v9fs_string_sprintf((V9fsString *)dst, "%s%s", src->data, str.data= +len); > + v9fs_path_sprintf(dst, "%s%s", src->data, str.data + len); > v9fs_path_free(&str); > - /* +1 to include terminating NULL */ > - dst->size++; > } > =20 > static inline bool is_ro_export(FsContext *ctx) > { > return ctx->export_flags & V9FS_RDONLY; > diff --git a/hw/9pfs/9p.h b/hw/9pfs/9p.h > index a38603398ef5..d539d2ebe9c0 100644 > --- a/hw/9pfs/9p.h > +++ b/hw/9pfs/9p.h > @@ -325,10 +325,11 @@ static inline uint8_t v9fs_request_cancelled(V9fs= PDU *pdu) > } > =20 > extern void v9fs_reclaim_fd(V9fsPDU *pdu); > extern void v9fs_path_init(V9fsPath *path); > extern void v9fs_path_free(V9fsPath *path); > +extern void v9fs_path_sprintf(V9fsPath *path, const char *fmt, ...); > extern void v9fs_path_copy(V9fsPath *lhs, V9fsPath *rhs); > extern int v9fs_name_to_path(V9fsState *s, V9fsPath *dirpath, > const char *name, V9fsPath *path); > extern int v9fs_device_realize_common(V9fsState *s, Error **errp); > extern void v9fs_device_unrealize_common(V9fsState *s, Error **errp); >=20 >=20