]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
add inline lists for tab complete db using ::[a:b syntax
authorAnthony Minessale <anthm@freeswitch.org>
Fri, 17 Sep 2010 19:10:30 +0000 (14:10 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Fri, 17 Sep 2010 19:10:30 +0000 (14:10 -0500)
src/mod/endpoints/mod_sofia/mod_sofia.c
src/switch_console.c

index 68c99f1ac2369ca3f8c866cd25afe63b51b2997d..5039fefe502a250c877e08ee914091dac61de2cf 100644 (file)
@@ -4618,8 +4618,10 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_sofia_load)
        switch_console_set_complete("add sofia help");
        switch_console_set_complete("add sofia status");
        switch_console_set_complete("add sofia xmlstatus");
-       switch_console_set_complete("add sofia loglevel");
-       switch_console_set_complete("add sofia tracelevel");
+
+       switch_console_set_complete("add sofia loglevel ::[all:default:tport:iptsec:nea:nta:nth_client:nth_server:nua:soa:sresolv:stun ::[0:1:2:3:4:5:6:7:8:9");
+       switch_console_set_complete("add sofia tracelevel ::[console:alert:crit:err:warning:notice:info:debug");
+
        switch_console_set_complete("add sofia profile");
        switch_console_set_complete("add sofia profile restart all");
 
index 30d1d97fed0333acb7f87a3f4cc5e1012860636b..06a7e0de7a2469af811a053613ea5311db6407f6 100644 (file)
@@ -483,9 +483,29 @@ static int comp_callback(void *pArg, int argc, char **argv, char **columnNames)
                return -1;
        }
 
+       if (!zstr(target) && *target == ':' && *(target + 1) == ':' && *(target + 2) == '[') {
+               char *p = target + 3, *list = NULL;
+
+               if (p) {
+                       char *argv[100] = { 0 };
+                       char *r_argv[1] = { 0 }, *r_cols[1] = {0};
+                       list = strdup(p);
+                       
+                       argc = switch_separate_string(list, ':', argv, (sizeof(argv) / sizeof(argv[0])));
+
+                       for (i = 0; i < argc; i++) {
+                               if (!cur || !strncmp(argv[i], cur, strlen(cur))) {
+                                       r_argv[0] = argv[i];
+                                       comp_callback(h, 1, r_argv, r_cols);
+                               }
+                       }
+                       switch_safe_free(list);
+               }
+               return 0;
+       }
+
        if (!zstr(target) && *target == ':' && *(target + 1) == ':') {
-               char *r_argv[1] = { 0 }, *r_cols[1] = {
-               0};
+               char *r_argv[1] = { 0 }, *r_cols[1] = {0};
                switch_console_callback_match_t *matches;
                if (switch_console_run_complete_func(target, str, cur, &matches) == SWITCH_STATUS_SUCCESS) {
                        switch_console_callback_match_node_t *m;
@@ -797,6 +817,7 @@ SWITCH_DECLARE(unsigned char) switch_console_complete(const char *line, const ch
                }
 
                stream.write_function(&stream, " and hostname='%s' order by a%d", switch_core_get_variable("hostname"), h.words + 1);
+               
                switch_cache_db_execute_sql_callback(db, stream.data, comp_callback, &h, &errmsg);
 
                if (errmsg) {