#include <stdarg.h>
#include "asterisk/linkedlists.h"
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_application(), handle_show_application_deprecated(), 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_channels(), _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(), aji_show_clients(), 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_peer(), 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_application(), handle_show_application_deprecated(), handle_show_applications(), handle_show_applications_deprecated(), 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_showmancmd(), 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(), 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(), iax_show_provisioning(), 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_prune_realtime(), sip_show_channel(), sip_show_domains(), 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(), 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(), zap_show_channels(), and zap_show_status().
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 1963 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(), exit_completely(), and rpt_exec().
01964 { 01965 char *argv[AST_MAX_ARGS]; 01966 struct ast_cli_entry *e; 01967 int x; 01968 char *dup; 01969 int tws; 01970 01971 if (!(dup = parse_args(s, &x, argv, sizeof(argv) / sizeof(argv[0]), &tws))) 01972 return -1; 01973 01974 /* We need at least one entry, or ignore */ 01975 if (x > 0) { 01976 AST_LIST_LOCK(&helpers); 01977 e = find_cli(argv, 0); 01978 if (e) 01979 e->inuse++; 01980 AST_LIST_UNLOCK(&helpers); 01981 if (e) { 01982 switch(e->handler(fd, x, argv)) { 01983 case RESULT_SHOWUSAGE: 01984 if (e->usage) 01985 ast_cli(fd, "%s", e->usage); 01986 else 01987 ast_cli(fd, "Invalid usage, but no usage information available.\n"); 01988 AST_LIST_LOCK(&helpers); 01989 if (e->deprecated) 01990 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); 01991 AST_LIST_UNLOCK(&helpers); 01992 break; 01993 default: 01994 AST_LIST_LOCK(&helpers); 01995 if (e->deprecated == 1) { 01996 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); 01997 e->deprecated = 2; 01998 } 01999 AST_LIST_UNLOCK(&helpers); 02000 break; 02001 } 02002 } else 02003 ast_cli(fd, "No such command '%s' (type 'help' for help)\n", find_best(argv)); 02004 if (e) 02005 ast_atomic_fetchadd_int(&e->inuse, -1); 02006 } 02007 free(dup); 02008 02009 return 0; 02010 }
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 2012 of file cli.c.
References ast_cli_command().
Referenced by netconsole().
02013 { 02014 char cmd[512]; 02015 int x, y = 0, count = 0; 02016 02017 for (x = 0; x < size; x++) { 02018 cmd[y] = s[x]; 02019 y++; 02020 if (s[x] == '\0') { 02021 ast_cli_command(fd, cmd); 02022 y = 0; 02023 count++; 02024 } 02025 } 02026 return count; 02027 }
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 1867 of file cli.c.
References ast_cli_generator(), ast_malloc, and ast_realloc.
Referenced by cli_complete(), and handle_commandmatchesarray().
01868 { 01869 char **match_list = NULL, *retstr, *prevstr; 01870 size_t match_list_len, max_equal, which, i; 01871 int matches = 0; 01872 01873 /* leave entry 0 free for the longest common substring */ 01874 match_list_len = 1; 01875 while ((retstr = ast_cli_generator(text, word, matches)) != NULL) { 01876 if (matches + 1 >= match_list_len) { 01877 match_list_len <<= 1; 01878 if (!(match_list = ast_realloc(match_list, match_list_len * sizeof(*match_list)))) 01879 return NULL; 01880 } 01881 match_list[++matches] = retstr; 01882 } 01883 01884 if (!match_list) 01885 return match_list; /* NULL */ 01886 01887 /* Find the longest substring that is common to all results 01888 * (it is a candidate for completion), and store a copy in entry 0. 01889 */ 01890 prevstr = match_list[1]; 01891 max_equal = strlen(prevstr); 01892 for (which = 2; which <= matches; which++) { 01893 for (i = 0; i < max_equal && toupper(prevstr[i]) == toupper(match_list[which][i]); i++) 01894 continue; 01895 max_equal = i; 01896 } 01897 01898 if (!(retstr = ast_malloc(max_equal + 1))) 01899 return NULL; 01900 01901 ast_copy_string(retstr, match_list[1], max_equal + 1); 01902 match_list[0] = retstr; 01903 01904 /* ensure that the array is NULL terminated */ 01905 if (matches + 1 >= match_list_len) { 01906 if (!(match_list = ast_realloc(match_list, (match_list_len + 1) * sizeof(*match_list)))) 01907 return NULL; 01908 } 01909 match_list[matches + 1] = NULL; 01910 01911 return match_list; 01912 }
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 1958 of file cli.c.
References __ast_cli_generator().
Referenced by ast_cli_completion_matches(), and ast_cli_generatornummatches().
01959 { 01960 return __ast_cli_generator(text, word, state, 1); 01961 }
int ast_cli_generatornummatches | ( | const char * | , | |
const char * | ||||
) |
Return the number of unique matches for the generator.
Definition at line 1850 of file cli.c.
References ast_cli_generator(), and free.
Referenced by handle_commandnummatches().
01851 { 01852 int matches = 0, i = 0; 01853 char *buf = NULL, *oldbuf = NULL; 01854 01855 while ((buf = ast_cli_generator(text, word, i++))) { 01856 if (!oldbuf || strcmp(buf,oldbuf)) 01857 matches++; 01858 if (oldbuf) 01859 free(oldbuf); 01860 oldbuf = buf; 01861 } 01862 if (oldbuf) 01863 free(oldbuf); 01864 return matches; 01865 }
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 1696 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().
01697 { 01698 return __ast_cli_register(e, NULL); 01699 }
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 1704 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().
01705 { 01706 int i; 01707 01708 for (i = 0; i < len; i++) 01709 ast_cli_register(e + i); 01710 }
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 1690 of file cli.c.
References __ast_cli_unregister().
Referenced by __unload_module(), ast_cli_unregister_multiple(), do_reload(), load_module(), and unload_module().
01691 { 01692 return __ast_cli_unregister(e, NULL); 01693 }
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 1712 of file cli.c.
References ast_cli_unregister().
Referenced by __unload_module(), iax_provision_unload(), load_module(), and unload_module().
01713 { 01714 int i; 01715 01716 for (i = 0; i < len; i++) 01717 ast_cli_unregister(e + i); 01718 }
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 }