[Freeswitch-svn] [commit] r3238 - freeswitch/branches/knhor/trunk/src/mod/applications/mod_commands

Freeswitch SVN knhor at freeswitch.org
Mon Oct 30 23:39:03 EST 2006


Author: knhor
Date: Mon Oct 30 23:39:01 2006
New Revision: 3238

Modified:
   freeswitch/branches/knhor/trunk/src/mod/applications/mod_commands/mod_commands.c

Log:
make the new formatting callback work for all use caes

Modified: freeswitch/branches/knhor/trunk/src/mod/applications/mod_commands/mod_commands.c
==============================================================================
--- freeswitch/branches/knhor/trunk/src/mod/applications/mod_commands/mod_commands.c	(original)
+++ freeswitch/branches/knhor/trunk/src/mod/applications/mod_commands/mod_commands.c	Mon Oct 30 23:39:01 2006
@@ -58,8 +58,8 @@
 	switch_core_measure_time(switch_core_uptime(), &duration);
 
 	if (stream->event) {
-        http = switch_event_get_header(stream->event, "http-host");
-    }
+		http = switch_event_get_header(stream->event, "http-host");
+	}
 
 	if (http || (cmd && strstr(cmd, "html"))) {
 		html = 1;
@@ -139,23 +139,24 @@
 	
 }
 
-
 static switch_status_t load_function(char *mod, switch_core_session_t *session, switch_stream_handle_t *stream)
 {
 
 	if (session) {
 		return SWITCH_STATUS_FALSE;
 	}
+
 	if (switch_strlen_zero(mod)) {
 		stream->write_function(stream, "USAGE: %s\n", load_api_interface.syntax);
 		return SWITCH_STATUS_SUCCESS;
 	}
+
 	switch_loadable_module_load_module((char *) SWITCH_GLOBAL_dirs.mod_dir, (char *) mod);
 	stream->write_function(stream, "OK\n");
+
 	return SWITCH_STATUS_SUCCESS;
 }
 
-
 static switch_status_t reload_function(char *mod, switch_core_session_t *session, switch_stream_handle_t *stream)
 {
 	const char *err;
@@ -170,6 +171,7 @@
 	}
 	
 	stream->write_function(stream, "OK [%s]\n", err);
+
 	return SWITCH_STATUS_SUCCESS;
 }
 
@@ -195,7 +197,6 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-
 static switch_status_t transfer_function(char *cmd, switch_core_session_t *isession, switch_stream_handle_t *stream)
 {
 	switch_core_session_t *session = NULL;
@@ -234,8 +235,6 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-
-
 static switch_status_t uuid_bridge_function(char *cmd, switch_core_session_t *isession, switch_stream_handle_t *stream)
 {
 	char *argv[4] = {0};
@@ -258,8 +257,6 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
-
-
 static switch_status_t pause_function(char *cmd, switch_core_session_t *isession, switch_stream_handle_t *stream)
 {
 	switch_core_session_t *session = NULL;
@@ -385,13 +382,29 @@
 	char *http;
 	uint32_t count;
 	int print_title;
+	int format;
 };
 
+static void show_callback_format_help(switch_stream_handle_t *stream, int column, char *coldata)
+{
+	if(stream != NULL && coldata != NULL) {
+		switch(column) {
+			case 0:
+			case 2:
+				stream->write_function(stream, "%s\n", coldata);
+				break;
+			case 1:
+				stream->write_function(stream, "\t%s ", coldata);
+				break;
+		}
+	}
+}
+
 static int show_callback(void *pArg, int argc, char **argv, char **columnNames){
 	struct holder *holder = (struct holder *) pArg;
 	int x;
 
-
+	// column headers
 	if (holder->print_title && holder->count == 0) {
 		if (holder->http) {
 			holder->stream->write_function(holder->stream, "\n<tr>");
@@ -402,19 +415,20 @@
 				holder->stream->write_function(holder->stream, "<td>");
 				holder->stream->write_function(holder->stream, "<b>%s</b>%s", columnNames[x], x == (argc - 1) ? "</td></tr>\n" : "</td><td>");
 			} else {
-				switch(x) {
-					case 0:	// column 0
-					case 2:	// column 2
-						holder->stream->write_function(holder->stream, "%s\n", argv[x]);
+				switch(holder->format)
+				{
+					case 1: // help command formatting
+						show_callback_format_help(holder->stream,x,argv[x]);
 						break;
-					case 1:	// column 1
-						holder->stream->write_function(holder->stream, "\t%s ", argv[x]);
+					default: // generic formatting
+						holder->stream->write_function(holder->stream, "%s%s", columnNames[x], x == (argc - 1) ? "\n" : ",");
 						break;
 				}
 			}
 		}
 	} 
 
+	// column rows
 	if (holder->http) {
 		holder->stream->write_function(holder->stream, "<tr bgcolor=%s>", holder->count % 2 == 0 ? "eeeeee" : "ffffff");
 	}
@@ -424,21 +438,18 @@
 			holder->stream->write_function(holder->stream, "<td>");
 			holder->stream->write_function(holder->stream, "%s%s", argv[x], x == (argc - 1) ? "</td></tr>\n" : "</td><td>");
 		} else {
-			switch(x) {
-				case 0:	// column 0
-				case 2:	// column 2
-					holder->stream->write_function(holder->stream, "%s\n", argv[x]);
+			switch(holder->format)
+			{
+				case 1: // help command formatting
+					show_callback_format_help(holder->stream,x,argv[x]);
 					break;
-				case 1:	// column 1
-					holder->stream->write_function(holder->stream, "\t%s ", argv[x]);
+				default:	// generic formatting
+					holder->stream->write_function(holder->stream, "%s%s", argv[x], x == (argc - 1) ? "\n" : ",");
 					break;
 			}
 		}
 	}
-	
 
-
-
 	holder->count++;
 	return 0;
 }
@@ -456,43 +467,41 @@
 	}
 
 	if (stream->event) {
-        holder.http = switch_event_get_header(stream->event, "http-host");
-    } 
+		holder.http = switch_event_get_header(stream->event, "http-host");
+	} 
 
 	holder.print_title = 1;
 
