bin/153362: [patch] add -p flag to set pidfile for rtadvd(8)
Joe Holden
joe at rewt.org.uk
Wed Dec 22 16:40:07 UTC 2010
The following reply was made to PR bin/153362; it has been noted by GNATS.
From: "Joe Holden" <joe at rewt.org.uk>
To: <bug-followup at FreeBSD.org>,
<joe at rewt.org.uk>
Cc:
Subject: Re: bin/153362: [patch] add -p flag to set pidfile for rtadvd(8)
Date: Wed, 22 Dec 2010 16:07:36 -0000
This is a multi-part message in MIME format.
------=_NextPart_000_0020_01CBA1F2.59A8E6B0
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_0021_01CBA1F2.59A8E6B0"
------=_NextPart_001_0021_01CBA1F2.59A8E6B0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Fixed if/else ordering, only try and unlink pidfile if pidfp is set...
Ta,
J
------=_NextPart_001_0021_01CBA1F2.59A8E6B0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-1" =
http-equiv=3DContent-Type>
<META name=3DGENERATOR content=3D"MSHTML 8.00.6001.18999">
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT size=3D2 face=3DArial>Fixed if/else ordering, only try and =
unlink pidfile=20
if pidfp is set...</FONT></DIV>
<DIV><FONT size=3D2 face=3DArial></FONT> </DIV>
<DIV><FONT size=3D2 face=3DArial>Ta,</FONT></DIV>
<DIV><FONT size=3D2 face=3DArial>J</FONT></DIV></BODY></HTML>
------=_NextPart_001_0021_01CBA1F2.59A8E6B0--
------=_NextPart_000_0020_01CBA1F2.59A8E6B0
Content-Type: application/octet-stream;
name="rtadvd-releng8.patch"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
filename="rtadvd-releng8.patch"
diff -ur rtadvd.orig/rtadvd.8 rtadvd/rtadvd.8=0A=
--- rtadvd.orig/rtadvd.8 2010-12-22 01:32:38.000000000 +0000=0A=
+++ rtadvd/rtadvd.8 2010-12-22 01:22:15.000000000 +0000=0A=
@@ -144,6 +144,8 @@=0A=
.It Fl s=0A=
Do not add or delete prefixes dynamically.=0A=
Only statically configured prefixes, if any, will be advertised.=0A=
+.It Fl p=0A=
+Set an alternate pidfile location.=0A=
.El=0A=
.Pp=0A=
Upon receipt of signal=0A=
diff -ur rtadvd.orig/rtadvd.c rtadvd/rtadvd.c=0A=
--- rtadvd.orig/rtadvd.c 2010-12-22 01:32:38.000000000 +0000=0A=
+++ rtadvd/rtadvd.c 2010-12-22 16:04:22.000000000 +0000=0A=
@@ -81,6 +81,7 @@=0A=
struct in6_addr in6a_site_allrouters;=0A=
static char *dumpfilename =3D "/var/run/rtadvd.dump"; /* XXX: should be =
configurable */=0A=
static char *pidfilename =3D "/var/run/rtadvd.pid"; /* should be =
configurable */=0A=
+char *pidfilecust;=0A=
static char *mcastif;=0A=
int sock;=0A=
int rtsock =3D -1;=0A=
@@ -163,7 +164,7 @@=0A=
pid_t pid;=0A=
=0A=
/* get command line options and arguments */=0A=
- while ((ch =3D getopt(argc, argv, "c:dDfM:Rs")) !=3D -1) {=0A=
+ while ((ch =3D getopt(argc, argv, "c:dDfMp:Rs")) !=3D -1) {=0A=
switch (ch) {=0A=
case 'c':=0A=
conffile =3D optarg;=0A=
@@ -189,13 +190,16 @@=0A=
case 's':=0A=
sflag =3D 1;=0A=
break;=0A=
+ case 'p':=0A=
+ pidfilecust =3D optarg;=0A=
+ break;=0A=
}=0A=
}=0A=
argc -=3D optind;=0A=
argv +=3D optind;=0A=
if (argc =3D=3D 0) {=0A=
fprintf(stderr,=0A=
- "usage: rtadvd [-dDfMRs] [-c conffile] "=0A=
+ "usage: rtadvd [-dDfMRsp] [-c conffile] "=0A=
"interfaces...\n");=0A=
exit(1);=0A=
}=0A=
@@ -241,13 +245,24 @@=0A=
=0A=
/* record the current PID */=0A=
pid =3D getpid();=0A=
- if ((pidfp =3D fopen(pidfilename, "w")) =3D=3D NULL) {=0A=
- syslog(LOG_ERR,=0A=
- "<%s> failed to open the pid log file, run anyway.",=0A=
- __func__);=0A=
- } else {=0A=
- fprintf(pidfp, "%d\n", pid);=0A=
- fclose(pidfp);=0A=
+ if (!pidfilecust) {=0A=
+ if ((pidfp =3D fopen(pidfilename, "w")) =3D=3D NULL) {=0A=
+ syslog(LOG_ERR,=0A=
+ "<%s> failed to open the pid log file, run anyway.",=0A=
+ __func__);=0A=
+ } else {=0A=
+ fprintf(pidfp, "%d\n", pid);=0A=
+ fclose(pidfp);=0A=
+ }=0A=
+ } else { =0A=
+ if ((pidfp =3D fopen(pidfilecust, "w")) =3D=3D NULL) {=0A=
+ syslog(LOG_ERR,=0A=
+ "<%s> failed to open the pid log file, run anyway.",=0A=
+ __func__);=0A=
+ } else {=0A=
+ fprintf(pidfp, "%d\n", pid);=0A=
+ fclose(pidfp);=0A=
+ }=0A=
}=0A=
=0A=
#ifdef HAVE_POLL_H=0A=
@@ -297,6 +312,10 @@=0A=
}=0A=
=0A=
if (do_die) {=0A=
+ if (pidfp) {=0A=
+ /* unlink() pid file before exiting... */=0A=
+ if (!pidfilecust) { unlink(pidfilename); } else { =
unlink(pidfilecust); }=0A=
+ }=0A=
die();=0A=
/*NOTREACHED*/=0A=
}=0A=
------=_NextPart_000_0020_01CBA1F2.59A8E6B0--
More information about the freebsd-bugs
mailing list