[Asterisk-cvs] asterisk cli.c,1.68,1.69

markster at lists.digium.com markster at lists.digium.com
Thu Jan 6 02:06:48 CST 2005


Update of /usr/cvsroot/asterisk
In directory mongoose.digium.com:/tmp/cvs-serv23491

Modified Files:
	cli.c 
Log Message:
Fix command completion issue (bug #3257)


Index: cli.c
===================================================================
RCS file: /usr/cvsroot/asterisk/cli.c,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -d -r1.68 -r1.69
--- cli.c	29 Dec 2004 07:46:10 -0000	1.68
+++ cli.c	6 Jan 2005 08:11:43 -0000	1.69
@@ -776,8 +776,8 @@
 	{ { "reload", NULL }, handle_reload, "Reload configuration", reload_help, complete_mod_2 },
 	{ { "set", "debug", NULL }, handle_set_debug, "Set level of debug chattiness", set_debug_help },
 	{ { "set", "verbose", NULL }, handle_set_verbose, "Set level of verboseness", set_verbose_help },
-	{ { "show", "channels", NULL }, handle_chanlist, "Display information on channels", chanlist_help },
 	{ { "show", "channel", NULL }, handle_showchan, "Display information on a specific channel", showchan_help, complete_ch_3 },
+	{ { "show", "channels", NULL }, handle_chanlist, "Display information on channels", chanlist_help },
 	{ { "show", "modules", NULL }, handle_modlist, "List modules and info", modlist_help },
 	{ { "show", "modules", "like", NULL }, handle_modlist, "List modules and info", modlist_help, complete_mod_4 },
 	{ { "show", "uptime", NULL }, handle_showuptime, "Show uptime information", modlist_help },
@@ -1171,19 +1171,19 @@
 			}
 			if ((fullcmd[0] != '_') && !strncasecmp(matchstr, fullcmd, strlen(matchstr))) {
 				/* We contain the first part of one or more commands */
-				matchnum++;
-				if (matchnum > state) {
-					/* Now, what we're supposed to return is the next word... */
-					if (!ast_strlen_zero(word) && x>0) {
-						res = e->cmda[x-1];
-					} else {
-						res = e->cmda[x];
-					}
-					if (res) {
+				/* Now, what we're supposed to return is the next word... */
+				if (!ast_strlen_zero(word) && x>0) {
+					res = e->cmda[x-1];
+				} else {
+					res = e->cmda[x];
+				}
+				if (res) {
+					matchnum++;
+					if (matchnum > state) {
 						if (lock)
 							ast_mutex_unlock(&clilock);
 						free(dup);
-						return res ? strdup(res) : NULL;
+						return strdup(res);
 					}
 				}
 			}
@@ -1191,10 +1191,12 @@
 				/* We have a command in its entirity within us -- theoretically only one
 				   command can have this occur */
 				fullcmd = e->generator(matchstr, word, (!ast_strlen_zero(word) ? (x - 1) : (x)), state);
-				if (lock)
-					ast_mutex_unlock(&clilock);
-				free(dup);
-				return fullcmd;
+				if (fullcmd) {
+					if (lock)
+						ast_mutex_unlock(&clilock);
+					free(dup);
+					return fullcmd;
+				}
 			}
 			
 		}




More information about the svn-commits mailing list