-    if (!cmd) {
-        sprintf (sql, "select * from interfaces");
-    }
-    else if ( !strcmp(cmd,"codec") || !strcmp(cmd,"dialplan") || 
-              !strcmp(cmd,"file") || !strcmp(cmd,"timer") 
-            ) {
-        sprintf (sql, "select type, name from interfaces where type = '%s'", cmd);
-    }
-    else if (!strcmp(cmd,"application") || !strcmp(cmd,"api")) {
-        sprintf (sql, "select name, description, syntax from interfaces where type = '%s'", cmd);
-    }
-    else if ( !strcmp(cmd,"calls")) {
-        sprintf (sql, "select * from calls");
-    }
-    else if ( !strcmp(cmd,"channels")) {
-        sprintf (sql, "select * from channels");
-    }
-    else if (!strncasecmp(cmd, "help", 4)) {
+	// If you changes the field qty or order of any of these select
+	// statmements, you must also change show_callback and friends to match!
+	if (!cmd) {
+		sprintf (sql, "select * from interfaces");
+	} else if ( !strcmp(cmd,"codec") || !strcmp(cmd,"dialplan") || !strcmp(cmd,"file") || !strcmp(cmd,"timer")) {
+		sprintf (sql, "select type, name from interfaces where type = '%s'", cmd);
+	} else if (!strcmp(cmd,"application") || !strcmp(cmd,"api")) {
+		sprintf (sql, "select name, description, syntax from interfaces where type = '%s'", cmd);
+	} else if ( !strcmp(cmd,"calls")) {
+		sprintf (sql, "select * from calls");
+	} else if ( !strcmp(cmd,"channels")) {
+		sprintf (sql, "select * from channels");
+	} else if (!strncasecmp(cmd, "help", 4)) {
 		char *cmdname = NULL;
+
 		help = 1;
 		holder.print_title = 0;
+		holder.format = 1;
+
+		// If you change one, you must change the other!
 		if ((cmdname = strchr(cmd, ' ')) != 0) {
 			*cmdname++ = '\0';
-			sprintf (sql, "select name, syntax, description from interfaces where type = 'api' and name = '%s'", cmdname);
+			sprintf (sql, "select description, name, syntax from interfaces where type = 'api' and name = '%s'", cmdname);
 		} else {
 			sprintf (sql, "select description, name, syntax from interfaces where type = 'api'");
 		}
-    }
-    else {
+	} else {
 		stream->write_function(stream, "USAGE: %s\n", show_api_interface.syntax);
-        return SWITCH_STATUS_SUCCESS;
-    }
+		return SWITCH_STATUS_SUCCESS;
+	}
     
 	holder.stream = stream;
 	holder.count = 0;
@@ -533,11 +542,16 @@
 		sprintf (showcmd, "help %s", cmd);
 	}
 
-	if (all)
+	if (all) {
 		stream->write_function(stream, "\nValid Commands:\n\n");
+	}
+
 	show_function(showcmd, session, stream);
-	if (all)
+
+	if (all) {
 		stream->write_function(stream, "version\n" "shutdown - stop the program\n");
+	}
+
 	return SWITCH_STATUS_SUCCESS;
 }
 
@@ -630,7 +644,6 @@
 	/*.next */ &kill_api_interface
 };
 
-
 static const switch_loadable_module_interface_t mod_commands_module_interface = {
 	/*.module_name */ modname,
 	/*.endpoint_interface */ NULL,
@@ -641,15 +654,11 @@
 	/*.api_interface */ &originate_api_interface
 };
 
-
 SWITCH_MOD_DECLARE(switch_status_t) switch_module_load(const switch_loadable_module_interface_t **module_interface, char *filename)
 {
-
 	/* connect my internal structure to the blank pointer passed to me */
 	*module_interface = &mod_commands_module_interface;
 
-
 	/* indicate that the module should continue to be loaded */
 	return SWITCH_STATUS_SUCCESS;
 }
-



More information about the Freeswitch-svn mailing list