about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJohn Keeping <john@keeping.me.uk>2013-05-18 18:46:39 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2013-05-22 12:53:06 +0200
commitf32a2da636ffa6eaa6b8d0d3f35a673fa12e404a (patch)
treeea1411cc37fa359cadc7abf1f2bd7bd080ff2bd5
parenttests: introduce strip_header() helper function (diff)
downloadcgit-pink-f32a2da636ffa6eaa6b8d0d3f35a673fa12e404a.tar.gz
cgit-pink-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 @@
 
 #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 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' '
 	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
ion of scoopJune McEnroe 2019-12-30Join with USING wherever possibleJune McEnroe 2019-12-30Add -D flag to prospective scoop manualJune McEnroe 2019-12-30Order results by ID in outer query in litterboxJune McEnroe 2019-12-30Use X macro for Type enumJune McEnroe 2019-12-30Remove scoop -ABCJune McEnroe 2019-12-30Add limit option for litterbox's search query interfaceJune McEnroe