LogoopenSUSE Build Service > Projects
Sign Up | Log In

View File sysklogd-1.4.1.dif of Package syslogd.363 (Project openSUSE:12.1:Update)

--- .pkgextract
+++ .pkgextract	2006-02-08 16:29:50.000000000 +0000
@@ -0,0 +1,20 @@
+patch -p0 -b --suffix=.dgram    -s < ../sysklogd-1.4.1-dgram.patch
+patch -p0 -b --suffix=.sparc    -s < ../sysklogd-1.4.1-sparc.patch
+patch -p0 -b --suffix=.forw     -s < ../sysklogd-1.4.1-forw.patch
+patch -p0 -b --suffix=.fileleak -s < ../sysklogd-1.4.1-fileleak.patch
+patch -p0 -b --suffix=.ipv6     -s < ../sysklogd-ipv6.diff
+patch -p0 -b --suffix=.klogd24  -s < ../sysklogd-1.4.1-klogd24.dif
+patch -p0 -b --suffix=.large    -s < ../sysklogd-1.4.1-large.patch
+patch -p1 -b --suffix=.dns      -s < ../sysklogd-1.4.1-dns.patch
+patch -p0 -b --suffix=.reopen   -s < ../sysklogd-1.4.1-reopen.patch
+patch -p0 -b --suffix=.sobsd    -s < ../sysklogd-1.4.1-no_SO_BSDCOMPAT.diff
+patch -p1 -b --suffix=.owlcr    -s < ../sysklogd-1.4.1-owl-crunch_list.diff
+patch -p1 -b --suffix=.klsize   -s < ../sysklogd-1.4.1-ksyslogsize.diff
+patch -p0 -b --suffix=.usock    -s < ../sysklogd-1.4.1-unix_sockets.patch
+patch -p0 -b --suffix=.shprio   -s < ../sysklogd-1.4.1-showpri.patch
+patch -p1 -b --suffix=.presperc -s < ../sysklogd-1.4.1-preserve_percents.patch
+patch -p1 -b --suffix=.utf8     -s < ../sysklogd-1.4.1-utf8.patch
+patch -p1 -b --suffix=.ksym     -s < ../sysklogd-1.4.1-ksym.patch
+patch -p1 -b --suffix=.sleep    -s < ../sysklogd-1.4.1-dontsleep.patch
+patch -p0 -b --suffix=.signal   -s < ../sysklogd-1.4.1-signal.dif
+patch -p0 -b --suffix=.clear    -s < ../sysklogd-1.4.1-clearing.patch
--- Makefile
+++ Makefile	2010-11-26 16:28:02.996425919 +0000
@@ -1,14 +1,17 @@
 # Makefile for syslogd and klogd daemons.
 
+# For newer Kernel we have 16k buffer size
+LOG_BUFFER_SIZE = -DLOG_BUFFER_SIZE=16384
+
 CC= gcc
-#CFLAGS= -g -DSYSV -Wall
+#CFLAGS= -g -DSYSV -Wall $(LOG_BUFFER_SIZE)
 #LDFLAGS= -g
-CFLAGS= $(RPM_OPT_FLAGS) -DINET6 -O3 -DSYSV -fomit-frame-pointer -Wall -fno-strength-reduce -I.
-LDFLAGS= -s
+CFLAGS= $(RPM_OPT_FLAGS) -D_GNU_SOURCE -DINET6 -DSYSV -Wall -pipe $(LOG_BUFFER_SIZE) -fPIE -I.
+LDFLAGS= -pie
 
 # Look where your install program is.
 INSTALL = /usr/bin/install
-BINDIR = /usr/sbin
+BINDIR = /sbin
 MANDIR = /usr/man
 
 # There is one report that under an all ELF system there may be a need to
@@ -25,7 +28,7 @@ MANDIR = /usr/man
 
 # Define the following to impart start-up delay in klogd.  This is
 # useful if klogd is started simultaneously or in close-proximity to syslogd.
-# KLOGD_START_DELAY = -DKLOGD_DELAY=5
+KLOGD_START_DELAY = -DKLOGD_DELAY=5
 
 # The following define determines whether the package adheres to the
 # file system standard.
@@ -115,11 +118,12 @@ clobber: clean
 	rm -f syslogd klogd ksym syslog_tst oops_test TAGS tsyslogd tklogd
 
 install_exec: syslogd klogd
