Sat Mar 10 01:55:18 2012

Asterisk developer's documentation


cli.h File Reference

Standard Command Line Interface. More...

#include "asterisk/linkedlists.h"

Go to the source code of this file.

Data Structures

struct  ast_cli_args
struct  ast_cli_entry
 descriptor for a cli entry. More...

Defines

#define ast_cli_command(fd, s)   ast_cli_command_full(CLI_NO_PERMS, CLI_NO_PERMS, fd, s)
#define ast_cli_command_multiple(fd, size, s)   ast_cli_command_multiple_full(CLI_NO_PERMS, CLI_NO_PERMS, fd, size, s)
#define AST_CLI_COMPLETE_EOF   "_EOF_"
#define AST_CLI_DEFINE(fn, txt,)   { .handler = fn, .summary = txt, ## __VA_ARGS__ }
#define AST_CLI_ONOFF(x)   (x) ? "On" : "Off"
 return On or Off depending on the argument. This is used in many places in CLI command, having a function to generate this helps maintaining a consistent output (and possibly emitting the output in other languages, at some point).
#define AST_CLI_YESNO(x)   (x) ? "Yes" : "No"
 return Yes or No depending on the argument. This is used in many places in CLI command, having a function to generate this helps maintaining a consistent output (and possibly emitting the output in other languages, at some point).
#define AST_MAX_ARGS   64
#define AST_MAX_CMD_LEN   16
#define CLI_FAILURE   (char *)RESULT_FAILURE
#define CLI_NO_PERMS   -1
#define CLI_SHOWUSAGE   (char *)RESULT_SHOWUSAGE
#define CLI_SUCCESS   (char *)RESULT_SUCCESS
#define ESS(x)   ((x) == 1 ? "" : "s")
#define RESULT_FAILURE   2
#define RESULT_SHOWUSAGE   1
#define RESULT_SUCCESS   0

Enumerations

enum  ast_cli_command { CLI_INIT = -2, CLI_GENERATE = -3, CLI_HANDLER = -4 }
 calling arguments for new-style handlers. More...

Functions

void ast_cli (int fd, const char *fmt,...)
int ast_cli_command_full (int uid, int gid, int fd, const char *s)
 Interprets a command Interpret a command s, sending output to fd if uid:gid has permissions to run this command. uid = CLI_NO_PERMS to avoid checking user permissions gid = CLI_NO_PERMS to avoid checking group permissions.
int ast_cli_command_multiple_full (int uid, int gid, int fd, size_t size, const char *s)
 Executes multiple CLI commands Interpret strings separated by NULL and execute each one, sending output to fd if uid has permissions, uid = CLI_NO_PERMS to avoid checking users permissions. gid = CLI_NO_PERMS to avoid checking group permissions.
char * ast_cli_complete (const char *word, const char *const choices[], int pos)
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.
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.
int 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.
int 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.


Detailed Description

Standard Command Line Interface.

Definition in file cli.h.


Define Documentation

#define ast_cli_command ( fd,
 )     ast_cli_command_full(CLI_NO_PERMS, CLI_NO_PERMS, fd, s)

Definition at line 226 of file cli.h.

Referenced by action_command(), cli_alias_passthrough(), consolehandler(), eventhandler(), handle_cli_config_reload(), keypad_pick_up(), and keypad_toggle().

#define ast_cli_command_multiple ( fd,
size,
 )     ast_cli_command_multiple_full(CLI_NO_PERMS, CLI_NO_PERMS, fd, size, s)

Definition at line 242 of file cli.h.

#define AST_CLI_COMPLETE_EOF   "_EOF_"

Definition at line 51 of file cli.h.

Referenced by ast_el_strtoarr(), cli_complete(), and handle_commandmatchesarray().

