Blob Blame History Raw
Reverting upstream commit f7078b6, as it makes hitch segfault when
logging to syslog.

--- src/hitch.c.orig	2015-08-03 19:45:45.846820957 +0200
+++ src/hitch.c	2015-08-03 19:45:58.993578806 +0200
@@ -260,42 +260,41 @@
 static void
 VWLOG (int level, const char *fmt, va_list ap)
 {
-	struct timeval tv;
-	struct tm tm;
-	char buf[1024];
-	int n;
-	va_list ap1;
+	if (logf) {
+		struct timeval tv;
+		struct tm tm;
+		char buf[1024];
+		int n;
+		va_list ap1;
 
+		gettimeofday(&tv,NULL);
+		if (logf != stdout && logf != stderr
+		    && tv.tv_sec >= logf_check_t+LOG_REOPEN_INTERVAL) {
+			struct stat st;
+			if (stat(CONFIG->LOG_FILENAME, &st) < 0
+			    || st.st_dev != logf_st.st_dev
+			    || st.st_ino != logf_st.st_ino) {
+				fclose(logf);
+
+				logf = fopen(CONFIG->LOG_FILENAME, "a");
+				if (logf == NULL
+				    || fstat(fileno(logf), &logf_st) < 0)
+					memset(&logf_st, 0, sizeof(logf_st));
+			}
+			logf_check_t = tv.tv_sec;
+		}
+
+		localtime_r(&tv.tv_sec, &tm);
+		n = strftime(buf, sizeof(buf), "%Y%m%dT%H%M%S", &tm);
+		sprintf(buf + n, ".%06d [%5d] %s",
+		    (int) tv.tv_usec, getpid(), fmt);
+		va_copy(ap1, ap);
+		vfprintf(logf, buf, ap1);
+		va_end(ap1);
+	}
 	if (CONFIG->SYSLOG) {
 		vsyslog(level, fmt, ap);
 	}
-
-	if (!logf)
-		return;
-	AZ(gettimeofday(&tv, NULL));
-	if (logf != stdout && logf != stderr
-	    && tv.tv_sec >= logf_check_t + LOG_REOPEN_INTERVAL) {
-		struct stat st;
-		if (stat(CONFIG->LOG_FILENAME, &st) < 0
-		    || st.st_dev != logf_st.st_dev
-		    || st.st_ino != logf_st.st_ino) {
-			fclose(logf);
-
-			logf = fopen(CONFIG->LOG_FILENAME, "a");
-			if (logf == NULL
-			    || fstat(fileno(logf), &logf_st) < 0)
-				memset(&logf_st, 0, sizeof(logf_st));
-		}
-		logf_check_t = tv.tv_sec;
-	}
-
-	AN(localtime_r(&tv.tv_sec, &tm));
-	n = strftime(buf, sizeof(buf), "%Y%m%dT%H%M%S", &tm);
-	snprintf(buf + n, sizeof(buf) - n, ".%06d [%5d] %s",
-	    (int) tv.tv_usec, getpid(), fmt);
-	va_copy(ap1, ap);
-	vfprintf(logf, buf, ap1);
-	va_end(ap1);
 }
 
 static void
@@ -2478,13 +2477,9 @@
 	struct front_arg *fa;
 	CONFIG = config_new();
 
-	// parse command line
-	config_parse_cli(argc, argv, CONFIG);
-
 	if (CONFIG->LOG_FILENAME) {
 		FILE* f;
 		if ((f = fopen(CONFIG->LOG_FILENAME, "a")) == NULL) {
-			logf = stderr;
 			ERR("FATAL: Unable to open log file: %s: %s\n",
 			    CONFIG->LOG_FILENAME, strerror(errno));
 			exit(2);
@@ -2500,6 +2495,9 @@
 	}
 	setbuf(logf, NULL);
 
+	// parse command line
+	config_parse_cli(argc, argv, CONFIG);
+
 	create_workers = 1;
 
 	openssl_check_version();