summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlexander Barton <alex@barton.de>2023-09-17 21:37:45 +0200
committerAlexander Barton <alex@barton.de>2023-09-17 21:37:45 +0200
commit8fdb8f90b1756520f173a0dc11a2320cb63c0a4e (patch)
treeca15f9f8d07938c65e5c1564fda70ef828040bb5
parenta106d18d7d4b33e1dc93367f9f0c0181003c4e74 (diff)
parentdc412a450ef14b424f8e581c933663d9bcf9ebcc (diff)
downloadngircd-8fdb8f90b1756520f173a0dc11a2320cb63c0a4e.tar.gz
ngircd-8fdb8f90b1756520f173a0dc11a2320cb63c0a4e.zip
Merge branch 'katp32/master'
Thanks Katherine Peeters for the patch and pull request!

Closes #294.

* katp32/master:
  Improve documentation for --syslog
  Added command line flag to enable syslog
  Split NoSyslog from behaviour of NoDaemon
-rw-r--r--man/ngircd.8.tmpl3
-rw-r--r--src/ngircd/log.c10
-rw-r--r--src/ngircd/log.h2
-rw-r--r--src/ngircd/ngircd.c21
4 files changed, 28 insertions, 8 deletions
diff --git a/man/ngircd.8.tmpl b/man/ngircd.8.tmpl
index d9c0f528..d9657362 100644
--- a/man/ngircd.8.tmpl
+++ b/man/ngircd.8.tmpl
@@ -53,6 +53,9 @@ Don't fork a child and don't detach from controlling terminal.
 All log messages go to the console and you can use CTRL-C to
 terminate the server.
 .TP
+\fB\-y\fR, \fB\-\-syslog\fR
+Write log messages to the syslog even when running in the foreground.
+.TP
 \fB\-p\fR, \fB\-\-passive\fR
 Disable automatic connections to other servers. You can use the IRC command
 CONNECT later on as IRC Operator to link this ngIRCd to other servers.
diff --git a/src/ngircd/log.c b/src/ngircd/log.c
index e036b015..dae53f9f 100644
--- a/src/ngircd/log.c
+++ b/src/ngircd/log.c
@@ -39,13 +39,13 @@
 
 #include "log.h"
 
-static bool Is_Daemon;
+static bool Use_Syslog;
 
 
 static void
 Log_Message(int Level, const char *msg)
 {
-	if (!Is_Daemon) {
+	if (!Use_Syslog) {
 		/* log to console */
 		fprintf(stdout, "[%ld:%d %4ld] %s\n", (long)getpid(), Level,
 				(long)(time(NULL) - NGIRCd_Start), msg);
@@ -63,12 +63,12 @@ Log_Message(int Level, const char *msg)
  * Initialitze logging.
  * This function is called before the configuration file is read in.
  *
- * @param Daemon_Mode Set to true if ngIRCd is running as daemon.
+ * @param Syslog_Mode Set to true if ngIRCd is configured to log to the syslog.
  */
 GLOBAL void
-Log_Init(bool Daemon_Mode)
+Log_Init(bool Syslog_Mode)
 {
-	Is_Daemon = Daemon_Mode;
+	Use_Syslog = Syslog_Mode;
 
 #ifdef SYSLOG
 #ifndef LOG_CONS     /* Kludge: mips-dec-ultrix4.5 has no LOG_CONS */
diff --git a/src/ngircd/log.h b/src/ngircd/log.h
index 85d00d9f..0ac4c4d9 100644
--- a/src/ngircd/log.h
+++ b/src/ngircd/log.h
@@ -32,7 +32,7 @@
 
 #define LOG_snotice 1024
 
-GLOBAL void Log_Init PARAMS(( bool Daemon_Mode ));
+GLOBAL void Log_Init PARAMS(( bool Syslog_Mode ));
 GLOBAL void Log_Exit PARAMS(( void ));
 
 GLOBAL void Log PARAMS(( int Level, const char *Format, ... ));
diff --git a/src/ngircd/ngircd.c b/src/ngircd/ngircd.c
index 47f6092e..fd919e34 100644
--- a/src/ngircd/ngircd.c
+++ b/src/ngircd/ngircd.c
@@ -74,7 +74,7 @@ GLOBAL int
 main(int argc, const char *argv[])
 {
 	bool ok, configtest = false;
-	bool NGIRCd_NoDaemon = false;
+	bool NGIRCd_NoDaemon = false, NGIRCd_NoSyslog = false;
 	int i;
 	size_t n;
 
@@ -126,6 +126,7 @@ main(int argc, const char *argv[])
 			}
 			if (strcmp(argv[i], "--nodaemon") == 0) {
 				NGIRCd_NoDaemon = true;
+				NGIRCd_NoSyslog = true;
 				ok = true;
 			}
 			if (strcmp(argv[i], "--passive") == 0) {
@@ -138,6 +139,12 @@ main(int argc, const char *argv[])
 				ok = true;
 			}
 #endif
+#ifdef SYSLOG
+			if (strcmp(argv[i], "--syslog") == 0) {
+				NGIRCd_NoSyslog = false;
+				ok = true;
+			}
+#endif
 			if (strcmp(argv[i], "--version") == 0) {
 				Show_Version();
 				exit(0);
@@ -172,6 +179,7 @@ main(int argc, const char *argv[])
 
 				if (argv[i][n] == 'n') {
 					NGIRCd_NoDaemon = true;
+					NGIRCd_NoSyslog = true;
 					ok = true;
 				}
 				if (argv[i][n] == 'p') {
@@ -193,6 +201,12 @@ main(int argc, const char *argv[])
 					Show_Version();
 					exit(1);
 				}
+#ifdef SYSLOG
+				if (argv[i][n] == 'y') {
+					NGIRCd_NoSyslog = false;
+					ok = true;
+				}
+#endif
 
 				if (!ok) {
 					fprintf(stderr,
@@ -241,7 +255,7 @@ main(int argc, const char *argv[])
 		NGIRCd_SignalRestart = false;
 		NGIRCd_SignalQuit = false;
 
-		Log_Init(!NGIRCd_NoDaemon);
+		Log_Init(!NGIRCd_NoSyslog);
 		Random_Init();
 		Conf_Init();
 		Log_ReInit();
@@ -467,6 +481,9 @@ Show_Help( void )
 #endif
 	puts( "  -t, --configtest   read, validate and display configuration; then exit" );
 	puts( "  -V, --version      output version information and exit" );
+#ifdef SYSLOG
+	puts( "  -y, --syslog       log to syslog even when running in the foreground (-n)" );
+#endif
 	puts( "  -h, --help         display this help and exit" );
 } /* Show_Help */