From f32a2da636ffa6eaa6b8d0d3f35a673fa12e404a Mon Sep 17 00:00:00 2001 From: John Keeping Date: Sat, 18 May 2013 18:46:39 +0100 Subject: [PATCH] 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 --- cache.c | 13 +++++++------ tests/t0020-validate-cache.sh | 8 +++++++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/cache.c b/cache.c index 74a1795..aa870e3 100644 --- a/cache.c +++ b/cache.c @@ -15,6 +15,7 @@ #include "cgit.h" #include "cache.h" +#include "html.h" #define CACHE_BUFSIZE (1024 * 4) @@ -404,12 +405,12 @@ int cache_ls(const char *path) 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); diff --git a/tests/t0020-validate-cache.sh b/tests/t0020-validate-cache.sh index 7e7379a..657765d 100755 --- a/tests/t0020-validate-cache.sh +++ b/tests/t0020-validate-cache.sh @@ -66,7 +66,13 @@ test_expect_success 'verify cache-size=1021' ' 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 && + 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