diff options
author | Thomas Osterried <ax25@x-berg.in-berlin.de> | 2016-07-04 13:09:44 +0200 |
---|---|---|
committer | Thomas Osterried <ax25@x-berg.in-berlin.de> | 2016-07-04 13:09:44 +0200 |
commit | c59fb1da9d80486c7f56d18070b22ba0e8f2a70e (patch) | |
tree | cd820b4c8ee827e2dbd556ab9eea03ed83115597 /ax25/beacon.c | |
parent | 02337fcfc2fcbe80326c171eba902dc4a73b6a5a (diff) |
beacon: new option -f: do not fork.
patch submitted by Folkert van Heusden <mail@vanheusden.com>.
Signed-off-by: Thomas Osterried <ax25@x-berg.in-berlin.de>
Diffstat (limited to 'ax25/beacon.c')
-rw-r--r-- | ax25/beacon.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/ax25/beacon.c b/ax25/beacon.c index ca229c7..e4e4749 100644 --- a/ax25/beacon.c +++ b/ax25/beacon.c @@ -20,6 +20,8 @@ static int logging = FALSE; static int mail = FALSE; static int single = FALSE; +#define STR_USAGE "usage: beacon [-c <src_call>] [-d <dest_call>] [-f] [-l] [-m] [-s] [-t interval] [-v] <port> <message>\n" + static void terminate(int sig) { if (logging) { @@ -37,8 +39,9 @@ int main(int argc, char *argv[]) int s, n, dlen, len, interval = 30; char *addr, *port, *message, *portcall; char *srccall = NULL, *destcall = NULL; + int dofork = 1; - while ((n = getopt(argc, argv, "c:d:lmst:v")) != -1) { + while ((n = getopt(argc, argv, "c:d:flmst:v")) != -1) { switch (n) { case 'c': srccall = optarg; @@ -46,6 +49,9 @@ int main(int argc, char *argv[]) case 'd': destcall = optarg; break; + case 'f': + dofork = 0; + break; case 'l': logging = TRUE; break; @@ -67,7 +73,7 @@ int main(int argc, char *argv[]) return 0; case '?': case ':': - fprintf(stderr, "usage: beacon [-c <src_call>] [-d <dest_call>] [-l] [-m] [-s] [-t interval] [-v] <port> <message>\n"); + fprintf(stderr, STR_USAGE); return 1; } } @@ -75,7 +81,7 @@ int main(int argc, char *argv[]) signal(SIGTERM, terminate); if (optind == argc || optind == argc - 1) { - fprintf(stderr, "usage: beacon [-c <src_call>] [-d <dest_call>] [-l] [-m] [-s] [-t interval] [-v] <port> <message>\n"); + fprintf(stderr, STR_USAGE); return 1; } @@ -123,7 +129,7 @@ int main(int argc, char *argv[]) } if (addr != NULL) free(addr); addr = NULL; - if (!single) { + if (!single && dofork) { if (!daemon_start(FALSE)) { fprintf(stderr, "beacon: cannot become a daemon\n"); return 1; |