the repository which powers this website
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 <[email protected]>
John Keeping 2013-05-22
parent 75bfec6 · commit f32a2da
-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 74a1795a..aa870e36 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 7e7379a8..657765d8 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.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