aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Keeping2013-05-18 18:46:39 +0100
committerJason A. Donenfeld2013-05-22 12:53:06 +0200
commitf32a2da636ffa6eaa6b8d0d3f35a673fa12e404a (patch)
treeea1411cc37fa359cadc7abf1f2bd7bd080ff2bd5
parent75bfec6448b44e26c06736253f8ab0197a6652f7 (diff)
downloadcgit-f32a2da636ffa6eaa6b8d0d3f35a673fa12e404a.tar.gz
cgit-f32a2da636ffa6eaa6b8d0d3f35a673fa12e404a.tar.bz2
cgit-f32a2da636ffa6eaa6b8d0d3f35a673fa12e404a.zip
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>
-rw-r--r--cache.c13
-rwxr-xr-xtests/t0020-validate-cache.sh8
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 @@
15 15
16#include "cgit.h" 16#include "cgit.h"
17#include "cache.h" 17#include "cache.h"
18#include "html.h"
18 19
19#define CACHE_BUFSIZE (1024 * 4) 20#define CACHE_BUFSIZE (1024 * 4)
20 21
@@ -404,12 +405,12 @@ int cache_ls(const char *path)
404 fullname.buf, strerror(err), err); 405 fullname.buf, strerror(err), err);
405 continue; 406 continue;
406 } 407 }
407 printf("%s %s %10"PRIuMAX" %s\n", 408 htmlf("%s %s %10"PRIuMAX" %s\n",
408 fullname.buf, 409 fullname.buf,
409 sprintftime("%Y-%m-%d %H:%M:%S", 410 sprintftime("%Y-%m-%d %H:%M:%S",
410 slot.cache_st.st_mtime), 411 slot.cache_st.st_mtime),
411 (uintmax_t)slot.cache_st.st_size, 412 (uintmax_t)slot.cache_st.st_size,
412 slot.buf); 413 slot.buf);
413 close_slot(&slot); 414 close_slot(&slot);
414 } 415 }
415 closedir(dir); 416 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' '
66 cgit_url "bar/diff" && 66 cgit_url "bar/diff" &&
67 cgit_url "bar/patch" && 67 cgit_url "bar/patch" &&
68 ls cache >output && 68 ls cache >output &&
69 test_line_count = 13 output 69 test_line_count = 13 output &&
70 cgit_url "foo/ls_cache" >output.full &&
71 strip_headers <output.full >output &&
72 test_line_count = 13 output &&
73 # Check that ls_cache output is cached correctly
74 cgit_url "foo/ls_cache" >output.second &&
75 test_cmp output.full output.second
70' 76'
71 77
72test_done 78test_done