I added 4 casts from time_t to unsigned long long int in the libxl_sprintf functions, so there is no warning at compilation time (and no failing with -Werror). The casting format has been discussed, and since the long long int is preferable, the syntax of the libxl_sprintf second argument has been changed. Signed-off-by: 7heo <7heo@7heo.tk> --- tools/libxl/libxl_create.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index cb9c822..be1b446 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -350,7 +350,7 @@ int libxl__domain_build(libxl__gc *gc, vments[2] = "image/ostype"; vments[3] = "hvm"; vments[4] = "start_time"; - vments[5] = libxl__sprintf(gc, "%lu.%02d", start_time.tv_sec,(int)start_time.tv_usec/10000); + vments[5] = libxl__sprintf(gc, "%llu.%02d", (unsigned long long int)(start_time.tv_sec),(int)start_time.tv_usec/10000); localents = libxl__calloc(gc, 7, sizeof(char *)); localents[0] = "platform/acpi"; @@ -373,7 +373,7 @@ int libxl__domain_build(libxl__gc *gc, vments[i++] = "image/kernel"; vments[i++] = (char *) state->pv_kernel.path; vments[i++] = "start_time"; - vments[i++] = libxl__sprintf(gc, "%lu.%02d", start_time.tv_sec,(int)start_time.tv_usec/10000); + vments[i++] = libxl__sprintf(gc, "%llu.%02d", (unsigned long long int)(start_time.tv_sec),(int)start_time.tv_usec/10000); if (state->pv_ramdisk.path) { vments[i++] = "image/ramdisk"; vments[i++] = (char *) state->pv_ramdisk.path; @@ -846,7 +846,7 @@ void libxl__xc_domain_restore_done(libxl__egc *egc, void *dcs_void, vments[2] = "image/ostype"; vments[3] = "hvm"; vments[4] = "start_time"; - vments[5] = libxl__sprintf(gc, "%lu.%02d", start_time.tv_sec,(int)start_time.tv_usec/10000); + vments[5] = libxl__sprintf(gc, "%llu.%02d", (unsigned long long int)(start_time.tv_sec),(int)start_time.tv_usec/10000); break; case LIBXL_DOMAIN_TYPE_PV: vments = libxl__calloc(gc, 11, sizeof(char *)); @@ -856,7 +856,7 @@ void libxl__xc_domain_restore_done(libxl__egc *egc, void *dcs_void, vments[i++] = "image/kernel"; vments[i++] = (char *) state->pv_kernel.path; vments[i++] = "start_time"; - vments[i++] = libxl__sprintf(gc, "%lu.%02d", start_time.tv_sec,(int)start_time.tv_usec/10000); + vments[i++] = libxl__sprintf(gc, "%llu.%02d", (unsigned long long int)(start_time.tv_sec),(int)start_time.tv_usec/10000); if (state->pv_ramdisk.path) { vments[i++] = "image/ramdisk"; vments[i++] = (char *) state->pv_ramdisk.path; -- 1.7.10.4
Patrick Welche
2013-Apr-28 06:57 UTC
Re: [PATCH v2] FIX: Cast the time_t values to avoid warnings
On Sun, Apr 28, 2013 at 01:32:16AM +0200, 7heo wrote:> I added 4 casts from time_t to unsigned long long > int in the libxl_sprintf functions, so there is no > warning at compilation time (and no failing with > -Werror). > > The casting format has been discussed, and since > the long long int is preferable, the syntax of > the libxl_sprintf second argument has been > changed.That''s better :-) Cheers, Patrick
Ian Campbell
2013-Apr-29 08:55 UTC
Re: [PATCH v2] FIX: Cast the time_t values to avoid warnings
On Sun, 2013-04-28 at 00:32 +0100, 7heo wrote:> I added 4 casts from time_t to unsigned long long > int in the libxl_sprintf functions, so there is no > warning at compilation time (and no failing with > -Werror). > > The casting format has been discussed, and since > the long long int is preferable, the syntax of > the libxl_sprintf second argument has been > changed.Thanks. 1> Signed-off-by: 7heo <7heo@7heo.tk> > --- > tools/libxl/libxl_create.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c > index cb9c822..be1b446 100644 > --- a/tools/libxl/libxl_create.c > +++ b/tools/libxl/libxl_create.c > @@ -350,7 +350,7 @@ int libxl__domain_build(libxl__gc *gc, > vments[2] = "image/ostype"; > vments[3] = "hvm"; > vments[4] = "start_time"; > - vments[5] = libxl__sprintf(gc, "%lu.%02d", start_time.tv_sec,(int)start_time.tv_usec/10000); > + vments[5] = libxl__sprintf(gc, "%llu.%02d", (unsigned long long int)(start_time.tv_sec),(int)start_time.tv_usec/10000);These lines were overly long already but now they are really too long, any chance you could wrap them a bit? You could also consider a cast to uint64_t + PRIx64 which I think would be shorter overall? Switching to GCSPRINTF might also help. (seems to be a lot of duplicated code here, but that''s not your problem().> > localents = libxl__calloc(gc, 7, sizeof(char *)); > localents[0] = "platform/acpi"; > @@ -373,7 +373,7 @@ int libxl__domain_build(libxl__gc *gc, > vments[i++] = "image/kernel"; > vments[i++] = (char *) state->pv_kernel.path; > vments[i++] = "start_time"; > - vments[i++] = libxl__sprintf(gc, "%lu.%02d", start_time.tv_sec,(int)start_time.tv_usec/10000); > + vments[i++] = libxl__sprintf(gc, "%llu.%02d", (unsigned long long int)(start_time.tv_sec),(int)start_time.tv_usec/10000); > if (state->pv_ramdisk.path) { > vments[i++] = "image/ramdisk"; > vments[i++] = (char *) state->pv_ramdisk.path; > @@ -846,7 +846,7 @@ void libxl__xc_domain_restore_done(libxl__egc *egc, void *dcs_void, > vments[2] = "image/ostype"; > vments[3] = "hvm"; > vments[4] = "start_time"; > - vments[5] = libxl__sprintf(gc, "%lu.%02d", start_time.tv_sec,(int)start_time.tv_usec/10000); > + vments[5] = libxl__sprintf(gc, "%llu.%02d", (unsigned long long int)(start_time.tv_sec),(int)start_time.tv_usec/10000); > break; > case LIBXL_DOMAIN_TYPE_PV: > vments = libxl__calloc(gc, 11, sizeof(char *)); > @@ -856,7 +856,7 @@ void libxl__xc_domain_restore_done(libxl__egc *egc, void *dcs_void, > vments[i++] = "image/kernel"; > vments[i++] = (char *) state->pv_kernel.path; > vments[i++] = "start_time"; > - vments[i++] = libxl__sprintf(gc, "%lu.%02d", start_time.tv_sec,(int)start_time.tv_usec/10000); > + vments[i++] = libxl__sprintf(gc, "%llu.%02d", (unsigned long long int)(start_time.tv_sec),(int)start_time.tv_usec/10000); > if (state->pv_ramdisk.path) { > vments[i++] = "image/ramdisk"; > vments[i++] = (char *) state->pv_ramdisk.path;
Ian Campbell
2013-Jul-04 09:32 UTC
Re: [PATCH v2] FIX: Cast the time_t values to avoid warnings
On Mon, 2013-04-29 at 12:08 +0100, 7heo@7heo.tk wrote:> > > diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c > > > index cb9c822..be1b446 100644 > > > --- a/tools/libxl/libxl_create.c > > > +++ b/tools/libxl/libxl_create.c > > > @@ -350,7 +350,7 @@ int libxl__domain_build(libxl__gc *gc, > > > vments[2] = "image/ostype"; > > > vments[3] = "hvm"; > > > vments[4] = "start_time"; > > > - vments[5] = libxl__sprintf(gc, "%lu.%02d", start_time.tv_sec,(int)start_time.tv_usec/10000); > > > + vments[5] = libxl__sprintf(gc, "%llu.%02d", (unsigned long long int)(start_time.tv_sec),(int)start_time.tv_usec/10000); > > > > These lines were overly long already but now they are really too long, > > any chance you could wrap them a bit? > Of course.Did you send a v3 of this patch which I missed? Ian.