[asterisk-commits] tilghman: trunk r300044 - in /trunk: CHANGES main/logger.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Dec 31 09:21:53 UTC 2010


Author: tilghman
Date: Fri Dec 31 03:21:47 2010
New Revision: 300044

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=300044
Log:
Support an alternate configuration file for the 'logger reload' command.

(closes issue #17668)
 Reported by: tilghman
 Patches: 
       20100718__logger_reload_altconf__2.diff.txt uploaded by tilghman (license 14)
 
Review: (by lmadsen, russell within comments on issue tracker)

Modified:
    trunk/CHANGES
    trunk/main/logger.c

Modified: trunk/CHANGES
URL: http://svnview.digium.com/svn/asterisk/trunk/CHANGES?view=diff&rev=300044&r1=300043&r2=300044
==============================================================================
--- trunk/CHANGES (original)
+++ trunk/CHANGES Fri Dec 31 03:21:47 2010
@@ -24,6 +24,8 @@
 -----------
  * New 'gtalk show settings' command showing the current settings loaded from
    gtalk.conf.
+ * The 'logger reload' command now supports an optional argument, specifying an
+   alternate configuration file to use.
 
 ------------------------------------------------------------------------------
 --- Functionality changes from Asterisk 1.6.2 to Asterisk 1.8 ----------------

Modified: trunk/main/logger.c
URL: http://svnview.digium.com/svn/asterisk/trunk/main/logger.c?view=diff&rev=300044&r1=300043&r2=300044
==============================================================================
--- trunk/main/logger.c (original)
+++ trunk/main/logger.c Fri Dec 31 03:21:47 2010
@@ -283,7 +283,7 @@
 	return chan;
 }
 
-static void init_logger_chain(int locked)
+static void init_logger_chain(int locked, const char *altconf)
 {
 	struct logchannel *chan;
 	struct ast_config *cfg;
@@ -291,7 +291,7 @@
 	const char *s;
 	struct ast_flags config_flags = { 0 };
 
-	if (!(cfg = ast_config_load2("logger.conf", "logger", config_flags)) || cfg == CONFIG_STATUS_FILEINVALID) {
+	if (!(cfg = ast_config_load2(S_OR(altconf, "logger.conf"), "logger", config_flags)) || cfg == CONFIG_STATUS_FILEINVALID) {
 		return;
 	}
 
@@ -616,7 +616,7 @@
 	return res;
 }
 
-static int reload_logger(int rotate)
+static int reload_logger(int rotate, const char *altconf)
 {
 	char old[PATH_MAX] = "";
 	int queue_rotate = rotate;
@@ -665,7 +665,7 @@
 
 	filesize_reload_needed = 0;
 
-	init_logger_chain(1 /* locked */);
+	init_logger_chain(1 /* locked */, altconf);
 
 	if (logfiles.queue_log) {
 		do {
@@ -716,7 +716,7 @@
 	a full Asterisk reload) */
 int logger_reload(void)
 {
-	if (reload_logger(0)) {
+	if (reload_logger(0, NULL)) {
 		return RESULT_FAILURE;
 	}
 	return RESULT_SUCCESS;
@@ -727,14 +727,14 @@
 	switch (cmd) {
 	case CLI_INIT:
 		e->command = "logger reload";
-		e->usage = 
-			"Usage: logger reload\n"
+		e->usage =
+			"Usage: logger reload [<alt-conf>]\n"
 			"       Reloads the logger subsystem state.  Use after restarting syslogd(8) if you are using syslog logging.\n";
 		return NULL;
 	case CLI_GENERATE:
 		return NULL;
 	}
-	if (reload_logger(0)) {
+	if (reload_logger(0, a->argc == 3 ? a->argv[2] : NULL)) {
 		ast_cli(a->fd, "Failed to reload the logger\n");
 		return CLI_FAILURE;
 	}
@@ -753,7 +753,7 @@
 	case CLI_GENERATE:
 		return NULL;	
 	}
-	if (reload_logger(1)) {
+	if (reload_logger(1, NULL)) {
 		ast_cli(a->fd, "Failed to reload the logger and rotate log files\n");
 		return CLI_FAILURE;
 	} 
@@ -966,7 +966,7 @@
 
 	/* If we need to reload because of the file size, then do so */
 	if (filesize_reload_needed) {
-		reload_logger(-1);
+		reload_logger(-1, NULL);
 		ast_verb(1, "Rotated Logs Per SIGXFSZ (Exceeded file size limit)\n");
 	}
 
@@ -1048,7 +1048,7 @@
 	ast_mkdir(ast_config_AST_LOG_DIR, 0777);
 
 	/* create log channels */
-	init_logger_chain(0 /* locked */);
+	init_logger_chain(0 /* locked */, NULL);
 
 	return 0;
 }




More information about the asterisk-commits mailing list