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>
This commit is contained in:
父節點
75bfec6448
當前提交
f32a2da636
13
cache.c
13
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);
|
||||
|
@ -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
|
||||
|
載入中…
新增問題並參考
Block a user