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>
Bu işleme şunda yer alıyor:
John Keeping 2013-05-18 18:46:39 +01:00 işlemeyi yapan: Jason A. Donenfeld
ebeveyn 75bfec6448
işleme f32a2da636
2 değiştirilmiş dosya ile 14 ekleme ve 7 silme

13
cache.c
Dosyayı Görüntüle

@ -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);

Dosyayı Görüntüle

@ -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