gentoo-overlay/net-misc/openntpd/files/openntpd-20080406-pidfile.patch

141 lines
3.4 KiB
Diff

adding a -p option to openntpd to create a pidfile
https://bugs.gentoo.org/show_bug.cgi?id=493082
diff -u -r openntpd-20080406p.orig/ntpd.8 openntpd-20080406p/ntpd.8
--- openntpd-20080406p.orig/ntpd.8 2013-12-01 12:49:49.773116316 -0800
+++ openntpd-20080406p/ntpd.8 2013-12-01 13:27:39.417324497 -0800
@@ -25,6 +25,7 @@
.Bk -words
.Op Fl dnSsv
.Op Fl f Ar file
+.Op Fl p Ar file
.Ek
.Sh DESCRIPTION
The
@@ -63,13 +64,16 @@
.Xr ntpd.conf 5 .
.Pp
The options are as follows:
-.Bl -tag -width "-f fileXXX"
+.Bl -tag -width "-p fileXXX"
.It Fl d
Do not daemonize.
If this option is specified,
.Nm
will run in the foreground and log to
.Em stderr .
+.It Fl p Ar file
+Write pid to
+.Ar file
.It Fl f Ar file
Use
.Ar file
diff -u -r openntpd-20080406p.orig/ntpd.c openntpd-20080406p/ntpd.c
--- openntpd-20080406p.orig/ntpd.c 2013-12-01 12:49:49.774116176 -0800
+++ openntpd-20080406p/ntpd.c 2013-12-01 13:31:43.964616270 -0800
@@ -78,7 +78,7 @@
{
extern char *__progname;
- fprintf(stderr, "usage: %s [-dnSsv] [-f file]\n", __progname);
+ fprintf(stderr, "usage: %s [-dnSsv] [-f file] [-p file]\n", __progname);
exit(1);
}
@@ -105,7 +105,7 @@
log_init(1); /* log to stderr until daemonized */
res_init(); /* XXX */
- while ((ch = getopt(argc, argv, "df:nsSv")) != -1) {
+ while ((ch = getopt(argc, argv, "df:np:sSv")) != -1) {
switch (ch) {
case 'd':
lconf.debug = 1;
@@ -116,6 +116,9 @@
case 'n':
lconf.noaction = 1;
break;
+ case 'p':
+ lconf.pid_file = optarg;
+ break;
case 's':
lconf.settime = 1;
break;
@@ -157,9 +160,17 @@
reset_adjtime();
if (!lconf.settime) {
log_init(lconf.debug);
- if (!lconf.debug)
+ if (!lconf.debug) {
if (daemon(1, 0))
fatal("daemon");
+ else if (lconf.pid_file != NULL) {
+ FILE *f = fopen(lconf.pid_file, "w");
+ if (f == NULL)
+ fatal("couldn't open pid file");
+ fprintf(f, "%ld\n", (long) getpid());
+ fclose(f);
+ }
+ }
} else
timeout = SETTIME_TIMEOUT * 1000;
@@ -201,9 +212,17 @@
log_init(lconf.debug);
log_debug("no reply received in time, skipping initial "
"time setting");
- if (!lconf.debug)
+ if (!lconf.debug) {
if (daemon(1, 0))
fatal("daemon");
+ else if (lconf.pid_file != NULL) {
+ FILE *f = fopen(lconf.pid_file, "w");
+ if (f == NULL)
+ fatal("couldn't open pid file");
+ fprintf(f, "%ld\n", (long) getpid());
+ fclose(f);
+ }
+ }
}
if (nfds > 0 && (pfd[PFD_PIPE].revents & POLLOUT))
@@ -242,6 +261,8 @@
msgbuf_clear(&ibuf->w);
free(ibuf);
log_info("Terminating");
+ if (lconf.pid_file != NULL)
+ unlink(lconf.pid_file);
return (0);
}
@@ -316,9 +337,17 @@
memcpy(&d, imsg.data, sizeof(d));
ntpd_settime(d);
/* daemonize now */
- if (!lconf->debug)
+ if (!lconf->debug) {
if (daemon(1, 0))
fatal("daemon");
+ else if (lconf->pid_file != NULL) {
+ FILE *f = fopen(lconf->pid_file, "w");
+ if (f == NULL)
+ fatal("couldn't open pid file");
+ fprintf(f, "%ld\n", (long) getpid());
+ fclose(f);
+ }
+ }
lconf->settime = 0;
break;
case IMSG_HOST_DNS:
diff -u -r openntpd-20080406p.orig/ntpd.h openntpd-20080406p/ntpd.h
--- openntpd-20080406p.orig/ntpd.h 2013-12-01 12:49:49.773116316 -0800
+++ openntpd-20080406p/ntpd.h 2013-12-01 12:54:02.023313872 -0800
@@ -178,6 +178,7 @@
u_int8_t debug;
u_int32_t scale;
u_int8_t noaction;
+ char *pid_file;
};
struct buf {