diff -Naur a/noip2.c b/noip2.c --- a/noip2.c 2008-11-25 20:50:09.000000000 +0100 +++ b/noip2.c 2020-10-08 20:25:58.073111470 +0200 @@ -128,7 +128,16 @@ + November 2008 (johna) version 2.1.9 + hardened force_update() to prevent possible buffer overflow + hardened autoconf() the same way + + patch suggested by xenomuta@phreaker.net + + January 2015 (dota? =op) version 2.1.9-1 + + added -f flag to run in foreground + + patch suggested by rogi@skylittlesystem.org + + + + January 2015 (dota? =op) version 2.1.9-1 + + hack to make foreground mode work as expected + + patch suggested by rogi@skylittlesystem.org */ ///////////////////////////////////////////////////////////////////////////// @@ -217,9 +226,9 @@ #define UPDATE_SCRIPT "ducupdate.php" #ifdef DEBUG - #define OPTCHARS "CYU:Fc:dD:hp:u:x:SMi:K:I:z" + #define OPTCHARS "CYU:Fc:dD:hp:u:x:SMi:K:I:zf" #else - #define OPTCHARS "CYU:Fc:hp:u:x:SMi:K:I:z" + #define OPTCHARS "CYU:Fc:hp:u:x:SMi:K:I:zf" #endif #define ARGC 1 #define ARGF (1<<1) @@ -240,10 +249,10 @@ #define GROUP 2 #define DOMAIN 3 #ifndef PREFIX - #define PREFIX "/usr/local" + #define PREFIX "/usr" #endif -#define CONFIG_FILEPATH PREFIX"/etc" -#define CONFIG_FILENAME PREFIX"/etc/no-ip2.conf" +#define CONFIG_FILEPATH "/etc" +#define CONFIG_FILENAME "/etc/no-ip2.conf" #define CONFSTRLEN 1024 #define MAX_DEVLEN 16 #define MAX_INSTANCE 4 @@ -348,6 +357,7 @@ int debug = 0; int timed_out = 0; int background = 1; // new default +int foreground_hack = 0; // FIXME: hack s2 int port_to_use = CLIENT_IP_PORT; int socket_fd = -1; int config_fd = -1; @@ -551,6 +561,7 @@ fprintf(stderr, " -M permit multiple instances\n"); fprintf(stderr, " -K processID terminate instance PID\n"); fprintf(stderr, " -z activate shm dump code\n"); + fprintf(stderr, " -f run in foreground\n"); fprintf(stderr, " -h help (this text)\n"); } /////////////////////////////////////////////////////////////////////////// @@ -738,6 +749,10 @@ case 'z': shm_dump_active++; break; + case 'f': + background=1; + foreground_hack=1; + break; default: Usage(); exit(0); @@ -1023,7 +1038,8 @@ char *err_string; static int startup = 1; - x = fork(); + /* FIXME: hack s2 */ + x = foreground_hack ? 0 : fork(); switch (x) { case -1: // error err_string = strerror(errno); @@ -1035,13 +1051,23 @@ setsid(); if (get_shm_info() == FATALERR) return FATALERR; - log2syslog++; - if (log2syslog > 0) - fclose(stderr); - fclose(stdout); - fclose(stdin); - syslog(LOG_INFO, "v%s daemon started%s\n", - VERSION, (nat) ? " with NAT enabled" : ""); + + /* FIXME: hack s2 */ + if (foreground_hack) { + printf("v%s daemon started%s\n", + VERSION, (nat) ? " with NAT enabled" : ""); + } + + else { + log2syslog++; + if (log2syslog > 0) + fclose(stderr); + fclose(stdout); + fclose(stdin); + syslog(LOG_INFO, "v%s daemon started%s\n", + VERSION, (nat) ? " with NAT enabled" : ""); + } + while (background) { delay = MAX(60, my_instance->interval * 60); if (nat) @@ -1081,7 +1107,14 @@ if (background) // signal may have reset this! Sleep(delay); } - syslog(LOG_INFO, "v%s daemon ended.\n", VERSION); + + /* FIXME: hack s2 */ + if (foreground_hack) + printf("v%s daemon ended.\n", VERSION); + + else + syslog(LOG_INFO, "v%s daemon ended.\n", VERSION); + break; } return SUCCESS;