#define AST_CLI_DEFINE ( fn,
txt   )     { .handler = fn, .summary = txt, ## __VA_ARGS__ }

Definition at line 191 of file cli.h.

#define AST_CLI_ONOFF (  )     (x) ? "On" : "Off"

return On or Off depending on the argument. This is used in many places in CLI command, having a function to generate this helps maintaining a consistent output (and possibly emitting the output in other languages, at some point).

Definition at line 72 of file cli.h.

Referenced by sip_show_settings().

#define AST_CLI_YESNO (  )     (x) ? "Yes" : "No"

return Yes or No depending on the argument. This is used in many places in CLI command, having a function to generate this helps maintaining a consistent output (and possibly emitting the output in other languages, at some point).

Definition at line 65 of file cli.h.

Referenced by _sip_show_peer(), action_coresettings(), display_nat_warning(), handle_feature_show(), handle_manager_show_settings(), handle_skinny_show_settings(), show_channels_cb(), sip_show_channel(), sip_show_mwi(), sip_show_settings(), sip_show_user(), and sip_show_users().

#define AST_MAX_ARGS   64

Definition at line 49 of file cli.h.

Referenced by __ast_cli_generator(), ast_cli_command_full(), and handle_cli_check_permissions().

#define AST_MAX_CMD_LEN   16

Definition at line 47 of file cli.h.

Referenced by __ast_cli_register(), and find_best().

#define CLI_FAILURE   (char *)RESULT_FAILURE

Definition at line 45 of file cli.h.

Referenced by ais_clm_show_members(), aji_cli_create_collection(), aji_cli_create_leafnode(), aji_cli_delete_pubsub_node(), aji_cli_list_pubsub_nodes(), aji_cli_purge_pubsub_nodes(), aji_test(), ast_cli_command_full(), cli_console_active(), cli_console_answer(), cli_console_autoanswer(), cli_console_dial(), cli_console_flash(), cli_console_hangup(), cli_console_mute(), cli_console_sendtext(), cli_fax_show_sessions(), cli_realtime_destroy(), cli_realtime_store(), cli_realtime_update(), cli_realtime_update2(), cli_tps_ping(), console_answer(), console_autoanswer(), console_cmd(), console_dial(), console_do_answer(), console_flash(), console_hangup(), console_sendtext(), console_transfer(), dahdi_destroy_channel(), dahdi_restart_cmd(), dahdi_set_dnd(), dahdi_set_hwgain(), dahdi_set_swgain(), dahdi_show_status(), handle_cc_status(), handle_chanlist(), handle_cli_ael_reload(), handle_cli_agi_add_cmd(), handle_cli_agi_show(), handle_cli_check_permissions(), handle_cli_core_show_channeltype(), handle_cli_core_show_translation(), handle_cli_data_get(), handle_cli_devstate_change(), handle_cli_dialplan_add_extension(), handle_cli_dialplan_add_ignorepat(), handle_cli_dialplan_add_include(), handle_cli_dialplan_remove_extension(), handle_cli_dialplan_remove_ignorepat(), handle_cli_dialplan_remove_include(), handle_cli_dialplan_save(), handle_cli_file_convert(), handle_cli_iax2_set_debug(), handle_cli_iax2_show_peers(), handle_cli_indication_add(), handle_cli_indication_remove(), handle_cli_realtime_pgsql_status(), handle_cli_status(), handle_cli_ulimit(), handle_commandmatchesarray(), handle_debug_dialplan(), handle_load(), handle_logger_reload(), handle_logger_rotate(), handle_mfcr2_set_debug(), handle_mfcr2_show_variants(), handle_minivm_list_templates(), handle_minivm_show_users(), handle_minivm_show_zones(), handle_pri_service_generic(), handle_queue_add_member(), handle_queue_pause_member(), handle_queue_remove_member(), handle_queue_set_member_penalty(), handle_redirect(), handle_set_chanvar(), handle_show_chanvar(), handle_show_dialplan(), handle_show_function(), handle_showchan(), handle_softhangup(), handle_unload(), handle_verbose(), handle_voicemail_show_users(), handle_voicemail_show_zones(), meetme_cmd(), meetme_show_cmd(), realtime_ldap_status(), res2cli(), rtcp_do_debug_ip(), rtp_do_debug_ip(), show_users_realtime(), sip_cli_notify(), and timing_test().

#define CLI_NO_PERMS   -1

Definition at line 37 of file cli.h.

Referenced by cli_has_permissions().

#define CLI_SHOWUSAGE   (char *)RESULT_SHOWUSAGE

Definition at line 44 of file cli.h.

Referenced by __queues_show(), __say_cli_init(), _sip_qualify_peer(), _sip_show_peer(), _sip_show_peers(), _skinny_show_device(), _skinny_show_devices(), _skinny_show_line(), _skinny_show_lines(), agent_logoff_cmd(), agents_show(), agents_show_online(), ais_clm_show_members(), ais_evt_show_event_channels(), aji_cli_create_collection(), aji_cli_create_leafnode(), aji_cli_delete_pubsub_node(), aji_cli_list_pubsub_nodes(), aji_cli_purge_pubsub_nodes(), aji_do_set_debug(), aji_test(), aoc_cli_debug_enable(), ast_cli_command_full(), cli_console_active(), cli_console_answer(), cli_console_autoanswer(), cli_console_dial(), cli_console_flash(), cli_console_hangup(), cli_console_mute(), cli_console_sendtext(), cli_fax_set_debug(), cli_fax_show_session(), cli_fax_show_version(), cli_list_available(), cli_list_devices(), cli_realtime_destroy(), cli_realtime_load(), cli_realtime_store(), cli_realtime_update(), cli_realtime_update2(), cli_tps_ping(), cli_tps_report(), console_active(), console_answer(), console_autoanswer(), console_cmd(), console_dial(), console_flash(), console_hangup(), console_mute(), console_sendtext(), console_transfer(), dahdi_destroy_channel(), dahdi_restart_cmd(), dahdi_set_dnd(), dahdi_set_hwgain(), dahdi_set_swgain(), dahdi_show_channel(), dahdi_show_channels(), dundi_do_lookup(), dundi_do_precache(), dundi_do_query(), dundi_flush(), dundi_set_debug(), dundi_show_entityid(), dundi_show_mappings(), dundi_show_peer(), dundi_show_peers(), dundi_show_precache(), dundi_show_requests(), dundi_show_trans(), dundi_store_history(), event_dump_cache(), group_show_channels(), gtalk_show_channels(), handle_abort_shutdown(), handle_cc_kill(), handle_cc_status(), handle_chanlist(), handle_cli_ael_reload(), handle_cli_ael_set_debug(), handle_cli_agi_add_cmd(), handle_cli_agi_debug(), handle_cli_agi_dump_html(), handle_cli_agi_show(), handle_cli_check_permissions(), handle_cli_config_reload(), handle_cli_core_show_channeltype(), handle_cli_core_show_channeltypes(), handle_cli_core_show_file_formats(), handle_cli_core_show_translation(), handle_cli_data_get(), handle_cli_database_del(), handle_cli_database_deltree(), handle_cli_database_get(), handle_cli_database_put(), handle_cli_database_show(), handle_cli_database_showkey(), handle_cli_devstate_change(), handle_cli_devstate_list(), handle_cli_dialplan_add_extension(), handle_cli_dialplan_add_ignorepat(), handle_cli_dialplan_add_include(), handle_cli_dialplan_reload(), handle_cli_dialplan_remove_extension(), handle_cli_dialplan_remove_ignorepat(), handle_cli_dialplan_remove_include(), handle_cli_dialplan_save(), handle_cli_file_convert(), handle_cli_h323_cycle_gk(), handle_cli_h323_hangup(), handle_cli_h323_reload(), handle_cli_h323_set_debug(), handle_cli_h323_set_trace(), handle_cli_h323_show_tokens(), handle_cli_h323_show_version(), handle_cli_iax2_provision(), handle_cli_iax2_prune_realtime(), handle_cli_iax2_set_debug(), handle_cli_iax2_set_debug_jb(), handle_cli_iax2_set_debug_trunk(), handle_cli_iax2_set_mtu(), handle_cli_iax2_show_callno_limits(), handle_cli_iax2_show_channels(), handle_cli_iax2_show_firmware(), handle_cli_iax2_show_netstats(), handle_cli_iax2_show_peer(), handle_cli_iax2_show_peers(), handle_cli_iax2_show_registry(), handle_cli_iax2_show_stats(), handle_cli_iax2_show_threads(), handle_cli_iax2_show_users(), handle_cli_iax2_test_losspct(), handle_cli_iax2_unregister(), handle_cli_indication_add(), handle_cli_indication_remove(), handle_cli_keys_init(), handle_cli_misdn_port_block(), handle_cli_misdn_port_down(), handle_cli_misdn_port_unblock(), handle_cli_misdn_port_up(), handle_cli_misdn_reload(), handle_cli_misdn_restart_pid(), handle_cli_misdn_restart_port(), handle_cli_misdn_send_digit(), handle_cli_misdn_send_display(), handle_cli_misdn_send_facility(), handle_cli_misdn_send_restart(), handle_cli_misdn_set_crypt_debug(), handle_cli_misdn_set_debug(), handle_cli_misdn_set_tics(), handle_cli_misdn_show_channel(), handle_cli_misdn_show_channels(), handle_cli_misdn_show_config(), handle_cli_misdn_show_port(), handle_cli_misdn_show_ports_stats(), handle_cli_misdn_show_stacks(), handle_cli_misdn_toggle_echocancel(), handle_cli_mixmonitor(), handle_cli_moh_reload(), handle_cli_moh_show_classes(), handle_cli_moh_show_files(), handle_cli_osp_show(), handle_cli_realtime_pgsql_status(), handle_cli_refresh(), handle_cli_reload(), handle_cli_rtcp_set_debug(), handle_cli_rtcp_set_stats(), handle_cli_rtp_set_debug(), handle_cli_show_sqlite_status(), handle_cli_sqlite_show_tables(), handle_cli_status(), handle_cli_stun_set_debug(), handle_cli_submit(), handle_cli_transcoder_show(), handle_cli_udptl_set_debug(), handle_cli_ulimit(), handle_commandcomplete(), handle_commandmatchesarray(), handle_commandnummatches(), handle_core_reload(), handle_core_set_debug_channel(), handle_core_show_image_formats(), handle_debug_dialplan(), handle_load(), handle_logger_mute(), handle_logger_set_level(), handle_manager_reload(), handle_manager_show_settings(), handle_mandebug(), handle_mfcr2_call_files(), handle_mfcr2_set_debug(), handle_mfcr2_show_channels(), handle_mgcp_audit_endpoint(), handle_mgcp_set_debug(), handle_mgcp_show_endpoints(), handle_minivm_list_templates(), handle_minivm_show_users(), handle_minivm_show_zones(), handle_modlist(), handle_nodebugchan_deprecated(), handle_orig(), handle_parkedcalls(), handle_pri_debug(), handle_pri_service_generic(), handle_pri_set_debug_file(), handle_pri_show_channels(), handle_pri_show_span(), handle_pri_show_spans(), handle_queue_add_member(), handle_queue_pause_member(), handle_queue_reload(), handle_queue_remove_member(), handle_queue_reset(), handle_queue_rule_show(), handle_queue_set_member_penalty(), handle_redirect(), handle_restart_gracefully(), handle_restart_now(), handle_restart_when_convenient(), handle_set_chanvar(), handle_set_extenpatternmatchnew(), handle_set_global(), handle_show_application(), handle_show_calendar(), handle_show_chanvar(), handle_show_dialplan(), handle_show_function(), handle_show_functions(), handle_show_hint(), handle_show_http(), handle_show_version_files(), handle_showcalls(), handle_showchan(), handle_showmanager(), handle_showmanagers(), handle_showmancmd(), handle_showuptime(), handle_skinny_reload(), handle_skinny_reset(), handle_skinny_set_debug(), handle_skinny_show_lines(), handle_skinny_show_settings(), handle_softhangup(), handle_ss7_block_cic(), handle_ss7_block_linkset(), handle_ss7_debug(), handle_ss7_show_channels(), handle_ss7_show_linkset(), handle_ss7_unblock_cic(), handle_ss7_unblock_linkset(), handle_stop_gracefully(), handle_stop_now(), handle_stop_when_convenient(), handle_unload(), handle_unset_extenpatternmatchnew(), handle_verbose(), handle_version(), handle_voicemail_reload(), handle_voicemail_show_users(), handle_voicemail_show_zones(), iax_show_provisioning(), jingle_show_channels(), locals_show(), meetme_cmd(), orig_app(), orig_exten(), pktccops_debug(), pktccops_gatedel(), pktccops_gateset(), res2cli(), show_codec_n(), show_codecs(), sip_cli_notify(), sip_do_debug(), sip_do_debug_ip(), sip_prune_realtime(), sip_set_history(), sip_show_channel(), sip_show_channels(), sip_show_channelstats(), sip_show_history(), sip_show_inuse(), sip_show_objects(), sip_show_registry(), sip_show_settings(), sip_show_tcp(), sip_show_user(), sip_show_users(), sip_unregister(), timing_test(), unistim_do_debug(), unistim_info(), unistim_reload(), and unistim_sp().

#define CLI_SUCCESS   (char *)RESULT_SUCCESS

Definition at line 43 of file cli.h.

Referenced by __queues_show(), __say_cli_init(), _sip_qualify_peer(), _sip_show_peer(), _sip_show_peers(), _skinny_show_device(), _skinny_show_devices(), _skinny_show_line(), _skinny_show_lines(), agent_logoff_cmd(), agents_show(), agents_show_online(), ais_clm_show_members(), ais_evt_show_event_channels(), aji_cli_create_collection(), aji_cli_create_leafnode(), aji_cli_delete_pubsub_node(), aji_cli_list_pubsub_nodes(), aji_cli_purge_pubsub_nodes(), aji_do_reload(), aji_do_set_debug(), alias_show(), aoc_cli_debug_enable(), cli_alias_passthrough(), cli_console_active(), cli_console_answer(), cli_console_autoanswer(), cli_console_dial(), cli_console_flash(), cli_console_hangup(), cli_console_mute(), cli_console_sendtext(), cli_fax_set_debug(), cli_fax_show_capabilities(), cli_fax_show_session(), cli_fax_show_sessions(), cli_fax_show_settings(), cli_fax_show_stats(), cli_fax_show_version(), cli_list_available(), cli_list_devices(), cli_realtime_destroy(), cli_realtime_load(), cli_realtime_store(), cli_realtime_update(), cli_realtime_update2(), cli_tps_ping(), cli_tps_report(), console_active(), console_answer(), console_autoanswer(), console_boost(), console_cmd(), console_dial(), console_do_answer(), console_flash(), console_hangup(), console_mute(), console_sendtext(), console_transfer(), dahdi_destroy_channel(), dahdi_restart_cmd(), dahdi_set_dnd(), dahdi_set_swgain(), dahdi_show_version(), dundi_do_lookup(), dundi_do_precache(), dundi_do_query(), dundi_flush(), dundi_set_debug(), dundi_show_entityid(), dundi_show_mappings(), dundi_show_peers(), dundi_show_precache(), dundi_show_requests(), dundi_show_trans(), dundi_store_history(), event_dump_cache(), group_show_channels(), gtalk_show_channels(), handle_abort_shutdown(), handle_bang(), handle_cc_kill(), handle_cc_status(), handle_chanlist(), handle_cli_ael_reload(), handle_cli_ael_set_debug(), handle_cli_agi_add_cmd(), handle_cli_agi_debug(), handle_cli_agi_dump_html(), handle_cli_agi_show(), handle_cli_check_permissions(), handle_cli_config_list(), handle_cli_config_reload(), handle_cli_core_show_channeltype(), handle_cli_core_show_channeltypes(), handle_cli_core_show_file_formats(), handle_cli_core_show_translation(), handle_cli_data_get(), handle_cli_data_show_providers(), handle_cli_database_del(), handle_cli_database_deltree(), handle_cli_database_get(), handle_cli_database_put(), handle_cli_database_show(), handle_cli_database_showkey(), handle_cli_devstate_change(), handle_cli_devstate_list(), handle_cli_dialplan_add_extension(), handle_cli_dialplan_add_ignorepat(), handle_cli_dialplan_add_include(), handle_cli_dialplan_reload(), handle_cli_dialplan_remove_extension(), handle_cli_dialplan_remove_ignorepat(), handle_cli_dialplan_remove_include(), handle_cli_dialplan_save(), handle_cli_file_convert(), handle_cli_h323_cycle_gk(), handle_cli_h323_hangup(), handle_cli_h323_reload(), handle_cli_h323_set_debug(), handle_cli_h323_set_trace(), handle_cli_h323_show_tokens(), handle_cli_h323_show_version(), handle_cli_iax2_provision(), handle_cli_iax2_prune_realtime(), handle_cli_iax2_reload(), handle_cli_iax2_set_debug(), handle_cli_iax2_set_debug_jb(), handle_cli_iax2_set_debug_trunk(), handle_cli_iax2_set_mtu(), handle_cli_iax2_show_cache(), handle_cli_iax2_show_callno_limits(), handle_cli_iax2_show_channels(), handle_cli_iax2_show_firmware(), handle_cli_iax2_show_netstats(), handle_cli_iax2_show_peer(), handle_cli_iax2_show_peers(), handle_cli_iax2_show_registry(), handle_cli_iax2_show_stats(), handle_cli_iax2_show_threads(), handle_cli_iax2_show_users(), handle_cli_iax2_test_losspct(), handle_cli_iax2_unregister(), handle_cli_indication_add(), handle_cli_indication_remove(), handle_cli_indication_show(), handle_cli_keys_init(), handle_cli_keys_show(), handle_cli_misdn_port_block(), handle_cli_misdn_port_down(), handle_cli_misdn_port_unblock(), handle_cli_misdn_port_up(), handle_cli_misdn_reload(), handle_cli_misdn_restart_pid(), handle_cli_misdn_restart_port(), handle_cli_misdn_send_digit(), handle_cli_misdn_send_display(), handle_cli_misdn_send_facility(), handle_cli_misdn_send_restart(), handle_cli_misdn_set_crypt_debug(), handle_cli_misdn_set_debug(), handle_cli_misdn_set_tics(), handle_cli_misdn_show_channels(), handle_cli_misdn_show_config(), handle_cli_misdn_show_port(), handle_cli_misdn_show_ports_stats(), handle_cli_misdn_show_stacks(), handle_cli_misdn_toggle_echocancel(), handle_cli_mixmonitor(), handle_cli_moh_reload(), handle_cli_moh_show_classes(), handle_cli_moh_show_files(), handle_cli_odbc_show(), handle_cli_realtime_pgsql_status(), handle_cli_refresh(), handle_cli_reload(), handle_cli_reload_permissions(), handle_cli_rtcp_set_debug(), handle_cli_rtcp_set_stats(), handle_cli_rtp_set_debug(), handle_cli_show_permissions(), handle_cli_show_sqlite_status(), handle_cli_sqlite_show_tables(), handle_cli_status(), handle_cli_stun_set_debug(), handle_cli_submit(), handle_cli_transcoder_show(), handle_cli_udptl_set_debug(), handle_cli_ulimit(), handle_cli_wait_fullybooted(), handle_commandcomplete(), handle_commandmatchesarray(), handle_commandnummatches(), handle_core_reload(), handle_core_set_debug_channel(), handle_core_show_image_formats(), handle_dahdi_show_cadences(), handle_debug_dialplan(), handle_dump_sched(), handle_feature_show(), handle_features_reload(), handle_help(), handle_load(), handle_logger_mute(), handle_logger_reload(), handle_logger_rotate(), handle_logger_set_level(), handle_logger_show_channels(), handle_manager_reload(), handle_manager_show_settings(), handle_mandebug(), handle_mfcr2_show_variants(), handle_mfcr2_version(), handle_mgcp_set_debug(), handle_minivm_list_templates(), handle_minivm_reload(), handle_minivm_show_settings(), handle_minivm_show_stats(), handle_minivm_show_users(), handle_minivm_show_zones(), handle_modlist(), handle_parkedcalls(), handle_pri_debug(), handle_pri_set_debug_file(), handle_pri_show_span(), handle_pri_version(), handle_queue_add_member(), handle_queue_pause_member(), handle_queue_reload(), handle_queue_remove_member(), handle_queue_reset(), handle_queue_rule_show(), handle_queue_set_member_penalty(), handle_redirect(), handle_reload(), handle_restart_gracefully(), handle_restart_now(), handle_restart_when_convenient(), handle_set_chanvar(), handle_set_extenpatternmatchnew(), handle_set_global(), handle_show_applications(), handle_show_calendar(), handle_show_calendars(), handle_show_chanvar(), handle_show_dialplan(), handle_show_function(), handle_show_functions(), handle_show_globals(), handle_show_hint(), handle_show_hints(), handle_show_http(), handle_show_profile(), handle_show_routes(), handle_show_settings(), handle_show_switches(), handle_show_sysinfo(), handle_show_threads(), handle_show_version_files(), handle_showchan(), handle_showmanager(), handle_showmanagers(), handle_showmancmds(), handle_showmanconn(), handle_showmaneventq(), handle_showuptime(), handle_skinny_reload(), handle_skinny_reset(), handle_skinny_set_debug(), handle_skinny_show_settings(), handle_softhangup(), handle_ss7_block_cic(), handle_ss7_block_linkset(), handle_ss7_debug(), handle_ss7_show_linkset(), handle_ss7_unblock_cic(), handle_ss7_unblock_linkset(), handle_ss7_version(), handle_stop_gracefully(), handle_stop_now(), handle_stop_when_convenient(), handle_unset_extenpatternmatchnew(), handle_verbose(), handle_version(), handle_voicemail_reload(), handle_voicemail_show_users(), handle_voicemail_show_zones(), help1(), help_workhorse(), iax_show_provisioning(), jingle_do_reload(), jingle_show_channels(), locals_show(), meetme_show_cmd(), mgcp_reload(), orig_app(), orig_exten(), pktccops_debug(), pktccops_gatedel(), pktccops_gateset(), pktccops_show_cmtses(), pktccops_show_gates(), pktccops_show_pools(), realtime_ldap_status(), res2cli(), rtcp_do_debug_ip(), rtp_do_debug_ip(), show_codec_n(), show_license(), show_users_realtime(), show_warranty(), sip_do_debug(), sip_do_debug_ip(), sip_do_debug_peer(), sip_prune_realtime(), sip_reload(), sip_set_history(), sip_show_channel(), sip_show_channels(), sip_show_channelstats(), sip_show_domains(), sip_show_history(), sip_show_inuse(), sip_show_mwi(), sip_show_objects(), sip_show_registry(), sip_show_sched(), sip_show_settings(), sip_show_tcp(), sip_show_user(), sip_show_users(), sip_unregister(), sla_show_stations(), sla_show_trunks(), spandsp_fax_cli_show_capabilities(), spandsp_fax_cli_show_session(), spandsp_fax_cli_show_settings(), spandsp_fax_cli_show_stats(), timing_test(), unistim_do_debug(), unistim_info(), unistim_reload(), and unistim_sp().

#define ESS (  )     ((x) == 1 ? "" : "s")

In many cases we need to print singular or plural words depending on a count. This macro helps us e.g. printf("we have %d object%s", n, ESS(n));

Definition at line 58 of file cli.h.

Referenced by cli_realtime_destroy(), cli_realtime_update(), cli_realtime_update2(), group_show_channels(), handle_chanlist(), handle_cli_status(), handle_parkedcalls(), handle_showcalls(), print_uptimestr(), and sip_show_channels().

#define RESULT_FAILURE   2

Definition at line 41 of file cli.h.

Referenced by agi_handle_command(), get_member_penalty(), handle_answer(), handle_cli_iax2_show_peers(), handle_controlstreamfile(), handle_getoption(), handle_gosub(), handle_queue_set_member_penalty(), handle_recordfile(), handle_recvchar(), handle_sayalpha(), handle_saydate(), handle_saydatetime(), handle_saydigits(), handle_saynumber(), handle_sayphonetic(), handle_saytime(), handle_sendimage(), handle_sendtext(), handle_streamfile(), handle_waitfordigit(), logger_reload(), rpt_do_cmd(), rpt_do_dump(), rpt_do_fun(), rpt_do_fun1(), rpt_do_lstats(), rpt_do_nodes(), rpt_do_reload(), rpt_do_restart(), rpt_do_stats(), set_member_paused(), and set_member_penalty().

#define RESULT_SHOWUSAGE   1

Definition at line 40 of file cli.h.

Referenced by __iax2_show_peers(), agi_handle_command(), console_key(), console_unkey(), handle_autohangup(), handle_channelstatus(), handle_cli_iax2_show_peers(), handle_controlstreamfile(), handle_dbdel(), handle_dbdeltree(), handle_dbget(), handle_dbput(), handle_exec(), handle_getdata(), handle_getoption(), handle_getvariable(), handle_getvariablefull(), handle_gosub(), handle_hangup(), handle_recordfile(), handle_recvchar(), handle_recvtext(), handle_sayalpha(), handle_saydate(), handle_saydatetime(), handle_saydigits(), handle_saynumber(), handle_sayphonetic(), handle_saytime(), handle_sendimage(), handle_sendtext(), handle_setcontext(), handle_setextension(), handle_setmusic(), handle_setpriority(), handle_speechactivategrammar(), handle_speechdeactivategrammar(), handle_speechloadgrammar(), handle_speechrecognize(), handle_speechset(), handle_speechunloadgrammar(), handle_streamfile(), handle_tddmode(), handle_verbose(), handle_waitfordigit(), radio_active(), radio_tune(), res2cli(), rpt_do_cmd(), rpt_do_debug(), rpt_do_dump(), rpt_do_fun(), rpt_do_fun1(), rpt_do_lstats(), rpt_do_nodes(), rpt_do_reload(), rpt_do_restart(), and rpt_do_stats().

#define RESULT_SUCCESS   0

Definition at line 39 of file cli.h.

Referenced by __iax2_show_peers(), agi_handle_command(), cli_fax_show_session(), console_key(), console_unkey(), dahdi_destroy_channel(), dahdi_destroy_channel_bynum(), handle_answer(), handle_autohangup(), handle_channelstatus(), handle_controlstreamfile(), handle_dbdel(), handle_dbdeltree(), handle_dbget(), handle_dbput(), handle_getdata(), handle_getoption(), handle_getvariable(), handle_getvariablefull(), handle_gosub(), handle_hangup(), handle_noop(), handle_queue_pause_member(), handle_queue_set_member_penalty(), handle_recordfile(), handle_recvchar(), handle_recvtext(), handle_sayalpha(), handle_saydate(), handle_saydatetime(), handle_saydigits(), handle_saynumber(), handle_sayphonetic(), handle_saytime(), handle_sendimage(), handle_sendtext(), handle_setcallerid(), handle_setcontext(), handle_setextension(), handle_setmusic(), handle_setpriority(), handle_setvariable(), handle_showcalls(), handle_speechactivategrammar(), handle_speechcreate(), handle_speechdeactivategrammar(), handle_speechdestroy(), handle_speechloadgrammar(), handle_speechrecognize(), handle_speechset(), handle_speechunloadgrammar(), handle_streamfile(), handle_tddmode(), handle_verbose(), handle_waitfordigit(), locals_show(), logger_reload(), manager_data_get(), manager_iax2_show_netstats(), manager_iax2_show_peer_list(), manager_list_voicemail_users(), manager_parking_status(), manager_queue_rule_show(), manager_queues_show(), manager_queues_status(), manager_queues_summary(), manager_rpt_local_nodes(), radio_active(), radio_set_debug(), radio_set_debug_off(), radio_set_xpmr_debug(), radio_tune(), res2cli(), rpt_do_cmd(), rpt_do_debug(), rpt_do_dump(), rpt_do_local_nodes(), rpt_do_lstats(), rpt_do_nodes(), rpt_do_stats(), set_member_paused(), and set_member_penalty().


Enumeration Type Documentation

enum ast_cli_command

calling arguments for new-style handlers.

Enumerator:
CLI_INIT 
CLI_GENERATE 
CLI_HANDLER 

Definition at line 145 of file cli.h.

00145                      {
00146    CLI_INIT = -2,    /* return the usage string */
00147    CLI_GENERATE = -3,   /* behave as 'generator', remap argv to struct ast_cli_args */
00148    CLI_HANDLER = -4, /* run the normal handler */
00149 };


Function Documentation

void ast_cli ( int  fd,
const char *  fmt,
  ... 
)

Definition at line 101 of file cli.c.

References ast_carefulwrite(), AST_CLI_INITLEN, AST_DYNSTR_BUILD_FAILED, ast_str_buffer(), ast_str_set_va(), ast_str_strlen(), and ast_str_thread_get().

Referenced by __iax2_show_peers(), __say_cli_init(), _sip_qualify_peer(), _sip_show_peer(), _sip_show_peers(), _skinny_show_device(), _skinny_show_devices(), _skinny_show_line(), _skinny_show_lines(), agent_logoff_cmd(), agents_show(), agents_show_online(), ais_clm_show_members(), ais_evt_show_event_channels(), aji_cli_create_collection(), aji_cli_create_leafnode(), aji_cli_delete_pubsub_node(), aji_cli_list_pubsub_nodes(), aji_cli_purge_pubsub_nodes(), aji_do_reload(), aji_do_set_debug(), aji_show_buddies(), aji_show_clients(), aji_test(), alias_show(), aoc_cli_debug_enable(), ast_cli_command_full(), ast_cli_netstats(), ast_console_toggle_mute(), cc_cli_output_status(), cc_cli_print_monitor_stats(), channel_set_debug(), cli_console_active(), cli_console_answer(), cli_console_autoanswer(), cli_console_dial(), cli_console_flash(), cli_console_hangup(), cli_console_mute(), cli_console_sendtext(), cli_fax_set_debug(), cli_fax_show_capabilities(), cli_fax_show_session(), cli_fax_show_sessions(), cli_fax_show_settings(), cli_fax_show_stats(), cli_fax_show_version(), cli_list_available(), cli_list_devices(), cli_match_char_tree(), cli_realtime_destroy(), cli_realtime_load(), cli_realtime_store(), cli_realtime_update(), cli_realtime_update2(), cli_tps_ping(), cli_tps_report(), console_active(), console_answer(), console_autoanswer(), console_boost(), console_cmd(), console_dial(), console_do_answer(), console_flash(), console_hangup(), console_mute(), console_sendtext(), console_transfer(), dahdi_set_dnd(), dahdi_set_hwgain(), dahdi_set_swgain(), dahdi_show_channel(), dahdi_show_channels(), dahdi_show_status(), dahdi_show_version(), data_provider_print_cli(), data_result_print_cli(), data_result_print_cli_node(), db_show_cb(), db_showkey_cb(), dialog_dump_func(), do_print(), dump_raw_ie(), dundi_do_lookup(), dundi_do_precache(), dundi_do_query(), dundi_flush(), dundi_set_debug(), dundi_show_entityid(), dundi_show_mappings(), dundi_show_peer(), dundi_show_peers(), dundi_show_precache(), dundi_show_requests(), dundi_show_trans(), dundi_store_history(), event_dump_cache(), event_dump_cli(), group_show_channels(), gtalk_show_channels(), handle_chanlist(), handle_cli_agi_add_cmd(), handle_cli_agi_debug(), handle_cli_agi_dump_html(), handle_cli_agi_show(), handle_cli_check_permissions(), handle_cli_config_list(), handle_cli_core_show_channeltype(), handle_cli_core_show_channeltypes(), handle_cli_core_show_config_mappings(), handle_cli_core_show_file_formats(), handle_cli_core_show_translation(), handle_cli_database_del(), handle_cli_database_deltree(), handle_cli_database_get(), handle_cli_database_put(), handle_cli_database_show(), handle_cli_database_showkey(), handle_cli_devstate_change(), handle_cli_devstate_list(), handle_cli_dialplan_add_extension(), handle_cli_dialplan_add_ignorepat(), handle_cli_dialplan_add_include(), handle_cli_dialplan_reload(), handle_cli_dialplan_remove_extension(), handle_cli_dialplan_remove_ignorepat(), handle_cli_dialplan_remove_include(), handle_cli_dialplan_save(), handle_cli_file_convert(), handle_cli_h323_set_debug(), handle_cli_h323_set_trace(), handle_cli_iax2_provision(), handle_cli_iax2_prune_realtime(), handle_cli_iax2_set_debug(), handle_cli_iax2_set_debug_jb(), handle_cli_iax2_set_debug_trunk(), handle_cli_iax2_set_mtu(), handle_cli_iax2_show_cache(), handle_cli_iax2_show_callno_limits(), handle_cli_iax2_show_channels(), handle_cli_iax2_show_firmware(), handle_cli_iax2_show_netstats(), handle_cli_iax2_show_peer(), handle_cli_iax2_show_registry(), handle_cli_iax2_show_stats(), handle_cli_iax2_show_threads(), handle_cli_iax2_show_users(), handle_cli_iax2_unregister(), handle_cli_indication_show(), handle_cli_keys_show(), handle_cli_misdn_reload(), handle_cli_misdn_send_digit(), handle_cli_misdn_send_display(), handle_cli_misdn_set_debug(), handle_cli_misdn_show_channels(), handle_cli_misdn_show_config(), handle_cli_misdn_show_port(), handle_cli_misdn_show_ports_stats(), handle_cli_misdn_show_stacks(), handle_cli_misdn_toggle_echocancel(), handle_cli_mixmonitor(), handle_cli_moh_show_classes(), handle_cli_moh_show_files(), handle_cli_odbc_show(), handle_cli_osp_show(), handle_cli_realtime_pgsql_cache(), handle_cli_realtime_pgsql_status(), handle_cli_refresh(), handle_cli_rtcp_set_debug(), handle_cli_rtcp_set_stats(), handle_cli_rtp_set_debug(), handle_cli_show_permissions(), handle_cli_show_sqlite_status(), handle_cli_sqlite_show_tables(), handle_cli_status(), handle_cli_stun_set_debug(), handle_cli_submit(), handle_cli_transcoder_show(), handle_cli_udptl_set_debug(), handle_cli_ulimit(), handle_cli_wait_fullybooted(), handle_commandcomplete(), handle_commandmatchesarray(), handle_commandnummatches(), handle_core_set_debug_channel(), handle_core_show_image_formats(), handle_dahdi_show_cadences(), handle_debug_dialplan(), handle_feature_show(), handle_help(), handle_load(), handle_logger_reload(), handle_logger_rotate(), handle_logger_set_level(), handle_logger_show_channels(), handle_manager_show_settings(), handle_mandebug(), handle_mfcr2_set_debug(), handle_mfcr2_show_channels(), handle_mfcr2_show_variants(), handle_mfcr2_version(), handle_mgcp_set_debug(), handle_mgcp_show_endpoints(), handle_minivm_list_templates(), handle_minivm_reload(), handle_minivm_show_settings(), handle_minivm_show_stats(), handle_minivm_show_users(), handle_minivm_show_zones(), handle_modlist(), handle_parkedcalls(), handle_pri_debug(), handle_pri_service_generic(), handle_pri_set_debug_file(), handle_pri_show_debug(), handle_pri_show_span(), handle_pri_version(), handle_queue_add_member(), handle_queue_pause_member(), handle_queue_remove_member(), handle_queue_rule_show(), handle_queue_set_member_penalty(), handle_redirect(), handle_reload(), handle_restart_when_convenient(), handle_set_chanvar(), handle_set_extenpatternmatchnew(), handle_set_global(), handle_show_applications(), handle_show_calendar(), handle_show_calendars(), handle_show_chanvar(), handle_show_dialplan(), handle_show_function(), handle_show_functions(), handle_show_globals(), handle_show_hint(), handle_show_hints(), handle_show_http(), handle_show_profile(), handle_show_routes(), handle_show_settings(), handle_show_switches(), handle_show_sysinfo(), handle_show_threads(), handle_show_version_files(), handle_showcalls(), handle_showchan(), handle_showmanager(), handle_showmanagers(), handle_showmancmd(), handle_showmancmds(), handle_showmanconn(), handle_showmaneventq(), handle_skinny_set_debug(), handle_skinny_show_settings(), handle_softhangup(), handle_ss7_block_cic(), handle_ss7_block_linkset(), handle_ss7_debug(), handle_ss7_show_linkset(), handle_ss7_unblock_cic(), handle_ss7_unblock_linkset(), handle_ss7_version(), handle_stop_when_convenient(), handle_unload(), handle_unset_extenpatternmatchnew(), handle_verbose(), handle_version(), handle_voicemail_reload(), handle_voicemail_show_users(), handle_voicemail_show_zones(), help1(), help_workhorse(), iax_show_provisioning(), jingle_show_channels(), locals_show(), meetme_cmd(), meetme_show_cmd(), modlist_modentry(), orig_app(), orig_exten(), peer_dump_func(), pktccops_debug(), pktccops_gatedel(), pktccops_gateset(), pktccops_show_cmtses(), pktccops_show_gates(), pktccops_show_pools(), print_app(), print_app_docs(), print_bc_info(), print_cel_sub(), print_codec_to_cli(), print_group(), print_stats_cb(), print_uptimestr(), radio_active(), radio_set_debug(), radio_set_debug_off(), radio_set_xpmr_debug(), radio_tune(), realtime_ldap_status(), rpt_do_cmd(), rpt_do_debug(), rpt_do_dump(), rpt_do_fun(), rpt_do_local_nodes(), rpt_do_lstats(), rpt_do_nodes(), rpt_do_stats(), rtcp_do_debug_ip(), rtp_do_debug_ip(), show_channels_cb(), show_chanstats_cb(), show_codec_n(), show_codecs(), show_config_description(), show_debug_helper(), show_dialplan_helper(), show_license(), show_users_realtime(), show_warranty(), sig_pri_cli_show_channels(), sig_pri_cli_show_channels_header(), sig_pri_cli_show_span(), sig_pri_cli_show_spans(), sig_ss7_cli_show_channels(), sig_ss7_cli_show_channels_header(), sip_cli_notify(), sip_do_debug(), sip_do_debug_ip(), sip_do_debug_peer(), sip_prune_realtime(), sip_set_history(), sip_show_channel(), sip_show_channels(), sip_show_channelstats(), sip_show_domains(), sip_show_history(), sip_show_inuse(), sip_show_mwi(), sip_show_objects(), sip_show_registry(), sip_show_sched(), sip_show_settings(), sip_show_tcp(), sip_show_user(), sip_show_users(), sip_unregister(), sla_show_stations(), sla_show_trunks(), spandsp_fax_cli_show_capabilities(), spandsp_fax_cli_show_session(), spandsp_fax_cli_show_stats(), timing_test(), tune_rxctcss(), tune_rxinput(), tune_rxvoice(), tune_txoutput(), unistim_do_debug(), unistim_info(), and unistim_sp().

00102 {
00103    int res;
00104    struct ast_str *buf;
00105    va_list ap;
00106 
00107    if (!(buf = ast_str_thread_get(&ast_cli_buf, AST_CLI_INITLEN)))
00108       return;
00109 
00110    va_start(ap, fmt);
00111    res = ast_str_set_va(&buf, 0, fmt, ap);
00112    va_end(ap);
00113 
00114    if (res != AST_DYNSTR_BUILD_FAILED) {
00115       ast_carefulwrite(fd, ast_str_buffer(buf), ast_str_strlen(buf), 100);
00116    }
00117 }

int ast_cli_command_full ( int  uid,
int  gid,
int  fd,
const char *  s 
)

Interprets a command Interpret a command s, sending output to fd if uid:gid has permissions to run this command. uid = CLI_NO_PERMS to avoid checking user permissions gid = CLI_NO_PERMS to avoid checking group permissions.

Parameters:
uid User ID that is trying to run the command.
gid Group ID that is trying to run the command.
fd pipe
s incoming string
Return values:
0 on success
-1 on failure

Definition at line 2461 of file cli.c.

References args, ast_atomic_fetchadd_int(), ast_cli(), ast_free, ast_join(), AST_MAX_ARGS, AST_RWLIST_RDLOCK, AST_RWLIST_UNLOCK, CLI_FAILURE, CLI_HANDLER, cli_has_permissions(), CLI_SHOWUSAGE, ast_cli_args::fd, find_best(), find_cli(), ast_cli_entry::handler, ast_cli_entry::inuse, parse_args(), S_OR, and ast_cli_entry::usage.

Referenced by ast_cli_command_multiple_full().

02462 {
02463    const char *args[AST_MAX_ARGS + 1];
02464    struct ast_cli_entry *e;
02465    int x;
02466    char *duplicate = parse_args(s, &x, args + 1, AST_MAX_ARGS, NULL);
02467    char tmp[AST_MAX_ARGS + 1];
02468    char *retval = NULL;
02469    struct ast_cli_args a = {
02470       .fd = fd, .argc = x, .argv = args+1 };
02471 
02472    if (duplicate == NULL)
02473       return -1;
02474 
02475    if (x < 1)  /* We need at least one entry, otherwise ignore */
02476       goto done;
02477 
02478    AST_RWLIST_RDLOCK(&helpers);
02479    e = find_cli(args + 1, 0);
02480    if (e)
02481       ast_atomic_fetchadd_int(&e->inuse, 1);
02482    AST_RWLIST_UNLOCK(&helpers);
02483    if (e == NULL) {
02484       ast_cli(fd, "No such command '%s' (type 'core show help %s' for other possible commands)\n", s, find_best(args + 1));
02485       goto done;
02486    }
02487 
02488    ast_join(tmp, sizeof(tmp), args + 1);
02489    /* Check if the user has rights to run this command. */
02490    if (!cli_has_permissions(uid, gid, tmp)) {
02491       ast_cli(fd, "You don't have permissions to run '%s' command\n", tmp);
02492       ast_free(duplicate);
02493       return 0;
02494    }
02495 
02496    /*
02497     * Within the handler, argv[-1] contains a pointer to the ast_cli_entry.
02498     * Remember that the array returned by parse_args is NULL-terminated.
02499     */
02500    args[0] = (char *)e;
02501 
02502    retval = e->handler(e, CLI_HANDLER, &a);
02503 
02504    if (retval == CLI_SHOWUSAGE) {
02505       ast_cli(fd, "%s", S_OR(e->usage, "Invalid usage, but no usage information available.\n"));
02506    } else {
02507       if (retval == CLI_FAILURE)
02508          ast_cli(fd, "Command '%s' failed.\n", s);
02509    }
02510    ast_atomic_fetchadd_int(&e->inuse, -1);
02511 done:
02512    ast_free(duplicate);
02513    return 0;
02514 }

int ast_cli_command_multiple_full ( int  uid,
int  gid,
int  fd,
size_t  size,
const char *  s 
)

Executes multiple CLI commands Interpret strings separated by NULL and execute each one, sending output to fd if uid has permissions, uid = CLI_NO_PERMS to avoid checking users permissions. gid = CLI_NO_PERMS to avoid checking group permissions.

Parameters:
uid User ID that is trying to run the command.
gid Group ID that is trying to run the command.
fd pipe
size is the total size of the string
s incoming string
Return values:
number of commands executed

Definition at line 2516 of file cli.c.

References ast_cli_command_full().

Referenced by netconsole().

02517 {
02518    char cmd[512];
02519    int x, y = 0, count = 0;
02520 
02521    for (x = 0; x < size; x++) {
02522       cmd[y] = s[x];
02523       y++;
02524       if (s[x] == '\0') {
02525          ast_cli_command_full(uid, gid, fd, cmd);
02526          y = 0;
02527          count++;
02528       }
02529    }
02530    return count;
02531 }

char* ast_cli_complete ( const char *  word,
const 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 const char * const choices[] = { "one", "two", "three", NULL };
   if (pos == 2)
         return ast_cli_complete(word, choices, n);
   else
      return NULL;
    }

Definition at line 1531 of file cli.c.

References ast_strdup, ast_strlen_zero(), and len().

Referenced by complete_meetmecmd(), event_dump_cache(), handle_cc_kill(), handle_cli_core_show_translation(), handle_cli_devstate_change(), handle_cli_iax2_prune_realtime(), handle_orig(), handle_show_applications(), and sip_prune_realtime().

01532 {
01533    int i, which = 0, len;
01534    len = ast_strlen_zero(word) ? 0 : strlen(word);
01535 
01536    for (i = 0; choices[i]; i++) {
01537       if ((!len || !strncasecmp(word, choices[i], len)) && ++which > state)
01538          return ast_strdup(choices[i]);
01539    }
01540    return NULL;
01541 }

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, followed by a NULL. All strings and the array itself are malloc'ed and must be freed by the caller.

Definition at line 2312 of file cli.c.

References ast_cli_generator(), ast_copy_string(), ast_malloc, and ast_realloc.

Referenced by cli_complete(), and handle_commandmatchesarray().

02313 {
02314    char **match_list = NULL, *retstr, *prevstr;
02315    size_t match_list_len, max_equal, which, i;
02316    int matches = 0;
02317 
02318    /* leave entry 0 free for the longest common substring */
02319    match_list_len = 1;
02320    while ((retstr = ast_cli_generator(text, word, matches)) != NULL) {
02321       if (matches + 1 >= match_list_len) {
02322          match_list_len <<= 1;
02323          if (!(match_list = ast_realloc(match_list, match_list_len * sizeof(*match_list))))
02324             return NULL;
02325       }
02326       match_list[++matches] = retstr;
02327    }
02328 
02329    if (!match_list)
02330       return match_list; /* NULL */
02331 
02332    /* Find the longest substring that is common to all results
02333     * (it is a candidate for completion), and store a copy in entry 0.
02334     */
02335    prevstr = match_list[1];
02336    max_equal = strlen(prevstr);
02337    for (which = 2; which <= matches; which++) {
02338       for (i = 0; i < max_equal && toupper(prevstr[i]) == toupper(match_list[which][i]); i++)
02339          continue;
02340       max_equal = i;
02341    }
02342 
02343    if (!(retstr = ast_malloc(max_equal + 1)))
02344       return NULL;
02345    
02346    ast_copy_string(retstr, match_list[1], max_equal + 1);
02347    match_list[0] = retstr;
02348 
02349    /* ensure that the array is NULL terminated */
02350    if (matches + 1 >= match_list_len) {
02351       if (!(match_list = ast_realloc(match_list, (match_list_len + 1) * sizeof(*match_list))))
02352          return NULL;
02353    }
02354    match_list[matches + 1] = NULL;
02355 
02356    return match_list;
02357 }

char* ast_cli_generator ( const char *  ,
const char *  ,
int   
)

Readline madness Useful for readline, that's about it.

Return values:
0 on success
-1 on failure

Definition at line 2456 of file cli.c.

References __ast_cli_generator().

Referenced by ast_cli_completion_matches(), ast_cli_generatornummatches(), cli_alias_passthrough(), and handle_cli_check_permissions().

02457 {
02458    return __ast_cli_generator(text, word, state, 1);
02459 }

int ast_cli_generatornummatches ( const char *  ,
const char *   
)

Return the number of unique matches for the generator.

Definition at line 2295 of file cli.c.

References ast_cli_generator(), and ast_free.

Referenced by handle_commandnummatches().

02296 {
02297    int matches = 0, i = 0;
02298    char *buf = NULL, *oldbuf = NULL;
02299 
02300    while ((buf = ast_cli_generator(text, word, i++))) {
02301       if (!oldbuf || strcmp(buf,oldbuf))
02302          matches++;
02303       if (oldbuf)
02304          ast_free(oldbuf);
02305       oldbuf = buf;
02306    }
02307    if (oldbuf)
02308       ast_free(oldbuf);
02309    return matches;
02310 }

int ast_cli_register ( struct ast_cli_entry e  ) 

Registers a command or an array of commands.

Parameters:
e which cli entry to register. Register your own command
Return values:
0 on success
-1 on failure

Definition at line 2122 of file cli.c.

References __ast_cli_register().

Referenced by ast_cdr_engine_init(), ast_cel_engine_init(), ast_cli_register_multiple(), dnsmgr_init(), do_reload(), and load_module().

02123 {
02124    return __ast_cli_register(e, NULL);
02125 }

int ast_cli_register_multiple ( struct ast_cli_entry e,
int  len 
)

Register multiple commands.

Parameters:
e pointer to first cli entry to register
len number of entries to register

Definition at line 2130 of file cli.c.

References ast_cli_register().

Referenced by __ast_register_translator(), __init_manager(), ast_ais_clm_load_module(), ast_ais_evt_load_module(), ast_aoc_cli_init(), ast_builtins_init(), ast_cc_init(), ast_channels_init(), ast_data_init(), ast_event_init(), ast_features_init(), ast_file_init(), ast_http_init(), ast_image_init(), ast_indications_init(), ast_stun_init(), ast_test_init(), ast_timing_init(), ast_tps_init(), ast_udptl_init(), ast_utils_init(), astdb_init(), astobj2_init(), crypto_init(), iax_provision_init(), init_framer(), init_logger(), load_module(), load_pbx(), main(), and register_config_cli().

02131 {
02132    int i, res = 0;
02133 
02134    for (i = 0; i < len; i++)
02135       res |= ast_cli_register(e + i);
02136 
02137    return res;
02138 }

int ast_cli_unregister ( struct ast_cli_entry e  ) 

Unregisters a command or an array of commands.

Parameters:
e which cli entry to unregister Unregister your own command. You must pass a completed ast_cli_entry structure
Returns:
0

Definition at line 2116 of file cli.c.

References __ast_cli_unregister().

Referenced by alias_destroy(), ast_cli_unregister_multiple(), do_reload(), load_module(), and unload_module().

02117 {
02118    return __ast_cli_unregister(e, NULL);
02119 }

int ast_cli_unregister_multiple ( struct ast_cli_entry e,
int  len 
)

Unregister multiple commands.

Parameters:
e pointer to first cli entry to unregister
len number of entries to unregister

Definition at line 2140 of file cli.c.

References ast_cli_unregister().

Referenced by __unload_module(), ast_ais_clm_unload_module(), iax_provision_unload(), load_module(), and unload_module().

02141 {
02142    int i, res = 0;
02143 
02144    for (i = 0; i < len; i++)
02145       res |= ast_cli_unregister(e + i);
02146 
02147    return res;
02148 }

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 1543 of file cli.c.

References ast_channel_iterator_all_new(), ast_channel_iterator_by_name_new(), ast_channel_iterator_destroy(), ast_channel_iterator_next(), ast_channel_lock, ast_channel_unlock, ast_channel_unref, ast_strdup, ast_strlen_zero(), and state::name.

Referenced by complete_ch(), handle_cli_agi_add_cmd(), handle_cli_mixmonitor(), handle_core_set_debug_channel(), handle_redirect(), handle_set_chanvar(), handle_show_chanvar(), handle_showchan(), and handle_softhangup().

01544 {
01545    struct ast_channel *c = NULL;
01546    int which = 0;
01547    char notfound = '\0';
01548    char *ret = &notfound; /* so NULL can break the loop */
01549    struct ast_channel_iterator *iter;
01550 
01551    if (pos != rpos) {
01552       return NULL;
01553    }
01554 
01555    if (ast_strlen_zero(word)) {
01556       iter = ast_channel_iterator_all_new();
01557    } else {
01558       iter = ast_channel_iterator_by_name_new(word, strlen(word));
01559    }
01560 
01561    if (!iter) {
01562       return NULL;
01563    }
01564 
01565    while (ret == &notfound && (c = ast_channel_iterator_next(iter))) {
01566       if (++which > state) {
01567          ast_channel_lock(c);
01568          ret = ast_strdup(c->name);
01569          ast_channel_unlock(c);
01570       }
01571       ast_channel_unref(c);
01572    }
01573 
01574    ast_channel_iterator_destroy(iter);
01575 
01576    return ret == &notfound ? NULL : ret;
01577 }


Generated on Sat Mar 10 01:55:18 2012 for Asterisk - The Open Source Telephony Project by  doxygen 1.4.7