author | Mark Lodato <lodatom@gmail.com> | 2010-09-04 15:30:18 (UTC) |
---|---|---|
committer | Mark Lodato <lodatom@gmail.com> | 2010-09-04 15:35:38 (UTC) |
commit | e4ddc8f72b5a7d8c55a6c2042c7b7f945ba4b1a2 (patch) (side-by-side diff) | |
tree | 2ade0bb45e15ad5466ca4d3433201477f0c9214e | |
parent | a4c58d92bfee0cf2e35ab1c5e828a6d790108a69 (diff) | |
download | cgit-e4ddc8f72b5a7d8c55a6c2042c7b7f945ba4b1a2.zip cgit-e4ddc8f72b5a7d8c55a6c2042c7b7f945ba4b1a2.tar.gz cgit-e4ddc8f72b5a7d8c55a6c2042c7b7f945ba4b1a2.tar.bz2 |
fix errors in printf-style format strings
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>
-rw-r--r-- | Makefile | 8 | ||||
-rw-r--r-- | cgit.c | 2 | ||||
-rw-r--r-- | ui-diff.c | 2 | ||||
-rw-r--r-- | ui-log.c | 3 | ||||
-rw-r--r-- | ui-stats.c | 18 | ||||
-rw-r--r-- | ui-tree.c | 4 |
6 files changed, 25 insertions, 12 deletions
@@ -13,12 +13,17 @@ INSTALL = install # # Define NO_OPENSSL to disable linking with OpenSSL and use bundled SHA1 # implementation (slower). # # 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 # # Platform specific tweaks # @@ -124,12 +129,15 @@ CFLAGS += -DCGIT_CACHE_ROOT='"$(CACHE_ROOT)"' ifdef NO_ICONV CFLAGS += -DNO_ICONV 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 else EXTLIBS += -lcrypto endif @@ -607,13 +607,13 @@ static void process_cached_repolist(const char *path) time_t age; unsigned long hash; 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 * if we fail to generate a cached repolist, we need to * invoke scan_tree manually. */ @@ -89,13 +89,13 @@ static void print_fileinfo(struct fileinfo *info) if (info->status == DIFF_STATUS_COPIED || info->status == DIFF_STATUS_RENAMED) htmlf(" (%s from %s)", info->status == DIFF_STATUS_COPIED ? "copied" : "renamed", 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; } htmlf("%d", info->added + info->removed); html("</td><td class='graph'>"); htmlf("<table summary='file diffstat' width='%d%%'><tr>", (max_changes > 100 ? 100 : max_changes)); @@ -225,14 +225,13 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern free(commit->buffer); commit->buffer = NULL; free_commit_list(commit->parents); 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, ofs - cnt, ctx.qry.grep, ctx.qry.search, ctx.qry.showmsg); html(" "); @@ -2,12 +2,18 @@ #include "cgit.h" #include "html.h" #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 { long total; struct string_list list; }; @@ -280,16 +286,16 @@ void print_combined_authorrow(struct string_list *authors, int from, int to, authorstat = author->util; items = &authorstat->list; date = string_list_lookup(items, tmp); 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, struct cgit_period *period) { struct string_list_item *author; @@ -332,22 +338,22 @@ void print_authors(struct string_list *authors, int top, tmp = period->pretty(tm); period->inc(tm); date = string_list_lookup(items, tmp); 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); html("</table>"); } @@ -364,13 +370,13 @@ void cgit_show_stats(struct cgit_context *ctx) if (ctx->qry.period) code = ctx->qry.period; 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) { cgit_print_error(fmt("Statistics type disabled: %s", period->name)); return; @@ -64,13 +64,13 @@ static void print_binary_buffer(char *buf, unsigned long size) unsigned long ofs, idx; static char ascii[ROWLEN + 1]; 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, "", buf[idx] & 0xff); html(" </td><td class='hex'>"); for (idx = 0; idx < ROWLEN && ofs + idx < size; idx++) @@ -105,13 +105,13 @@ static void print_object(const unsigned char *sha1, char *path, const char *base htmlf("blob: %s (", sha1_to_hex(sha1)); cgit_plain_link("plain", NULL, NULL, ctx.qry.head, curr_rev, path); 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; } if (buffer_is_binary(buf, size)) print_binary_buffer(buf, size); |