From c59fb1da9d80486c7f56d18070b22ba0e8f2a70e Mon Sep 17 00:00:00 2001 From: Thomas Osterried Date: Mon, 4 Jul 2016 13:09:44 +0200 Subject: beacon: new option -f: do not fork. patch submitted by Folkert van Heusden . Signed-off-by: Thomas Osterried --- ax25/beacon.8 | 5 ++++- ax25/beacon.c | 14 ++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) (limited to 'ax25') diff --git a/ax25/beacon.8 b/ax25/beacon.8 index d2a72ef..b4ca83c 100644 --- a/ax25/beacon.8 +++ b/ax25/beacon.8 @@ -2,7 +2,7 @@ .SH NAME beacon \- transmit periodic messages on an AX.25 port. .SH SYNOPSIS -.B beacon [-c ] [-d [digi ..]] [-l] [-m] [-s] [-t interval] [-v] port \(lqmessage\(rq +.B beacon [-c ] [-d [digi ..]] [-f] [-l] [-m] [-s] [-t interval] [-v] port \(lqmessage\(rq .SH DESCRIPTION .LP .B Beacon @@ -23,6 +23,9 @@ interface callsign. Configure the destination callsign for beacons. The default is \(lqIDENT\(rq. Optional: Digipeaters may follow, separated with spaces. Use \-d "DEST DIGI1 DIGI2 .." .TP 16 +.BI \-f +Do not fork into the background. +.TP 16 .BI \-l Enables the logging of errors to the system log, the default is off. .TP 16 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 ] [-d ] [-f] [-l] [-m] [-s] [-t interval] [-v] \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 ] [-d ] [-l] [-m] [-s] [-t interval] [-v] \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 ] [-d ] [-l] [-m] [-s] [-t interval] [-v] \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; -- cgit v1.2.3