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>
这个提交包含在:
Mark Lodato 2010-09-04 11:30:18 -04:00
父节点 a4c58d92bf
当前提交 e4ddc8f72b
共有 6 个文件被更改,包括 25 次插入12 次删除

查看文件

@ -16,6 +16,11 @@ INSTALL = install
# #
# Define NEEDS_LIBICONV if linking with libc is not enough (eg. Darwin). # 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 #-include config.mak
@ -127,6 +132,9 @@ endif
ifdef NO_STRCASESTR ifdef NO_STRCASESTR
CFLAGS += -DNO_STRCASESTR CFLAGS += -DNO_STRCASESTR
endif endif
ifdef NO_C99_FORMAT
CFLAGS += -DNO_C99_FORMAT
endif
ifdef NO_OPENSSL ifdef NO_OPENSSL
CFLAGS += -DNO_OPENSSL CFLAGS += -DNO_OPENSSL
GIT_OPTIONS += NO_OPENSSL=1 GIT_OPTIONS += NO_OPENSSL=1

2
cgit.c
查看文件

@ -610,7 +610,7 @@ static void process_cached_repolist(const char *path)
hash = hash_str(path); hash = hash_str(path);
if (ctx.cfg.project_list) if (ctx.cfg.project_list)
hash += hash_str(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)) { if (stat(cached_rc, &st)) {
/* Nothing is cached, we need to scan without forking. And /* Nothing is cached, we need to scan without forking. And

查看文件

@ -92,7 +92,7 @@ static void print_fileinfo(struct fileinfo *info)
info->old_path); info->old_path);
html("</td><td class='right'>"); html("</td><td class='right'>");
if (info->binary) { 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); info->old_size, info->new_size);
return; return;
} }

查看文件

@ -228,8 +228,7 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
commit->parents = NULL; commit->parents = NULL;
} }
if (pager) { if (pager) {
htmlf("</table><div class='pager'>", html("</table><div class='pager'>");
columns);
if (ofs > 0) { if (ofs > 0) {
cgit_log_link("[prev]", NULL, NULL, ctx.qry.head, cgit_log_link("[prev]", NULL, NULL, ctx.qry.head,
ctx.qry.sha1, ctx.qry.vpath, ctx.qry.sha1, ctx.qry.vpath,

查看文件

@ -5,6 +5,12 @@
#include "ui-shared.h" #include "ui-shared.h"
#include "ui-stats.h" #include "ui-stats.h"
#ifdef NO_C99_FORMAT
#define SZ_FMT "%u"
#else
#define SZ_FMT "%zu"
#endif
#define MONTHS 6 #define MONTHS 6
struct authorstat { struct authorstat {
@ -283,10 +289,10 @@ void print_combined_authorrow(struct string_list *authors, int from, int to,
if (date) if (date)
subtotal += (size_t)date->util; subtotal += (size_t)date->util;
} }
htmlf("<td class='%s'>%d</td>", centerclass, subtotal); htmlf("<td class='%s'>%ld</td>", centerclass, subtotal);
total += 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, void print_authors(struct string_list *authors, int top,
@ -335,16 +341,16 @@ void print_authors(struct string_list *authors, int top,
if (!date) if (!date)
html("<td>0</td>"); html("<td>0</td>");
else { else {
htmlf("<td>%d</td>", date->util); htmlf("<td>"SZ_FMT"</td>", (size_t)date->util);
total += (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) if (top < authors->nr)
print_combined_authorrow(authors, top, authors->nr - 1, 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", print_combined_authorrow(authors, 0, authors->nr - 1, "Total",
"total", "sum", "sum", period); "total", "sum", "sum", period);
@ -367,7 +373,7 @@ void cgit_show_stats(struct cgit_context *ctx)
i = cgit_find_stats_period(code, &period); i = cgit_find_stats_period(code, &period);
if (!i) { if (!i) {
cgit_print_error(fmt("Unknown statistics type: %c", code)); cgit_print_error(fmt("Unknown statistics type: %c", code[0]));
return; return;
} }
if (i > ctx->repo->max_stats) { if (i > ctx->repo->max_stats) {

查看文件

@ -67,7 +67,7 @@ static void print_binary_buffer(char *buf, unsigned long size)
html("<table summary='blob content' class='bin-blob'>\n"); html("<table summary='blob content' class='bin-blob'>\n");
html("<tr><th>ofs</th><th>hex dump</th><th>ascii</th></tr>"); html("<tr><th>ofs</th><th>hex dump</th><th>ascii</th></tr>");
for (ofs = 0; ofs < size; ofs += ROWLEN, buf += ROWLEN) { 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++) for (idx = 0; idx < ROWLEN && ofs + idx < size; idx++)
htmlf("%*s%02x", htmlf("%*s%02x",
idx == 16 ? 4 : 1, "", idx == 16 ? 4 : 1, "",
@ -108,7 +108,7 @@ static void print_object(const unsigned char *sha1, char *path, const char *base
html(")\n"); html(")\n");
if (ctx.cfg.max_blob_size && size / 1024 > ctx.cfg.max_blob_size) { 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); size / 1024, ctx.cfg.max_blob_size);
return; return;
} }