all repos — cgit @ f32a2da636ffa6eaa6b8d0d3f35a673fa12e404a

a hyperfast web frontend for git written in c

cache.c: cache ls_cache output properly

By using the standard library's printf, cache_ls does not redirect its
output to the cache when we change the process' stdout file descriptor
to point to the cache file.  Fix this by using "htmlf" in the same way
that we do for writing HTTP headers.

Signed-off-by: John Keeping <john@keeping.me.uk>
John Keeping john@keeping.me.uk
Sat, 18 May 2013 18:46:39 +0100
commit

f32a2da636ffa6eaa6b8d0d3f35a673fa12e404a

parent

75bfec6448b44e26c06736253f8ab0197a6652f7

2 files changed, 14 insertions(+), 7 deletions(-)

jump to
M cache.ccache.c

@@ -15,6 +15,7 @@ */

#include "cgit.h" #include "cache.h" +#include "html.h" #define CACHE_BUFSIZE (1024 * 4)

@@ -404,12 +405,12 @@ cache_log("[cgit] unable to open path %s: %s (%d)\n",

fullname.buf, strerror(err), err); continue; } - printf("%s %s %10"PRIuMAX" %s\n", - fullname.buf, - sprintftime("%Y-%m-%d %H:%M:%S", - slot.cache_st.st_mtime), - (uintmax_t)slot.cache_st.st_size, - slot.buf); + htmlf("%s %s %10"PRIuMAX" %s\n", + fullname.buf, + sprintftime("%Y-%m-%d %H:%M:%S", + slot.cache_st.st_mtime), + (uintmax_t)slot.cache_st.st_size, + slot.buf); close_slot(&slot); } closedir(dir);
M tests/t0020-validate-cache.shtests/t0020-validate-cache.sh

@@ -66,7 +66,13 @@ cgit_url "bar/log" &&

cgit_url "bar/diff" && cgit_url "bar/patch" && ls cache >output && - test_line_count = 13 output + test_line_count = 13 output && + cgit_url "foo/ls_cache" >output.full && + strip_headers <output.full >output && + test_line_count = 13 output && + # Check that ls_cache output is cached correctly + cgit_url "foo/ls_cache" >output.second && + test_cmp output.full output.second ' test_done