# [PATCH] vcs-svn: Fix some printf format compiler warnings

2 messages from 2010-09-09 to 2010-09-11. Participants: Ramsay Jones, Jonathan Nieder.
Thread: https://gitlist.dev/t/25056

## Ramsay Jones, 2010-09-09 17:24

Subject: [PATCH] vcs-svn: Fix some printf format compiler warnings
Message-ID: <4C891836.6070608@ramsay1.demon.co.uk>
URL: https://gitlist.dev/e/4C891836.6070608%40ramsay1.demon.co.uk

```

In particular, on systems that define uint32_t as an unsigned long,
gcc complains as follows:

    CC vcs-svn/fast_export.o
vcs-svn/fast_export.c: In function `fast_export_modify':
vcs-svn/fast_export.c:28: warning: unsigned int format, uint32_t arg (arg 2)
vcs-svn/fast_export.c:28: warning: int format, uint32_t arg (arg 3)
vcs-svn/fast_export.c: In function `fast_export_commit':
vcs-svn/fast_export.c:42: warning: int format, uint32_t arg (arg 5)
vcs-svn/fast_export.c:62: warning: int format, uint32_t arg (arg 2)
vcs-svn/fast_export.c: In function `fast_export_blob':
vcs-svn/fast_export.c:72: warning: int format, uint32_t arg (arg 2)
vcs-svn/fast_export.c:72: warning: int format, uint32_t arg (arg 3)
    CC vcs-svn/svndump.o
vcs-svn/svndump.c: In function `svndump_read':
vcs-svn/svndump.c:260: warning: int format, uint32_t arg (arg 3)

In order to suppress the warnings we use the C99 format specifier
macros PRIo32 and PRIu32 from <inttypes.h>.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
---

The addition to git-compat-util.h is required in order to not break
the build on both MinGW and MSVC; there are other (better?) ways to
fix this, but this was simple and seems to be in keeping with the
current code.

ATB,
Ramsay Jones

 git-compat-util.h     |    4 ++++
 vcs-svn/fast_export.c |    9 +++++----
 vcs-svn/svndump.c     |    2 +-
 3 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/git-compat-util.h b/git-compat-util.h
index 877096e..81883e7 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -160,6 +160,10 @@ extern char *gitbasename(char *);
 #define PRIx32 "x"
 #endif
 
+#ifndef PRIo32
+#define PRIo32 "o"
+#endif
+
 #ifndef PATH_SEP
 #define PATH_SEP ':'
 #endif
diff --git a/vcs-svn/fast_export.c b/vcs-svn/fast_export.c
index 256a052..6cfa256 100644
--- a/vcs-svn/fast_export.c
+++ b/vcs-svn/fast_export.c
@@ -25,7 +25,7 @@ void fast_export_modify(uint32_t depth, uint32_t *path, uint32_t mode,
 			uint32_t mark)
 {
 	/* Mode must be 100644, 100755, 120000, or 160000. */
-	printf("M %06o :%d ", mode, mark);
+	printf("M %06"PRIo32" :%"PRIu32" ", mode, mark);
 	pool_print_seq(depth, path, '/', stdout);
 	putchar('\n');
 }
@@ -38,7 +38,8 @@ void fast_export_commit(uint32_t revision, uint32_t author, char *log,
 	if (!log)
 		log = "";
 	if (~uuid && ~url) {
-		snprintf(gitsvnline, MAX_GITSVN_LINE_LEN, "\n\ngit-svn-id: %s@%d %s\n",
+		snprintf(gitsvnline, MAX_GITSVN_LINE_LEN,
+				"\n\ngit-svn-id: %s@%"PRIu32" %s\n",
 				 pool_fetch(url), revision, pool_fetch(uuid));
 	} else {
 		*gitsvnline = '\0';
@@ -59,7 +60,7 @@ void fast_export_commit(uint32_t revision, uint32_t author, char *log,
 	repo_diff(revision - 1, revision);
 	fputc('\n', stdout);
 
-	printf("progress Imported commit %d.\n\n", revision);
+	printf("progress Imported commit %"PRIu32".\n\n", revision);
 }
 
 void fast_export_blob(uint32_t mode, uint32_t mark, uint32_t len)
@@ -69,7 +70,7 @@ void fast_export_blob(uint32_t mode, uint32_t mark, uint32_t len)
 		buffer_skip_bytes(5);
 		len -= 5;
 	}
-	printf("blob\nmark :%d\ndata %d\n", mark, len);
+	printf("blob\nmark :%"PRIu32"\ndata %"PRIu32"\n", mark, len);
 	buffer_copy_bytes(len);
 	fputc('\n', stdout);
 }
diff --git a/vcs-svn/svndump.c b/vcs-svn/svndump.c
index 630eeb5..53d0215 100644
--- a/vcs-svn/svndump.c
+++ b/vcs-svn/svndump.c
@@ -257,7 +257,7 @@ void svndump_read(const char *url)
 				handle_node();
 				active_ctx = REV_CTX;
 			} else {
-				fprintf(stderr, "Unexpected content length header: %d\n", len);
+				fprintf(stderr, "Unexpected content length header: %"PRIu32"\n", len);
 				buffer_skip_bytes(len);
 			}
 		}
-- 
1.7.2.1

```

## Jonathan Nieder, 2010-09-11 20:42

Subject: Re: [PATCH] vcs-svn: Fix some printf format compiler warnings
Message-ID: <AANLkTi=hhM64Jiph4ERzujyHgEo5C0vjc1oPhdpyxyUD@mail.gmail.com>
URL: https://gitlist.dev/e/AANLkTi%3DhhM64Jiph4ERzujyHgEo5C0vjc1oPhdpyxyUD%40mail.gmail.com
In-Reply-To: <4C891836.6070608@ramsay1.demon.co.uk>

```
Ramsay Jones wrote:

> In order to suppress the warnings we use the C99 format specifier
> macros PRIo32 and PRIu32 from <inttypes.h>.

Thanks.

> The addition to git-compat-util.h is required in order to not break
> the build on both MinGW and MSVC

Yep, looks sane. So for what it's worth:

 Acked-by: Jonathan Nieder <jrnieder@gmail.com>

I see that David has already applied this to the svn-da tree, but it
would be good to have the fix in git, too.

```
