From 3d400ce06dcb950a61363f87330324db244f4bac Mon Sep 17 00:00:00 2001
From: Glenn Strauss <gstrauss@gluelogic.com>
Date: Thu, 29 Feb 2024 20:59:57 -0500
Subject: [PATCH] [mod_dirlisting] fix suffix display of '/' on file (fixes
 #3242)

fix incorrect suffix display of '/' on files

(regression in lighttpd 1.4.74)

(thx guy)

Upstream-Status: Backport [https://github.com/lighttpd/lighttpd1.4/commit/3d400ce06dcb950a61363f87330324db244f4bac]

References:
[1] https://redmine.lighttpd.net/issues/3242

Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
---
 src/mod_dirlisting.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/mod_dirlisting.c b/src/mod_dirlisting.c
index a3432211..2686cd3e 100644
--- a/src/mod_dirlisting.c
+++ b/src/mod_dirlisting.c
@@ -1022,10 +1022,19 @@ static void http_list_directory_dirname(buffer * const out, const dirls_entry_t
 	buffer_append_string_len(out, CONST_STR_LEN("</td><td class=\"s\">- &nbsp;</td><td class=\"t\">Directory</td></tr>\n"));
 }
 
+static void http_list_file_ent(buffer * const out, const dirls_entry_t * const ent, const char * const name) {
+	buffer_append_string_encoded(out, name, ent->namelen, ENCODING_REL_URI_PART);
+	buffer_append_string_len(out, CONST_STR_LEN("\">"));
+	buffer_append_string_encoded(out, name, ent->namelen, ENCODING_MINIMAL_XML);
+	buffer_append_string_len(out, CONST_STR_LEN("</a></td><td class=\"m\">"));
+
+	http_list_directory_mtime(out, ent);
+}
+
 static void http_list_directory_filename(buffer * const out, const dirls_entry_t * const ent, const char * const name, handler_ctx * const hctx) {
 	buffer_append_string_len(out, CONST_STR_LEN("<tr><td class=\"n\"><a href=\""));
 
-	http_list_directory_ent(out, ent, name);
+	http_list_file_ent(out, ent, name);
 
 	const buffer *content_type;
   #if defined(HAVE_XATTR) || defined(HAVE_EXTATTR) /*(pass full path)*/

