hermes

HTTP GET/HEAD-only web server for static content.
git clone https://git.francescosaccone.com/hermes
Log | Files | Refs | README | LICENSE

commit c4ed0ef51338cb8eddb396d1b7d8f0bd349bd8f5
parent 4d688a2447c1384c36600ee37c5c47aa7626c833
Author: Francesco Saccone <francesco@francescosaccone.com>
Date:   Sun, 30 Mar 2025 20:27:18 +0200

feat: add -i flag for directory index

Signed-off-by: Francesco Saccone <francesco@francescosaccone.com>

Diffstat:
Mhermes.c | 19+++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/hermes.c b/hermes.c @@ -1,16 +1,20 @@ #include <stdio.h> #include <stdlib.h> +#include <string.h> #include "socket.h" +#define DIRECTORY_INDEX_MAX_LENGTH 32 + void print_usage(char *program_name) { - printf("usage: %s [-p port]", program_name); + printf("usage: %s [-p port] [-i file]", program_name); } int main(int argc, char *argv[]) { - char *program_name = argv[0]; + char *program_name = argv[0], + directory_index[32] = "index.html"; int i, port = 80, server_socket_fd; @@ -39,6 +43,17 @@ main(int argc, char *argv[]) { port = atoi(argv[i + 1]); i++; break; + case 'i': + if (strlen(argv[i + 1]) >= DIRECTORY_INDEX_MAX_LENGTH) { + printf("error: directory index must be less than " + "%u characters", + DIRECTORY_INDEX_MAX_LENGTH); + return 1; + } + strncpy(directory_index, argv[i + 1], sizeof(directory_index) -1); + directory_index[sizeof(directory_index) -1] = '\0'; + i++; + break; default: print_usage(program_name); return 1;