summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorZach DeCook <zachdecook@gmail.com>2020-12-22 23:23:15 -0500
committerDrew DeVault <sir@cmpwn.com>2020-12-24 09:05:28 -0500
commiteac874b92531daffe1209bd100ce0b8b58625715 (patch)
tree6b81b0eee7585f234fd0205d04c86dd8ea880c94 /src
parent61bf4c53aa1522c4f0e8d1f912b6ab19154ed538 (diff)
downloadgmnisrv-eac874b92531daffe1209bd100ce0b8b58625715.tar.gz
gmnisrv-eac874b92531daffe1209bd100ce0b8b58625715.tar.xz
gmnisrv-eac874b92531daffe1209bd100ce0b8b58625715.zip
autoindex: end directories with trailing slash
Diffstat (limited to 'src')
-rw-r--r--src/serve.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/serve.c b/src/serve.c
index 01a0869..4bb2973 100644
--- a/src/serve.c
+++ b/src/serve.c
@@ -77,8 +77,15 @@ serve_autoindex(struct gmnisrv_client *client, const char *path)
namesz *= 2;
names = new;
}
- names[nameln++] = strdup(ent->d_name);
- bufsz += snprintf(NULL, 0, "=> %s\n", ent->d_name);
+ if (S_ISDIR(st.st_mode)){
+ // +1 for trailing slash, +1 for \0
+ names[nameln] = malloc(strlen(ent->d_name)+1+1);
+ sprintf(names[nameln], "%s/", ent->d_name);
+ } else {
+ names[nameln] = strdup(ent->d_name);
+ }
+ bufsz += snprintf(NULL, 0, "=> %s\n", names[nameln]);
+ nameln++;
}
errno = 0;