threads / patch / 40780

patchhttp: fix some printf format warnings

Subject: [PATCH] http: fix some printf format warnings

## tl;dr

2 messages between Nov 12, 2015 and Nov 12, 2015. Diffs are folded; open one to read it.

replies: 1people: 2as markdown or json

Ramsay Jones· Nov 12, 2015, 00:07 UTC · lore

Commit f8117f55 ("http: use off_t to store partial file size", 02-11-2015) changed the type of some variables from long to off_t. Unfortunately, the off_t type is not portable and can be represented by several different actual types (even multiple types on the same platform). This makes it difficult to print an off_t variable in a platform independent way. As a result, this commit causes gcc to issue some printf format warnings on a couple of different platforms.

In order to suppress the warnings, change the format specifier to use the PRIuMAX macro and cast the off_t argument to uintmax_t. (See also the http_opt_request_remainder() function, which uses the same solution).

Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
---
 http.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
Show changes to http.c +4 −4
diff --git a/http.c b/http.c
index 42f29ce..2532976 100644
--- a/http.c
+++ b/http.c
@@ -1617,8 +1617,8 @@ struct http_pack_request *new_http_pack_request(
 	if (prev_posn>0) {
 		if (http_is_verbose)
 			fprintf(stderr,
-				"Resuming fetch of pack %s at byte %ld\n",
-				sha1_to_hex(target->sha1), prev_posn);
+				"Resuming fetch of pack %s at byte %"PRIuMAX"\n",
+				sha1_to_hex(target->sha1), (uintmax_t)prev_posn);
 		http_opt_request_remainder(preq->slot->curl, prev_posn);
 	}
 
@@ -1772,8 +1772,8 @@ struct http_object_request *new_http_object_request(const char *base_url,
 	if (prev_posn>0) {
 		if (http_is_verbose)
 			fprintf(stderr,
-				"Resuming fetch of object %s at byte %ld\n",
-				hex, prev_posn);
+				"Resuming fetch of object %s at byte %"PRIuMAX"\n",
+				hex, (uintmax_t)prev_posn);
 		http_opt_request_remainder(freq->slot->curl, prev_posn);
 	}
 
-- 
2.6.0
Jeff King· Nov 12, 2015, 00:11 UTC · re: Ramsay Jones · lore

Re: [PATCH] http: fix some printf format warnings

On Thu, Nov 12, 2015 at 12:07:42AM +0000, Ramsay Jones wrote:
Show 12 quoted lines
> Commit f8117f55 ("http: use off_t to store partial file size",
> 02-11-2015) changed the type of some variables from long to off_t.
> Unfortunately, the off_t type is not portable and can be represented
> by several different actual types (even multiple types on the same
> platform). This makes it difficult to print an off_t variable in
> a platform independent way. As a result, this commit causes gcc to
> issue some printf format warnings on a couple of different platforms.
> 
> In order to suppress the warnings, change the format specifier to use
> the PRIuMAX macro and cast the off_t argument to uintmax_t. (See also
> the http_opt_request_remainder() function, which uses the same
> solution).
Thanks, that's even better than what I had ghost-written for you. :)
-Peff

← back to recent threads