From 6f16b433878f2e43ae57a0e77fa7ec6bff8adc74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Ketelaars?= Date: Fri, 4 Sep 2015 12:03:25 +0200 Subject: [PATCH] add option to daemonize fiche --- fiche.c | 29 +++++++++++++++++++++++++---- fiche.h | 7 +++++-- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/fiche.c b/fiche.c index c87425c..c3f71c0 100644 --- a/fiche.c +++ b/fiche.c @@ -9,11 +9,13 @@ Live example: http://code.solusipse.net/ ------------------------------------------------------------------------------- -usage: fiche [-epbsdolBuw]. - [-e] [-d domain] [-p port] [-s slug size] +usage: fiche [-DepbsdolBuw]. + [-D] [-e] [-d domain] [-p port] [-s slug size] [-o output directory] [-B buffer size] [-u user name] [-l log file] [-b banlist] [-w whitelist] +-D option is for daemonizing fiche + -e option is for using an extended character set for the URL Compile with Makefile or manually with -O2 and -pthread flags. @@ -48,7 +50,18 @@ int main(int argc, char **argv) server_address = set_address(server_address); bind_to_port(listen_socket, server_address); - while (1) perform_connection(listen_socket); + if (DAEMON) + { + pid_t pid; + + pid = fork(); + if (pid == -1) + error("ERROR: Failed to fork"); + if (pid == 0) + while (1) perform_connection(listen_socket); + } + else + while (1) perform_connection(listen_socket); } void *thread_connection(void *args) @@ -371,6 +384,9 @@ void startup_message() void info(char *buffer, ...) { + if (DAEMON) + return; + printf(buffer); } @@ -378,9 +394,14 @@ void parse_parameters(int argc, char **argv) { int c; - while ((c = getopt (argc, argv, "ep:b:s:d:o:l:B:u:w:")) != -1) + if (strcmp(*argv, "-D")) + DAEMON = 1; + + while ((c = getopt (argc, argv, "Dep:b:s:d:o:l:B:u:w:")) != -1) switch (c) { + case 'D': + break; case 'e': snprintf(symbols, sizeof symbols, "%s", "abcdefghijklmnopqrstuvwxyz0123456789-+_=.ABCDEFGHIJKLMNOPQRSTUVWXYZ"); break; diff --git a/fiche.h b/fiche.h index d1f3d18..5dfcd4f 100644 --- a/fiche.h +++ b/fiche.h @@ -9,11 +9,13 @@ Live example: http://code.solusipse.net/ ------------------------------------------------------------------------------- -usage: fiche [-epbsdolBuw]. - [-e] [-d domain] [-p port] [-s slug size] +usage: fiche [-DepbsdolBuw]. + [-D] [-e] [-d domain] [-p port] [-s slug size] [-o output directory] [-B buffer size] [-u user name] [-l log file] [-b banlist] [-w whitelist] +-D option is for daemonizing fiche + -e option is for using an extended character set for the URL Compile with Makefile or manually with -O2 and -pthread flags. @@ -51,6 +53,7 @@ char *BANLIST; char *BANFILE; char *WHITEFILE; char *WHITELIST; +int DAEMON = 0; int PORT = 9999; int SLUG_SIZE = 4; int BUFSIZE = 32768;