summaryrefslogtreecommitdiffstats
path: root/ax25
diff options
context:
space:
mode:
authorThomas Osterried <ax25@x-berg.in-berlin.de>2016-07-04 13:09:44 +0200
committerThomas Osterried <ax25@x-berg.in-berlin.de>2016-07-04 13:09:44 +0200
commitc59fb1da9d80486c7f56d18070b22ba0e8f2a70e (patch)
treecd820b4c8ee827e2dbd556ab9eea03ed83115597 /ax25
parent02337fcfc2fcbe80326c171eba902dc4a73b6a5a (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')
-rw-r--r--ax25/beacon.85
-rw-r--r--ax25/beacon.c14
2 files changed, 14 insertions, 5 deletions
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 <src_call>] [-d <dest_call>[digi ..]] [-l] [-m] [-s] [-t interval] [-v] port \(lqmessage\(rq
+.B beacon [-c <src_call>] [-d <dest_call>[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 <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;