-	${INSTALL} -m 500 -s syslogd ${BINDIR}/syslogd
-	${INSTALL} -m 500 -s klogd ${BINDIR}/klogd
+	${INSTALL} syslogd ${DESTDIR}${BINDIR}/syslogd
+	${INSTALL} klogd ${DESTDIR}${BINDIR}/klogd
+	${INSTALL} -m 644 sample.conf ${DESTDIR}/etc/syslog.conf
 
 install_man:
-	${INSTALL} -o ${MAN_OWNER} -g ${MAN_OWNER} -m 644 sysklogd.8 ${MANDIR}/man8/sysklogd.8
-	${INSTALL} -o ${MAN_OWNER} -g ${MAN_OWNER} -m 644 syslogd.8 ${MANDIR}/man8/syslogd.8
-	${INSTALL} -o ${MAN_OWNER} -g ${MAN_OWNER} -m 644 syslog.conf.5 ${MANDIR}/man5/syslog.conf.5
-	${INSTALL} -o ${MAN_OWNER} -g ${MAN_OWNER} -m 644 klogd.8 ${MANDIR}/man8/klogd.8
+	${INSTALL} -m 644 sysklogd.8 ${DESTDIR}${MANDIR}/man8/sysklogd.8
+	${INSTALL} -m 644 syslogd.8 ${DESTDIR}${MANDIR}/man8/syslogd.8
+	${INSTALL} -m 644 syslog.conf.5 ${DESTDIR}${MANDIR}/man5/syslog.conf.5
+	${INSTALL} -m 644 klogd.8 ${DESTDIR}${MANDIR}/man8/klogd.8
--- klogd.c
+++ klogd.c	2008-05-30 10:23:07.616318420 +0000
@@ -277,15 +277,21 @@ _syscall3(int,ksyslog,int, type, char *,
 
 #include <sys/utsname.h>
 
-#define LOG_BUFFER_SIZE 4096
+#ifndef   _PATH_KLOG
+#  define _PATH_KLOG  "/proc/kmsg"
+#endif
+
+#ifndef   LOG_BUFFER_SIZE
+#  define LOG_BUFFER_SIZE 4096
+#endif
 #define LOG_LINE_LENGTH 1000
 
 #ifndef TESTING
-#if defined(FSSTND)
+# if defined(FSSTND)
 static char	*PidFile = _PATH_VARRUN "klogd.pid";
-#else
+# else
 static char	*PidFile = "/etc/klogd.pid";
-#endif
+# endif
 #endif
 
 #include "fortify.h"
@@ -299,6 +305,8 @@ static int	kmsg,
 
 static int	use_syscall = 0,
 		one_shot = 0,
+		ring_buf = 0,
+		ring_buf_clear = 0,
 		symbol_lookup = 1,
 		no_fork = 0;	/* don't fork - don't run in daemon mode */
 
@@ -874,8 +882,7 @@ static void LogLine(char *ptr, int len)
                value  = strtoul(sym_start+1, (char **) 0, 16);
                *(line-1) = '>';  /* put back delim */
 
-               symbol = LookupSymbol(value, &sym);
-               if ( !symbol_lookup || symbol == (char *) 0 )
+               if ( !symbol_lookup || (symbol = LookupSymbol(value, &sym)) == (char *) 0 )
                {
                   parse_state = PARSING_TEXT;
                   break;
@@ -916,7 +923,7 @@ static void LogLine(char *ptr, int len)
 static void LogKernelLine(void)
 
 {
-	auto int rdcnt;
+	auto int rdcnt, lvl;
 
 	/*
 	 * Zero-fill the log buffer.  This should cure a multitude of
@@ -925,6 +932,11 @@ static void LogKernelLine(void)
 	 * messages into this fresh buffer.
 	 */
 	memset(log_buffer, '\0', log_buf_size);
+	lvl = 2;
+	if (one_shot) {
+		if (ring_buf)	    lvl = 3;
+		if (ring_buf_clear) lvl = 4;
+	}
 	if ( (rdcnt = ksyslog(2, log_buffer, log_buf_size-1)) < 0 )
 	{
 		if ( errno == EINTR )
@@ -1033,10 +1045,15 @@ int main(argc, argv)
 			*output = (char *) 0;
 
 #ifndef TESTING
-	chdir ("/");
+	if (chdir("/") < 0) {
+		fprintf(stderr,
+			"klogd: Can not change to root directory: %s\n",
+			strerror(errno));
+		exit(1);
+	}
 #endif
 	/* Parse the command-line. */
-	while ((ch = getopt(argc, argv, "c:df:iIk:nopsvx2")) != EOF)
+	while ((ch = getopt(argc, argv, "c:df:iIk:nopsvx2rR")) != EOF)
 		switch((char)ch)
 		{
 		    case '2':		/* Print lines with symbols twice. */
@@ -1067,6 +1084,14 @@ int main(argc, argv)
 		    case 'o':		/* One-shot mode. */
 			one_shot = 1;
 			break;
+		    case 'r':		/* One-shot mode. */
+			one_shot = 1;
+			ring_buf = 1;
+			break;
+		    case 'R':		/* One-shot mode. */
+			one_shot = 1;
+			ring_buf_clear = 1;
+			break;
 		    case 'p':
 			SetParanoiaLevel(1);	/* Load symbols on oops. */
 			break;	
@@ -1193,8 +1218,11 @@ int main(argc, argv)
 	if ( one_shot )
 	{
 		if (symbol_lookup) {
-			InitKsyms(symfile);
-			InitMsyms();
+			/* Both functions return 1 at success and 0 otherwise */
+			symbol_lookup  = InitKsyms(symfile);
+			symbol_lookup |= InitMsyms();
+			if (!symbol_lookup)
+				Syslog(LOG_WARNING, "Cannot build symbol table - disabling symbol lookups");
 		}
 		if ( (logsrc = GetKernelLogSrc()) == kernel )
 			LogKernelLine();
@@ -1209,8 +1237,11 @@ int main(argc, argv)
 #endif
 	logsrc = GetKernelLogSrc();
 	if (symbol_lookup) {
-		InitKsyms(symfile);
-		InitMsyms();
+		/* Both functions return 1 at success and 0 otherwise */
+		symbol_lookup  = InitKsyms(symfile);
+		symbol_lookup |= InitMsyms();
+		if (!symbol_lookup)
+			Syslog(LOG_WARNING, "Cannot build symbol table - disabling symbol lookups");
 	}
 
         /* The main loop. */
--- pidfile.c
+++ pidfile.c	2008-05-29 22:04:24.000000000 +0000
@@ -46,11 +46,11 @@
 int read_pid (char *pidfile)
 {
   FILE *f;
-  int pid;
+  int pid = 0;
 
   if (!(f=fopen(pidfile,"r")))
     return 0;
-  fscanf(f,"%d", &pid);
+  (void)fscanf(f,"%d", &pid);
   fclose(f);
   return pid;
 }
@@ -90,7 +90,7 @@ int write_pid (char *pidfile)
 {
   FILE *f;
   int fd;
-  int pid;
+  int pid = 0;
 #if defined(USE_FCNTL) && (USE_FCNTL != 0)
   struct flock lck;
 #endif
@@ -115,14 +115,14 @@ int write_pid (char *pidfile)
   }
 #else
   if (flock(fd, LOCK_EX|LOCK_NB) == -1) {
-      fscanf(f, "%d", &pid);
+      (void)fscanf(f, "%d", &pid);
       fclose(f);
       fprintf(stderr, "Can't lock, lock is held by pid %d.\n", pid);
       return 0;
   }
 #endif
 
-  pid = getpid();
+  pid = (int)getpid();
   if (!fprintf(f,"%d\n", pid)) {
       fprintf(stderr, "Can't write pid , %s.\n", strerror(errno));
       close(fd);
--- resolve.c
+++ resolve.c	2006-02-08 16:29:50.000000000 +0000
@@ -13,6 +13,7 @@
 #include <stdlib.h>
 #include <signal.h>
 #include <unistd.h>
+#include <errno.h>
 
 #if defined(__GLIBC__)
 #define dprintf mydprintf
@@ -208,7 +209,7 @@ do_query(int fd, int family, const char
 {
 	struct sockaddr_storage ss;
 	struct addrinfo hints, *res;
-	int	r;
+	int	r, c;
 
 	memset(&hints, 0, sizeof(hints));
 	hints.ai_socktype = SOCK_DGRAM;
@@ -244,6 +245,20 @@ do_query(int fd, int family, const char
 	} else {
 		memcpy(&ss, res->ai_addr, res->ai_addrlen);
 	}
-	write(fd, &ss, sizeof(ss));
-	exit(0);
+
+	c = 100;
+	do {
+		if ((r = write(fd, &ss, sizeof(ss))) < 0) {
+			if ((errno != EAGAIN) && (errno != EINTR)) {
+				dprintf("failed to write: %s\n", strerror(errno));
+				exit(1);
+			}
+			usleep(50000);
+		}
+	} while ((r < 0) && (c-- > 0));
+
+	if (r >= 0)
+		exit(0);
+	dprintf("failed to write: %s\n", strerror(errno));
+	exit(1);
 }
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ sample-s390.conf	2006-02-08 16:29:50.000000000 +0000
@@ -0,0 +1,60 @@
+# /etc/syslog.conf - Configuration file for syslogd(8)
+#
+# For info about the format of this file, see "man syslog.conf".
+#
+
+#
+#
+# print most on /dev/console and on the xconsole pipe
+#
+kern.*;*.warning;news.emerg;mail.alert;authpriv.none	 /dev/console
+kern.*;*.warning;news.err;mail.err;authpriv.none	|/dev/xconsole
+*.emerg				 *
+
+# enable this, if you want that root is informed
+# immediately, e.g. of logins
+#*.alert				 root
+
+
+#
+# all email-messages in one file
+#
+mail.*				-/var/log/mail
+mail.info			-/var/log/mail.info
+mail.warning			-/var/log/mail.warn
+mail.err			 /var/log/mail.err
+
+#
+# all news-messages
+#
+# these files are rotated and examined by "news.daily"
+news.crit			-/var/log/news/news.crit
+news.err			-/var/log/news/news.err
+news.notice			-/var/log/news/news.notice
+# enable this, if you want to keep all news messages
+# in one file
+#news.*				-/var/log/news.all
+
+#
+# Warnings in one file
+#
+*.=warning;*.=err		-/var/log/warn
+*.crit				 /var/log/warn
+
+#
+# save the rest in one file
+#
+*.*;mail.none;news.none		-/var/log/messages
+
+#
+# enable this, if you want to keep all messages
+# in one file
+#*.*				-/var/log/allmessages
+
+#
+# Some foreign boot scripts require local7
+#
+local0,local1.*			-/var/log/localmessages
+local2,local3.*			-/var/log/localmessages
+local4,local5.*			-/var/log/localmessages
+local6,local7.*			-/var/log/localmessages
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ sample.conf	2006-02-08 16:29:50.000000000 +0000
@@ -0,0 +1,60 @@
+# /etc/syslog.conf - Configuration file for syslogd(8)
+#
+# For info about the format of this file, see "man syslog.conf".
+#
+
+#
+#
+# print most on tty10 and on the xconsole pipe
+#
+kern.warning;*.err;authpriv.none	 /dev/tty10
+kern.warning;*.err;authpriv.none	|/dev/xconsole
+*.emerg				 *
+
+# enable this, if you want that root is informed
+# immediately, e.g. of logins
+#*.alert				 root
+
+
+#
+# all email-messages in one file
+#
+mail.*				-/var/log/mail
+mail.info			-/var/log/mail.info
+mail.warning			-/var/log/mail.warn
+mail.err			 /var/log/mail.err
+
+#
+# all news-messages
+#
+# these files are rotated and examined by "news.daily"
+news.crit			-/var/log/news/news.crit
+news.err			-/var/log/news/news.err
+news.notice			-/var/log/news/news.notice
+# enable this, if you want to keep all news messages
+# in one file
+#news.*				-/var/log/news.all
+
+#
+# Warnings in one file
+#
+*.=warning;*.=err		-/var/log/warn
+*.crit				 /var/log/warn
+
+#
+# save the rest in one file
+#
+*.*;mail.none;news.none		-/var/log/messages
+
+#
+# enable this, if you want to keep all messages
+# in one file
+#*.*				-/var/log/allmessages
+
+#
+# Some foreign boot scripts require local7
+#
+local0,local1.*			-/var/log/localmessages
+local2,local3.*			-/var/log/localmessages
+local4,local5.*			-/var/log/localmessages
+local6,local7.*			-/var/log/localmessages
--- syslog.c
+++ syslog.c	2006-02-08 16:29:50.000000000 +0000
@@ -70,7 +70,13 @@ static char sccsid[] = "@(#)syslog.c	5.2
 #include <paths.h>
 #include <stdio.h>
 
-#define	_PATH_LOGNAME	"/dev/log"
+#ifdef  _PATH_LOG
+#  define _PATH_LOGNAME		_PATH_LOG
+#endif
+#ifndef _PATH_LOGNAME
+#  define _PATH_LOGNAME		"/dev/log"
+#endif
+
 
 #include "fortify.h"
 
--- syslogd.c
+++ syslogd.c	2008-05-28 10:14:25.000000000 +0000
@@ -466,6 +466,7 @@ static char sccsid[]  __attribute__ ((un
 #include <sys/types.h>
 #endif
 #include <utmp.h>
+#include <limits.h>
 #include <ctype.h>
 #include <string.h>
 #include <setjmp.h>
@@ -579,7 +580,11 @@ int funix[MAXFUNIX] = { -1, };
 # define UNAMESZ	8	/* length of a login name */
 #endif
 #define MAXUNAMES	20	/* maximum number of user names */
-#define MAXFNAME	200	/* max file pathname length */
+#ifdef _POSIX_PATH_MAX
+# define MAXFNAME	_POSIX_PATH_MAX
+#else
+# define MAXFNAME	200	/* max file pathname length */
+#endif
 
 #define INTERNAL_NOPRI	0x10	/* the "no priority" priority */
 #define TABLE_NOPRI	0	/* Value to indicate no priority in f_pmask */
@@ -659,8 +664,8 @@ struct filed {
  * in seconds after previous message is logged.  After each flush,
  * we move to the next interval until we reach the largest.
  */
-int	repeatinterval[] = { 30, 60 };	/* # of secs before flush */
-#define	MAXREPEAT ((sizeof(repeatinterval) / sizeof(repeatinterval[0])) - 1)
+time_t	repeatinterval[] = { 30, 60 };	/* # of secs before flush */
+#define	MAXREPEAT	((int)((sizeof(repeatinterval) / sizeof(repeatinterval[0])) - 1))
 #define	REPEATTIME(f)	((f)->f_time + repeatinterval[(f)->f_repeatcount])
 #define	BACKOFF(f)	{ if (++(f)->f_repeatcount > MAXREPEAT) \
 				 (f)->f_repeatcount = MAXREPEAT; \
@@ -774,7 +779,7 @@ int usage(void);
 static pid_t sid;
 #endif
 void untty(void);
-void printchopped(const char *hname, char *msg, int len, int fd);
+void printchopped(const char *hname, char *msg, size_t len, int fd);
 void printline(const char *hname, char *msg);
 void printsys(char *msg);
 void logmsg(int pri, char *msg, const char *from, int flags);
@@ -822,7 +827,7 @@ int main(argc, argv)
 #else /* __GLIBC__ */
 #ifndef TESTING
 #ifdef SYSLOG_INET
-	size_t len;
+	socklen_t len;
 #endif
 #endif
 	int num_fds;
@@ -868,7 +873,12 @@ int main(argc, argv)
 	int maxfds;
 
 #ifndef TESTING
-	chdir ("/");
+	if (chdir("/") < 0) {
+		fprintf(stderr,
+			"syslogd: Can not change to root directory: %s\n",
+			strerror(errno));
+		exit(1);
+	}
 #endif
 	for (i = 1; i < MAXFUNIX; i++) {
 		funixn[i] = "";
@@ -1074,13 +1084,15 @@ int main(argc, argv)
 	leave = 0;
 
 	(void) signal(SIGTERM, die);
+	(void) siginterrupt(SIGTERM,1);		/* Make recvfrom() be able to receive EINTR */
 	(void) signal(SIGINT, Debug ? die : SIG_IGN);
 	(void) signal(SIGQUIT, Debug ? die : SIG_IGN);
 	(void) signal(SIGCHLD, reapchild);
-	(void) signal(SIGALRM, domark);
 	(void) signal(SIGUSR1, Debug ? debug_switch : SIG_IGN);
 	(void) signal(SIGXFSZ, SIG_IGN);
+	(void) signal(SIGALRM, domark);
 	(void) alarm(TIMERINTVL);
+	(void) siginterrupt(SIGALRM,1);		/* Make recvfrom() be able to receive EINTR */
 
 	/* Create a partial message table for all file descriptors. */
 	num_fds = getdtablesize();
@@ -1243,7 +1255,7 @@ int main(argc, argv)
 				 *  -Joey
 				 */
 				printchopped(from, line, \
- 					     i + 2,  finet);
+ 					     (size_t)(i + 2),  finet);
 			} else if (i < 0 && errno != EINTR) {
 				dprintf("INET socket error: %d = %s.\n", \
 					errno, strerror(errno));
@@ -1262,7 +1274,7 @@ int main(argc, argv)
 			parts[fileno(stdin)] = (char *) 0;
 			i = read(fileno(stdin), line, MAXLINE);
 			if (i > 0) {
-				printchopped(LocalHostName, line, i+1, fileno(stdin));
+				printchopped(LocalHostName, line, (size_t)(i+1), fileno(stdin));
 		  	} else if (i < 0) {
 		    		if (errno != EINTR) {
 		      			logerror("stdin");
@@ -1307,8 +1319,9 @@ static int create_unix_socket(const char
 		close(fd);
 #ifndef SYSV
 		dienow();
-#endif
+#else
 		return -1;
+#endif
 	}
 	return fd;
 }
@@ -1485,7 +1498,7 @@ void untty()
 void printchopped(hname, msg, len, fd)
 	const char *hname;
 	char *msg;
-	int len;
+	size_t len;
 	int fd;
 {
 	auto int ptlngth;
@@ -1585,6 +1598,8 @@ void printline(hname, msg)
 	while ((c = *p++) && q < &line[sizeof(line) - 4]) {
 		if (c == '\n')
 			*q++ = ' ';
+		else if (c == '\t')
+			*q++ = c;
 		else if (c < 040) {
 			*q++ = '^';
 			*q++ = c ^ 0100;
@@ -1756,7 +1771,7 @@ void logmsg(pri, msg, from, flags)
 		    !strcmp(from, f->f_prevhost)) {
 			(void) strncpy(f->f_lasttime, timestamp, 15);
 			f->f_prevcount++;
-			dprintf("msg repeated %d times, %ld sec of %d.\n",
+			dprintf("msg repeated %d times, %ld sec of %ld.\n",
 			    f->f_prevcount, now - f->f_time,
 			    repeatinterval[f->f_repeatcount]);
 			/*
@@ -2085,13 +2100,7 @@ void wallmsg(f, iov)
 	register struct filed *f;
 	struct iovec *iov;
 {
-	char p[6 + UNAMESZ];
-	register int i;
-	int ttyf, len;
 	static int reenter = 0;
-	struct utmp ut;
-	struct utmp *uptr;
-	char greetings[200];
 
 	if (reenter++)
 		return;
@@ -2105,9 +2114,18 @@ void wallmsg(f, iov)
 	 * and doing notty().
 	 */
 	if (fork() == 0) {
+		char p[6 + UNAMESZ];
+		register int i;
+		int ttyf;
+		static int len = 0;
+		struct utmp ut;
+		struct utmp *uptr;
+		static char greetings[200];
+
 		(void) signal(SIGTERM, SIG_DFL);
 		(void) alarm(0);
 		(void) signal(SIGALRM, endtty);
+		(void) siginterrupt(SIGALRM,1); /* Make recvfrom() be able to receive EINTR */
 #ifndef _BSD_SOURCE
 		(void) signal(SIGTTOU, SIG_IGN);
 		(void) sigsetmask(0);
@@ -2123,7 +2141,7 @@ void wallmsg(f, iov)
 			/* is this slot used? */
 			if (ut.ut_name[0] == '\0')
 				continue;
-			if (ut.ut_type == LOGIN_PROCESS)
+			if (ut.ut_type != USER_PROCESS)
 			        continue;
 			if (!(strcmp (ut.ut_name,"LOGIN"))) /* paranoia */
 			        continue;
@@ -2301,7 +2319,7 @@ void domark()
 	for (f = Files; f; f = f->f_next) {
 #endif
 		if (f->f_prevcount && now >= REPEATTIME(f)) {
-			dprintf("flush %s: repeated %d times, %d sec.\n",
+			dprintf("flush %s: repeated %d times, %ld sec.\n",
 			    TypeNames[f->f_type], f->f_prevcount,
 			    repeatinterval[f->f_repeatcount]);
 			fprintlog(f, LocalHostName, 0, (char *)NULL);
@@ -2311,6 +2329,7 @@ void domark()
 	}
 	(void) signal(SIGALRM, domark);
 	(void) alarm(TIMERINTVL);
+	(void) siginterrupt(SIGALRM,1);		/* Make recvfrom() be able to receive EINTR */
 }
 
 void debug_switch()