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>
#include "cgit.h"
#include "cache.h"
#include "cgit.h"
#include "cache.h"
#define CACHE_BUFSIZE (1024 * 4)
#define CACHE_BUFSIZE (1024 * 4)
fullname.buf, strerror(err), err);
continue;
}
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);
close_slot(&slot);
}
closedir(dir);
cgit_url "bar/diff" &&
cgit_url "bar/patch" &&
ls cache >output &&
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