]> granicus.if.org Git - cgit/commitdiff
fix errors in printf-style format strings
authorMark Lodato <lodatom@gmail.com>
Sat, 4 Sep 2010 15:30:18 +0000 (11:30 -0400)
committerMark Lodato <lodatom@gmail.com>
Sat, 4 Sep 2010 15:35:38 +0000 (11:35 -0400)
There were many places where the arguments to a printf-like function did
not match the format string.  Mostly, these were a missing 'l' flag, but
there were three exceptions:

- In ui-stats.c, a size_t argument must be printed.  C99 has the "%zu"
  flag for this purpose, but not all compilers support this.  Therefore,
  we mimic what git does - use a NO_C99_FORMAT Makefile variable.

- In ui-stats.c, cgit_print_error() was called with a pointer instead of
  a character.

- In ui-log.c, the "columns" argument was never used.

Signed-off-by: Mark Lodato <lodatom@gmail.com>
Makefile
cgit.c
ui-diff.c
ui-log.c
ui-stats.c
ui-tree.c

index 2a15469c688a75b8a6cca1f5d930b693c2d6f830..6c9d1184e2d5a3830fc113ae69e2da77645c0f6d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -16,6 +16,11 @@ INSTALL = install
 #
 # Define NEEDS_LIBICONV if linking with libc is not enough (eg. Darwin).
 #
+# Define NO_C99_FORMAT if your formatted IO functions (printf/scanf et.al.)
+# do not support the 'size specifiers' introduced by C99, namely ll, hh,
+# j, z, t. (representing long long int, char, intmax_t, size_t, ptrdiff_t).
+# some C compilers supported these specifiers prior to C99 as an extension.
+#
 
 #-include config.mak
 
@@ -127,6 +132,9 @@ endif
 ifdef NO_STRCASESTR
        CFLAGS += -DNO_STRCASESTR
 endif
+ifdef NO_C99_FORMAT
+       CFLAGS += -DNO_C99_FORMAT
+endif
 ifdef NO_OPENSSL
        CFLAGS += -DNO_OPENSSL
        GIT_OPTIONS += NO_OPENSSL=1
diff --git a/cgit.c b/cgit.c
index d6146e2270737806513b0ceca0e187475f93c121..3b3f8d98a8a180d5d6ac9c87ed53e4b8f3263e25 100644 (file)
--- a/cgit.c
+++ b/cgit.c
@@ -610,7 +610,7 @@ static void process_cached_repolist(const char *path)
        hash = hash_str(path);
        if (ctx.cfg.project_list)
                hash += hash_str(ctx.cfg.project_list);
