Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 8 Jul 2018 10:08:24 +0000 (UTC)
From:      Ed Schouten <ed@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r336086 - head/usr.sbin/newsyslog
Message-ID:  <201807081008.w68A8Oc7066859@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ed
Date: Sun Jul  8 10:08:24 2018
New Revision: 336086
URL: https://svnweb.freebsd.org/changeset/base/336086

Log:
  Use the FQDN in the newsyslog log message when RFC 5424 is enabled.
  
  The RFC 5424 spec mentions that logging FQDNs over short hostnames is
  preferred. Alter this code, so that the hostname doesn't get truncated
  on startup. Keep track of the length of the short hostname, so that
  fprintf() can do the truncation where necessary.
  
  MFC after:	1 month

Modified:
  head/usr.sbin/newsyslog/newsyslog.c

Modified: head/usr.sbin/newsyslog/newsyslog.c
==============================================================================
--- head/usr.sbin/newsyslog/newsyslog.c	Sun Jul  8 07:42:58 2018	(r336085)
+++ head/usr.sbin/newsyslog/newsyslog.c	Sun Jul  8 10:08:24 2018	(r336086)
@@ -271,6 +271,7 @@ static char daytime[DAYTIME_LEN];/* The current time i
 static char daytime_rfc5424[DAYTIME_RFC5424_LEN];
 
 static char hostname[MAXHOSTNAMELEN]; /* hostname */
+static size_t hostname_shortlen;
 
 static const char *path_syslogpid = _PATH_SYSLOGPID;
 
@@ -657,11 +658,8 @@ parse_args(int argc, char **argv)
 
 	/* Let's get our hostname */
 	(void)gethostname(hostname, sizeof(hostname));
+	hostname_shortlen = strcspn(hostname, ".");
 
-	/* Truncate domain */
-	if ((p = strchr(hostname, '.')) != NULL)
-		*p = '\0';
-
 	/* Parse command line options. */
 	while ((ch = getopt(argc, argv, "a:d:f:nrst:vCD:FNPR:S:")) != -1)
 		switch (ch) {
@@ -2349,14 +2347,20 @@ log_trim(const char *logname, const struct conf_entry 
 		}
 	} else {
 		if (log_ent->firstcreate)
-			fprintf(f, "%s %s newsyslog[%d]: logfile first created%s\n",
-			    daytime, hostname, getpid(), xtra);
+			fprintf(f,
+			    "%s %.*s newsyslog[%d]: logfile first created%s\n",
+			    daytime, (int)hostname_shortlen, hostname, getpid(),
+			    xtra);
 		else if (log_ent->r_reason != NULL)
-			fprintf(f, "%s %s newsyslog[%d]: logfile turned over%s%s\n",
-			    daytime, hostname, getpid(), log_ent->r_reason, xtra);
+			fprintf(f,
+			    "%s %.*s newsyslog[%d]: logfile turned over%s%s\n",
+			    daytime, (int)hostname_shortlen, hostname, getpid(),
+			    log_ent->r_reason, xtra);
 		else
-			fprintf(f, "%s %s newsyslog[%d]: logfile turned over%s\n",
-			    daytime, hostname, getpid(), xtra);
+			fprintf(f,
+			    "%s %.*s newsyslog[%d]: logfile turned over%s\n",
+			    daytime, (int)hostname_shortlen, hostname, getpid(),
+			    xtra);
 	}
 	if (fclose(f) == EOF)
 		err(1, "log_trim: fclose");



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201807081008.w68A8Oc7066859>