#include <stdarg.h>
#include "asterisk/linkedlists.h"
Include dependency graph for cli.h:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Data Structures | |
struct | ast_cli_entry |
A command line entry. More... | |
Defines | |
#define | AST_CLI_COMPLETE_EOF "_EOF_" |
#define | AST_MAX_ARGS 64 |
#define | AST_MAX_CMD_LEN 16 |
#define | RESULT_FAILURE 2 |
#define | RESULT_SHOWUSAGE 1 |
#define | RESULT_SUCCESS 0 |
Functions | |
void | ast_cli (int fd, char *fmt,...) __attribute__((format(printf |
int | ast_cli_command (int fd, const char *s) |
Interprets a command Interpret a command s, sending output to fd Returns 0 on succes, -1 on failure. | |
int | ast_cli_command_multiple (int fd, size_t size, const char *s) |
Executes multiple CLI commands Interpret strings separated by '' and execute each one, sending output to fd. | |
char * | ast_cli_complete (const char *word, char *const choices[], int pos) |
Helper function to generate cli entries from a NULL-terminated array. Returns the n-th matching entry from the array, or NULL if not found. Can be used to implement generate() for static entries as below (in this example we complete the word in position 2):. | |
char ** | ast_cli_completion_matches (const char *, const char *) |
Generates a NULL-terminated array of strings that 1) begin with the string in the second parameter, and 2) are valid in a command after the string in the first parameter. | |
char * | ast_cli_generator (const char *, const char *, int) |
Readline madness Useful for readline, that's about it Returns 0 on success, -1 on failure. | |
int | ast_cli_generatornummatches (const char *, const char *) |
Return the number of unique matches for the generator. | |
int | ast_cli_register (struct ast_cli_entry *e) |
Registers a command or an array of commands. | |
void | ast_cli_register_multiple (struct ast_cli_entry *e, int len) |
Register multiple commands. | |
int | ast_cli_unregister (struct ast_cli_entry *e) |
Unregisters a command or an array of commands. | |
void | ast_cli_unregister_multiple (struct ast_cli_entry *e, int len) |
Unregister multiple commands. | |
char * | ast_complete_channels (const char *line, const char *word, int pos, int state, int rpos) |
Command completion for the list of active channels. |
Definition in file cli.h.
#define AST_CLI_COMPLETE_EOF "_EOF_" |
Definition at line 45 of file cli.h.
Referenced by ast_el_strtoarr(), cli_complete(), and handle_commandmatchesarray().
#define AST_MAX_ARGS 64 |
#define AST_MAX_CMD_LEN 16 |
#define RESULT_FAILURE 2 |
Definition at line 39 of file cli.h.
Referenced by agi_handle_command(), aji_test(), cli_audio_convert(), cli_audio_convert_deprecated(), cli_realtime_load(), cli_realtime_update(), console_answer(), console_answer_deprecated(), console_autoanswer(), console_autoanswer_deprecated(), console_dial(), console_dial_deprecated(), console_flash(), console_flash_deprecated(), console_hangup(), console_hangup_deprecated(), console_sendtext(), console_sendtext_deprecated(), console_transfer(), console_transfer_deprecated(), handle_answer(), handle_commandmatchesarray(), handle_context_add_extension(), handle_context_add_extension_deprecated(), handle_context_add_ignorepat(), handle_context_add_ignorepat_deprecated(), handle_context_add_include(), handle_context_add_include_deprecated(), handle_context_dont_include_deprecated(), handle_context_remove_extension(), handle_context_remove_extension_deprecated(), handle_context_remove_ignorepat(), handle_context_remove_ignorepat_deprecated(), handle_context_remove_include(), handle_controlstreamfile(), handle_getoption(), handle_load(), handle_load_deprecated(), handle_logger_reload(), handle_logger_rotate(), handle_queue_add_member(), handle_queue_remove_member(), handle_recordfile(), handle_recvchar(), handle_save_dialplan(), handle_sayalpha(), handle_saydate(), handle_saydatetime(), handle_saydigits(), handle_saynumber(), handle_sayphonetic(), handle_saytime(), handle_sendimage(), handle_sendtext(), handle_show_dialplan(), handle_show_function(), handle_show_function_deprecated(), handle_streamfile(), handle_unload(), handle_unload_deprecated(), handle_voicemail_show_users(), handle_voicemail_show_zones(), handle_waitfordigit(), logger_reload(), misdn_send_display(), realtime_pgsql_status(), rpt_do_dump(), rpt_do_fun(), rpt_do_lstats(), rpt_do_nodes(), rpt_do_reload(), rpt_do_restart(), rpt_do_stats(), set_member_paused(), show_channeltype(), show_channeltype_deprecated(), sip_notify(), zap_destroy_channel_bynum(), zap_restart_cmd(), zap_show_channel(), zap_show_channels(), and zap_show_status().
#define RESULT_SHOWUSAGE 1 |
Definition at line 38 of file cli.h.
Referenced by __iax2_show_peers(), __queues_show(), __say_init(), __sip_show_channels(), _sip_show_peer(), _sip_show_peers(), agent_logoff_cmd(), agents_show(), agents_show_online(), agi_do_debug(), agi_handle_command(), agi_no_debug(), agi_no_debug_deprecated(), aji_test(), ast_cli_command(), cli_audio_convert(), cli_audio_convert_deprecated(), cli_funcdevstate_list(), console_active(), console_active_deprecated(), console_answer(), console_answer_deprecated(), console_autoanswer(), console_autoanswer_deprecated(), console_dial(), console_dial_deprecated(), console_flash(), console_flash_deprecated(), console_hangup(), console_hangup_deprecated(), console_mute(), console_mute_deprecated(), console_sendtext(), console_sendtext_deprecated(), console_transfer(), console_transfer_deprecated(), console_unmute(), console_unmute_deprecated(), database_del(), database_deltree(), database_get(), database_put(), database_show(), database_showkey(), devstate_cli(), dundi_do_debug(), dundi_do_lookup(), dundi_do_precache(), dundi_do_query(), dundi_do_store_history(), dundi_flush(), dundi_no_debug(), dundi_no_store_history(), dundi_show_entityid(), dundi_show_mappings(), dundi_show_peer(), dundi_show_peers(), dundi_show_precache(), dundi_show_requests(), dundi_show_trans(), features_show(), group_show_channels(), gtalk_show_channels(), h323_do_debug(), h323_do_trace(), h323_ep_hangup(), h323_gk_cycle(), h323_no_debug(), h323_no_trace(), h323_tokens_show(), handle_abort_halt(), handle_add_indication(), handle_agidumphtml(), handle_autohangup(), handle_chanlist(), handle_chanlist_deprecated(), handle_channelstatus(), handle_cli_refresh(), handle_cli_reload(), handle_cli_status(), handle_cli_submit(), handle_commandcomplete(), handle_commandmatchesarray(), handle_commandnummatches(), handle_context_add_extension(), handle_context_add_extension_deprecated(), handle_context_add_ignorepat(), handle_context_add_ignorepat_deprecated(), handle_context_add_include(), handle_context_add_include_deprecated(), handle_context_dont_include_deprecated(), handle_context_remove_extension(), handle_context_remove_extension_deprecated(), handle_context_remove_ignorepat(), handle_context_remove_ignorepat_deprecated(), handle_context_remove_include(), handle_controlstreamfile(), handle_core_set_debug_channel(), handle_dbdel(), handle_dbdeltree(), handle_dbget(), handle_dbput(), handle_debugchan_deprecated(), handle_debuglevel_deprecated(), handle_exec(), handle_getdata(), handle_getoption(), handle_getvariable(), handle_getvariablefull(), handle_hangup(), handle_help(), handle_load(), handle_load_deprecated(), handle_logger_mute(), handle_modlist(), handle_nodebug(), handle_nodebugchan_deprecated(), handle_orig(), handle_queue_add_member(), handle_queue_remove_member(), handle_recordfile(), handle_recvchar(), handle_recvtext(), handle_reload(), handle_reload_deprecated(), handle_reload_extensions(), handle_remove_indication(), handle_restart_gracefully(), handle_restart_now(), handle_restart_when_convenient(), handle_save_dialplan(), handle_sayalpha(), handle_saydate(), handle_saydatetime(), handle_saydigits(), handle_saynumber(), handle_sayphonetic(), handle_saytime(), handle_sendimage(), handle_sendtext(), handle_set_debug(), handle_set_debug_deprecated(), handle_set_global(), handle_set_global_deprecated(), handle_set_verbose_deprecated(), handle_setcontext(), handle_setextension(), handle_setpriority(), handle_show_application(), handle_show_application_deprecated(), handle_show_dialplan(), handle_show_function(), handle_show_function_deprecated(), handle_show_functions(), handle_show_functions_deprecated(), handle_show_http(), handle_show_version_files(), handle_show_version_files_deprecated(), handle_showagi(), handle_showchan(), handle_showchan_deprecated(), handle_showmanager(), handle_showmanagers(), handle_showmancmd(), handle_showuptime(), handle_showuptime_deprecated(), handle_shutdown_gracefully(), handle_shutdown_now(), handle_shutdown_when_convenient(), handle_softhangup(), handle_streamfile(), handle_tddmode(), handle_unload(), handle_unload_deprecated(), handle_verbose(), handle_version(), handle_version_deprecated(), handle_voicemail_show_users(), handle_voicemail_show_zones(), handle_waitfordigit(), iax2_do_debug(), iax2_do_jb_debug(), iax2_do_trunk_debug(), iax2_no_debug(), iax2_no_jb_debug(), iax2_no_trunk_debug(), iax2_prov_cmd(), iax2_prune_realtime(), iax2_show_channels(), iax2_show_firmware(), iax2_show_netstats(), iax2_show_peer(), iax2_show_registry(), iax2_show_stats(), iax2_show_threads(), iax2_show_users(), iax2_test_losspct(), iax_show_provisioning(), locals_show(), meetme_cmd(), mgcp_audit_endpoint(), mgcp_do_debug(), mgcp_no_debug(), mgcp_show_endpoints(), misdn_port_block(), misdn_port_down(), misdn_port_unblock(), misdn_port_up(), misdn_restart_pid(), misdn_restart_port(), misdn_send_cd(), misdn_send_digit(), misdn_send_display(), misdn_send_restart(), misdn_set_crypt_debug(), misdn_set_debug(), misdn_set_tics(), misdn_show_cl(), misdn_show_config(), misdn_show_port(), misdn_toggle_echocancel(), mixmonitor_cli(), orig_app(), orig_exten(), osp_show(), rpt_do_debug(), rpt_do_dump(), rpt_do_fun(), rpt_do_lstats(), rpt_do_nodes(), rpt_do_reload(), rpt_do_restart(), rpt_do_stats(), rtcp_do_debug(), rtcp_do_debug_deprecated(), rtcp_do_debug_ip(), rtcp_do_debug_ip_deprecated(), rtcp_do_stats(), rtcp_do_stats_deprecated(), rtcp_no_debug(), rtcp_no_debug_deprecated(), rtcp_no_stats(), rtcp_no_stats_deprecated(), rtp_do_debug(), rtp_do_debug_ip(), rtp_no_debug(), show_channeltype(), show_channeltype_deprecated(), show_codec_n(), show_codec_n_deprecated(), show_codecs(), show_codecs_deprecated(), show_file_formats(), show_file_formats_deprecated(), show_image_formats(), show_image_formats_deprecated(), show_translation(), show_translation_deprecated(), sip_do_debug(), sip_do_debug_deprecated(), sip_do_debug_ip(), sip_do_debug_peer(), sip_do_history(), sip_no_debug(), sip_no_debug_deprecated(), sip_no_history(), sip_notify(), sip_prune_realtime(), sip_show_channel(), sip_show_history(), sip_show_inuse(), sip_show_objects(), sip_show_registry(), sip_show_settings(), sip_show_user(), sip_show_users(), skinny_do_debug(), skinny_no_debug(), skinny_reset_device(), skinny_show_devices(), skinny_show_lines(), stun_do_debug(), stun_no_debug(), udptl_do_debug(), udptl_do_debug_ip(), udptl_nodebug(), zap_destroy_channel(), zap_restart_cmd(), zap_show_channel(), and zap_show_channels().
#define RESULT_SUCCESS 0 |
Definition at line 37 of file cli.h.
Referenced by __console_mute_unmute(), __iax2_show_peers(), __queues_show(), __say_init(), _sip_show_peer(), _sip_show_peers(), agent_logoff_cmd(), agents_show(), agents_show_online(), agi_do_debug(), agi_no_debug(), agi_no_debug_deprecated(), aji_do_debug(), aji_do_reload(), aji_no_debug(), cli_audio_convert(), cli_audio_convert_deprecated(), cli_funcdevstate_list(), cli_realtime_load(), cli_realtime_update(), console_active(), console_active_deprecated(), console_answer(), console_answer_deprecated(), console_autoanswer(), console_autoanswer_deprecated(), console_dial(), console_dial_deprecated(), console_flash(), console_flash_deprecated(), console_hangup(), console_hangup_deprecated(), console_sendtext(), console_sendtext_deprecated(), console_transfer(), console_transfer_deprecated(), database_del(), database_deltree(), database_get(), database_put(), database_show(), database_showkey(), devstate_cli(), do_boost(), dundi_do_debug(), dundi_do_lookup(), dundi_do_precache(), dundi_do_query(), dundi_do_store_history(), dundi_flush(), dundi_no_debug(), dundi_no_store_history(), dundi_show_entityid(), dundi_show_mappings(), dundi_show_peers(), dundi_show_precache(), dundi_show_requests(), dundi_show_trans(), features_show(), group_show_channels(), gtalk_do_reload(), gtalk_show_channels(), h323_do_debug(), h323_do_trace(), h323_ep_hangup(), h323_gk_cycle(), h323_no_debug(), h323_no_trace(), h323_tokens_show(), handle_abort_halt(), handle_agidumphtml(), handle_answer(), handle_autoanswer(), handle_autohangup(), handle_bang(), handle_chanlist(), handle_chanlist_deprecated(), handle_channelstatus(), handle_commandcomplete(), handle_commandmatchesarray(), handle_commandnummatches(), handle_context_add_extension(), handle_context_add_extension_deprecated(), handle_context_add_ignorepat(), handle_context_add_ignorepat_deprecated(), handle_context_add_include(), handle_context_add_include_deprecated(), handle_context_dont_include_deprecated(), handle_context_remove_extension(), handle_context_remove_extension_deprecated(), handle_context_remove_ignorepat(), handle_context_remove_ignorepat_deprecated(), handle_context_remove_include(), handle_controlstreamfile(), handle_core_set_debug_channel(), handle_dbdel(), handle_dbdeltree(), handle_dbget(), handle_dbput(), handle_debugchan_deprecated(), handle_debuglevel_deprecated(), handle_getdata(), handle_getoption(), handle_getvariable(), handle_getvariablefull(), handle_hangup(), handle_help(), handle_load(), handle_load_deprecated(), handle_logger_mute(), handle_logger_rotate(), handle_logger_show_channels(), handle_modlist(), handle_nodebug(), handle_nodebugchan_deprecated(), handle_noop(), handle_parkedcalls(), handle_queue_add_member(), handle_queue_remove_member(), handle_recordfile(), handle_recvchar(), handle_recvtext(), handle_reload(), handle_reload_deprecated(), handle_reload_extensions(), handle_restart_gracefully(), handle_restart_now(), handle_restart_when_convenient(), handle_save_dialplan(), handle_sayalpha(), handle_saydate(), handle_saydatetime(), handle_saydigits(), handle_saynumber(), handle_sayphonetic(), handle_saytime(), handle_sendimage(), handle_sendtext(), handle_set_debug(), handle_set_debug_deprecated(), handle_set_global(), handle_set_global_deprecated(), handle_set_verbose_deprecated(), handle_setcallerid(), handle_setcontext(), handle_setextension(), handle_setmusic(), handle_setpriority(), handle_setvariable(), handle_show_dialplan(), handle_show_function(), handle_show_function_deprecated(), handle_show_functions(), handle_show_functions_deprecated(), handle_show_globals(), handle_show_hints(), handle_show_http(), handle_show_switches(), handle_show_version_files(), handle_show_version_files_deprecated(), handle_showagi(), handle_showchan(), handle_showchan_deprecated(), handle_showfeatures(), handle_showmanager(), handle_showmanagers(), handle_showmancmds(), handle_showmanconn(), handle_showmaneventq(), handle_showuptime(), handle_showuptime_deprecated(), handle_shutdown_gracefully(), handle_shutdown_now(), handle_shutdown_when_convenient(), handle_softhangup(), handle_streamfile(), handle_tddmode(), handle_unload(), handle_unload_deprecated(), handle_verbose(), handle_version(), handle_version_deprecated(), handle_voicemail_show_users(), handle_voicemail_show_zones(), handle_waitfordigit(), help1(), iax2_do_debug(), iax2_do_jb_debug(), iax2_do_trunk_debug(), iax2_no_debug(), iax2_no_jb_debug(), iax2_no_trunk_debug(), iax2_prov_cmd(), iax2_prune_realtime(), iax2_show_cache(), iax2_show_channels(), iax2_show_firmware(), iax2_show_netstats(), iax2_show_peer(), iax2_show_registry(), iax2_show_stats(), iax2_show_threads(), iax2_show_users(), iax2_test_losspct(), init_keys(), locals_show(), logger_reload(), manager_iax2_show_netstats(), manager_parking_status(), manager_queues_show(), manager_queues_status(), meetme_cmd(), mgcp_audit_endpoint(), mgcp_do_debug(), mgcp_no_debug(), mgcp_show_endpoints(), misdn_send_display(), mixmonitor_cli(), orig_app(), orig_exten(), osp_show(), realtime_pgsql_status(), rpt_do_debug(), rpt_do_dump(), rpt_do_lstats(), rpt_do_nodes(), rpt_do_stats(), rtcp_do_debug(), rtcp_do_debug_deprecated(), rtcp_do_debug_ip(), rtcp_do_debug_ip_deprecated(), rtcp_do_stats(), rtcp_do_stats_deprecated(), rtcp_no_debug(), rtcp_no_debug_deprecated(), rtcp_no_stats(), rtcp_no_stats_deprecated(), rtp_do_debug(), rtp_do_debug_ip(), rtp_no_debug(), set_member_paused(), show_channeltype(), show_channeltype_deprecated(), show_channeltypes(), show_codec_n(), show_codec_n_deprecated(), show_codecs(), show_codecs_deprecated(), show_file_formats(), show_file_formats_deprecated(), show_image_formats(), show_image_formats_deprecated(), show_keys(), show_license(), show_translation(), show_translation_deprecated(), show_warranty(), sip_do_debug(), sip_do_debug_deprecated(), sip_do_debug_ip(), sip_do_debug_peer(), sip_do_history(), sip_no_debug(), sip_no_debug_deprecated(), sip_no_history(), sip_notify(), sip_show_domains(), sip_show_inuse(), sip_show_objects(), sip_show_registry(), sip_show_settings(), sip_show_user(), skinny_do_debug(), skinny_no_debug(), skinny_reset_device(), sla_show_stations(), sla_show_trunks(), stun_do_debug(), stun_no_debug(), transcoder_show(), udptl_do_debug(), udptl_do_debug_ip(), udptl_nodebug(), zap_destroy_channel_bynum(), zap_restart_cmd(), zap_show_channel(), and zap_show_channels().
void ast_cli | ( | int | fd, | |
char * | fmt, | |||
... | ||||
) |
int ast_cli_command | ( | int | fd, | |
const char * | s | |||
) |
Interprets a command Interpret a command s, sending output to fd Returns 0 on succes, -1 on failure.
Definition at line 1973 of file cli.c.
References ast_cli_entry::_deprecated_by, ast_cli_entry::_full_cmd, ast_cli(), AST_LIST_LOCK, AST_LIST_UNLOCK, AST_MAX_ARGS, ast_cli_entry::deprecated, find_best(), find_cli(), free, ast_cli_entry::handler, ast_cli_entry::inuse, parse_args(), RESULT_SHOWUSAGE, and ast_cli_entry::usage.
Referenced by action_command(), ast_cli_command_multiple(), cli_activate(), consolehandler(), and exit_completely().
01974 { 01975 char *argv[AST_MAX_ARGS]; 01976 struct ast_cli_entry *e; 01977 int x; 01978 char *dup; 01979 int tws; 01980 01981 if (!(dup = parse_args(s, &x, argv, sizeof(argv) / sizeof(argv[0]), &tws))) 01982 return -1; 01983 01984 /* We need at least one entry, or ignore */ 01985 if (x > 0) { 01986 AST_LIST_LOCK(&helpers); 01987 e = find_cli(argv, 0); 01988 if (e) 01989 e->inuse++; 01990 AST_LIST_UNLOCK(&helpers); 01991 if (e) { 01992 switch(e->handler(fd, x, argv)) { 01993 case RESULT_SHOWUSAGE: 01994 if (e->usage) 01995 ast_cli(fd, "%s", e->usage); 01996 else 01997 ast_cli(fd, "Invalid usage, but no usage information available.\n"); 01998 AST_LIST_LOCK(&helpers); 01999 if (e->deprecated) 02000 ast_cli(fd, "The '%s' command is deprecated and will be removed in a future release. Please use '%s' instead.\n", e->_full_cmd, e->_deprecated_by); 02001 AST_LIST_UNLOCK(&helpers); 02002 break; 02003 default: 02004 AST_LIST_LOCK(&helpers); 02005 if (e->deprecated == 1) { 02006 ast_cli(fd, "The '%s' command is deprecated and will be removed in a future release. Please use '%s' instead.\n", e->_full_cmd, e->_deprecated_by); 02007 e->deprecated = 2; 02008 } 02009 AST_LIST_UNLOCK(&helpers); 02010 break; 02011 } 02012 } else 02013 ast_cli(fd, "No such command '%s' (type 'help %s' for other possible commands)\n", s, find_best(argv)); 02014 if (e) 02015 ast_atomic_fetchadd_int(&e->inuse, -1); 02016 } 02017 free(dup); 02018 02019 return 0; 02020 }
int ast_cli_command_multiple | ( | int | fd, | |
size_t | size, | |||
const char * | s | |||
) |
Executes multiple CLI commands Interpret strings separated by '' and execute each one, sending output to fd.
size | is the total size of the string |
number | of commands executed |
Definition at line 2022 of file cli.c.
References ast_cli_command().
Referenced by netconsole().
02023 { 02024 char cmd[512]; 02025 int x, y = 0, count = 0; 02026 02027 for (x = 0; x < size; x++) { 02028 cmd[y] = s[x]; 02029 y++; 02030 if (s[x] == '\0') { 02031 ast_cli_command(fd, cmd); 02032 y = 0; 02033 count++; 02034 } 02035 } 02036 return count; 02037 }
char* ast_cli_complete | ( | const char * | word, | |
char *const | choices[], | |||
int | pos | |||
) |
Helper function to generate cli entries from a NULL-terminated array. Returns the n-th matching entry from the array, or NULL if not found. Can be used to implement generate() for static entries as below (in this example we complete the word in position 2):.
char *my_generate(const char *line, const char *word, int pos, int n) { static char *choices = { "one", "two", "three", NULL }; if (pos == 2) return ast_cli_complete(word, choices, n); else return NULL; }
Definition at line 1167 of file cli.c.
References ast_strdup, ast_strlen_zero(), and len.
Referenced by autoanswer_complete(), autoanswer_complete_deprecated(), complete_meetmecmd(), complete_orig(), complete_show_applications(), complete_show_applications_deprecated(), complete_show_channels(), and complete_show_channels_deprecated().
01168 { 01169 int i, which = 0, len; 01170 len = ast_strlen_zero(word) ? 0 : strlen(word); 01171 01172 for (i = 0; choices[i]; i++) { 01173 if ((!len || !strncasecmp(word, choices[i], len)) && ++which > state) 01174 return ast_strdup(choices[i]); 01175 } 01176 return NULL; 01177 }
char** ast_cli_completion_matches | ( | const char * | , | |
const char * | ||||
) |
Generates a NULL-terminated array of strings that 1) begin with the string in the second parameter, and 2) are valid in a command after the string in the first parameter.
The first entry (offset 0) of the result is the longest common substring in the results, useful to extend the string that has been completed. Subsequent entries are all possible values, followe by a NULL. All strings and the array itself are malloc'ed and must be freed by the caller.
Definition at line 1877 of file cli.c.
References ast_cli_generator(), ast_malloc, and ast_realloc.
Referenced by cli_complete(), and handle_commandmatchesarray().
01878 { 01879 char **match_list = NULL, *retstr, *prevstr; 01880 size_t match_list_len, max_equal, which, i; 01881 int matches = 0; 01882 01883 /* leave entry 0 free for the longest common substring */ 01884 match_list_len = 1; 01885 while ((retstr = ast_cli_generator(text, word, matches)) != NULL) { 01886 if (matches + 1 >= match_list_len) { 01887 match_list_len <<= 1; 01888 if (!(match_list = ast_realloc(match_list, match_list_len * sizeof(*match_list)))) 01889 return NULL; 01890 } 01891 match_list[++matches] = retstr; 01892 } 01893 01894 if (!match_list) 01895 return match_list; /* NULL */ 01896 01897 /* Find the longest substring that is common to all results 01898 * (it is a candidate for completion), and store a copy in entry 0. 01899 */ 01900 prevstr = match_list[1]; 01901 max_equal = strlen(prevstr); 01902 for (which = 2; which <= matches; which++) { 01903 for (i = 0; i < max_equal && toupper(prevstr[i]) == toupper(match_list[which][i]); i++) 01904 continue; 01905 max_equal = i; 01906 } 01907 01908 if (!(retstr = ast_malloc(max_equal + 1))) 01909 return NULL; 01910 01911 ast_copy_string(retstr, match_list[1], max_equal + 1); 01912 match_list[0] = retstr; 01913 01914 /* ensure that the array is NULL terminated */ 01915 if (matches + 1 >= match_list_len) { 01916 if (!(match_list = ast_realloc(match_list, (match_list_len + 1) * sizeof(*match_list)))) 01917 return NULL; 01918 } 01919 match_list[matches + 1] = NULL; 01920 01921 return match_list; 01922 }
char* ast_cli_generator | ( | const char * | , | |
const char * | , | |||
int | ||||
) |
Readline madness Useful for readline, that's about it Returns 0 on success, -1 on failure.
Definition at line 1968 of file cli.c.
References __ast_cli_generator().
Referenced by ast_cli_completion_matches(), and ast_cli_generatornummatches().
01969 { 01970 return __ast_cli_generator(text, word, state, 1); 01971 }
int ast_cli_generatornummatches | ( | const char * | , | |
const char * | ||||
) |
Return the number of unique matches for the generator.
Definition at line 1860 of file cli.c.
References ast_cli_generator(), and free.
Referenced by handle_commandnummatches().
01861 { 01862 int matches = 0, i = 0; 01863 char *buf = NULL, *oldbuf = NULL; 01864 01865 while ((buf = ast_cli_generator(text, word, i++))) { 01866 if (!oldbuf || strcmp(buf,oldbuf)) 01867 matches++; 01868 if (oldbuf) 01869 free(oldbuf); 01870 oldbuf = buf; 01871 } 01872 if (oldbuf) 01873 free(oldbuf); 01874 return matches; 01875 }
int ast_cli_register | ( | struct ast_cli_entry * | e | ) |
Registers a command or an array of commands.
e | which cli entry to register Register your own command Returns 0 on success, -1 on failure |
Definition at line 1702 of file cli.c.
References __ast_cli_register().
Referenced by ast_cdr_engine_init(), ast_cli_register_multiple(), dnsmgr_init(), do_reload(), and load_module().
01703 { 01704 return __ast_cli_register(e, NULL); 01705 }
void ast_cli_register_multiple | ( | struct ast_cli_entry * | e, | |
int | len | |||
) |
Register multiple commands.
e | pointer to first cli entry to register | |
len | number of entries to register |
Definition at line 1710 of file cli.c.
References ast_cli_register().
Referenced by __ast_register_translator(), ast_builtins_init(), ast_channels_init(), ast_file_init(), ast_http_init(), ast_image_init(), ast_rtp_init(), ast_udptl_init(), ast_utils_init(), astdb_init(), astobj2_init(), crypto_init(), iax_provision_init(), init_framer(), init_logger(), init_manager(), load_module(), load_pbx(), main(), and register_config_cli().
01711 { 01712 int i; 01713 01714 for (i = 0; i < len; i++) 01715 ast_cli_register(e + i); 01716 }
int ast_cli_unregister | ( | struct ast_cli_entry * | e | ) |
Unregisters a command or an array of commands.
e | which cli entry to unregister Unregister your own command. You must pass a completed ast_cli_entry structure Returns 0. |
Definition at line 1696 of file cli.c.
References __ast_cli_unregister().
Referenced by __unload_module(), ast_cli_unregister_multiple(), do_reload(), load_module(), and unload_module().
01697 { 01698 return __ast_cli_unregister(e, NULL); 01699 }
void ast_cli_unregister_multiple | ( | struct ast_cli_entry * | e, | |
int | len | |||
) |
Unregister multiple commands.
e | pointer to first cli entry to unregister | |
len | number of entries to unregister |
Definition at line 1718 of file cli.c.
References ast_cli_unregister().
Referenced by __unload_module(), iax_provision_unload(), load_module(), and unload_module().
01719 { 01720 int i; 01721 01722 for (i = 0; i < len; i++) 01723 ast_cli_unregister(e + i); 01724 }
char* ast_complete_channels | ( | const char * | line, | |
const char * | word, | |||
int | pos, | |||
int | state, | |||
int | rpos | |||
) |
Command completion for the list of active channels.
This can be called from a CLI command completion function that wants to complete from the list of active channels. 'rpos' is the required position in the command. This function will return NULL immediately if 'rpos' is not the same as the current position, 'pos'.
Definition at line 1193 of file cli.c.
References ast_channel_unlock, ast_channel_walk_locked(), and ast_strdup.
Referenced by complete_ch_3(), complete_ch_4(), complete_ch_5(), and complete_mixmonitor_cli().
01194 { 01195 struct ast_channel *c = NULL; 01196 int which = 0; 01197 int wordlen; 01198 char notfound = '\0'; 01199 char *ret = ¬found; /* so NULL can break the loop */ 01200 01201 if (pos != rpos) 01202 return NULL; 01203 01204 wordlen = strlen(word); 01205 01206 while (ret == ¬found && (c = ast_channel_walk_locked(c))) { 01207 if (!strncasecmp(word, c->name, wordlen) && ++which > state) 01208 ret = ast_strdup(c->name); 01209 ast_channel_unlock(c); 01210 } 01211 return ret == ¬found ? NULL : ret; 01212 }