]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Support an alternate configuration file for the 'logger reload' command.
authorTilghman Lesher <tilghman@meg.abyt.es>
Fri, 31 Dec 2010 09:21:47 +0000 (09:21 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Fri, 31 Dec 2010 09:21:47 +0000 (09:21 +0000)
(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)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@300044 65c4cc65-6c06-0410-ace0-fbb531ad65f3

CHANGES
main/logger.c

diff --git a/CHANGES b/CHANGES
index f6fa3397d68b939a39989be7e8a4fb0b3ec102ca..0a4f809225211be53407166a4cdedf93dbde50b5 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -24,6 +24,8 @@ CLI Changes
 -----------
  * 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 ----------------
index 12f835f999e593abbff007e5300d3473509c24e2..db9ec9bdd1460e2f7b0da957cb2be6c44fd586ed 100644 (file)
@@ -283,7 +283,7 @@ static struct logchannel *make_logchannel(const char *channel, const char *compo
        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 @@ static void init_logger_chain(int locked)
        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 @@ static int rotate_file(const char *filename)
        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 @@ static int reload_logger(int rotate)
 
        filesize_reload_needed = 0;
 
-       init_logger_chain(1 /* locked */);
+       init_logger_chain(1 /* locked */, altconf);
 
        if (logfiles.queue_log) {
                do {
@@ -716,7 +716,7 @@ static int reload_logger(int rotate)
        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 @@ static char *handle_logger_reload(struct ast_cli_entry *e, int cmd, struct ast_c
        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 @@ static char *handle_logger_rotate(struct ast_cli_entry *e, int cmd, struct ast_c
        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 @@ static void logger_print_normal(struct logmsg *logmsg)
 
        /* 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 @@ int init_logger(void)
        ast_mkdir(ast_config_AST_LOG_DIR, 0777);
 
        /* create log channels */
-       init_logger_chain(0 /* locked */);
+       init_logger_chain(0 /* locked */, NULL);
 
        return 0;
 }