Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 24 additions & 9 deletions faithd/src/faithd.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,17 @@
#include "logging/logging.h"
#include <stdlib.h>

enum { OPTIONS_VALID, UNKOWN_OPTION, JUST_PRINT_PRINT_HELP };
enum { OPTIONS_NORMAL, OPTIONS_INVALID, JUST_PRINT_PRINT_HELP };

static int listen_port = 4433;

static void print_usage(const char *prog) {
printf("Usage: %s [options]\n"
"\n"
"Options:\n"
" -v, --verbose Enable verbose logging\n"
" -h, --help Show this help message\n",
" -v, --verbose Enable verbose logging\n"
" -p, --port [port] Specify the port to listen on\n"
" -h, --help Show this help message\n",
prog);
}

Expand All @@ -23,6 +26,17 @@ static int parse_args(int argc, char **argv) {
continue;
}

if (strcmp(arg, "-p") == 0 || strcmp(arg, "--pport") == 0) {
if(i + 1 > argc - 1) {
fprintf(stderr, "No port number specified for: %s\n", arg);
fprintf(stderr, "Usage: -p, --port [port]\n");
return OPTIONS_INVALID;
}
listen_port = atoi(argv[i + 1]);
i++;
continue;
}

if (strcmp(arg, "-h") == 0 || strcmp(arg, "--help") == 0) {
print_usage(argv[0]);
return JUST_PRINT_PRINT_HELP;
Expand All @@ -31,21 +45,22 @@ static int parse_args(int argc, char **argv) {
fprintf(stderr, "Unknown option: %s\n\n", arg);
print_usage(argv[0]);

return UNKOWN_OPTION;
return OPTIONS_INVALID;
}

return OPTIONS_VALID;
return OPTIONS_NORMAL;
}

int main(int argc, char **argv) {

int rc = parse_args(argc, argv);
if (rc != OPTIONS_VALID) {
return rc == JUST_PRINT_PRINT_HELP ? EXIT_SUCCESS : EXIT_FAILURE;
int options = parse_args(argc, argv);

if (options != OPTIONS_NORMAL) {
return options == JUST_PRINT_PRINT_HELP ? EXIT_SUCCESS : EXIT_FAILURE;
}

server_state_t s = {0};
server_config_t cfg = {.listen_port = 4433};
server_config_t cfg = {.listen_port = listen_port};

if (server_init(&s, &cfg) != FAITH_OK) {
nob_log(INFO, "Server initialization failed.");
Expand Down
4 changes: 2 additions & 2 deletions faithd/src/server/server.c
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ static faith_status_code_t init_listener(int port) {
}

if ((bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr))) != 0) {
nob_log(ERROR, "Socket bind failed");
nob_log(ERROR, "Socket bind failed on port %i: %s", port, strerror(errno));
close(listenfd);
return -1;
}
Expand All @@ -196,7 +196,7 @@ static faith_status_code_t init_listener(int port) {
return -1;
}

nob_log(INFO, "Server listening..");
nob_log(INFO, "Server listening on %i...", port);

return listenfd;
}
Expand Down
Loading