From 3ca6a02f89c2c0e789cecc52ddaa03c1dd8c2285 Mon Sep 17 00:00:00 2001
From: Jason Parker <jparker@digium.com>
Date: Fri, 29 Sep 2006 22:36:29 +0000
Subject: [PATCH] Merged revisions 44053 via svnmerge from
 https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r44053 | qwell | 2006-09-29 15:35:09 -0700 (Fri, 29 Sep 2006) | 3 lines

Fix a bug with the removal of 'atleast' argument to 'core verbose' and 'core debug'.
Add that argument back in.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@44054 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 main/asterisk.c |  4 ++--
 main/cli.c      | 63 ++++++++++++++++++++++++++++++++++++++++---------
 2 files changed, 54 insertions(+), 13 deletions(-)

diff --git a/main/asterisk.c b/main/asterisk.c
index 91d4513d01..ae8a56b019 100644
--- a/main/asterisk.c
+++ b/main/asterisk.c
@@ -2074,9 +2074,9 @@ static void ast_remotecontrol(char * data)
 		pid = atoi(cpid);
 	else
 		pid = -1;
-	snprintf(tmp, sizeof(tmp), "core verbose %d", option_verbose);
+	snprintf(tmp, sizeof(tmp), "core verbose atleast %d", option_verbose);
 	fdprint(ast_consock, tmp);
-	snprintf(tmp, sizeof(tmp), "core debug %d", option_debug);
+	snprintf(tmp, sizeof(tmp), "core debug atleast %d", option_debug);
 	fdprint(ast_consock, tmp);
 	if (ast_opt_mute) {
 		snprintf(tmp, sizeof(tmp), "log and verbose output currently muted ('logger unmute' to unmute)");
diff --git a/main/cli.c b/main/cli.c
index fb11648eb1..51807d969e 100644
--- a/main/cli.c
+++ b/main/cli.c
@@ -175,12 +175,28 @@ static int handle_reload(int fd, int argc, char *argv[])
 static int handle_verbose(int fd, int argc, char *argv[])
 {
 	int oldval = option_verbose;
+	int newlevel;
+	int atleast = 0;
 
-	if (argc == 3)
-		option_verbose = atoi(argv[2]);
-	else
+	if ((argc < 3) || (argc > 4))
 		return RESULT_SHOWUSAGE;
 
+	if (!strcasecmp(argv[2], "atleast"))
+		atleast = 1;
+
+	if (!atleast) {
+		if (argc > 3)
+			return RESULT_SHOWUSAGE;
+
+		option_verbose = atoi(argv[2]);
+	} else {
+		if (argc < 4)
+			return RESULT_SHOWUSAGE;
+
+		newlevel = atoi(argv[3]);
+		if (newlevel > option_verbose)
+			option_verbose = newlevel;
+        }
 	if (oldval > 0 && option_verbose == 0)
 		ast_cli(fd, "Verbosity is now OFF\n");
 	else if (option_verbose > 0) {
@@ -197,21 +213,46 @@ static int handle_debug(int fd, int argc, char *argv[])
 {
 	int oldval = option_debug;
 	int newlevel;
+	int atleast = 0;
 	char *filename = '\0';
 
-	if ((argc < 3) || (argc > 4))
+	if ((argc < 3) || (argc > 5))
 		return RESULT_SHOWUSAGE;
 
-	if (sscanf(argv[2], "%d", &newlevel) != 1)
-		return RESULT_SHOWUSAGE;
+	if (!strcasecmp(argv[2], "atleast"))
+		atleast = 1;
 
-	option_debug = newlevel;
+	if (!atleast) {
+		if (argc > 4)
+			return RESULT_SHOWUSAGE;
 
-	if (argc == 4) {
-		filename = argv[3];
-		ast_copy_string(debug_filename, filename, sizeof(debug_filename));
+		if (sscanf(argv[2], "%d", &newlevel) != 1)
+			return RESULT_SHOWUSAGE;
+
+		if (argc == 3) {
+			debug_filename[0] = '\0';
+		} else {
+			filename = argv[3];
+			ast_copy_string(debug_filename, filename, sizeof(debug_filename));
+		}
+
+		option_debug = newlevel;
 	} else {
-		debug_filename[0] = '\0';
+		if (argc < 4)
+			return RESULT_SHOWUSAGE;
+
+		if (sscanf(argv[3], "%d", &newlevel) != 1)
+			return RESULT_SHOWUSAGE;
+
+		if (argc == 4) {
+			debug_filename[0] = '\0';
+		} else {
+			filename = argv[4];
+			ast_copy_string(debug_filename, filename, sizeof(debug_filename));
+		}
+
+		if (newlevel > option_debug)
+			option_debug = newlevel;
 	}
 
 	if (oldval > 0 && option_debug == 0)
-- 
GitLab