Check-in by ben on 2024-08-05 02:22:23
Escape vertical bar pipe | symbols in search results.
INSERTED DELETED
6 0 src/cgi.awk
3 2 src/search/index.dcgi.m4
9 2 TOTAL over 2 changed files
Index: src/cgi.awk
==================================================================
--- src/cgi.awk
+++ src/cgi.awk
@@ -50,10 +50,16 @@
split(path, parts, "/")
topdir = parts[2]
return
}
+
+function gph_encode(str) {
+ retval = str
+ gsub(/\|/, "\\|", retval)
+ return retval
+}
function uri_encode_init( i, c) {
for (i = 0; i <= 255; i++) {
c = sprintf("%c", i)
uri_encode_ord[c] = i
Index: src/search/index.dcgi.m4
==================================================================
--- src/search/index.dcgi.m4
+++ src/search/index.dcgi.m4
@@ -148,13 +148,14 @@
} else if ($1 == ".response.docs[].title" && $2 == "s") {
title = $3
count++
if (length(creator) > 0) {
label = sprintf("[%s] %s by %s", mediatype[type], \
- shorten(title, 40), shorten(creator, 18))
+ gph_encode(shorten(title, 40)), shorten(creator, 18))
} else {
- label = sprintf("[%s] %s", mediatype[type], shorten(title, 58))
+ label = sprintf("[%s] %s", mediatype[type], \
+ gph_encode(shorten(title, 58)))
}
if (type == "collection") {
printf "[1|%s|%s/search/%%09collection:(%s)|%s|%s]\n",
label, cgipath, id, server, port
} else {