-       cached_rc = xstrdup(fmt("%s/rc-%8x", ctx.cfg.cache_root, hash));
+       cached_rc = xstrdup(fmt("%s/rc-%8lx", ctx.cfg.cache_root, hash));
 
        if (stat(cached_rc, &st)) {
                /* Nothing is cached, we need to scan without forking. And
index 0dcabe90b9931e4b53e009a89b9853dcf3ab8c76..7ff7e46d9e5b1551736900e0719a1d8147b69b67 100644 (file)
--- a/ui-diff.c
+++ b/ui-diff.c
@@ -92,7 +92,7 @@ static void print_fileinfo(struct fileinfo *info)
                      info->old_path);
        html("</td><td class='right'>");
        if (info->binary) {
-               htmlf("bin</td><td class='graph'>%d -> %d bytes",
+               htmlf("bin</td><td class='graph'>%ld -> %ld bytes",
                      info->old_size, info->new_size);
                return;
        }
index 0536b23ebaa1705e627dca637b742dbb713d053f..41b5225616933bcc7ab80a155ef0f7ba6c65b4cd 100644 (file)
--- a/ui-log.c
+++ b/ui-log.c
@@ -228,8 +228,7 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
                commit->parents = NULL;
        }
        if (pager) {
-               htmlf("</table><div class='pager'>",
-                    columns);
+               html("</table><div class='pager'>");
                if (ofs > 0) {
                        cgit_log_link("[prev]", NULL, NULL, ctx.qry.head,
                                      ctx.qry.sha1, ctx.qry.vpath,
index 50c2540c860b6275b06b84576ecfd81c032e208d..946a6ea9a53f8efb709fe36032651eb2e297476d 100644 (file)
@@ -5,6 +5,12 @@
 #include "ui-shared.h"
 #include "ui-stats.h"
 
+#ifdef NO_C99_FORMAT
+#define SZ_FMT "%u"
+#else
+#define SZ_FMT "%zu"
+#endif
+
 #define MONTHS 6
 
 struct authorstat {
@@ -283,10 +289,10 @@ void print_combined_authorrow(struct string_list *authors, int from, int to,
                        if (date)
                                subtotal += (size_t)date->util;
                }
-               htmlf("<td class='%s'>%d</td>", centerclass, subtotal);
+               htmlf("<td class='%s'>%ld</td>", centerclass, subtotal);
                total += subtotal;
        }
-       htmlf("<td class='%s'>%d</td></tr>", rightclass, total);
+       htmlf("<td class='%s'>%ld</td></tr>", rightclass, total);
 }
 
 void print_authors(struct string_list *authors, int top,
@@ -335,16 +341,16 @@ void print_authors(struct string_list *authors, int top,
                        if (!date)
                                html("<td>0</td>");
                        else {
-                               htmlf("<td>%d</td>", date->util);
+                               htmlf("<td>"SZ_FMT"</td>", (size_t)date->util);
                                total += (size_t)date->util;
                        }
                }
-               htmlf("<td class='sum'>%d</td></tr>", total);
+               htmlf("<td class='sum'>%ld</td></tr>", total);
        }
 
        if (top < authors->nr)
                print_combined_authorrow(authors, top, authors->nr - 1,
-                       "Others (%d)", "left", "", "sum", period);
+                       "Others (%ld)", "left", "", "sum", period);
 
        print_combined_authorrow(authors, 0, authors->nr - 1, "Total",
                "total", "sum", "sum", period);
@@ -367,7 +373,7 @@ void cgit_show_stats(struct cgit_context *ctx)
 
        i = cgit_find_stats_period(code, &period);
        if (!i) {
-               cgit_print_error(fmt("Unknown statistics type: %c", code));
+               cgit_print_error(fmt("Unknown statistics type: %c", code[0]));
                return;
        }
        if (i > ctx->repo->max_stats) {
index 75ec9cb76cda7405205fb990c0b4524680fec39f..0cdbf6db905344d649d193f4c781b81fe2df3125 100644 (file)
--- a/ui-tree.c
+++ b/ui-tree.c
@@ -67,7 +67,7 @@ static void print_binary_buffer(char *buf, unsigned long size)
        html("<table summary='blob content' class='bin-blob'>\n");
        html("<tr><th>ofs</th><th>hex dump</th><th>ascii</th></tr>");
        for (ofs = 0; ofs < size; ofs += ROWLEN, buf += ROWLEN) {
-               htmlf("<tr><td class='right'>%04x</td><td class='hex'>", ofs);
+               htmlf("<tr><td class='right'>%04lx</td><td class='hex'>", ofs);
                for (idx = 0; idx < ROWLEN && ofs + idx < size; idx++)
                        htmlf("%*s%02x",
                              idx == 16 ? 4 : 1, "",
@@ -108,7 +108,7 @@ static void print_object(const unsigned char *sha1, char *path, const char *base
        html(")\n");
 
        if (ctx.cfg.max_blob_size && size / 1024 > ctx.cfg.max_blob_size) {
-               htmlf("<div class='error'>blob size (%dKB) exceeds display size limit (%dKB).</div>",
+               htmlf("<div class='error'>blob size (%ldKB) exceeds display size limit (%dKB).</div>",
                                size / 1024, ctx.cfg.max_blob_size);
                return;
        }