Asterisk - The Open Source Telephony Project  GIT-master-b91fb3c
Data Structures | Macros | Enumerations | Functions
strings.h File Reference

String manipulation functions. More...

#include <ctype.h>
#include <limits.h>
#include "asterisk/utils.h"
#include "asterisk/threadstorage.h"
#include "asterisk/astobj2.h"

Go to the source code of this file.

Data Structures

struct  ast_str
 The descriptor of a dynamic string XXX storage will be optimized later if needed We use the ts field to indicate the type of storage. Three special constants indicate malloc, ast_alloca() or static variables, all other values indicate a struct ast_threadstorage pointer. More...
 

Macros

#define __AST_STR_LEN   len
 
#define __AST_STR_STR   str
 
#define __AST_STR_TS   ts
 
#define __AST_STR_USED   used
 
#define _ast_str_helper(buf, max_len, append, fmt, ap)   __ast_str_helper(buf, max_len, append, fmt, ap, __FILE__, __LINE__, __PRETTY_FUNCTION__)
 
#define _DB1(x)
 
#define AS_OR(a, b)   (a && ast_str_strlen(a)) ? ast_str_buffer(a) : (b)
 
#define ast_join(s, len, w)   ast_join_delim(s, len, w, -1, ' ')
 
#define ast_str_alloca(init_len)
 
#define ast_str_container_alloc(buckets)   ast_str_container_alloc_options(AO2_ALLOC_OPT_LOCK_MUTEX, buckets)
 Allocates a hash container for bare strings. More...
 
#define ast_str_create(init_len)   _ast_str_create(init_len, __FILE__, __LINE__, __PRETTY_FUNCTION__)
 Create a malloc'ed dynamic length string. More...
 
#define ast_str_make_space(buf, new_len)   _ast_str_make_space(buf, new_len, __FILE__, __LINE__, __PRETTY_FUNCTION__)
 
#define ast_str_tmp(init_len, __expr)
 
#define ast_to_camel_case(s)   ast_to_camel_case_delim(s, "_")
 
#define AST_YESNO(x)   ((x) ? "Yes" : "No")
 return Yes or No depending on the argument. More...
 
#define DS_ALLOCA   ((struct ast_threadstorage *)2)
 
#define DS_MALLOC   ((struct ast_threadstorage *)1)
 
#define DS_STATIC   ((struct ast_threadstorage *)3) /* not supported yet */
 
#define S_COR(a, b, c)   ({typeof(&((b)[0])) __x = (b); (a) && !ast_strlen_zero(__x) ? (__x) : (c);})
 returns the equivalent of logic or for strings, with an additional boolean check: second one if not empty and first one is true, otherwise third one. example: S_COR(usewidget, widget, "<no widget>") More...
 
#define S_OR(a, b)   ({typeof(&((a)[0])) __x = (a); ast_strlen_zero(__x) ? (b) : __x;})
 returns the equivalent of logic or for strings: first one if not empty, otherwise second one. More...
 

Enumerations

enum  { AST_DYNSTR_BUILD_FAILED = -1, AST_DYNSTR_BUILD_RETRY = -2 }
 Error codes from __ast_str_helper() The undelying processing to manipulate dynamic string is done by __ast_str_helper(), which can return a success or a permanent failure (e.g. no memory). More...
 
enum  ast_strsep_flags { AST_STRSEP_STRIP = 0x01, AST_STRSEP_TRIM = 0x02, AST_STRSEP_UNESCAPE = 0x04, AST_STRSEP_ALL = 0x07 }
 Flags for ast_strsep. More...
 

Functions

int __ast_str_helper (struct ast_str **buf, ssize_t max_len, int append, const char *fmt, va_list ap, const char *file, int lineno, const char *func)
 Core functionality of ast_str_(set|append)_va. More...
 
char * __ast_str_helper2 (struct ast_str **buf, ssize_t max_len, const char *src, size_t maxsrc, int append, int escapecommas)
 
struct ast_str_ast_str_create (size_t init_len, const char *file, int lineno, const char *func)
 
int _ast_str_make_space (struct ast_str **buf, size_t new_len, const char *file, int lineno, const char *function)
 
static int force_inline attribute_pure ast_begins_with (const char *str, const char *prefix)
 
int ast_build_string (char **buffer, size_t *space, const char *fmt,...)
 Build a string in a buffer, designed to be called repeatedly. More...
 
int ast_build_string_va (char **buffer, size_t *space, const char *fmt, va_list ap)
 Build a string in a buffer, designed to be called repeatedly. More...
 
int ast_check_digits (const char *arg)
 Check if a string is only digits. More...
 
void ast_copy_string (char *dst, const char *src, size_t size)
 Size-limited null-terminating string copy. More...
 
static int force_inline attribute_pure ast_ends_with (const char *str, const char *suffix)
 
char * ast_escape (char *dest, const char *s, size_t size, const char *to_escape)
 Escape the 'to_escape' characters in the given string. More...
 
char * ast_escape_alloc (const char *s, const char *to_escape)
 Escape the 'to_escape' characters in the given string. More...
 
char * ast_escape_c (char *dest, const char *s, size_t size)
 Escape standard 'C' sequences in the given string. More...
 
char * ast_escape_c_alloc (const char *s)
 Escape standard 'C' sequences in the given string. More...
 
int attribute_pure ast_false (const char *val)
 Make sure something is false. Determine if a string containing a boolean value is "false". This function checks to see whether a string passed to it is an indication of an "false" value. It checks to see if the string is "no", "false", "n", "f", "off" or "0". More...
 
char * ast_generate_random_string (char *buf, size_t size)
 Create a pseudo-random string of a fixed length. More...
 
int ast_get_time_t (const char *src, time_t *dst, time_t _default, int *consumed)
 get values from config variables. More...
 
int ast_get_timeval (const char *src, struct timeval *tv, struct timeval _default, int *consumed)
 get values from config variables. More...
 
void ast_join_delim (char *s, size_t len, const char *const w[], unsigned int size, char delim)
 
char * ast_read_line_from_buffer (char **buffer)
 Read lines from a string buffer. More...
 
int ast_regex_string_to_regex_pattern (const char *regex_string, struct ast_str **regex_pattern)
 Given a string regex_string in the form of "/regex/", convert it into the form of "regex". More...
 
char * ast_skip_blanks (const char *str)
 Gets a pointer to the first non-whitespace character in a string. More...
 
char * ast_skip_nonblanks (const char *str)
 Gets a pointer to first whitespace character in a string. More...
 
int ast_str_append (struct ast_str **buf, ssize_t max_len, const char *fmt,...)
 Append to a thread local dynamic string. More...
 
char * ast_str_append_escapecommas (struct ast_str **buf, ssize_t maxlen, const char *src, size_t maxsrc)
 Append a non-NULL terminated substring to the end of a dynamic string, with escaping of commas. More...
 
char * ast_str_append_substr (struct ast_str **buf, ssize_t maxlen, const char *src, size_t maxsrc)
 Append a non-NULL terminated substring to the end of a dynamic string. More...
 
int ast_str_append_va (struct ast_str **buf, ssize_t max_len, const char *fmt, va_list ap)
 Append to a dynamic string using a va_list. More...
 
char * ast_str_buffer (const struct ast_str *buf)
 Returns the string buffer within the ast_str buf. More...
 
static force_inline int attribute_pure ast_str_case_hash (const char *str)
 Compute a hash value on a case-insensitive string. More...
 
int ast_str_container_add (struct ao2_container *str_container, const char *add)
 Adds a string to a string container allocated by ast_str_container_alloc. More...
 
struct ao2_containerast_str_container_alloc_options (enum ao2_alloc_opts opts, int buckets)
 Allocates a hash container for bare strings. More...
 
void ast_str_container_remove (struct ao2_container *str_container, const char *remove)
 Removes a string from a string container allocated by ast_str_container_alloc. More...
 
int ast_str_copy_string (struct ast_str **dst, struct ast_str *src)
 
static force_inline int attribute_pure ast_str_hash (const char *str)
 Compute a hash value on a string. More...
 
static force_inline int ast_str_hash_add (const char *str, int seed)
 Compute a hash value on a string. More...
 
static force_inline int attribute_pure ast_str_hash_restrict (unsigned int hash)
 Restrict hash value range. More...
 
void ast_str_reset (struct ast_str *buf)
 Reset the content of a dynamic string. Useful before a series of ast_str_append. More...
 
int ast_str_set (struct ast_str **buf, ssize_t max_len, const char *fmt,...)
 Set a dynamic string using variable arguments. More...
 
char * ast_str_set_escapecommas (struct ast_str **buf, ssize_t maxlen, const char *src, size_t maxsrc)
 Set a dynamic string to a non-NULL terminated substring, with escaping of commas. More...
 
char * ast_str_set_substr (struct ast_str **buf, ssize_t maxlen, const char *src, size_t maxsrc)
 Set a dynamic string to a non-NULL terminated substring. More...
 
int ast_str_set_va (struct ast_str **buf, ssize_t max_len, const char *fmt, va_list ap)
 Set a dynamic string from a va_list. More...
 
size_t ast_str_size (const struct ast_str *buf)
 Returns the current maximum length (without reallocation) of the current buffer. More...
 
size_t ast_str_strlen (const struct ast_str *buf)
 Returns the current length of the string stored within buf. More...
 
struct ast_strast_str_thread_get (struct ast_threadstorage *ts, size_t init_len)
 Retrieve a thread locally stored dynamic string. More...
 
static force_inline char *attribute_pure ast_str_to_lower (char *str)
 Convert a string to all lower-case. More...
 
static force_inline char *attribute_pure ast_str_to_upper (char *str)
 Convert a string to all upper-case. More...
 
void ast_str_trim_blanks (struct ast_str *buf)
 Trims trailing whitespace characters from an ast_str string. More...
 
char * ast_str_truncate (struct ast_str *buf, ssize_t len)
 Truncates the enclosed string to the given length. More...
 
void ast_str_update (struct ast_str *buf)
 Update the length of the buffer, after using ast_str merely as a buffer. More...
 
int ast_strings_equal (const char *str1, const char *str2)
 Compare strings for equality checking for NULL. More...
 
int ast_strings_match (const char *left, const char *op, const char *right)
 Compares 2 strings using realtime-style operators. More...
 
char * ast_strip (char *s)
 Strip leading/trailing whitespace from a string. More...
 
char * ast_strip_quoted (char *s, const char *beg_quotes, const char *end_quotes)
 Strip leading/trailing whitespace and quotes from a string. More...
 
static force_inline int attribute_pure ast_strlen_zero (const char *s)
 
char * ast_strsep (char **s, const char sep, uint32_t flags)
 Act like strsep but ignore separators inside quotes. More...
 
char * ast_tech_to_upper (char *dev_str)
 Convert the tech portion of a device string to upper case. More...
 
char * ast_to_camel_case_delim (const char *s, const char *delim)
 
char * ast_trim_blanks (char *str)
 Trims trailing whitespace characters from a string. More...
 
int attribute_pure ast_true (const char *val)
 Make sure something is true. Determine if a string containing a boolean value is "true". This function checks to see whether a string passed to it is an indication of an "true" value. It checks to see if the string is "yes", "true", "y", "t", "on" or "1". More...
 
char * ast_unescape_c (char *s)
 Convert some C escape sequences. More...
 
char * ast_unescape_semicolon (char *s)
 Strip backslash for "escaped" semicolons, the string to be stripped (will be modified). More...
 

Detailed Description

String manipulation functions.

Definition in file strings.h.

Macro Definition Documentation

◆ __AST_STR_LEN

#define __AST_STR_LEN   len

Definition at line 42 of file strings.h.

◆ __AST_STR_STR

#define __AST_STR_STR   str

Definition at line 43 of file strings.h.

◆ __AST_STR_TS

#define __AST_STR_TS   ts

Definition at line 44 of file strings.h.

◆ __AST_STR_USED

#define __AST_STR_USED   used

Definition at line 41 of file strings.h.

◆ _ast_str_helper

#define _ast_str_helper (   buf,
  max_len,
  append,
  fmt,
  ap 
)    __ast_str_helper(buf, max_len, append, fmt, ap, __FILE__, __LINE__, __PRETTY_FUNCTION__)
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 928 of file strings.h.

Referenced by ast_str_set_va().

◆ _DB1

#define _DB1 (   x)

Definition at line 751 of file strings.h.

◆ AS_OR

#define AS_OR (   a,
  b 
)    (a && ast_str_strlen(a)) ? ast_str_buffer(a) : (b)

◆ ast_join

#define ast_join (   s,
  len,
 
)    ast_join_delim(s, len, w, -1, ' ')

◆ ast_str_alloca

#define ast_str_alloca (   init_len)
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 800 of file strings.h.

Referenced by __manager_event_sessions_va(), __queues_show(), _iax2_show_peers_one(), _sip_show_peer(), _skinny_show_device(), _skinny_show_line(), action_agents(), action_createconfig(), action_listcommands(), action_login(), add_cc_call_info_to_response(), add_rpid(), add_sdp(), agent_handle_show_specific(), agent_show_requested(), alsa_request(), aocmessage_get_unit_entry(), app_exec(), ast_eivr_getvariable(), ast_json_ipaddr(), ast_sip_append_body(), ast_str_encode_mime(), ast_streamfile(), ast_strings_match(), AST_TEST_DEFINE(), ast_var_channels_table(), ast_write_stream(), build_nonce(), build_peer(), cc_extension_monitor_init(), cc_generic_agent_start_monitoring(), challenge(), chan_pjsip_write_stream(), chanavail_exec(), check_nonce(), cli_alias_passthrough(), cli_match_char_tree(), codec_handler_fn(), console_request(), construct_pidf_body(), do_magic_pickup(), extract_transferrer_headers(), func_channel_read(), func_headers_read2(), function_iaxpeer(), function_realtime_read(), function_realtime_readdestroy(), function_sippeer(), generate_fmtp_attr(), generate_status(), generate_uri(), handle_call_token(), handle_capabilities_res_message(), handle_cli_core_show_channeltype(), handle_cli_iax2_show_peer(), handle_cli_indication_show(), handle_cli_ooh323_show_config(), handle_cli_ooh323_show_peers(), handle_cli_ooh323_show_users(), handle_show_translation_path(), handle_showchan(), handle_showmanager(), handle_showmancmd(), hashkeys_read(), hashkeys_read2(), iax2_key_rotate(), iax2_request(), jingle_write(), local_request_with_stream_topology(), log_caps(), log_jack_status(), manager_json_array_with_key(), manager_json_obj_with_key(), mbl_request(), mgcp_request(), mgcp_write(), native_rtp_bridge_compatible_check(), nbs_request(), onNewCallCreated(), ooh323_request(), ooh323_set_write_format(), ooh323_write(), oss_request(), phone_request(), print_queue(), print_uptimestr(), process_sdp(), request_channel(), sendtext_exec(), serialize_showchan(), set_caps(), set_format(), show_channels_cb(), sip_new(), sip_request_call(), sip_send_mwi_to_peer(), sip_show_channel(), sip_show_sched(), sip_show_settings(), sip_write(), skinny_new(), skinny_request(), skinny_write(), socket_process_helper(), start_rtp(), test_2way_function(), test_create_joint(), transmit_info_with_aoc(), transmit_notify_with_mwi(), transmit_state_notify(), unistim_new(), unistim_request(), unistim_rtp_read(), unistim_show_info(), unistim_write(), update_scoreboard(), and wait_for_answer().

◆ ast_str_container_alloc

#define ast_str_container_alloc (   buckets)    ast_str_container_alloc_options(AO2_ALLOC_OPT_LOCK_MUTEX, buckets)

Allocates a hash container for bare strings.

Since
12
Parameters
bucketsThe number of buckets to use for the hash container
Return values
AO2container for strings
NULLif allocation failed

Definition at line 1312 of file strings.h.

Referenced by ast_bridge_snapshot_create(), ast_cel_general_config_alloc(), ast_media_get_media(), ast_media_get_variants(), event_session_alloc(), get_languages(), stasis_app_get_all(), stasis_config_alloc(), stasis_subscription_cb_noop(), test_cel_peer_strings_match(), and topic_dtor().

◆ ast_str_create

#define ast_str_create (   init_len)    _ast_str_create(init_len, __FILE__, __LINE__, __PRETTY_FUNCTION__)

Create a malloc'ed dynamic length string.

Parameters
init_lenThis is the initial length of the string buffer
Returns
This function returns a pointer to the dynamic string length. The result will be NULL in the case of a memory allocation error.
Note
The result of this function is dynamically allocated memory, and must be free()'d after it is no longer needed.
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 620 of file strings.h.

Referenced by __ast_http_post_load(), __sip_reliable_xmit(), __test_cel_generate_peer_str(), _ast_xmldoc_build_arguments(), _ast_xmldoc_build_seealso(), _macro_exec(), _sip_tcp_helper_thread(), acf_curl_exec(), acf_curl_helper(), acf_cut_exec(), action_hangup(), add_bundle_groups(), add_crypto_to_stream(), add_ice_to_stream(), add_required_respheader(), add_sdp(), allocate_subscription(), analog_publish_dnd_state(), aoc_display_decoded_debug(), ari_channels_handle_originate_with_id(), ast_ari_asterisk_get_global_var(), ast_ari_callback(), ast_ari_channels_create(), ast_ari_channels_get_channel_var(), ast_ari_get_docs(), ast_category_get_templates(), ast_cc_agent_set_interfaces_chanvar(), ast_channel_dialed_causes_channels(), ast_func_read(), ast_http_auth(), ast_http_create_response(), ast_http_error(), ast_http_send(), ast_log_backtrace(), ast_logger_get_channels(), ast_manager_build_bridge_state_string_prefix(), ast_manager_build_channel_state_string_prefix(), ast_manager_str_from_json_object(), ast_monitor_stop(), ast_parse_digest(), ast_set_cc_interfaces_chanvar(), ast_sip_cli_traverse_objects(), ast_sip_create_ami_event(), ast_sounds_get_index_for_file(), ast_statsd_log_string(), ast_str_append_event_header(), ast_str_substitute_variables_full(), ast_stream_create_resolved(), ast_tcptls_client_create(), ast_tcptls_server_root(), AST_TEST_DEFINE(), ast_xml_doc_item_alloc(), ast_xmldoc_printable(), ast_xmldoc_query(), attended_transfer_to_ami(), auth_http_callback(), build_notify(), build_path_data(), build_user_routes(), caldav_get_events_between(), caldav_request(), caldav_write_event(), calendar_join_attendees(), cdr_handler(), cel_generate_peer_str(), channel_fax_cb(), channel_get_external_vars(), channel_hangup_request_cb(), channel_hold_cb(), cli_list_subscriptions_inout(), cli_print_body(), cli_prompt(), cli_show_settings(), cli_show_subscription_common(), cli_show_subscriptions_inout(), codec_prefs_handler(), codec_prefs_to_str(), config_text_file_load(), contacts_to_str(), contactstatus_to_ami(), copy_request(), create_channel_name(), create_lookup_filter(), cut_internal(), device_state_cb(), digest_create_request_with_auth(), do_notify(), dump_queue_members(), ewscal_write_event(), exchangecal_get_events_between(), exchangecal_request(), exchangecal_write_event(), exec_exec(), exten_state_publisher_cb(), fetch_icalendar(), find_aor(), find_realtime(), function_sippeer(), generate_status(), generic_http_callback(), get_ewscal_ids_for(), get_languages(), handle_aor(), handle_dbget(), handle_getvariablefull(), handle_hint_change_message_type(), handle_manager_show_events(), handle_missing_table(), handle_options(), handle_registrations(), handle_request_refer(), handle_show_translation_table(), handle_showchan(), handle_updates(), handle_uri(), http_callback(), httpstatus_callback(), iax_parse_ies(), init_appendbuf(), init_queue(), init_req(), init_resp(), initreqprep(), is_new_rec_file(), jack_str(), join_conference_bridge(), leave_voicemail(), list_item_to_str(), load_column_config(), load_config(), load_dlopen(), load_modules(), load_values_config(), local_message_to_ami(), localnet_to_str(), log_action(), log_attended_transfer(), make_email_file(), manager_bridge_info(), manager_bridge_tech_list(), manager_bridges_list(), manager_build_parked_call_string(), manager_json_to_ast_str(), match_to_str(), meetme_cmd_helper(), meetme_show_cmd(), meetme_stasis_cb(), misdn_cfg_get_config_string(), multi_object_blob_to_ami(), mwi_allocate_body(), mwi_mailbox_delete(), mwi_mailbox_get(), my_load_config_string(), named_callgroups_to_str(), named_pickupgroups_to_str(), odbc_log(), parking_lot_cfg_create_extensions(), parse_ewscal_id(), pbx_retrieve_variable(), peerstatus_to_ami(), pgsql_log(), pgsql_reconnect(), pjsip_acf_dial_contacts_read(), pp_each_extension_helper(), presence_state_cb(), print_named_groups(), process_description_file(), prometheus_scrape_to_string(), publish_channel_alarm(), publish_channel_alarm_clear(), publish_dnd_state(), queue_set_param(), read_config(), read_raw_content_length(), realtime_ldap_status(), realtime_sqlite3_destroy(), realtime_sqlite3_helper(), realtime_sqlite3_store(), realtime_sqlite3_update(), realtime_sqlite3_update2(), replace(), require_pgsql(), resource_list_recursive_decline(), response_alloc(), rtcp_report_to_ami(), run_app_helper(), run_station(), security_event_to_ami_blob(), send_eivr_event(), send_unsolicited_mwi_notify_to_contact(), sendmail(), sendpage(), set_var_to_str(), sip_acf_channel_read(), sip_notify_alloc(), sip_route_list(), sip_rtp_read(), sip_tcptls_write(), sip_unregister_tests(), sip_websocket_callback(), sipsock_read(), spandsp_manager_fax_session(), start_resource_list(), startelm(), stasis_app_control_snoop(), static_callback(), statsmaker(), store_odbc(), system_registry_to_ami(), test_2way_function(), test_chan_function(), test_chan_integer(), test_chan_integer_accessor(), test_chan_string(), test_chan_variable(), test_expected_result(), test_files_create(), threadpool_alloc(), tls_method_to_str(), transmit_info_dtmf(), try_calling(), tryexec_exec(), update_caldav(), update_logchannels(), varset_to_ami(), vm_allocate_dh(), websocket_bad_request(), websocket_client_parse_uri(), write_cel(), xmldoc_get_formatted(), xmldoc_get_syntax_cmd(), xmldoc_get_syntax_config_object(), xmldoc_get_syntax_config_option(), xmldoc_get_syntax_manager(), xmldoc_parse_cmd_enumlist(), xmldoc_string_cleanup(), and xmldoc_string_wrap().

◆ ast_str_make_space

#define ast_str_make_space (   buf,
  new_len 
)    _ast_str_make_space(buf, new_len, __FILE__, __LINE__, __PRETTY_FUNCTION__)

◆ ast_str_tmp

#define ast_str_tmp (   init_len,
  __expr 
)

◆ ast_to_camel_case

#define ast_to_camel_case (   s)    ast_to_camel_case_delim(s, "_")

Definition at line 509 of file strings.h.

Referenced by ast_sip_sorcery_object_to_ami(), and sip_aor_to_ami().

◆ AST_YESNO

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

return Yes or No depending on the argument.

Note that this macro is used my AMI, where a literal "Yes" and "No" are expected, and translations would cause problems.

Parameters
xBoolean value
Returns
"Yes" if x is true (non-zero)
"No" if x is false (zero)

Definition at line 139 of file strings.h.

Referenced by action_confbridgelist_item(), action_confbridgelistrooms(), dtlsautogeneratecert_to_str(), dtlsverify_to_str(), get_bool_header(), manager_bridge_tech_list(), pjsip_acf_moh_passthrough_read(), require_client_cert_to_str(), statsd_init(), verify_client_to_str(), and verify_server_to_str().

◆ DS_ALLOCA

#define DS_ALLOCA   ((struct ast_threadstorage *)2)
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 589 of file strings.h.

◆ DS_MALLOC

#define DS_MALLOC   ((struct ast_threadstorage *)1)
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 588 of file strings.h.

◆ DS_STATIC

#define DS_STATIC   ((struct ast_threadstorage *)3) /* not supported yet */
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 590 of file strings.h.

◆ S_COR

#define S_COR (   a,
  b,
  c 
)    ({typeof(&((b)[0])) __x = (b); (a) && !ast_strlen_zero(__x) ? (__x) : (c);})

returns the equivalent of logic or for strings, with an additional boolean check: second one if not empty and first one is true, otherwise third one. example: S_COR(usewidget, widget, "<no widget>")

Examples:
/tmp/asterisk-shallow/main/app.c.

Definition at line 85 of file strings.h.

Referenced by __analog_handle_event(), __ast_goto_if_exists(), __ast_pbx_run(), _macro_exec(), _skinny_show_line(), acf_isexten_exec(), action_meetmelist(), add_rpid(), analog_call(), analog_ss_thread(), ast_app_dtget(), ast_bridge_setup_after_goto(), ast_channel_nativeformats_set(), ast_pbx_h_exten_run(), ast_stream_topology_to_str(), background_detect_exec(), caller_id_to_str(), chan_pjsip_cng_tone_detected(), chan_pjsip_new(), channel_snapshot_caller_create(), channel_snapshot_connected_create(), cli_endpoint_print_body(), cli_list_subscriptions_detail(), cli_show_subscriptions_detail(), collect_digits(), console_call(), copy_message(), create_local_sdp(), dahdi_handle_dtmf(), dahdi_handle_event(), dial_exec_full(), disa_exec(), do_forward(), fax_detect_framehook(), find_matching_endwhile(), findmeexec(), forward_message(), generate_status(), gosub_exec(), gosub_run(), handle_cli_confbridge_list_item(), handle_cli_misdn_show_channels(), handle_gosub(), handle_setpriority(), handle_showchan(), indicate_connected_line(), isAnsweringMachine(), isexten_function_read(), launch_monitor_thread(), leave_voicemail(), local_call(), manager_queues_status(), meetme_show_cmd(), mgcp_call(), mgcp_hangup(), mgcp_ss(), minivm_greet_exec(), minivm_notify_exec(), misdn_copy_redirecting_from_ast(), misdn_get_connected_line(), misdn_write(), my_handle_dtmf(), my_on_hook(), onModeChanged(), ooh323_rtp_read(), ospauth_exec(), osplookup_exec(), oss_call(), party_id_read(), pbx_builtin_background(), pbx_builtin_waitexten(), pbx_outgoing_attempt(), pbx_parseable_goto(), process_ast_dsp(), process_sdp(), push_callinfo(), queue_exec(), readexten_exec(), release_chan(), run_externnotify(), send_callinfo(), serialize_showchan(), set_from_header(), setsubstate(), setup_env(), sip_read(), sip_subscription_to_ami(), sms_exec(), socket_process_helper(), start_automixmonitor(), start_automonitor(), state_notify_build_xml(), try_calling(), unicast_rtp_request(), unistim_indicate(), update_connectedline(), valid_exit(), vm_allocate_dh(), vm_authenticate(), waitstream_core(), and write_metadata().

◆ S_OR

#define S_OR (   a,
  b 
)    ({typeof(&((a)[0])) __x = (a); ast_strlen_zero(__x) ? (b) : __x;})

returns the equivalent of logic or for strings: first one if not empty, otherwise second one.

Examples:
/tmp/asterisk-shallow/main/app.c.

Definition at line 79 of file strings.h.

Referenced by __ast_channel_alloc_ap(), __ast_cli_register(), __ast_codec_register_with_format(), __ast_sorcery_object_type_insert_wizard(), __ast_sorcery_object_type_remove_wizard(), __ssl_setup(), _sip_show_peer(), _skinny_show_device(), _skinny_show_line(), acf_curl_helper(), acf_if(), acf_transaction_write(), acf_vm_info(), action_getvar(), action_messagesend(), action_reload(), action_setvar(), action_status(), actual_load_config(), add_transferer_role(), alloc_security_event_json_object(), analog_ss_thread(), append_event_str_single(), append_row_to_cfg(), ari_bridges_play_helper(), ari_channels_handle_originate_with_id(), ari_channels_handle_play(), array(), ast_ari_asterisk_get_global_var(), ast_ari_callback(), ast_ari_channels_continue_in_dialplan(), ast_ari_channels_get_channel_var(), ast_bridge_channel_run_app(), ast_bridge_timelimit(), ast_call_forward(), ast_cc_call_init(), ast_cdr_serialize_variables(), ast_cel_create_event_with_time(), ast_cel_fill_record(), ast_cel_get_type_name(), ast_channel_connected_line_macro(), ast_channel_connected_line_sub(), ast_channel_nativeformats_set(), ast_channel_publish_dial_internal(), ast_channel_redirecting_macro(), ast_channel_redirecting_sub(), ast_cli_command_full(), ast_format_create_named(), ast_get_chan_applicationmap(), ast_manager_build_channel_state_string_prefix(), ast_media_index_update_for_file(), ast_msg_data_alloc2(), ast_msg_send(), ast_multicast_rtp_create_options(), ast_play_and_record_full(), ast_queue_log(), ast_sendtext_data(), ast_sip_format_contact_ami(), ast_sip_publish_client_get_from_uri(), ast_sip_publish_client_get_to_uri(), ast_sip_session_create_outgoing(), ast_sockaddr_parse(), ast_sockaddr_resolve(), ast_stream_alloc(), ast_stream_clone(), ast_stream_to_str(), ast_system_publish_registry(), authenticate(), beanstalk_put(), bridge_create_common(), bridge_parking_push(), build_callid_pvt(), build_callid_registry(), build_peer(), build_profile(), build_route(), calltoken_required(), cc_generic_agent_init(), cc_interfaces_datastore_init(), cdr_handler(), cel_bs_put(), celgenuserevent_exec(), chan_pjsip_cng_tone_detected(), channel_dial_cb(), channel_do_masquerade(), channel_enter_cb(), channel_read_rtcp(), channel_read_rtp(), channel_snapshot_caller_create(), channel_snapshot_hangup_create(), channel_snapshot_peer_create(), check_auth(), cli_fax_show_sessions(), cli_odbc_write(), common_exec(), conf_get_sound(), config_curl(), config_handler(), config_parse_variables(), create_dynamic_lot_full(), create_local_sdp(), create_queue_member(), dahdi_handle_dtmf(), dahdi_show_channel(), dial_exec_full(), dialplan_has_destination_cb(), do_forward(), dundi_exec(), enable_jack_hook(), endpoint_internal_create(), execif_exec(), exten_state_publisher_state_cb(), extension_length_comparator(), extensionstate_update(), fast_originate(), fax_detect_framehook(), feature_automixmonitor(), feature_automonitor(), feature_blind_transfer(), file_write(), find_conf(), find_user(), format_log_json(), forward_message(), generate_status(), generic_recall(), get_also_info(), get_cid_name(), get_defaults(), get_destination(), get_rdnis(), get_refer_info(), get_single_field_as_var_list(), getsubbyname(), gosub_run(), goto_exten(), handle_bridge_show_all(), handle_bridge_show_specific(), handle_call_forward(), handle_call_token(), handle_chanlist(), handle_cli_agi_show(), handle_cli_cdr_mysql_status(), handle_cli_check_permissions(), handle_cli_config_list(), handle_cli_iax2_show_channels(), handle_cli_moh_show_classes(), handle_debug(), handle_debug_category(), handle_gosub(), handle_manager_show_settings(), handle_minivm_list_templates(), handle_minivm_show_users(), handle_request_invite(), handle_request_refer(), handle_request_subscribe(), handle_response_register(), handle_show_function(), handle_show_functions(), handle_show_settings(), handle_showchan(), handle_showmanager(), handle_showmancmd(), handle_skinny_show_settings(), handle_streamfile(), handle_trace(), handle_verbose(), hashtab_compare_exten_labels(), hashtab_hash_labels(), help1(), help_workhorse(), hold_to_json(), hook_on(), iftime(), init_logger_chain(), init_pvt(), jingle_new(), leave_voicemail(), load_dlopen(), load_module(), local_alloc(), local_read(), logged_dlclose(), make_email_file(), manager_dbput(), manager_fax_sessions_entry(), manager_mixmonitor(), manager_park(), manager_queue_log_custom(), manager_queue_reload(), manager_set_defaults(), manager_show_registry(), mbl_devicestate(), misdn_cfg_get(), misdn_copy_redirecting_from_ast(), misdn_get_connected_line(), mixmonitor_exec(), msg_create_from_file(), msg_q_cb(), msg_route(), msg_send_exec(), msg_to_endpoint(), mstime(), my_distinctive_ring(), my_handle_dtmf(), my_load_module(), new_subscribe(), npval(), on_dns_update_registry(), onModeChanged(), ooh323_rtp_read(), originate_exec(), oss_call(), pbx_builtin_execiftime(), pbx_builtin_waitdigit(), pbx_builtin_waitexten(), pbx_exec(), pbx_extension_helper(), pbx_load_config(), pbx_outgoing_exec(), pgsql_reconnect(), phase_e_handler(), pjsip_acf_dial_contacts_read(), play_mailbox_owner(), play_moh_exec(), prep_email_sub_vars(), presence_state_alloc(), print_app_docs(), print_featuregroup(), process_ast_dsp(), process_config(), process_sdp(), process_sdp_o(), process_text_line(), publish_hangup_handler_message(), publish_reload_message(), publish_request_initial(), queue_exec(), realtime_common(), realtime_curl(), realtime_destroy_handler(), realtime_directory(), realtime_exec(), realtime_handler(), realtime_multi_curl(), realtime_multi_handler(), realtime_multi_odbc(), realtime_odbc(), realtime_store_handler(), realtime_update2_handler(), realtime_update_handler(), refer_blind_callback(), register_exten(), register_peer_exten(), reload_config(), report_receive_fax_status(), report_send_fax_status(), return_exec(), ring_entry(), row_to_varlist(), rt_handle_member_record(), run_externnotify(), rx_data_to_ast_msg(), select_entry(), send_msg(), send_provisional_keepalive_full(), sendpage(), sendtext_exec(), serialize_showchan(), set_channel_variables(), set_member_paused(), set_queue_member_pause(), set_transfer_variables_all(), setup_env(), setup_filestack(), shared_write(), show_channels_cb(), show_codec(), show_codecs(), sip_aor_to_ami(), sip_dialog_create_contact(), sip_msg_send(), sip_outbound_registration_regc_alloc(), sip_parse_register_line(), sip_read(), sip_show_domains(), sip_show_settings(), sip_uri_cmp(), sla_show_stations(), sla_show_trunks(), sms_exec(), sms_log(), socket_process_helper(), start_automixmonitor(), start_automonitor(), start_moh_exec(), start_monitor_exec(), stasis_app_control_continue(), stasis_app_message_handler(), state_notify_build_xml(), static_callback(), stop_mixmonitor_full(), subscription_established(), testtime_write(), tls_method_to_str(), transmit_notify_with_mwi(), transmit_register(), unbound_resolver_callback(), unicast_rtp_request(), unregister_exten(), update_logchannels(), users_apply_handler(), verify_mock_cdr_record(), vm_allocate_dh(), wait_for_answer(), xmldoc_get_syntax_config_object(), xmpp_client_reconnect(), xmpp_client_set_group_presence(), xmpp_pak_message(), and xmpp_pak_presence().

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

Error codes from __ast_str_helper() The undelying processing to manipulate dynamic string is done by __ast_str_helper(), which can return a success or a permanent failure (e.g. no memory).

Enumerator
AST_DYNSTR_BUILD_FAILED 

An error has occurred and the contents of the dynamic string are undefined

AST_DYNSTR_BUILD_RETRY 

The buffer size for the dynamic string had to be increased, and __ast_str_helper() needs to be called again after a va_end() and va_start(). This return value is legacy and will no longer be used.

Definition at line 892 of file strings.h.

892  {
893  /*! An error has occurred and the contents of the dynamic string
894  * are undefined */
896  /*! The buffer size for the dynamic string had to be increased, and
897  * __ast_str_helper() needs to be called again after
898  * a va_end() and va_start(). This return value is legacy and will
899  * no longer be used.
900  */
902 };

◆ ast_strsep_flags

Flags for ast_strsep.

Enumerator
AST_STRSEP_STRIP 

Trim, then strip quotes. You may want to trim again

AST_STRSEP_TRIM 

Trim leading and trailing whitespace

AST_STRSEP_UNESCAPE 

Unescape '\'

AST_STRSEP_ALL 

Trim, strip, unescape

Definition at line 250 of file strings.h.

250  {
251  AST_STRSEP_STRIP = 0x01, /*!< Trim, then strip quotes. You may want to trim again */
252  AST_STRSEP_TRIM = 0x02, /*!< Trim leading and trailing whitespace */
253  AST_STRSEP_UNESCAPE = 0x04, /*!< Unescape '\' */
254  AST_STRSEP_ALL = 0x07, /*!< Trim, strip, unescape */
255 };

Function Documentation

◆ __ast_str_helper()

int __ast_str_helper ( struct ast_str **  buf,
ssize_t  max_len,
int  append,
const char *  fmt,
va_list  ap,
const char *  file,
int  lineno,
const char *  function 
)

Core functionality of ast_str_(set|append)_va.

The arguments to this function are the same as those described for ast_str_set_va except for an addition argument, append. If append is non-zero, this will append to the current string instead of writing over it.

AST_DYNSTR_BUILD_RETRY is a legacy define. It should probably never again be used.

A return of AST_DYNSTR_BUILD_FAILED indicates a memory allocation error.

A return value greater than or equal to zero indicates the number of characters that have been written, not including the terminating '\0'. In the append case, this only includes the number of characters appended.

Note
This function should never need to be called directly. It should through calling one of the other functions or macros defined in this file.

core handler for dynamic strings. This is not meant to be called directly, but rather through the various wrapper macros ast_str_set(...) ast_str_append(...) ast_str_set_va(...) ast_str_append_va(...)

Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 55 of file strings.c.

References _ast_str_make_space(), AST_DYNSTR_BUILD_FAILED, ast_log_safe(), if(), and LOG_VERBOSE.

58 {
59  int res;
60  int added;
61  int need;
62  int offset = (append && (*buf)->__AST_STR_LEN) ? (*buf)->__AST_STR_USED : 0;
63  va_list aq;
64 
65  if (max_len < 0) {
66  max_len = (*buf)->__AST_STR_LEN; /* don't exceed the allocated space */
67  }
68 
69  do {
70  va_copy(aq, ap);
71  res = vsnprintf((*buf)->__AST_STR_STR + offset, (*buf)->__AST_STR_LEN - offset, fmt, aq);
72  va_end(aq);
73 
74  if (res < 0) {
75  /*
76  * vsnprintf write to string failed.
77  * I don't think this is possible with a memory buffer.
78  */
80  added = 0;
81  break;
82  }
83 
84  /*
85  * vsnprintf returns how much space we used or would need.
86  * Remember that vsnprintf does not count the nil terminator
87  * so we must add 1.
88  */
89  added = res;
90  need = offset + added + 1;
91  if (need <= (*buf)->__AST_STR_LEN
92  || (max_len && max_len <= (*buf)->__AST_STR_LEN)) {
93  /*
94  * There was enough room for the string or we are not
95  * allowed to try growing the string buffer.
96  */
97  break;
98  }
99 
100  /* Reallocate the buffer and try again. */
101  if (max_len == 0) {
102  /* unbounded, give more room for next time */
103  need += 16 + need / 4;
104  } else if (max_len < need) {
105  /* truncate as needed */
106  need = max_len;
107  }
108 
109  if (_ast_str_make_space(buf, need, file, lineno, function)) {
110  ast_log_safe(LOG_VERBOSE, "failed to extend from %d to %d\n",
111  (int) (*buf)->__AST_STR_LEN, need);
112 
114  break;
115  }
116  } while (1);
117 
118  /* Update space used, keep in mind truncation may be necessary. */
119  (*buf)->__AST_STR_USED = ((*buf)->__AST_STR_LEN <= offset + added)
120  ? (*buf)->__AST_STR_LEN - 1
121  : offset + added;
122 
123  /* Ensure that the string is terminated. */
124  (*buf)->__AST_STR_STR[(*buf)->__AST_STR_USED] = '\0';
125 
126  return res;
127 }
if(!yyg->yy_init)
Definition: ast_expr2f.c:868
void ast_log_safe(int level, const char *file, int line, const char *function, const char *fmt,...)
Used for sending a log message with protection against recursion.
Definition: logger.c:2088
int _ast_str_make_space(struct ast_str **buf, size_t new_len, const char *file, int lineno, const char *function)
Definition: strings.h:779
#define LOG_VERBOSE
Definition: logger.h:296

◆ __ast_str_helper2()

char* __ast_str_helper2 ( struct ast_str **  buf,
ssize_t  max_len,
const char *  src,
size_t  maxsrc,
int  append,
int  escapecommas 
)
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 129 of file strings.c.

References ast_str::__AST_STR_LEN, ast_str_make_space, and if().

Referenced by ast_str_append_substr(), ast_str_append_va(), ast_str_set_escapecommas(), and ast_str_set_substr().

130 {
131  int dynamic = 0;
132  char *ptr = append ? &((*buf)->__AST_STR_STR[(*buf)->__AST_STR_USED]) : (*buf)->__AST_STR_STR;
133 
134  if (maxlen < 1) {
135  if (maxlen == 0) {
136  dynamic = 1;
137  }
138  maxlen = (*buf)->__AST_STR_LEN;
139  }
140 
141  while (*src && maxsrc && maxlen && (!escapecommas || (maxlen - 1))) {
142  if (escapecommas && (*src == '\\' || *src == ',')) {
143  *ptr++ = '\\';
144  maxlen--;
145  (*buf)->__AST_STR_USED++;
146  }
147  *ptr++ = *src++;
148  maxsrc--;
149  maxlen--;
150  (*buf)->__AST_STR_USED++;
151 
152  if ((ptr >= (*buf)->__AST_STR_STR + (*buf)->__AST_STR_LEN - 3) ||
153  (dynamic && (!maxlen || (escapecommas && !(maxlen - 1))))) {
154  char *oldbase = (*buf)->__AST_STR_STR;
155  size_t old = (*buf)->__AST_STR_LEN;
156  if (ast_str_make_space(buf, (*buf)->__AST_STR_LEN * 2)) {
157  /* If the buffer can't be extended, end it. */
158  break;
159  }
160  /* What we extended the buffer by */
161  maxlen = old;
162 
163  ptr += (*buf)->__AST_STR_STR - oldbase;
164  }
165  }
166  if (__builtin_expect(!maxlen, 0)) {
167  ptr--;
168  }
169  *ptr = '\0';
170  return (*buf)->__AST_STR_STR;
171 }
#define ast_str_make_space(buf, new_len)
Definition: strings.h:780
if(!yyg->yy_init)
Definition: ast_expr2f.c:868
size_t __AST_STR_LEN
Definition: strings.h:585

◆ _ast_str_create()

struct ast_str * _ast_str_create ( size_t  init_len,
const char *  file,
int  lineno,
const char *  func 
)
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 638 of file strings.h.

References buf.

645 {

◆ _ast_str_make_space()

int _ast_str_make_space ( struct ast_str **  buf,
size_t  new_len,
const char *  file,
int  lineno,
const char *  function 
)
inline

Make space in a new string (e.g. to read in data from a file)

Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 779 of file strings.h.

Referenced by __ast_str_helper().

785 {

◆ ast_begins_with()

static int force_inline attribute_pure ast_begins_with ( const char *  str,
const char *  prefix 
)
static

◆ ast_build_string()

int ast_build_string ( char **  buffer,
size_t *  space,
const char *  fmt,
  ... 
)

Build a string in a buffer, designed to be called repeatedly.

Note
This method is not recommended. New code should use ast_str_*() instead.

This is a wrapper for snprintf, that properly handles the buffer pointer and buffer space available.

Parameters
buffercurrent position in buffer to place string into (will be updated on return)
spaceremaining space in buffer (will be updated on return)
fmtprintf-style format string
Return values
0on success
non-zeroon failure.
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1790 of file main/utils.c.

References ast_build_string_va(), and result.

Referenced by ast_fax_caps_to_str(), generate_filenames_string(), handle_speechrecognize(), pp_each_extension_helper(), and vm_allocate_dh().

1791 {
1792  va_list ap;
1793  int result;
1794 
1795  va_start(ap, fmt);
1796  result = ast_build_string_va(buffer, space, fmt, ap);
1797  va_end(ap);
1798 
1799  return result;
1800 }
int ast_build_string_va(char **buffer, size_t *space, const char *fmt, va_list ap)
Build a string in a buffer, designed to be called repeatedly.
Definition: main/utils.c:1771
static PGresult * result
Definition: cel_pgsql.c:88

◆ ast_build_string_va()

int ast_build_string_va ( char **  buffer,
size_t *  space,
const char *  fmt,
va_list  ap 
)

Build a string in a buffer, designed to be called repeatedly.

This is a wrapper for snprintf, that properly handles the buffer pointer and buffer space available.

Returns
0 on success, non-zero on failure.
Parameters
buffercurrent position in buffer to place string into (will be updated on return)
spaceremaining space in buffer (will be updated on return)
fmtprintf-style format string
apvarargs list of arguments for format
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1771 of file main/utils.c.

References result.

Referenced by ast_build_string().

1772 {
1773  int result;
1774 
1775  if (!buffer || !*buffer || !space || !*space)
1776  return -1;
1777 
1778  result = vsnprintf(*buffer, *space, fmt, ap);
1779 
1780  if (result < 0)
1781  return -1;
1782  else if (result > *space)
1783  result = *space;
1784 
1785  *buffer += result;
1786  *space -= result;
1787  return 0;
1788 }
static PGresult * result
Definition: cel_pgsql.c:88

◆ ast_check_digits()

int ast_check_digits ( const char *  arg)
inline

Check if a string is only digits.

Return values
1The string contains only digits
0The string contains non-digit characters
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1163 of file strings.h.

Referenced by create_addr().

1172 {

◆ ast_copy_string()

void ast_copy_string ( char *  dst,
const char *  src,
size_t  size 
)
inline

Size-limited null-terminating string copy.

Parameters
dstThe destination buffer.
srcThe source string
sizeThe size of the destination buffer
Returns
Nothing.

This is similar to strncpy, with two important differences:

  • the destination buffer will always be null-terminated
  • the destination buffer is not filled with zeros past the copied string length These differences make it slightly more efficient, and safer to use since it will not leave the destination buffer unterminated. There is no need to pass an artificially reduced buffer size to this function (unlike strncpy), and the buffer does not need to be initialized to zeroes prior to calling this function.
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h, and /tmp/asterisk-shallow/main/app.c.

Definition at line 401 of file strings.h.

Referenced by __allocate_taskprocessor(), __analog_handle_event(), __analog_ss_thread(), __ast_channel_internal_alloc(), __ast_context_destroy(), __ast_http_load(), __ast_http_post_load(), __ast_pbx_run(), __ast_play_and_record(), __ast_sorcery_object_field_register(), __init_manager(), __schedule_action(), __set_address_from_contact(), __sip_alloc(), _ast_var_assign(), _get_mohbyname(), _iax2_show_peers_one(), _macro_exec(), _sip_show_peers_one(), _skinny_message_set(), _transmit_displayprinotify(), _transmit_displayprinotifyvar(), acf_channel_read(), acf_curlopt_helper(), acf_cut_exec(), acf_exception_read(), acf_faxopt_read(), acf_fetch(), acf_iaxvar_read(), acf_if(), acf_isexten_exec(), acf_jabberreceive_read(), acf_odbc_read(), acf_sprintf(), acf_transaction_read(), acf_version_exec(), acf_vm_info(), acl_new(), action_confbridgestartrecord(), action_originate(), action_playback_and_continue(), actual_load_config(), add_action_to_menu_entry(), add_cc_call_info_to_response(), add_diversion(), add_email_attachment(), add_exten_to_pattern_tree(), add_line(), add_menu_entry(), add_msid_to_stream(), add_notify(), add_realm_authentication(), add_redirect(), add_sdp(), add_sip_domain(), add_to_queue(), add_vm_recipients_from_string(), adsi_load(), adsi_message(), adsi_process(), aes_helper(), agent_function_read(), alarmreceiver_exec(), alias_mailbox_mapping_create(), alloc_profile(), analog_call(), analog_hangup(), analog_ss_thread(), announce_request(), announce_thread(), answer_exec_enable(), aoc_create_ie_data(), aoc_create_ie_data_charging_rate(), aoc_parse_ie_charging_rate(), app_exec(), append_mailbox(), applicationmap_item_alloc(), apply_general_options(), apply_list_configuration(), apply_option(), apply_options_full(), ari_channels_handle_originate_with_id(), ast_aoc_s_add_rate_duration(), ast_aoc_s_add_rate_flat(), ast_aoc_s_add_rate_volume(), ast_aoc_set_association_number(), ast_aoc_set_currency_info(), ast_app_group_split_group(), ast_apply_ha(), ast_attended_transfer_message_add_app(), ast_attended_transfer_message_add_merge(), ast_blind_transfer_message_create(), ast_bridge_dtmf_hook(), ast_bridge_features_register(), ast_bucket_alloc(), ast_bucket_file_alloc(), ast_bucket_file_temporary_create(), ast_call_forward(), ast_callerid_merge(), ast_callerid_parse(), ast_callerid_split(), ast_category_rename(), ast_cc_extension_monitor_add_dialstring(), ast_cc_get_param(), ast_cdr_format_var(), ast_cdr_setuserfield(), ast_channel_context_set(), ast_channel_destructor(), ast_channel_exten_set(), ast_channel_get_cc_agent_type(), ast_channel_get_device_name(), ast_channel_internal_set_fake_ids(), ast_channel_macrocontext_set(), ast_channel_macroexten_set(), ast_context_find(), ast_context_find_or_create(), ast_devstate_prov_add(), ast_eivr_getvariable(), ast_escape(), ast_expr(), ast_frame_subclass2str(), ast_frame_type2str(), ast_func_read(), ast_get_enum(), ast_get_feature(), ast_get_hint(), ast_get_indication_zone(), ast_get_srv(), ast_get_txt(), ast_http_prefix(), ast_jb_conf_default(), ast_linear_stream(), ast_makesocket(), ast_media_cache_retrieve(), ast_media_cache_retrieve_metadata(), ast_merge_contexts_and_delete(), ast_moh_files_next(), ast_monitor_change_fname(), ast_monitor_start(), ast_msg_data_alloc(), ast_multi_channel_blob_add_channel(), ast_presence_state_prov_add(), ast_privacy_check(), ast_privacy_set(), ast_read_image(), ast_remove_hint(), ast_rtp_instance_set_channel_id(), ast_say_date_th(), ast_say_date_with_format_da(), ast_say_date_with_format_de(), ast_say_date_with_format_en(), ast_say_date_with_format_es(), ast_say_date_with_format_fr(), ast_say_date_with_format_gr(), ast_say_date_with_format_is(), ast_say_date_with_format_it(), ast_say_date_with_format_nl(), ast_say_date_with_format_pl(), ast_say_date_with_format_th(), ast_say_date_with_format_vi(), ast_say_date_with_format_zh(), ast_say_datetime_from_now_pt(), ast_say_datetime_th(), ast_say_enumeration_full_da(), ast_say_enumeration_full_de(), ast_say_enumeration_full_en(), ast_say_enumeration_full_is(), ast_say_enumeration_full_vi(), ast_say_number_full_cs(), ast_say_number_full_da(), ast_say_number_full_de(), ast_say_number_full_en(), ast_say_number_full_en_GB(), ast_say_number_full_es(), ast_say_number_full_fr(), ast_say_number_full_gr(), ast_say_number_full_hu(), ast_say_number_full_is(), ast_say_number_full_it(), ast_say_number_full_ja(), ast_say_number_full_nl(), ast_say_number_full_no(), ast_say_number_full_pt(), ast_say_number_full_ru(), ast_say_number_full_se(), ast_say_number_full_th(), ast_say_number_full_vi(), ast_say_number_full_zh(), ast_set_cc_agent_dialstring(), ast_set_cc_callback_macro(), ast_set_cc_callback_sub(), ast_setstate(), ast_sip_cli_traverse_objects(), ast_sip_create_rdata_with_contact(), ast_sip_dtmf_to_str(), ast_sip_get_default_from_user(), ast_sip_get_default_realm(), ast_sip_get_transport_name(), ast_sip_publish_client_get_user_from_uri(), ast_sip_publish_client_get_user_to_uri(), ast_sip_sched_task_get_name(), ast_sorcery_alloc(), ast_sorcery_object_fields_register(), AST_TEST_DEFINE(), ast_to_camel_case_delim(), ast_tryconnect(), ast_tzset(), ast_unregister_indication_country(), ast_var_channels_table(), ast_var_indications(), ast_var_indications_table(), ast_xmldoc_printable(), asterisk_daemon(), audiosocket_request(), auth_http_callback(), authenticate(), authenticate_verify(), available(), bearer2str(), begin_dial_channel(), blr_ebl(), bridge_agent_hold_push(), bridge_channel_internal_queue_attended_transfer(), bridge_channel_internal_queue_blind_transfer(), bridge_parking_push(), bridge_profile_alloc(), bridges_scrape_cb(), bucket_file_update_path(), bucket_file_wizard_retrieve(), bucket_wizard_retrieve(), build_conf(), build_context(), build_device(), build_gateway(), build_mapping(), build_peer(), build_reply_digest(), build_user(), cache_lookup(), cache_lookup_internal(), calendar_event_read(), calendar_join_attendees(), calendar_query_result_exec(), callerid_feed(), callerid_feed_jp(), callerid_read(), category_set_sublevels(), cb_events(), cc_build_payload(), cc_generic_agent_init(), cdata(), cdr_generic_register(), cdr_object_create_public_records(), cdr_object_format_property(), cdr_object_format_var_internal(), cdr_object_update_party_b_userfield_cb(), cdr_read_callback(), chan_pjsip_add_hold(), chan_pjsip_incoming_response(), change_password_realtime(), channel_do_masquerade(), channel_read_pjsip(), channel_read_rtp(), channel_snapshot_connected_create(), channel_snapshot_peer_create(), channels_scrape_cb(), chararray_handler_fn(), check_auth(), check_match(), check_password(), check_peer_ok(), check_sip_domain(), check_via(), cleanup_stale_contexts(), cli_channelstats_print_body(), cli_list_subscriptions_detail(), cli_show_subscriptions_detail(), common_exec(), compile_script(), complete_dpreply(), complete_indications(), conf_exec(), conf_run(), config_device(), config_function_read(), config_line(), config_parse_variables(), config_pgsql(), config_text_file_load(), configure_local_rtp(), connectedline_read(), console_dial(), construct_pidf_body(), context_table_create_autohints(), copy_error(), copy_menu_entry(), copy_message(), copy_via_headers(), create_addr(), create_addr_from_peer(), create_epa_entry(), create_followme_number(), create_parked_subscription_full(), create_queue_member(), create_vmaccount(), crement_function_read(), csv_quote(), cut_internal(), dahdi_call(), dahdi_cc_callback(), dahdi_func_read(), dahdi_handle_event(), dahdi_hangup(), dahdi_new(), dahdi_queryoption(), dahdi_show_channel(), dahdi_show_channels(), db_get_common(), debug_numtype(), device_state_cb(), device_state_notify_callbacks(), devstate_read(), dial_exec_full(), dialandactivatesub(), dialgroup_read(), dialgroup_write(), dialout(), dictate_exec(), disa_exec(), dispatch_thread_handler(), dns_srv_alloc(), do_forward(), dtls_handler(), dump_addr(), dump_byte(), dump_datetime(), dump_int(), dump_ipaddr(), dump_prov_flags(), dump_prov_ies(), dump_samprate(), dump_short(), dump_versioned_codec(), dundi_answer_entity(), dundi_answer_query(), dundi_do_lookup(), dundi_do_precache(), dundi_do_query(), dundi_lookup_internal(), dundi_lookup_local(), dundi_precache_internal(), dundi_prop_precache(), dundi_query_eid_internal(), dundi_query_thread(), ebl_callback(), endpoints_scrape_cb(), enum_query_read(), enum_result_read(), env_read(), epoch_to_exchange_time(), evt_gen_auth_method_not_allowed(), evt_gen_chal_resp_failed(), evt_gen_chal_sent(), evt_gen_failed_acl(), evt_gen_inval_acct_id(), evt_gen_inval_password(), evt_gen_inval_transport(), evt_gen_load_avg(), evt_gen_mem_limit(), evt_gen_req_bad_format(), evt_gen_req_no_support(), evt_gen_req_not_allowed(), evt_gen_session_limit(), evt_gen_successful_auth(), evt_gen_unexpected_addr(), extract_uri(), extstate_read(), featuremap_get(), filename_parse(), find_account(), find_agent_callbacks(), find_cache(), find_conf(), find_conf_realtime(), find_context(), find_context_locked(), find_engine(), find_line_by_name(), find_or_create(), find_queue_by_name_rt(), find_realtime_gw(), find_subchannel_and_lock(), find_subchannel_by_name(), find_user_realtime(), findmeexec(), format_log_json(), forward_message(), free_zone(), func_channel_read(), func_check_sipdomain(), func_get_parkingslot_channel(), func_header_read(), func_mixmonitor_read(), function_enum(), function_iaxpeer(), function_ooh323_read(), function_realtime_read(), function_realtime_readdestroy(), function_sippeer(), gen_header(), general_get(), generate_uri(), get_also_info(), get_date(), get_destination(), get_domain(), get_esc_entry(), get_ipaddress(), get_name_and_number(), get_pai(), get_rdnis(), get_rpid(), getdisplaybyname(), getflagbyname(), getkeybyname(), getstatebyname(), getsubbyname(), gettag(), global_read(), gosub_allocate_frame(), group_count_function_read(), group_function_read(), group_function_write(), group_list_function_read(), h264_getjoint(), handle_clear_alarms(), handle_cli_confbridge_show_bridge_profile(), handle_cli_confbridge_start_record(), handle_cli_iax2_show_cache(), handle_cli_iax2_show_users(), handle_cli_indication_add(), handle_cli_indication_show(), handle_cli_keys_init(), handle_cli_misdn_send_display(), handle_cli_misdn_send_facility(), handle_cli_presencestate_list(), handle_cli_test_locales(), handle_cli_ulimit(), handle_command_response(), handle_common_options(), handle_dial_page(), handle_export_primitives(), handle_incoming(), handle_request_invite(), handle_response(), handle_response_publish(), handle_select_codec(), handle_select_language(), handle_setcallerid(), hangupcause_keys_read(), hangupcause_read(), has_voicemail(), hash_read(), headers_to_vars(), iax2_ack_registry(), iax2_append_register(), iax2_exec(), iax2_getpeername(), iax2_register(), iax2_transfer(), iax_frame_subclass2str(), iax_parse_ies(), iax_process_template(), iax_show_provisioning(), iax_template_copy(), iax_template_parse(), ices_exec(), ifmodule_read(), iftime(), import_ch(), inboxcount2(), incoming_in_dialog_request(), init_acf_query(), init_logger_chain(), init_profile(), init_state(), initreqprep(), inprocess_count(), jb_helper(), jingle_action_session_terminate(), jingle_alloc(), jingle_outgoing_hook(), jingle_request(), join_conference_bridge(), join_queue(), key_dial_page(), key_favorite(), key_history(), key_main_page(), key_select_extension(), key_select_language(), leave_voicemail(), link_topic_proxy(), listfilter(), load_asterisk_conf(), load_config(), load_module(), load_moh_classes(), load_mysql_config(), load_odbc_config(), load_password(), load_pktccops_config(), load_realtime_rules(), load_values_config(), load_zonemessages(), local_alloc(), local_read(), lock_read(), log_events(), lookup_iface(), make_email_file(), make_filename(), make_fn(), manager_modulecheck(), manager_set_defaults(), math(), mbl_load_adapter(), mbl_load_device(), media_request_helper(), menu_alloc(), message_template_build(), message_template_create(), message_template_parse_filebody(), mgcp_call(), mgcp_request(), mgcp_ss(), minivm_accmess_exec(), minivm_account_func_read(), minivm_delete_exec(), minivm_greet_exec(), minivm_mwi_exec(), minivm_notify_exec(), misdn_answer(), misdn_call(), misdn_cfg_get(), misdn_cfg_get_desc(), misdn_cfg_get_name(), misdn_check_l2l1(), misdn_copy_redirecting_from_ast(), misdn_digit_end(), misdn_facility_ie_handler(), misdn_get_connected_line(), misdn_hangup(), misdn_is_msn_valid(), misdn_request(), misdn_send_text(), misdn_set_opt_exec(), mkif(), mkintf(), moh_files_alloc(), moh_parse_options(), moh_scan_files(), msg_data_func_read(), msg_func_read(), my_distinctive_ring(), my_get_callerid(), my_new_analog_ast_channel(), my_on_hook(), mysql_log(), named_acl_alloc(), named_acl_find(), nbs_alloc(), netconsole(), new_category(), notify_new_message(), notify_option_alloc(), notify_option_handler(), odbc_log(), onOutgoingCall(), ooh323_alloc(), ooh323_call(), ooh323_onReceivedSetup(), ooh323_request(), open_mailbox(), osp_check_destination(), osp_convert_inout(), osp_convert_outin(), osp_create_provider(), osp_create_transaction(), osp_lookup(), osp_report_qos(), ospfinished_exec(), osplookup_exec(), page_exec(), parking_park_call(), parse_bookmark(), parse_config(), parse_contact_header(), parse_moved_contact(), parse_name_andor_addr(), parse_naptr(), parse_ok_contact(), parse_options(), parse_register_contact(), parse_sip_options(), parse_tag(), parse_tone_zone(), parse_uri_full(), party_id_read(), party_name_read(), party_number_read(), party_subaddress_read(), pbx_builtin_saynumber(), pbx_extension_helper(), pbx_load_config(), pbx_load_users(), pbx_outgoing_attempt(), pbx_retrieve_variable(), pbx_substitute_variables_helper_full(), peek_read(), peer_status(), pgsql_reconnect(), phone_call(), pickup_get(), pjsip_acf_dial_contacts_read(), pjsip_set_logger_pcap(), pktccops_show_cmtses(), pktccops_show_gates(), play_message(), play_message_by_id(), play_record_review(), populate_defaults(), presence_read(), presence_state_notify_callbacks(), private_enum_init(), process_dahdi(), process_precache(), process_request(), process_sdp_o(), profile_set_param(), prometheus_metric_create(), proxy_from_config(), publisher_start(), queue_function_queuegetchannel(), queue_set_param(), quote(), rcv_mac_addr(), read_config(), read_header(), read_password_from_file(), realtime_common(), realtime_peer(), realtime_peer_by_addr(), realtime_switch_common(), realtime_update_peer(), realtimefield_read(), receive_ademco_event(), receive_message(), record_exec(), redirecting_read(), refer_incoming_blind_request(), register_aor_core(), register_exten(), register_peer_exten(), register_verify(), registrar_contact_delete(), registry_rerequest(), reload(), reload_config(), reload_followme(), reload_module(), reload_queue_rules(), reload_single_member(), remove_from_queue(), reply_digest(), reqprep(), reschedule_precache(), reset_user_pw(), respprep(), ring_entry(), rt_extend_conf(), rt_handle_member_record(), run_externnotify(), save_dialstatus(), sendmail(), sendpage(), set(), set_asterisk_conf_path(), set_callforwards(), set_config(), set_destination(), set_insecure_flags(), set_message_vars_from_req(), set_next_mime_type(), set_queue_member_pause(), set_socket_path(), setsubstate(), setup_bridge_role(), setup_filestack(), setup_mixmonitor(), setup_privacy_args(), shared_read(), show_entry_history(), show_phone_number(), sip_acf_channel_read(), sip_call(), sip_cc_agent_init(), sip_cli_notify(), sip_find_peer_full(), sip_get_cc_information(), sip_parse_register_line(), sip_poke_peer(), sip_prepare_socket(), sip_prune_realtime(), sip_queryoption(), sip_report_chal_sent(), sip_report_failed_challenge_response(), sip_request_call(), sip_route_add(), sip_show_inuse(), sip_sipredirect(), sip_subscribe_mwi(), sip_subscription_to_ami(), skinny_call(), skinny_device_alloc(), skinny_register(), skinny_request(), smdi_load(), smdi_msg_read(), smdi_read(), sms_exec(), sms_handleincoming(), sms_handleincoming_proto2(), sms_writefile(), socket_process_helper(), socket_read(), softhangup_exec(), sorcery_object_type_alloc(), spawn_dp_lookup(), spawn_mp3(), speech_grammar(), speech_read(), speech_score(), speech_text(), srv_query_read(), srv_result_read(), stasis_app_control_continue(), stasis_app_control_snoop(), stat_read(), stir_shaken_read(), store_config(), store_tone_zone_ring_cadence(), subscription_change_alloc(), subscription_established(), subscription_get_generator_from_rdata(), subscription_persistence_update(), substring(), temp_peer(), term_color(), timeout_read(), timezone_add(), transmit_callinfo(), transmit_callinfo_variable(), transmit_cfwdstate(), transmit_connect(), transmit_connect_with_sdp(), transmit_dialednumber(), transmit_displaynotify(), transmit_displaypromptstatus(), transmit_displaypromptstatusvar(), transmit_modify_request(), transmit_modify_with_sdp(), transmit_notify_request(), transmit_notify_request_with_callerid(), transmit_refer(), transmit_speeddialstatres(), transmit_state_notify(), transmit_versionres(), try_calling(), try_load_key(), trylock_read(), txt_callback(), unistim_request(), unistim_sp(), unistim_ss(), unlock_read(), unregister_exten(), update_call_counter(), update_our_aliases(), uridecode(), user_profile_alloc(), valid_priv_reply(), vm_allocate_dh(), vm_authenticate(), vm_change_password(), vm_change_password_shell(), vm_execmain(), vm_mailbox_snapshot_create(), vm_msg_forward(), vm_msg_move(), vm_msg_play(), vm_msg_remove(), vmauthenticate(), vmsayname_exec(), wait_for_answer(), wait_for_winner(), while(), write_history(), write_metadata(), xfer_get(), xmpp_client_alloc(), xmpp_client_create_buddy(), xmpp_pak_message(), and xmpp_pak_presence().

584 {

◆ ast_ends_with()

static int force_inline attribute_pure ast_ends_with ( const char *  str,
const char *  suffix 
)
static
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 112 of file strings.h.

References ast_assert, and NULL.

Referenced by ast_ari_callback(), ast_sip_cli_traverse_objects(), and AST_TEST_DEFINE().

113 {
114  size_t str_len;
115  size_t suffix_len;
116 
117  ast_assert(str != NULL);
118  ast_assert(suffix != NULL);
119  str_len = strlen(str);
120  suffix_len = strlen(suffix);
121 
122  if (suffix_len > str_len) {
123  return 0;
124  }
125 
126  return strcmp(str + str_len - suffix_len, suffix) == 0;
127 }
#define ast_assert(a)
Definition: utils.h:650
const char * str
Definition: app_jack.c:147
#define NULL
Definition: resample.c:96

◆ ast_escape()

char* ast_escape ( char *  dest,
const char *  s,
size_t  size,
const char *  to_escape 
)

Escape the 'to_escape' characters in the given string.

Note
The given output buffer will contain a truncated escaped version of the source string if the given buffer is not large enough.
Parameters
destthe escaped string
sthe source string to escape
sizeThe size of the destination buffer
to_escapean array of characters to escape
Returns
Pointer to the destination.
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1657 of file main/utils.c.

References ast_copy_string(), ast_strlen_zero, c, and escape_sequences.

Referenced by ast_escape_alloc().

1658 {
1659  char *p;
1660  char *c;
1661 
1662  if (!dest || !size) {
1663  return dest;
1664  }
1665  if (ast_strlen_zero(s)) {
1666  *dest = '\0';
1667  return dest;
1668  }
1669 
1670  if (ast_strlen_zero(to_escape)) {
1671  ast_copy_string(dest, s, size);
1672  return dest;
1673  }
1674 
1675  for (p = dest; *s && --size; ++s, ++p) {
1676  /* If in the list of characters to escape then escape it */
1677  if (strchr(to_escape, *s)) {
1678  if (!--size) {
1679  /* Not enough room left for the escape sequence. */
1680  break;
1681  }
1682 
1683  /*
1684  * See if the character to escape is part of the standard escape
1685  * sequences. If so we'll have to use its mapped counterpart
1686  * otherwise just use the current character.
1687  */
1688  c = strchr(escape_sequences, *s);
1689  *p++ = '\\';
1690  *p = c ? escape_sequences_map[c - escape_sequences] : *s;
1691  } else {
1692  *p = *s;
1693  }
1694  }
1695  *p = '\0';
1696 
1697  return dest;
1698 }
static struct test_val c
char escape_sequences[]
Definition: main/utils.c:1645
#define ast_strlen_zero(a)
Definition: muted.c:73
static char escape_sequences_map[]
Definition: main/utils.c:1653
void ast_copy_string(char *dst, const char *src, size_t size)
Size-limited null-terminating string copy.
Definition: strings.h:401

◆ ast_escape_alloc()

char* ast_escape_alloc ( const char *  s,
const char *  to_escape 
)

Escape the 'to_escape' characters in the given string.

Note
Caller is responsible for freeing the returned string
Parameters
sthe source string to escape
to_escapean array of characters to escape
Returns
Pointer to the escaped string or NULL.
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1755 of file main/utils.c.

References ast_escape(), and escape_alloc().

1756 {
1757  size_t size = 0;
1758  char *dest = escape_alloc(s, &size);
1759 
1760  return ast_escape(dest, s, size, to_escape);
1761 }
static char * escape_alloc(const char *s, size_t *size)
Definition: main/utils.c:1741
char * ast_escape(char *dest, const char *s, size_t size, const char *to_escape)
Escape the &#39;to_escape&#39; characters in the given string.
Definition: main/utils.c:1657

◆ ast_escape_c()

char* ast_escape_c ( char *  dest,
const char *  s,
size_t  size 
)

Escape standard 'C' sequences in the given string.

Note
The given output buffer will contain a truncated escaped version of the source string if the given buffer is not large enough.
Parameters
destthe escaped string
sthe source string to escape
sizeThe size of the destination buffer
Returns
Pointer to the escaped string.
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1700 of file main/utils.c.

References ast_strlen_zero, c, and escape_sequences.

Referenced by ast_escape_c_alloc().

1701 {
1702  /*
1703  * Note - This is an optimized version of ast_escape. When looking only
1704  * for escape_sequences a couple of checks used in the generic case can
1705  * be left out thus making it slightly more efficient.
1706  */
1707  char *p;
1708  char *c;
1709 
1710  if (!dest || !size) {
1711  return dest;
1712  }
1713  if (ast_strlen_zero(s)) {
1714  *dest = '\0';
1715  return dest;
1716  }
1717 
1718  for (p = dest; *s && --size; ++s, ++p) {
1719  /*
1720  * See if the character to escape is part of the standard escape
1721  * sequences. If so use its mapped counterpart.
1722  */
1723  c = strchr(escape_sequences, *s);
1724  if (c) {
1725  if (!--size) {
1726  /* Not enough room left for the escape sequence. */
1727  break;
1728  }
1729 
1730  *p++ = '\\';
1732  } else {
1733  *p = *s;
1734  }
1735  }
1736  *p = '\0';
1737 
1738  return dest;
1739 }
static struct test_val c
char escape_sequences[]
Definition: main/utils.c:1645
#define ast_strlen_zero(a)
Definition: muted.c:73
static char escape_sequences_map[]
Definition: main/utils.c:1653

◆ ast_escape_c_alloc()

char* ast_escape_c_alloc ( const char *  s)

Escape standard 'C' sequences in the given string.

Note
Caller is responsible for freeing the returned string
Parameters
sthe source string to escape
Returns
Pointer to the escaped string or NULL.
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1763 of file main/utils.c.

References ast_escape_c(), and escape_alloc().

Referenced by ast_manager_build_channel_state_string_prefix(), channel_new_callerid(), presence_state_to_ami(), and varset_to_ami().

1764 {
1765  size_t size = 0;
1766  char *dest = escape_alloc(s, &size);
1767 
1768  return ast_escape_c(dest, s, size);
1769 }
char * ast_escape_c(char *dest, const char *s, size_t size)
Escape standard &#39;C&#39; sequences in the given string.
Definition: main/utils.c:1700
static char * escape_alloc(const char *s, size_t *size)
Definition: main/utils.c:1741

◆ ast_false()

int attribute_pure ast_false ( const char *  val)

Make sure something is false. Determine if a string containing a boolean value is "false". This function checks to see whether a string passed to it is an indication of an "false" value. It checks to see if the string is "no", "false", "n", "f", "off" or "0".

Return values
0if val is a NULL pointer.
-1if "true".
0otherwise.
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1839 of file main/utils.c.

References ast_strlen_zero.

Referenced by acf_faxopt_write(), acf_transaction_write(), actual_load_config(), announce_user_count_all_handler(), aoc_cli_debug_enable(), bool_handler_fn(), boolflag_handler_fn(), build_peer(), build_user(), check_debug(), dahdi_set_dnd(), find_realtime(), function_ooh323_write(), handle_common_options(), handle_queue_set_member_ringinuse(), hook_write(), init_acf_query(), load_config(), manager_mute_mixmonitor(), manager_queue_member_ringinuse(), parking_feature_flag_cfg(), parse_empty_options(), parse_playtone(), prack_handler(), process_config(), process_dahdi(), process_echocancel(), read_pjproject_startup_options(), reload(), reload_config(), reload_single_member(), rt_handle_member_record(), rtp_reload(), run_agi(), set_config(), set_insecure_flags(), sip_parse_nat_option(), sla_build_trunk(), strings_to_mask(), and timers_handler().

1840 {
1841  if (ast_strlen_zero(s))
1842  return 0;
1843 
1844  /* Determine if this is a false value */
1845  if (!strcasecmp(s, "no") ||
1846  !strcasecmp(s, "false") ||
1847  !strcasecmp(s, "n") ||
1848  !strcasecmp(s, "f") ||
1849  !strcasecmp(s, "0") ||
1850  !strcasecmp(s, "off"))
1851  return -1;
1852 
1853  return 0;
1854 }
#define ast_strlen_zero(a)
Definition: muted.c:73

◆ ast_generate_random_string()

char* ast_generate_random_string ( char *  buf,
size_t  size 
)

Create a pseudo-random string of a fixed length.

This function is useful for generating a string whose randomness does not need to be across all time and space, does not need to be cryptographically secure, and needs to fit in a limited space.

This function will write a null byte at the final position in the buffer (buf[size - 1]). So if you pass in a size of 10, then this will generate a random 9-character string.

Parameters
bufBuffer to write random string into.
sizeThe size of the buffer.
Returns
A pointer to buf
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 227 of file strings.c.

References ast_random(), and buf.

Referenced by add_rlmi_resource(), create_multipart_body(), generate_content_id_hdr(), and sip_outbound_registration_regc_alloc().

228 {
229  int i;
230 
231  for (i = 0; i < size - 1; ++i) {
232  buf[i] = 'a' + (ast_random() % 26);
233  }
234  buf[i] = '\0';
235 
236  return buf;
237 }
char buf[BUFSIZE]
Definition: eagi_proxy.c:66
long int ast_random(void)
Definition: main/utils.c:1935

◆ ast_get_time_t()

int ast_get_time_t ( const char *  src,
time_t *  dst,
time_t  _default,
int *  consumed 
)

get values from config variables.

Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 2069 of file main/utils.c.

References ast_strlen_zero, and NULL.

Referenced by build_peer(), cache_lookup_internal(), dundi_show_cache(), dundi_show_hints(), handle_saydatetime(), load_password(), play_message_datetime(), process_clearcache(), realtime_peer(), and sayunixtime_exec().

2070 {
2071  long t;
2072  int scanned;
2073 
2074  if (dst == NULL)
2075  return -1;
2076 
2077  *dst = _default;
2078 
2079  if (ast_strlen_zero(src))
2080  return -1;
2081 
2082  /* only integer at the moment, but one day we could accept more formats */
2083  if (sscanf(src, "%30ld%n", &t, &scanned) == 1) {
2084  *dst = t;
2085  if (consumed)
2086  *consumed = scanned;
2087  return 0;
2088  } else
2089  return -1;
2090 }
#define NULL
Definition: resample.c:96
#define ast_strlen_zero(a)
Definition: muted.c:73

◆ ast_get_timeval()

int ast_get_timeval ( const char *  src,
struct timeval *  tv,
struct timeval  _default,
int *  consumed 
)

get values from config variables.

Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 2042 of file main/utils.c.

References ast_strlen_zero, and NULL.

Referenced by acf_strftime(), expiration_str2struct(), persistence_expires_str2struct(), and timeval_str2struct().

2043 {
2044  long double dtv = 0.0;
2045  int scanned;
2046 
2047  if (dst == NULL)
2048  return -1;
2049 
2050  *dst = _default;
2051 
2052  if (ast_strlen_zero(src))
2053  return -1;
2054 
2055  /* only integer at the moment, but one day we could accept more formats */
2056  if (sscanf(src, "%30Lf%n", &dtv, &scanned) > 0) {
2057  dst->tv_sec = dtv;
2058  dst->tv_usec = (dtv - dst->tv_sec) * 1000000.0;
2059  if (consumed)
2060  *consumed = scanned;
2061  return 0;
2062  } else
2063  return -1;
2064 }
#define NULL
Definition: resample.c:96
#define ast_strlen_zero(a)
Definition: muted.c:73

◆ ast_join_delim()

void ast_join_delim ( char *  s,
size_t  len,
const char *const  w[],
unsigned int  size,
char  delim 
)
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 2001 of file main/utils.c.

References len().

Referenced by ast_sip_auths_to_str().

2002 {
2003  int x, ofs = 0;
2004  const char *src;
2005 
2006  /* Join words into a string */
2007  if (!s)
2008  return;
2009  for (x = 0; ofs < len && x < size && w[x] ; x++) {
2010  if (x > 0)
2011  s[ofs++] = delim;
2012  for (src = w[x]; *src && ofs < len; src++)
2013  s[ofs++] = *src;
2014  }
2015  if (ofs == len)
2016  ofs--;
2017  s[ofs] = '\0';
2018 }
static int len(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t buflen)

◆ ast_read_line_from_buffer()

char* ast_read_line_from_buffer ( char **  buffer)

Read lines from a string buffer.

Since
13.18.0
Parameters
buffer[IN/OUT] A pointer to a char * string with either Unix or Windows line endings
Returns
The "next" line
Warning
The original string and *buffer will be modified.

Both '
' and '
' are treated as single delimiters but consecutive occurrances of the delimiters are NOT considered to be a single delimiter. This preserves blank lines in the input.

MacOS line endings ('') are not supported at this time.

Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 372 of file strings.c.

References NULL.

Referenced by parse_simple_message_summary().

373 {
374  char *start = *buffer;
375 
376  if (!buffer || !*buffer || *(*buffer) == '\0') {
377  return NULL;
378  }
379 
380  while (*(*buffer) && *(*buffer) != '\n' ) {
381  (*buffer)++;
382  }
383 
384  *(*buffer) = '\0';
385  if (*(*buffer - 1) == '\r') {
386  *(*buffer - 1) = '\0';
387  }
388  (*buffer)++;
389 
390  return start;
391 }
#define NULL
Definition: resample.c:96

◆ ast_regex_string_to_regex_pattern()

int ast_regex_string_to_regex_pattern ( const char *  regex_string,
struct ast_str **  regex_pattern 
)

Given a string regex_string in the form of "/regex/", convert it into the form of "regex".

This function will trim one leading / and one trailing / from a given input string ast_str regex_pattern must be preallocated before calling this function

Returns
0 on success, non-zero on failure.
1 if we only stripped a leading /
2 if we only stripped a trailing /
3 if we did not strip any / characters
Parameters
regex_stringthe string containing /regex/
regex_patternthe destination ast_str which will contain "regex" after execution
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1802 of file main/utils.c.

References ast_str_set(), and ast_str_truncate().

Referenced by action_hangup(), mwi_mailbox_delete(), and mwi_mailbox_get().

1803 {
1804  int regex_len = strlen(regex_string);
1805  int ret = 3;
1806 
1807  /* Chop off the leading / if there is one */
1808  if ((regex_len >= 1) && (regex_string[0] == '/')) {
1809  ast_str_set(regex_pattern, 0, "%s", regex_string + 1);
1810  ret -= 2;
1811  }
1812 
1813  /* Chop off the ending / if there is one */
1814  if ((regex_len > 1) && (regex_string[regex_len - 1] == '/')) {
1815  ast_str_truncate(*regex_pattern, -1);
1816  ret -= 1;
1817  }
1818 
1819  return ret;
1820 }
char * ast_str_truncate(struct ast_str *buf, ssize_t len)
Truncates the enclosed string to the given length.
Definition: strings.h:738
int ast_str_set(struct ast_str **buf, ssize_t max_len, const char *fmt,...)
Set a dynamic string using variable arguments.
Definition: strings.h:1065

◆ ast_skip_blanks()

char * ast_skip_blanks ( const char *  str)
inline

Gets a pointer to the first non-whitespace character in a string.

Parameters
strthe input string
Returns
a pointer to the first non-whitespace character
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 157 of file strings.h.

References str.

Referenced by __ast_cli_register(), __astman_get_header(), __find_call(), __get_header(), acf_faxopt_write(), add_redirect(), ast_append_acl(), ast_get_namedgroups(), ast_http_header_parse(), ast_parse_arg(), ast_parse_digest(), ast_skip_nonblanks(), build_peer(), callerid_write(), capture_buildopts_cb(), connectedline_write(), curl_header_callback(), determine_firstline_parts(), do_say(), dtmf_info_incoming_request(), extract_transferrer_headers(), find_table_cb(), func_headers_read2(), get_calleridname(), get_content_line(), get_rpid(), get_sdp_iterate(), get_sdp_line(), handle_incoming(), handle_request_invite(), handle_request_notify(), handle_response(), headers_to_vars(), http_request_headers_get(), httpd_process_request(), keypad_cfg_read(), man_do_variable_value(), mark_parsed_methods(), next_item(), parse_cdata(), parse_line(), parse_minse(), parse_session_expires(), parse_via(), pbx_load_config(), process_description_file(), process_sdp(), process_text_line(), proxy_from_config(), redirecting_write(), reload_config(), remove_excess_lws(), reply_digest(), rfc3326_use_reason_header(), rtp_reload(), sdp_fmtp_get(), set_message_vars_from_req(), sip_digest_parser(), stackpeek_read(), transmit_fake_auth_response(), transmit_invite(), update_logchannels(), use_reason_header(), user_event_hook_cb(), xml_translate(), and xmldoc_get_formatted().

166 {

◆ ast_skip_nonblanks()

char * ast_skip_nonblanks ( const char *  str)
inline

Gets a pointer to first whitespace character in a string.

Parameters
strthe input string
Returns
a pointer to the first whitespace character
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 200 of file strings.h.

References ast_skip_blanks(), and ast_trim_blanks().

Referenced by __ast_cli_register(), determine_firstline_parts(), handle_response(), httpd_process_request(), and remove_excess_lws().

213 {

◆ ast_str_append()

int ast_str_append ( struct ast_str **  buf,
ssize_t  max_len,
const char *  fmt,
  ... 
)
inline

Append to a thread local dynamic string.

Note
Care should be taken when using this function. The function can result in reallocating the ast_str. If a pointer to the ast_str is passed by value to a function that calls ast_str_append(), then the original ast_str pointer may be invalidated due to a reallocation.

The arguments, return values, and usage of this function are the same as ast_str_set(), but the new data is appended to the current value.

Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1091 of file strings.h.

Referenced by __ast_format_cap_get_names(), __manager_event_sessions_va(), __test_cel_generate_peer_str(), _ast_xmldoc_build_seealso(), acf_curl_helper(), acf_odbc_read(), action_agents(), action_createconfig(), action_userevent(), active_channels_to_str_cb(), add_allow_header(), add_blank(), add_bundle_groups(), add_codec_to_sdp(), add_content(), add_dtls_to_sdp(), add_header(), add_ice_to_sdp(), add_ice_to_stream(), add_noncodec_to_sdp(), add_required_respheader(), add_rpid(), add_sdp(), add_tcodec_to_sdp(), add_vcodec_to_sdp(), agent_handle_show_specific(), ami_outbound_registration_task(), ami_registrations_aor(), aoc_amount_str(), aoc_d_event(), aoc_display_decoded_debug(), aoc_e_event(), aoc_request_event(), aoc_s_event(), aoc_time_str(), app_exec(), append_channel_vars(), append_event_str_single(), append_json_single(), append_var_and_value_to_filter(), ari_channels_handle_originate_with_id(), ast_aoc_decoded2str(), ast_ari_callback(), ast_ari_channels_create(), ast_ari_get_docs(), ast_ari_recordings_get_stored_file(), ast_ari_response_created(), ast_category_get_templates(), ast_cdr_serialize_variables(), ast_eivr_getvariable(), ast_ha_join(), ast_ha_join_cidr(), ast_json_ipaddr(), ast_log_backtrace(), ast_logger_get_channels(), ast_manager_build_bridge_state_string_prefix(), ast_manager_build_channel_state_string_prefix(), ast_monitor_stop(), ast_odbc_print_errors(), ast_print_namedgroups(), ast_realtime_encode_chunk(), ast_rtp_lookup_mime_multiple2(), ast_sched_report(), ast_sip_cli_print_sorcery_objectset(), ast_sip_cli_traverse_objects(), ast_sip_contact_to_str(), ast_sip_create_ami_event(), ast_sip_format_contact_ami(), ast_sip_sorcery_object_to_ami(), ast_statsd_log_string(), ast_str_append_event_header(), ast_str_encode_mime(), ast_str_quote(), ast_str_substitute_variables_full(), ast_stream_codec_prefs_parse(), ast_stream_codec_prefs_to_str(), ast_stream_create_resolved(), ast_stream_to_str(), ast_stream_topology_to_str(), ast_strings_match(), ast_term_color_code(), AST_TEST_DEFINE(), ast_translate_path_to_str(), ast_xmldoc_printable(), astman_send_list_complete(), astman_send_list_complete_start_common(), astman_send_response_full(), attended_transfer_to_ami(), auth_http_callback(), authority_to_str(), build_nonce(), build_notify(), build_path_data(), build_peer(), caldav_get_events_between(), caldav_write_event(), calendar_join_attendees(), CB_ADD(), CB_ADD_LEN(), cc_unique_append(), cdata(), cdr_handler(), cel_generate_peer_str(), celt_generate_sdp_fmtp(), chanavail_exec(), channel_fax_cb(), channel_hangup_request_cb(), check_message_integrity(), cli_alias_passthrough(), cli_aor_print_body(), cli_aor_print_header(), cli_channel_print_body(), cli_channel_print_header(), cli_channelstats_print_body(), cli_channelstats_print_header(), cli_contact_print_body(), cli_contact_print_header(), cli_endpoint_print_body(), cli_endpoint_print_header(), cli_print_body(), cli_print_header(), cli_prompt(), cli_show_subscription_common(), cli_unid_print_body(), cli_unid_print_header(), codec_append_name(), collect_names_cb(), config_odbc(), construct_pidf_body(), contactstatus_to_ami(), create_lookup_filter(), curl_write_string_callback(), cut_internal(), dbl_list_expect_forward(), dbl_list_expect_reverse(), destroy_curl(), destroy_mysql(), destroy_odbc(), destroy_pgsql(), detect_disconnect(), digest_create_request_with_auth(), dump_queue_members(), encmethods_to_str(), epoch_to_exchange_time(), ewscal_write_event(), exchangecal_get_events_between(), exchangecal_write_event(), fetch_response_reader(), file2display(), finalize_content(), find_aor(), format_ami_aor_handler(), format_ami_auth_handler(), format_ami_contactlist_handler(), format_ami_endpoint_transport(), format_ami_endpoints(), format_str_append_auth(), func_headers_read2(), function_db_keys(), function_realtime_read(), function_realtime_readdestroy(), g729_generate_sdp_fmtp(), generate_status(), generate_uri(), generic_http_callback(), get_content(), h263_generate_sdp_fmtp(), h264_generate_sdp_fmtp(), handle_characters(), handle_cli_indication_show(), handle_manager_show_events(), handle_missing_table(), handle_options(), handle_request_refer(), handle_show_translation_path(), handle_show_translation_table(), handle_showchan(), hashkeys_read2(), http_callback(), httpstatus_callback(), ilbc_generate_sdp_fmtp(), initreqprep(), jack_str(), list_expect(), list_item_to_str(), listfilter(), load_column_config(), load_config(), load_values_config(), local_message_to_ami(), log_action(), log_jack_status(), logger_add_verbose_magic(), manager_json_value_str_append(), manager_sipnotify(), meetme_cmd_helper(), multi_object_blob_to_ami(), mwi_generate_body_content(), mwi_subscription_mailboxes_str(), mwi_to_ami(), mysql_log(), odbc_log(), opus_generate_sdp_fmtp(), pbx_builtin_serialize_variables(), peer_mailboxes_to_str(), peerstatus_to_ami(), pgsql_log(), pgsql_reconnect(), pjsip_acf_dial_contacts_read(), pjsip_aor_function_read(), pp_each_extension_helper(), print_queue(), print_uptimestr(), process_cors_request(), process_description_file(), process_output(), process_text_line(), prometheus_metric_full_to_string(), prometheus_metric_to_string(), realtime_curl(), realtime_directory(), realtime_ldap_status(), realtime_multi_curl(), realtime_multi_mysql(), realtime_multi_odbc(), realtime_multi_pgsql(), realtime_mysql(), realtime_odbc(), realtime_pgsql(), realtime_sqlite3_destroy(), realtime_sqlite3_helper(), realtime_sqlite3_store(), realtime_sqlite3_update(), realtime_sqlite3_update2(), realtime_update2_handler(), realtimefield_read(), require_curl(), rtcp_report_to_ami(), run_station(), send_eivr_event(), send_identify_ami_event(), set_rec_filename(), set_var_to_str(), silk_generate_sdp_fmtp(), sip_aor_to_ami(), sip_cli_notify(), sip_cli_print_global(), sip_cli_print_system(), sip_endpoint_to_ami(), sip_endpoints_aors_ami(), sip_route_list(), sip_rtp_read(), sip_sorcery_object_ami_set_type_name(), sip_subscription_to_ami(), sip_tcptls_read(), sip_unregister_tests(), siren14_generate_sdp_fmtp(), siren7_generate_sdp_fmtp(), sorcery_function_read(), spandsp_manager_fax_session(), stasis_app_control_snoop(), state_notify_build_xml(), store_curl(), store_mysql(), store_odbc(), store_pgsql(), str_appender(), strreplace(), substitute_escapes(), test_core_format_generate_sdp_fmtp(), tls_method_to_str(), to_ami(), transmit_info_with_aoc(), transmit_notify_with_mwi(), update2_curl(), update2_mysql(), update2_pgsql(), update2_prepare(), update_curl(), update_mysql(), update_odbc(), update_pgsql(), user_authority_to_str(), vm_allocate_dh(), vp8_generate_sdp_fmtp(), websocket_client_parse_uri(), write_cel(), xml_copy_escape(), xml_encode_str(), xml_translate(), xmldoc_get_syntax_cmd(), xmldoc_get_syntax_config_object(), xmldoc_get_syntax_manager(), xmldoc_parse_argument(), xmldoc_parse_cmd_enumlist(), xmldoc_parse_enumlist(), xmldoc_parse_example(), xmldoc_parse_info(), xmldoc_parse_option(), xmldoc_parse_optionlist(), xmldoc_parse_para(), xmldoc_parse_parameter(), xmldoc_parse_specialtags(), xmldoc_parse_variable(), xmldoc_parse_variablelist(), xmldoc_string_cleanup(), and xmldoc_string_wrap().

1137 { \

◆ ast_str_append_escapecommas()

char * ast_str_append_escapecommas ( struct ast_str **  buf,
ssize_t  maxlen,
const char *  src,
size_t  maxsrc 
)
inline

Append a non-NULL terminated substring to the end of a dynamic string, with escaping of commas.

Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1028 of file strings.h.

References ast_str_set_va().

Referenced by acf_odbc_read(), and function_db_keys().

1055 {

◆ ast_str_append_substr()

char * ast_str_append_substr ( struct ast_str **  buf,
ssize_t  maxlen,
const char *  src,
size_t  maxsrc 
)
inline

Append a non-NULL terminated substring to the end of a dynamic string.

Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1014 of file strings.h.

References __ast_str_helper2().

Referenced by ast_str_substitute_variables_full(), file_read(), listfilter(), logger_add_verbose_magic(), write_to_ast_str(), and WriteMemoryCallback().

1018 {

◆ ast_str_append_va()

int ast_str_append_va ( struct ast_str **  buf,
ssize_t  max_len,
const char *  fmt,
va_list  ap 
)
inline

Append to a dynamic string using a va_list.

Same as ast_str_set_va(), but append to the current content.

Note
Care should be taken when using this function. The function can result in reallocating the ast_str. If a pointer to the ast_str is passed by value to a function that calls ast_str_append_va(), then the original ast_str pointer may be invalidated due to a reallocation.
Parameters
buf,max_len,fmt,ap
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1000 of file strings.h.

References __ast_str_helper2().

Referenced by __manager_event_sessions_va(), and ast_str_set().

1004 {

◆ ast_str_buffer()

char * ast_str_buffer ( const struct ast_str buf)
inline

Returns the string buffer within the ast_str buf.

Parameters
bufA pointer to the ast_str structure.
Return values
Apointer to the enclosed string.
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h, and /tmp/asterisk-shallow/main/app.c.

Definition at line 714 of file strings.h.

References buf, len(), and typeof().

Referenced by __ast_format_cap_get_names(), __manager_event_sessions_va(), __queues_show(), __sip_pretend_ack(), __sip_reliable_xmit(), __sip_semi_ack(), __sip_xmit(), _ast_xmldoc_build_arguments(), _ast_xmldoc_build_seealso(), _iax2_show_peers_one(), _macro_exec(), _sip_show_peer(), _sip_tcp_helper_thread(), _xmldoc_build_field(), acf_curl_exec(), acf_curl_helper(), acf_cut_exec(), acf_odbc_read(), acf_odbc_write(), action_agents(), action_confbridgelist_item(), action_coreshowchannels(), action_createconfig(), action_getconfig(), action_getconfigjson(), action_hangup(), action_userevent(), add_bundle_groups(), add_cc_call_info_to_response(), add_crypto_to_stream(), add_hintdevice(), add_ice_to_stream(), add_required_respheader(), add_route(), add_rpid(), add_sdp(), agent_handle_show_specific(), agent_login_to_ami(), agent_logoff_to_ami(), agent_show_requested(), agi_channel_to_ami(), ALLOC_COMMENT(), ami_outbound_registration_task(), ami_registrations_aor(), ami_subscription_detail(), analog_publish_dnd_state(), ao2_container_unregister(), aoc_display_decoded_debug(), aoc_to_ami(), aocmessage_get_unit_entry(), ari_channel_thread(), ari_channels_handle_originate_with_id(), ast_agi_send(), ast_ari_callback(), ast_ari_channels_get_channel_var(), ast_ari_get_docs(), ast_cc_agent_set_interfaces_chanvar(), ast_eivr_getvariable(), ast_func_read(), ast_func_read2(), ast_http_create_response(), ast_http_send(), ast_json_ipaddr(), ast_json_load_str(), ast_log_backtrace(), ast_logger_get_channels(), ast_monitor_stop(), ast_odbc_ast_str_SQLGetData(), ast_parse_digest(), ast_print_namedgroups(), ast_realtime_encode_chunk(), ast_rtp_lookup_mime_multiple2(), ast_set_cc_interfaces_chanvar(), ast_sip_append_body(), ast_sip_format_contact_ami(), ast_sockaddr_stringify_fmt(), ast_sounds_get_index_for_file(), ast_statsd_log_full_va(), ast_statsd_log_string(), ast_statsd_log_string_va(), ast_str_encode_mime(), ast_str_get_encoded_str(), ast_str_quote(), ast_str_retrieve_variable(), ast_str_substitute_variables_full(), ast_str_substring(), ast_stream_codec_prefs_to_str(), ast_stream_create_resolved(), ast_stream_to_str(), ast_stream_topology_to_str(), ast_strings_match(), AST_TEST_DEFINE(), ast_translate_path_to_str(), ast_var_channels_table(), AST_VECTOR(), ast_xmldoc_printable(), ast_xmldoc_query(), astman_append(), astman_flush(), astman_send_error_va(), attended_transfer_to_ami(), authority_to_str(), base64_helper(), blacklist_read2(), blind_transfer_to_ami(), bridge_merge_cb(), bridge_snapshot_update(), build_nonce(), build_notify_body(), build_peer(), build_user_routes(), caldav_request(), calendar_join_attendees(), call_pickup_to_ami(), cc_extension_monitor_init(), cc_unique_append(), cdata(), cdr_handler(), cel_bridge_enter_cb(), cel_bridge_leave_cb(), challenge(), chanavail_exec(), change_hold_state(), channel_chanspy_start_cb(), channel_chanspy_stop_cb(), channel_dial_cb(), channel_dtmf_begin_cb(), channel_dtmf_end_cb(), channel_enter_cb(), channel_fax_cb(), channel_get_external_vars(), channel_hangup_handler_cb(), channel_hangup_request_cb(), channel_hold_cb(), channel_leave_cb(), channel_moh_start_cb(), channel_snapshot_update(), channel_unhold_cb(), check_auth(), check_message_integrity(), check_nonce(), cli_alias_passthrough(), cli_list_subscriptions_detail(), cli_match_char_tree(), cli_odbc_read(), cli_odbc_write(), cli_prompt(), cli_show_module_options(), cli_show_module_type(), cli_show_module_types(), cli_show_settings(), cli_show_subscription_common(), cli_show_subscriptions_detail(), codec_prefs_handler(), commit_exec(), conf_start_record(), confbridge_publish_manager_event(), config_curl(), config_mysql(), config_odbc(), config_pgsql(), config_text_file_load(), configure_connection_charset(), construct_pidf_body(), contacts_to_str(), contactstatus_to_ami(), create_channel_name(), custom_log(), cut_internal(), dahdi_cc_callback(), dahdi_new(), dahdichannel_to_ami(), dbl_list_expect_forward(), dbl_list_expect_reverse(), destroy_curl(), destroy_mysql(), destroy_odbc(), destroy_pgsql(), detect_disconnect(), determine_firstline_parts(), dialog_info_to_string(), digest_create_request_with_auth(), do_magic_pickup(), do_notify(), dump_queue_members(), dump_str_and_free(), dumpchan_exec(), eivr_comm(), endelm(), exchangecal_get_events_between(), exchangecal_request(), exchangecal_write_event(), exec_exec(), exten_state_publisher_cb(), extract_transferrer_headers(), fetch_icalendar(), file2display(), finalize_content(), find_aor(), find_realtime(), find_table(), format_ami_aor_handler(), format_ami_aorlist_handler(), format_ami_auth_handler(), format_ami_authlist_handler(), format_ami_contactlist_handler(), format_ami_endpoint(), format_ami_endpoint_transport(), format_ami_endpoints(), format_ami_resource_lists(), format_log_message_ap(), func_headers_read2(), function_fieldnum_helper(), function_fieldqty_helper(), function_iaxpeer(), function_realtime_read(), function_realtime_readdestroy(), function_sippeer(), generate_fmtp_attr(), generate_notify_body(), generate_status(), generate_uri(), get_content(), get_key(), get_languages(), handle_aor(), handle_call_token(), handle_cli_cdr_mysql_status(), handle_cli_iax2_show_peer(), handle_cli_indication_show(), handle_dbget(), handle_end_element(), handle_getvariablefull(), handle_manager_show_events(), handle_missing_table(), handle_options(), handle_registrations(), handle_request_do(), handle_request_refer(), handle_show_translation_path(), handle_show_translation_table(), handle_showchan(), hangupcause_keys_read(), hashkeys_read2(), http_callback(), http_post_callback(), iax2_getformatname_multiple(), iax_parse_ies(), initreqprep(), is_new_rec_file(), is_valid_uuid(), jack_str(), leave_voicemail(), list_expect(), list_item_to_str(), listfilter(), load_column_config(), load_dlopen(), load_values_config(), local_message_to_ami(), localnet_to_str(), log_action(), log_attended_transfer(), log_jack_status(), logger_add_verbose_magic(), lws2sws(), make_email_file(), manager_bridge_info(), manager_bridge_tech_list(), manager_build_parked_call_string(), manager_generic_msg_cb(), manager_json_array_with_key(), manager_json_obj_with_key(), manager_log(), manager_parking_status_all_lots(), manager_parking_status_single_lot(), match_to_str(), meetme_cmd_helper(), meetme_show_cmd(), meetme_stasis_cb(), module_load_error(), multi_object_blob_to_ami(), multi_user_event_to_ami(), mwi_app_event_cb(), mwi_mailbox_delete(), mwi_mailbox_get(), mwi_to_string(), my_connect_db(), my_load_module(), mysql_log(), named_callgroups_to_str(), named_pickupgroups_to_str(), odbc_log(), parked_call_message_response(), parking_lot_cfg_create_extensions(), parse_hint_device(), parse_hint_presence(), parse_register_contact(), parse_request(), pbx_find_extension(), pbx_retrieve_variable(), peerstatus_to_ami(), pgsql_log(), pgsql_reconnect(), pidf_to_string(), pjsip_acf_dial_contacts_read(), pp_each_extension_helper(), print_event_instance(), print_queue(), print_uptimestr(), process_description_file(), process_text_line(), prometheus_show_metrics(), publish_basic_channel_event(), publish_channel_alarm(), publish_channel_alarm_clear(), publish_dnd_state(), queue_channel_to_ami(), queue_member_to_ami(), queue_multi_channel_to_ami(), read_raw_content_length(), realtime_curl(), realtime_directory(), realtime_ldap_base_ap(), realtime_ldap_status(), realtime_multi_curl(), realtime_multi_mysql(), realtime_multi_odbc(), realtime_multi_pgsql(), realtime_mysql(), realtime_odbc(), realtime_pgsql(), realtime_sqlite3_destroy(), realtime_sqlite3_helper(), realtime_sqlite3_store(), realtime_sqlite3_update(), realtime_sqlite3_update2(), realtime_update2_handler(), realtimefield_read(), register_aor_core(), replace(), require_curl(), require_pgsql(), resource_list_recursive_decline(), retrans_pkt(), rm_file(), rollback_exec(), rtcp_report_to_ami(), run_app_helper(), run_station(), say_periodic_announcement(), search_directory_sub(), security_event_stasis_cb(), security_event_to_ami_blob(), send_bridge_info_item_cb(), send_bridge_list_item_cb(), send_eivr_event(), send_ews_request_and_parse(), send_identify_ami_event(), send_request(), send_response(), send_unsolicited_mwi_notify_to_contact(), sendmail(), sendpage(), sendtext_exec(), session_timeout_to_ami(), set2(), set_format(), shift_pop(), show_channels_cb(), sip_acf_channel_read(), sip_hangup(), sip_report_security_event(), sip_rtp_read(), sip_send_mwi_to_peer(), sip_show_channel(), sip_show_sched(), sip_tcptls_read(), sip_unregister_tests(), snoop_stasis_thread(), spandsp_manager_fax_session(), sqlite3_escape_column_op(), sqlite3_escape_string_helper(), start_resource_list(), startelm(), statsmaker(), store_curl(), store_mysql(), store_odbc(), store_pgsql(), str_appender(), string_tolower2(), string_toupper2(), strreplace(), substitute_escapes(), syslog_log(), system_exec_helper(), system_registry_to_ami(), talking_start_to_ami(), talking_stop_to_ami(), test_2way_function(), test_chan_function(), test_chan_integer(), test_chan_integer_accessor(), test_chan_string(), test_chan_variable(), test_expected_result(), test_files_create(), test_files_get_one(), threadpool_alloc(), tls_method_to_str(), transmit_fake_auth_response(), transmit_info_dtmf(), transmit_info_with_aoc(), transmit_invite(), transmit_notify_with_mwi(), transmit_state_notify(), try_calling(), tryexec_exec(), unshift_push(), update2_curl(), update2_ldap(), update2_mysql(), update2_odbc(), update2_pgsql(), update2_prepare(), update_caldav(), update_curl(), update_ewscal(), update_exchangecal(), update_logchannels(), update_mysql(), update_odbc(), update_peer(), update_pgsql(), update_scoreboard(), user_authority_to_str(), varset_to_ami(), vm_allocate_dh(), websocket_client_handshake(), write_cel(), xmldoc_get_formatted(), xmldoc_get_syntax_cmd(), xmldoc_get_syntax_config_object(), xmldoc_get_syntax_config_option(), xmldoc_get_syntax_manager(), xmldoc_parse_cmd_enumlist(), xmldoc_parse_example(), xmldoc_parse_para(), xmldoc_parse_variable(), xmldoc_string_wrap(), and xpidf_to_string().

725 {

◆ ast_str_case_hash()

static force_inline int attribute_pure ast_str_case_hash ( const char *  str)
static

Compute a hash value on a case-insensitive string.

Uses the same hash algorithm as ast_str_hash, but converts all characters to lowercase prior to computing a hash. This allows for easy case-insensitive lookups in a hash table.

Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1250 of file strings.h.

References ast_str_hash_restrict().

Referenced by ast_channel_hash_cb(), ast_tone_zone_hash(), ast_xml_doc_item_hash(), autohint_hash_cb(), bridge_hash_cb(), cache_hash(), calendar_hash_fn(), cdr_all_hash_fn(), cdr_master_hash_fn(), channel_role_hash_cb(), channel_snapshot_hash_cb(), channel_snapshot_uniqueid_hash_cb(), conference_bridge_hash_cb(), config_opt_hash(), dialog_hash_cb(), featuregroup_hash(), format_hash_cb(), hint_hash(), hintdevice_hash_cb(), media_info_hash(), media_variant_hash(), menu_hash_cb(), moh_class_hash(), notify_option_hash(), peer_hash_cb(), pending_members_hash(), protocol_hash_fn(), pvt_hash_cb(), queue_hash_cb(), skel_level_hash(), topic_pool_entry_hash(), tps_hash_cb(), and user_hash_cb().

1251 {
1252  unsigned int hash = 5381;
1253 
1254  while (*str) {
1255  hash = hash * 33 ^ (unsigned char) tolower(*str++);
1256  }
1257 
1258  return ast_str_hash_restrict(hash);
1259 }
const char * str
Definition: app_jack.c:147
static force_inline int attribute_pure ast_str_hash_restrict(unsigned int hash)
Restrict hash value range.
Definition: strings.h:1193

◆ ast_str_container_add()

int ast_str_container_add ( struct ao2_container str_container,
const char *  add 
)

Adds a string to a string container allocated by ast_str_container_alloc.

Since
12
Parameters
str_containerThe container to which to add a string
addThe string to add to the container
Return values
zeroon success
non-zeroif the operation failed
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 206 of file strings.c.

References AO2_ALLOC_OPT_LOCK_NOLOCK, ao2_alloc_options, ao2_link, ao2_ref, and NULL.

Referenced by add_media_cb(), add_variant_cb(), append_name(), apps_handler(), ast_bridge_snapshot_create(), ast_dns_get_nameservers(), ast_endpoint_add_channel(), AST_TEST_DEFINE(), complete_ari_app(), custom_nameserver_handler(), declined_handler(), event_session_alloc(), get_languages(), ip_identify_match_handler(), load_module(), test_cel_peer_strings_match(), and topic_add_subscription().

207 {
208  char *ao2_add;
209 
210  /* The ao2_add object is immutable so it doesn't need a lock of its own. */
211  ao2_add = ao2_alloc_options(strlen(add) + 1, NULL, AO2_ALLOC_OPT_LOCK_NOLOCK);
212  if (!ao2_add) {
213  return -1;
214  }
215  strcpy(ao2_add, add);/* Safe */
216 
217  ao2_link(str_container, ao2_add);
218  ao2_ref(ao2_add, -1);
219  return 0;
220 }
#define ao2_alloc_options(data_size, destructor_fn, options)
Definition: astobj2.h:406
#define NULL
Definition: resample.c:96
#define ao2_ref(o, delta)
Definition: astobj2.h:464
#define ao2_link(container, obj)
Definition: astobj2.h:1549

◆ ast_str_container_alloc_options()

struct ao2_container* ast_str_container_alloc_options ( enum ao2_alloc_opts  opts,
int  buckets 
)

Allocates a hash container for bare strings.

Since
12
Parameters
optsOptions to be provided to the container
bucketsThe number of buckets to use for the hash container
Return values
AO2container for strings
NULLif allocation failed
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 201 of file strings.c.

References ao2_container_alloc_hash, str_cmp(), str_hash(), and str_sort().

Referenced by ast_dns_get_nameservers(), custom_nameserver_handler(), endpoint_internal_create(), and ip_identify_match_handler().

202 {
203  return ao2_container_alloc_hash(opts, 0, buckets, str_hash, str_sort, str_cmp);
204 }
static int str_cmp(void *lhs, void *rhs, int flags)
Definition: strings.c:187
static int str_sort(const void *lhs, const void *rhs, int flags)
Definition: strings.c:178
#define ao2_container_alloc_hash(ao2_options, container_options, n_buckets, hash_fn, sort_fn, cmp_fn)
Definition: astobj2.h:1310
static int str_hash(const void *obj, const int flags)
Definition: strings.c:173

◆ ast_str_container_remove()

void ast_str_container_remove ( struct ao2_container str_container,
const char *  remove 
)

Removes a string from a string container allocated by ast_str_container_alloc.

Since
12
Parameters
str_containerThe container from which to remove a string
removeThe string to remove from the container
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 222 of file strings.c.

References ao2_find, OBJ_NODATA, OBJ_SEARCH_KEY, and OBJ_UNLINK.

Referenced by endpoint_cache_clear(), test_cel_peer_strings_match(), and topic_remove_subscription().

223 {
224  ao2_find(str_container, remove, OBJ_SEARCH_KEY | OBJ_NODATA | OBJ_UNLINK);
225 }
The arg parameter is a search key, but is not an object.
Definition: astobj2.h:1105
#define ao2_find(container, arg, flags)
Definition: astobj2.h:1756

◆ ast_str_copy_string()

int ast_str_copy_string ( struct ast_str **  dst,
struct ast_str src 
)
inline
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 798 of file strings.h.

Referenced by copy_request().

801 { \

◆ ast_str_hash()

static force_inline int attribute_pure ast_str_hash ( const char *  str)
static

Compute a hash value on a string.

This famous hash algorithm was written by Dan Bernstein and is commonly used.

http://www.cse.yorku.ca/~oz/hash.html

Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1206 of file strings.h.

References ast_str_hash_restrict().

Referenced by alias_hash_cb(), app_hash(), ast_event_append_ie_str(), ast_get_namedgroups(), ast_sorcery_object_id_hash(), bridges_channel_hash_fn(), bridges_hash(), channel_hash(), control_hash(), datastore_hash(), db_hash_fn(), device_state_subscriptions_hash(), dsn_hash(), entry_hash_fn(), esc_hash_fn(), event_hash_fn(), event_session_hash(), exten_state_publisher_hash(), formatter_hash(), group_hash_fn(), hook_hash(), internal_state_hash(), jingle_add_ice_udp_candidates_to_transport(), jingle_endpoint_hash(), jingle_session_hash(), lang_hash_fn(), message_subscription_hash_cb(), monitored_transport_hash_fn(), mwi_sub_hash(), outbound_publish_state_hash(), parking_lot_cfg_hash_fn(), peer_hash_cb(), persistent_endpoint_hash(), playback_hash(), pvt_cause_hash_fn(), recording_hash(), registration_state_hash(), registry_hash_cb(), sdp_handler_list_hash(), sorcery_memory_cache_hash(), sorcery_memory_cached_object_hash(), sorcery_memory_hash(), stasis_sub_hash(), str_hash(), str_hash_fn(), suspects_hash(), test_vm_api_create_mock_snapshot(), transport_state_hash(), uid_hold_hash_fn(), user_hash_cb(), variable_count_hash_fn(), wait_bridge_hash_fn(), and xmpp_buddy_hash().

1207 {
1208  unsigned int hash = 5381;
1209 
1210  while (*str) {
1211  hash = hash * 33 ^ (unsigned char) *str++;
1212  }
1213 
1214  return ast_str_hash_restrict(hash);
1215 }
const char * str
Definition: app_jack.c:147
static force_inline int attribute_pure ast_str_hash_restrict(unsigned int hash)
Restrict hash value range.
Definition: strings.h:1193

◆ ast_str_hash_add()

static force_inline int ast_str_hash_add ( const char *  str,
int  seed 
)
static

Compute a hash value on a string.

Parameters
[in]strThe string to add to the hash
[in]seedThe hash value to start with

This version of the function is for when you need to compute a string hash of more than one string.

This famous hash algorithm was written by Dan Bernstein and is commonly used.

See also
http://www.cse.yorku.ca/~oz/hash.html
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1232 of file strings.h.

References ast_str_hash_restrict().

1233 {
1234  unsigned int hash = (unsigned int) seed;
1235 
1236  while (*str) {
1237  hash = hash * 33 ^ (unsigned char) *str++;
1238  }
1239 
1240  return ast_str_hash_restrict(hash);
1241 }
const char * str
Definition: app_jack.c:147
static force_inline int attribute_pure ast_str_hash_restrict(unsigned int hash)
Restrict hash value range.
Definition: strings.h:1193

◆ ast_str_hash_restrict()

static force_inline int attribute_pure ast_str_hash_restrict ( unsigned int  hash)
static

Restrict hash value range.

Hash values used all over asterisk are expected to be non-negative (signed) int values. This function restricts an unsigned int hash value to the positive half of the (signed) int values.

Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1193 of file strings.h.

Referenced by ast_sip_get_distributor_serializer(), ast_str_case_hash(), ast_str_hash(), ast_str_hash_add(), and dialog_associations_hash().

1194 {
1195  return (int) (hash & (unsigned int) INT_MAX);
1196 }

◆ ast_str_reset()

void ast_str_reset ( struct ast_str buf)
inline

◆ ast_str_set()

int ast_str_set ( struct ast_str **  buf,
ssize_t  max_len,
const char *  fmt,
  ... 
)
inline

Set a dynamic string using variable arguments.

Note
Care should be taken when using this function. The function can result in reallocating the ast_str. If a pointer to the ast_str is passed by value to a function that calls ast_str_set(), then the original ast_str pointer may be invalidated due to a reallocation.
Parameters
bufThis is the address of a pointer to a struct ast_str which should have been retrieved using ast_str_thread_get. It will need to be updated in the case that the buffer has to be reallocated to accomodate a longer string than what it currently has space for.
max_lenThis is the maximum length to allow the string buffer to grow to. If this is set to 0, then there is no maximum length. If set to -1, we are bound to the current maximum length.
fmtThis is the format string (printf style)
Returns
The return value of this function is the same as that of the printf family of functions.

All the rest is the same as ast_str_set_va()

Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h, and /tmp/asterisk-shallow/main/app.c.

Definition at line 1065 of file strings.h.

References ast_str_append_va().

Referenced by __ast_format_cap_get_names(), __ast_http_post_load(), __manager_event_sessions_va(), __queues_show(), __sip_reliable_xmit(), acf_curl_exec(), acf_curl_helper(), acf_curlopt_helper(), action_agents(), action_createconfig(), add_bundle_groups(), add_cc_call_info_to_response(), add_crypto_to_stream(), add_hintdevice(), add_ice_to_stream(), add_rpid(), agent_handle_show_specific(), agent_show_requested(), analog_publish_dnd_state(), aocmessage_get_unit_entry(), ari_channels_handle_originate_with_id(), ast_ari_callback(), ast_extension_state2(), ast_http_auth(), ast_http_create_response(), ast_http_error(), ast_http_send(), ast_json_ipaddr(), ast_manager_build_bridge_state_string_prefix(), ast_manager_build_channel_state_string_prefix(), ast_monitor_stop(), ast_parse_digest(), ast_realtime_encode_chunk(), ast_regex_string_to_regex_pattern(), ast_sched_report(), ast_sip_append_body(), ast_sip_create_ami_event(), ast_sockaddr_stringify_fmt(), ast_sounds_get_index_for_file(), ast_str_encode_mime(), ast_str_expr(), ast_str_get_encoded_str(), ast_str_get_hint(), ast_str_quote(), ast_str_retrieve_variable(), ast_stream_create_resolved(), ast_strings_match(), AST_TEST_DEFINE(), ast_xmldoc_regenerate_doc_item(), astman_send_list_complete_start_common(), astman_send_response_full(), bs_to_exchange_bs(), build_notify(), build_path_data(), build_peer(), caldav_write_event(), cc_extension_monitor_init(), cc_generic_agent_start_monitoring(), cdata(), cdr_handler(), channel_hold_cb(), check_auth(), cli_list_subscriptions_detail(), cli_match_char_tree(), cli_odbc_read(), cli_prompt(), cli_show_subscriptions_detail(), config_curl(), config_mysql(), config_odbc(), config_pgsql(), create_channel_name(), destroy_curl(), destroy_mysql(), destroy_odbc(), destroy_pgsql(), device_state_notify_callbacks(), do_magic_pickup(), do_notify(), encmethods_to_str(), ewscal_write_event(), exchangecal_write_event(), extension_presence_state_helper(), extract_transferrer_headers(), file_count_line(), file_format(), find_aor(), find_realtime(), find_table(), func_headers_read2(), function_fieldnum_helper(), function_fieldqty_helper(), generate_exchange_uuid(), generate_uri(), get_ewscal_ids_for(), get_languages(), handle_call_token(), handle_cli_indication_show(), handle_manager_show_events(), handle_missing_table(), handle_show_translation_path(), handle_show_translation_table(), handle_uri(), hashkeys_read(), hashkeys_read2(), iax_parse_ies(), init_queue(), init_req(), init_resp(), initreqprep(), is_new_rec_file(), leave_voicemail(), listfilter(), log_attended_transfer(), log_jack_status(), make_email_file(), manager_bridge_info(), manager_bridge_tech_list(), manager_bridges_list(), manager_build_parked_call_string(), manager_json_array_with_key(), manager_json_obj_with_key(), meetme_cmd_helper(), meetme_show_cmd(), meetme_stasis_cb(), mwi_to_string(), my_load_config_string(), my_load_module(), mysql_log(), odbc_log(), parking_lot_cfg_create_extensions(), parse_ewscal_id(), parse_hint_device(), parse_hint_presence(), passthru(), pgsql_log(), pgsql_reconnect(), pjsip_aor_function_read(), pjsip_contact_function_read(), pjsip_endpoint_function_read(), presence_state_notify_callbacks(), print_queue(), process_description_file(), process_text_line(), publish_channel_alarm(), publish_channel_alarm_clear(), publish_dnd_state(), queue_set_param(), read_raw_content_length(), realtime_curl(), realtime_directory(), realtime_multi_curl(), realtime_multi_mysql(), realtime_multi_odbc(), realtime_multi_pgsql(), realtime_mysql(), realtime_odbc(), realtime_pgsql(), realtime_sqlite3_destroy(), realtime_sqlite3_helper(), realtime_sqlite3_store(), realtime_sqlite3_update(), realtime_sqlite3_update2(), realtime_update2_handler(), replace(), require_curl(), require_pgsql(), run_station(), search_directory_sub(), security_event_stasis_cb(), sendmail(), sendpage(), set_rec_filename(), shift_pop(), sip_acf_channel_read(), sip_report_security_event(), sip_tcptls_write(), sip_websocket_callback(), sipsock_read(), sorcery_function_read(), stackpeek_read(), startelm(), stasis_app_control_snoop(), static_callback(), statsmaker(), store_curl(), store_mysql(), store_odbc(), store_pgsql(), system_registry_to_ami(), test_2way_function(), test_chan_variable(), test_files_create(), threadpool_alloc(), transmit_fake_auth_response(), transmit_info_dtmf(), try_calling(), unshift_push(), update2_curl(), update2_mysql(), update2_pgsql(), update2_prepare(), update_curl(), update_logchannels(), update_mysql(), update_odbc(), update_pgsql(), update_scoreboard(), varset_to_ami(), websocket_bad_request(), websocket_client_parse_uri(), xmldoc_build_documentation_item(), xmldoc_get_syntax_config_object(), and xmldoc_get_syntax_config_option().

1081 {

◆ ast_str_set_escapecommas()

char * ast_str_set_escapecommas ( struct ast_str **  buf,
ssize_t  maxlen,
const char *  src,
size_t  maxsrc 
)
inline

Set a dynamic string to a non-NULL terminated substring, with escaping of commas.

Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1021 of file strings.h.

References __ast_str_helper2().

Referenced by acf_curl_helper(), and realtimefield_read().

1025 {

◆ ast_str_set_substr()

char * ast_str_set_substr ( struct ast_str **  buf,
ssize_t  maxlen,
const char *  src,
size_t  maxsrc 
)
inline

Set a dynamic string to a non-NULL terminated substring.

Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1007 of file strings.h.

References __ast_str_helper2().

Referenced by ast_str_substitute_variables_full(), and set_rec_filename().

1011 {

◆ ast_str_set_va()

int ast_str_set_va ( struct ast_str **  buf,
ssize_t  max_len,
const char *  fmt,
va_list  ap 
)
inline

Set a dynamic string from a va_list.

Parameters
bufThis is the address of a pointer to a struct ast_str. If it is retrieved using ast_str_thread_get, the struct ast_threadstorage pointer will need to be updated in the case that the buffer has to be reallocated to accommodate a longer string than what it currently has space for.
max_lenThis is the maximum length to allow the string buffer to grow to. If this is set to 0, then there is no maximum length.
fmtThis is the format string (printf style)
apThis is the va_list
Returns
The return value of this function is the same as that of the printf family of functions.

Example usage (the first part is only for thread-local storage)

AST_THREADSTORAGE(my_str, my_str_init);
#define MY_STR_INIT_SIZE 128
...
void my_func(const char *fmt, ...)
{
struct ast_str *buf;
va_list ap;
if (!(buf = ast_str_thread_get(&my_str, MY_STR_INIT_SIZE)))
return;
...
va_start(fmt, ap);
ast_str_set_va(&buf, 0, fmt, ap);
va_end(ap);
printf("This is the string we just built: %s\n", buf->str);
...
}
Note
Care should be taken when using this function. The function can result in reallocating the ast_str. If a pointer to the ast_str is passed by value to a function that calls ast_str_set_va(), then the original ast_str pointer may be invalidated due to a reallocation.
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 982 of file strings.h.

References _ast_str_helper.

Referenced by ao2_container_unregister(), ast_agi_send(), ast_statsd_log_full_va(), ast_statsd_log_string_va(), ast_str_append_escapecommas(), AST_VECTOR(), ast_xmldoc_query(), astman_append(), astman_send_error_va(), format_log_message_ap(), and module_load_error().

997 {

◆ ast_str_size()

size_t ast_str_size ( const struct ast_str buf)
inline

◆ ast_str_strlen()

size_t ast_str_strlen ( const struct ast_str buf)
inline

Returns the current length of the string stored within buf.

Parameters
bufA pointer to the ast_str structure.
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 688 of file strings.h.

References buf.

Referenced by __sip_reliable_xmit(), __sip_xmit(), _ast_xmldoc_build_arguments(), _sip_tcp_helper_thread(), _xmldoc_build_field(), acf_curl_helper(), acf_odbc_read(), action_getconfig(), action_getconfigjson(), add_header(), add_required_respheader(), add_route(), ALLOC_COMMENT(), ast_agi_send(), ast_http_send(), ast_odbc_print_errors(), ast_statsd_log_string(), ast_str_encode_mime(), ast_str_expr(), ast_str_substitute_variables_full(), ast_str_substring(), AST_TEST_DEFINE(), ast_var_channels_table(), AST_VECTOR(), authority_to_str(), base64_helper(), blacklist_read2(), build_cc_interfaces_chanvar(), build_notify(), build_peer(), caldav_get_events_between(), caldav_request(), cc_extension_monitor_init(), cdata(), chanavail_exec(), check_message_integrity(), cli_show_module_options(), cli_show_module_type(), cli_show_module_types(), collect_names_cb(), config_mysql(), config_text_file_load(), configure_connection_charset(), copy_request(), cut_internal(), destroy_mysql(), detect_disconnect(), dump_queue_members(), encmethods_to_str(), endelm(), exchangecal_request(), fetch_icalendar(), finalize_content(), find_table(), function_fieldnum_helper(), function_fieldqty_helper(), generate_fmtp_attr(), get_key(), handle_cli_cdr_mysql_status(), handle_dbget(), handle_end_element(), handle_request_cancel(), handle_request_do(), handle_showchan(), hangupcause_keys_read(), hashkeys_read2(), http_callback(), initreqprep(), listfilter(), load_column_config(), load_config(), load_dlopen(), load_values_config(), lws2sws(), manager_log(), manager_sipnotify(), my_connect_db(), my_load_module(), mysql_log(), odbc_log(), opus_generate_sdp_fmtp(), parse_request(), pgsql_log(), pgsql_reconnect(), pjsip_acf_dial_contacts_read(), print_uptimestr(), realtime_multi_mysql(), realtime_multi_odbc(), realtime_mysql(), realtime_odbc(), replace(), say_periodic_announcement(), send_ews_request_and_parse(), set_rec_filename(), shift_pop(), sip_cli_notify(), sip_hangup(), sip_send_mwi_to_peer(), sip_tcptls_read(), sip_unregister_tests(), store_mysql(), system_exec_helper(), test_create_joint(), transmit_invite(), unshift_push(), update2_mysql(), update_caldav(), update_exchangecal(), update_mysql(), user_authority_to_str(), write_cel(), write_to_ast_str(), xmldoc_get_formatted(), and xmldoc_parse_variable().

696 {

◆ ast_str_thread_get()

struct ast_str * ast_str_thread_get ( struct ast_threadstorage ts,
size_t  init_len 
)

Retrieve a thread locally stored dynamic string.

Parameters
tsThis is a pointer to the thread storage structure declared by using the AST_THREADSTORAGE macro. If declared with AST_THREADSTORAGE(my_buf, my_buf_init), then this argument would be (&my_buf).
init_lenThis is the initial length of the thread's dynamic string. The current length may be bigger if previous operations in this thread have caused it to increase.
Returns
This function will return the thread locally stored dynamic string associated with the thread storage management variable passed as the first argument. The result will be NULL in the case of a memory allocation error.

Example usage:

AST_THREADSTORAGE(my_str, my_str_init);
#define MY_STR_INIT_SIZE 128
...
void my_func(const char *fmt, ...)
{
struct ast_str *buf;
if (!(buf = ast_str_thread_get(&my_str, MY_STR_INIT_SIZE)))
return;
...
}
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 861 of file strings.h.

References ast_str::__AST_STR_LEN, ast_str::__AST_STR_TS, ast_str::__AST_STR_USED, buf, make_ari_stubs::file, and NULL.

Referenced by __manager_event_sessions_va(), acf_curl_helper(), acf_odbc_read(), acf_odbc_write(), action_userevent(), add_hintdevice(), ao2_container_unregister(), ast_agi_send(), ast_extension_state2(), ast_odbc_print_errors(), ast_sockaddr_stringify_fmt(), ast_statsd_log_full_va(), ast_statsd_log_string_va(), AST_VECTOR(), astman_append(), astman_send_error_va(), astman_send_list_complete_start_common(), astman_send_response_full(), check_auth(), cli_odbc_read(), cli_odbc_write(), config_curl(), config_mysql(), config_odbc(), config_pgsql(), custom_log(), destroy_curl(), destroy_mysql(), destroy_odbc(), destroy_pgsql(), dumpchan_exec(), extension_presence_state_helper(), find_table(), format_log_message_ap(), function_fieldnum_helper(), function_fieldqty_helper(), get_content(), handle_showchan(), listfilter(), logger_add_verbose_magic(), mysql_log(), pbx_find_extension(), realtime_curl(), realtime_directory(), realtime_multi_curl(), realtime_multi_mysql(), realtime_multi_odbc(), realtime_multi_pgsql(), realtime_mysql(), realtime_odbc(), realtime_pgsql(), realtime_update2_handler(), realtimefield_read(), require_curl(), search_directory_sub(), security_event_stasis_cb(), shift_pop(), sip_report_security_event(), sqlite3_escape_column_op(), sqlite3_escape_string_helper(), store_curl(), store_mysql(), store_odbc(), store_pgsql(), strreplace(), substitute_escapes(), syslog_log(), system_exec_helper(), transmit_fake_auth_response(), unshift_push(), update2_curl(), update2_mysql(), update2_odbc(), update2_pgsql(), update2_prepare(), update_curl(), update_mysql(), update_odbc(), and update_pgsql().

866 {

◆ ast_str_to_lower()

static force_inline char* attribute_pure ast_str_to_lower ( char *  str)
static

Convert a string to all lower-case.

Parameters
strThe string to be converted to lower case
Return values
strfor convenience
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1268 of file strings.h.

References str.

Referenced by apps_handler(), ast_ari_endpoints_send_message_to_endpoint(), ast_uuid_to_str(), build_contact(), cel_track_app(), curl_header_callback(), get_user_agent(), and parse_simple_message_summary().

1269 {
1270  char *str_orig = str;
1271  if (!str) {
1272  return str;
1273  }
1274 
1275  for (; *str; ++str) {
1276  *str = tolower(*str);
1277  }
1278 
1279  return str_orig;
1280 }
const char * str
Definition: app_jack.c:147

◆ ast_str_to_upper()

static force_inline char* attribute_pure ast_str_to_upper ( char *  str)
static

Convert a string to all upper-case.

Parameters
strThe string to be converted to upper case
Return values
strfor convenience
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1289 of file strings.h.

References str.

Referenced by ast_rtp_engine_load_format().

1290 {
1291  char *str_orig = str;
1292  if (!str) {
1293  return str;
1294  }
1295 
1296  for (; *str; ++str) {
1297  *str = toupper(*str);
1298  }
1299 
1300  return str_orig;
1301 }
const char * str
Definition: app_jack.c:147

◆ ast_str_trim_blanks()

void ast_str_trim_blanks ( struct ast_str buf)
inline

Trims trailing whitespace characters from an ast_str string.

Parameters
bufA pointer to the ast_str string.
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 678 of file strings.h.

References buf.

Referenced by acf_curl_helper(), process_text_line(), and xmldoc_string_cleanup().

685 {

◆ ast_str_truncate()

char * ast_str_truncate ( struct ast_str buf,
ssize_t  len 
)
inline

Truncates the enclosed string to the given length.

Parameters
bufA pointer to the ast_str structure.
lenMaximum length of the string. If len is larger than the current maximum length, things will explode. If it is negative at most -len characters will be trimmed off the end.
Return values
Apointer to the resulting string.
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 738 of file strings.h.

Referenced by __test_cel_generate_peer_str(), _ast_xmldoc_build_arguments(), active_channels_to_str(), ast_regex_string_to_regex_pattern(), ast_str_substring(), build_cc_interfaces_chanvar(), cel_generate_peer_str(), check_message_integrity(), contacts_to_str(), func_headers_read2(), hashkeys_read2(), jack_str(), list_item_to_str(), opus_generate_sdp_fmtp(), pjsip_acf_dial_contacts_read(), send_eivr_event(), set_var_to_str(), sorcery_function_read(), test_create_joint(), xmldoc_get_formatted(), and xmldoc_string_wrap().

759 {

◆ ast_str_update()

void ast_str_update ( struct ast_str buf)
inline

◆ ast_strings_equal()

int ast_strings_equal ( const char *  str1,
const char *  str2 
)

Compare strings for equality checking for NULL.

Since
16.3.0

This function considers NULL values as non-strings, thus a false condition. This means that it will return false if one, or both of the given values are NULL (i.e. two NULLs are not equal strings).

Parameters
str1The string to compare to str2
str2The string to compare to str1
Returns
true if valid strings and equal, false otherwise.
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 239 of file strings.c.

Referenced by app_event_filter_matched(), is_media_state_valid(), load_realtime_musiconhold(), and resolve_refresh_media_states().

240 {
241  if (!str1 || !str2) {
242  return 0;
243  }
244 
245  return str1 == str2 || !strcmp(str1, str2);
246 }

◆ ast_strings_match()

int ast_strings_match ( const char *  left,
const char *  op,
const char *  right 
)

Compares 2 strings using realtime-style operators.

Since
13.9.0
Parameters
leftThe left side of the equation
opThe operator to apply
rightThe right side of the equation
Return values
1matches
0doesn't match

Operators: "=", "!=", "<", "<=", ">", ">=": If both left and right can be converted to float, then they will be compared as such. Otherwise the result will be derived from strcmp(left, right). "regex": The right value will be compiled as a regular expression and matched against the left value. "like": Any '' character in the right value will be converted to '.*' and the resulting string will be handled as a regex. NULL , "": If the right value starts and ends with a '/' then it will be processed as a regex. Otherwise, same as "=".

Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 248 of file strings.c.

References ast_str_alloca, ast_str_append(), ast_str_buffer(), ast_str_set(), ast_strdupa, ast_strlen_zero, NULL, regex(), and strsep().

Referenced by AST_TEST_DEFINE(), and ast_variables_match().

249 {
250  char *internal_op = (char *)op;
251  char *internal_right = (char *)right;
252  double left_num;
253  double right_num;
254  int scan_numeric = 0;
255 
256  if (!(left && right)) {
257  return 0;
258  }
259 
260  if (ast_strlen_zero(op)) {
261  if (ast_strlen_zero(left) && ast_strlen_zero(right)) {
262  return 1;
263  }
264 
265  if (strlen(right) >= 2 && right[0] == '/' && right[strlen(right) - 1] == '/') {
266  internal_op = "regex";
267  internal_right = ast_strdupa(right);
268  /* strip the leading and trailing '/' */
269  internal_right++;
270  internal_right[strlen(internal_right) - 1] = '\0';
271  goto regex;
272  } else {
273  internal_op = "=";
274  goto equals;
275  }
276  }
277 
278  if (!strcasecmp(op, "like")) {
279  char *tok;
280  struct ast_str *buffer = ast_str_alloca(128);
281 
282  if (!strchr(right, '%')) {
283  return !strcmp(left, right);
284  } else {
285  internal_op = "regex";
286  internal_right = ast_strdupa(right);
287  tok = strsep(&internal_right, "%");
288  ast_str_set(&buffer, 0, "^%s", tok);
289 
290  while ((tok = strsep(&internal_right, "%"))) {
291  ast_str_append(&buffer, 0, ".*%s", tok);
292  }
293  ast_str_append(&buffer, 0, "%s", "$");
294 
295  internal_right = ast_str_buffer(buffer);
296  /* fall through to regex */
297  }
298  }
299 
300 regex:
301  if (!strcasecmp(internal_op, "regex")) {
302  regex_t expression;
303  int rc;
304 
305  if (regcomp(&expression, internal_right, REG_EXTENDED | REG_NOSUB)) {
306  return 0;
307  }
308 
309  rc = regexec(&expression, left, 0, NULL, 0);
310  regfree(&expression);
311  return !rc;
312  }
313 
314 equals:
315  scan_numeric = (sscanf(left, "%lf", &left_num) > 0 && sscanf(internal_right, "%lf", &right_num) > 0);
316 
317  if (internal_op[0] == '=') {
318  if (ast_strlen_zero(left) && ast_strlen_zero(internal_right)) {
319  return 1;
320  }
321 
322  if (scan_numeric) {
323  return (left_num == right_num);
324  } else {
325  return (!strcmp(left, internal_right));
326  }
327  }
328 
329  if (internal_op[0] == '!' && internal_op[1] == '=') {
330  if (scan_numeric) {
331  return (left_num != right_num);
332  } else {
333  return !!strcmp(left, internal_right);
334  }
335  }
336 
337  if (internal_op[0] == '<') {
338  if (scan_numeric) {
339  if (internal_op[1] == '=') {
340  return (left_num <= right_num);
341  } else {
342  return (left_num < right_num);
343  }
344  } else {
345  if (internal_op[1] == '=') {
346  return strcmp(left, internal_right) <= 0;
347  } else {
348  return strcmp(left, internal_right) < 0;
349  }
350  }
351  }
352 
353  if (internal_op[0] == '>') {
354  if (scan_numeric) {
355  if (internal_op[1] == '=') {
356  return (left_num >= right_num);
357  } else {
358  return (left_num > right_num);
359  }
360  } else {
361  if (internal_op[1] == '=') {
362  return strcmp(left, internal_right) >= 0;
363  } else {
364  return strcmp(left, internal_right) > 0;
365  }
366  }
367  }
368 
369  return 0;
370 }
char * ast_str_buffer(const struct ast_str *buf)
Returns the string buffer within the ast_str buf.
Definition: strings.h:714
int ast_str_append(struct ast_str **buf, ssize_t max_len, const char *fmt,...)
Append to a thread local dynamic string.
Definition: strings.h:1091
#define ast_str_alloca(init_len)
Definition: strings.h:800
#define NULL
Definition: resample.c:96
int ast_str_set(struct ast_str **buf, ssize_t max_len, const char *fmt,...)
Set a dynamic string using variable arguments.
Definition: strings.h:1065
#define ast_strdupa(s)
duplicate a string in memory from the stack
Definition: astmm.h:300
The descriptor of a dynamic string XXX storage will be optimized later if needed We use the ts field ...
Definition: strings.h:584
#define ast_strlen_zero(a)
Definition: muted.c:73
static int regex(struct ast_channel *chan, const char *cmd, char *parse, char *buf, size_t len)
Definition: func_strings.c:948
char * strsep(char **str, const char *delims)

◆ ast_strip()

char * ast_strip ( char *  s)
inline

Strip leading/trailing whitespace from a string.

Parameters
sThe string to be stripped (will be modified).
Returns
The stripped string.

This functions strips all leading and trailing whitespace characters from the input string, and returns a pointer to the resulting string. The string is modified in place.

Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 219 of file strings.h.

Referenced by acf_if(), add_menu_entry(), add_peer_mailboxes(), ami_sip_qualify(), apps_handler(), aqm_exec(), ari_channels_handle_originate_with_id(), ast_ari_channels_create(), ast_callerid_parse(), ast_el_add_history(), ast_format_cap_update_by_allow_disallow(), ast_get_namedgroups(), ast_playtones_start(), ast_sip_auth_vector_init(), ast_sip_for_each_aor(), ast_sip_location_retrieve_contact_and_aor_from_list_filtered(), ast_strip_quoted(), ast_strsep(), ast_vector_string_split(), ast_websocket_uri_cb(), bridge_create_common(), build_calendar(), build_profile(), chanavail_exec(), check_blacklist(), check_via(), cli_qualify(), cli_reload_qualify_endpoint(), cli_show_qualify_endpoint(), config_parse_variables(), config_text_file_load(), create_unsolicited_mwi_subscriptions(), dial_exec_full(), eivr_comm(), events_handler(), find_aor(), find_aor_for_resource(), find_aor_name(), function_amiclient(), global_loaded(), h263_parse_sdp_fmtp(), h264_parse_sdp_fmtp(), header_identify_match_check(), ident_handler(), ip_identify_apply(), ip_identify_match_handler(), list_item_handler(), load_column_config(), load_config(), make_components(), mwi_on_aor(), mwi_validate_for_aor(), my_connect_db(), notify_endpoint(), page_exec(), parse_cookies(), parse_sip_options(), pbx_builtin_background(), pbx_load_config(), permanent_uri_handler(), pjsip_acf_dial_contacts_read(), process_echocancel(), process_text_line(), read_header(), realtime_multi_mysql(), realtime_multi_odbc(), realtime_multi_pgsql(), realtime_odbc(), realtime_pgsql(), reload_config(), reload_single_member(), send_unsolicited_mwi_notify(), set(), sip_options_synchronize_endpoint(), stir_shaken_read(), store_tone_zone_ring_cadence(), tls_method_to_str(), try_suggested_sip_codec(), and userevent_exec().

250 {

◆ ast_strip_quoted()

char* ast_strip_quoted ( char *  s,
const char *  beg_quotes,
const char *  end_quotes 
)

Strip leading/trailing whitespace and quotes from a string.

Parameters
sThe string to be stripped (will be modified).
beg_quotesThe list of possible beginning quote characters.
end_quotesThe list of matching ending quote characters.
Returns
The stripped string.

This functions strips all leading and trailing whitespace characters from the input string, and returns a pointer to the resulting string. The string is modified in place.

It can also remove beginning and ending quote (or quote-like) characters, in matching pairs. If the first character of the string matches any character in beg_quotes, and the last character of the string is the matching character in end_quotes, then they are removed from the string.

Examples:

ast_strip_quoted(buf, "\"", "\"");
ast_strip_quoted(buf, "'", "'");
ast_strip_quoted(buf, "[{(", "]})");
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1510 of file main/utils.c.

References ast_strip().

Referenced by applicationmap_handler(), ast_callerid_parse(), ast_sip_validate_uri_length(), ast_strsep(), dialog_info_generate_body_content(), get_rdnis(), hfp_parse_clip(), iftime(), load_values_config(), parse_allowed_methods(), parse_cookies(), parse_dial_string(), pidf_allocate_body(), set_redirecting_reason(), sip_parse_register_line(), and xpidf_allocate_body().

1511 {
1512  char *e;
1513  char *q;
1514 
1515  s = ast_strip(s);
1516  if ((q = strchr(beg_quotes, *s)) && *q != '\0') {
1517  e = s + strlen(s) - 1;
1518  if (*e == *(end_quotes + (q - beg_quotes))) {
1519  s++;
1520  *e = '\0';
1521  }
1522  }
1523 
1524  return s;
1525 }
char * ast_strip(char *s)
Strip leading/trailing whitespace from a string.
Definition: strings.h:219

◆ ast_strlen_zero()

static force_inline int attribute_pure ast_strlen_zero ( const char *  s)
static

Definition at line 65 of file strings.h.

66 {
67  return (!s || (*s == '\0'));
68 }

◆ ast_strsep()

char* ast_strsep ( char **  s,
const char  sep,
uint32_t  flags 
)

Act like strsep but ignore separators inside quotes.

Parameters
sPointer to address of the string to be processed. Will be modified and can't be constant.
sepA single character delimiter.
flagsControls post-processing of the result. AST_STRSEP_TRIM trims all leading and trailing whitespace from the result. AST_STRSEP_STRIP does a trim then strips the outermost quotes. You may want to trim again after the strip. Just OR both the TRIM and STRIP flags. AST_STRSEP_UNESCAPE unescapes '\' sequences. AST_STRSEP_ALL does all of the above processing.
Returns
The next token or NULL if done or if there are more than 8 levels of nested quotes.

This function acts like strsep with three exceptions... The separator is a single character instead of a string. Separators inside quotes are treated literally instead of like separators. You can elect to have leading and trailing whitespace and quotes stripped from the result and have '\' sequences unescaped.

Like strsep, ast_strsep maintains no internal state and you can call it recursively using different separators on the same storage.

Also like strsep, for consistent results, consecutive separators are not collapsed so you may get an empty string as a valid result.

Examples:

char *mystr = ast_strdupa("abc=def,ghi='zzz=yyy,456',jkl");
char *token, *token2, *token3;
while((token = ast_strsep(&mystr, ',', AST_SEP_STRIP))) {
// 1st token will be aaa=def
// 2nd token will be ghi='zzz=yyy,456'
while((token2 = ast_strsep(&token, '=', AST_SEP_STRIP))) {
// 1st token2 will be ghi
// 2nd token2 will be zzz=yyy,456
while((token3 = ast_strsep(&token2, ',', AST_SEP_STRIP))) {
// 1st token3 will be zzz=yyy
// 2nd token3 will be 456
// and so on
}
}
// 3rd token will be jkl
}
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1527 of file main/utils.c.

References ast_strip(), ast_strip_quoted(), ast_strlen_zero, AST_STRSEP_STRIP, AST_STRSEP_TRIM, AST_STRSEP_UNESCAPE, ast_unescape_quoted(), and NULL.

Referenced by AST_TEST_DEFINE(), does_category_match(), handle_updates(), and wizard_apply_handler().

1528 {
1529  char *st = *iss;
1530  char *is;
1531  int inquote = 0;
1532  int found = 0;
1533  char stack[8];
1534 
1535  if (ast_strlen_zero(st)) {
1536  return NULL;
1537  }
1538 
1539  memset(stack, 0, sizeof(stack));
1540 
1541  for(is = st; *is; is++) {
1542  if (*is == '\\') {
1543  if (*++is != '\0') {
1544  is++;
1545  } else {
1546  break;
1547  }
1548  }
1549 
1550  if (*is == '\'' || *is == '"') {
1551  if (*is == stack[inquote]) {
1552  stack[inquote--] = '\0';
1553  } else {
1554  if (++inquote >= sizeof(stack)) {
1555  return NULL;
1556  }
1557  stack[inquote] = *is;
1558  }
1559  }
1560 
1561  if (*is == sep && !inquote) {
1562  *is = '\0';
1563  found = 1;
1564  *iss = is + 1;
1565  break;
1566  }
1567  }
1568  if (!found) {
1569  *iss = NULL;
1570  }
1571 
1572  if (flags & AST_STRSEP_STRIP) {
1573  st = ast_strip_quoted(st, "'\"", "'\"");
1574  }
1575 
1576  if (flags & AST_STRSEP_TRIM) {
1577  st = ast_strip(st);
1578  }
1579 
1580  if (flags & AST_STRSEP_UNESCAPE) {
1581  ast_unescape_quoted(st);
1582  }
1583 
1584  return st;
1585 }
void ast_unescape_quoted(char *quote_str)
Unescape quotes in a string.
Definition: main/utils.c:567
char * ast_strip_quoted(char *s, const char *beg_quotes, const char *end_quotes)
Strip leading/trailing whitespace and quotes from a string.
Definition: main/utils.c:1510
#define NULL
Definition: resample.c:96
char * ast_strip(char *s)
Strip leading/trailing whitespace from a string.
Definition: strings.h:219
#define ast_strlen_zero(a)
Definition: muted.c:73

◆ ast_tech_to_upper()

char * ast_tech_to_upper ( char *  dev_str)
inline

Convert the tech portion of a device string to upper case.

Return values
dev_strReturns the char* passed in for convenience
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1183 of file strings.h.

Referenced by ast_endpoint_latest_snapshot(), create_new_generic_list(), find_generic_monitor_instance_list(), pvt_cause_cmp_fn(), and pvt_cause_hash_fn().

1194 {

◆ ast_to_camel_case_delim()

char* ast_to_camel_case_delim ( const char *  s,
const char *  delim 
)
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 2020 of file main/utils.c.

References ast_copy_string(), ast_strdup, and NULL.

2021 {
2022  char *res = ast_strdup(s);
2023  char *front, *back, *buf = res;
2024  int size;
2025 
2026  front = strtok_r(buf, delim, &back);
2027 
2028  while (front) {
2029  size = strlen(front);
2030  *front = toupper(*front);
2031  ast_copy_string(buf, front, size + 1);
2032  buf += size;
2033  front = strtok_r(NULL, delim, &back);
2034  }
2035 
2036  return res;
2037 }
char buf[BUFSIZE]
Definition: eagi_proxy.c:66
#define ast_strdup(str)
A wrapper for strdup()
Definition: astmm.h:243
#define NULL
Definition: resample.c:96
void ast_copy_string(char *dst, const char *src, size_t size)
Size-limited null-terminating string copy.
Definition: strings.h:401

◆ ast_trim_blanks()

char * ast_trim_blanks ( char *  str)
inline

◆ ast_true()

int attribute_pure ast_true ( const char *  val)

Make sure something is true. Determine if a string containing a boolean value is "true". This function checks to see whether a string passed to it is an indication of an "true" value. It checks to see if the string is "yes", "true", "y", "t", "on" or "1".

Return values
0if val is a NULL pointer.
-1if "true".
0otherwise.
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1822 of file main/utils.c.

References ast_strlen_zero.

Referenced by __ast_http_load(), __init_manager(), _parse(), acf_curlopt_write(), acf_faxopt_write(), acf_transaction_write(), action_agent_logoff(), action_originate(), action_status(), action_updateconfig(), actual_load_config(), agent_login_channel_config(), announce_user_count_all_handler(), aoc_cli_debug_enable(), apply_general_options(), apply_option(), ast_ari_bridges_add_channel_cb(), ast_ari_bridges_record_cb(), ast_ari_channels_record_cb(), ast_ari_events_event_websocket_ws_attempted_cb(), ast_ari_events_event_websocket_ws_established_cb(), ast_bridge_timelimit(), ast_jb_read_conf(), ast_rtp_dtls_cfg_parse(), AST_TEST_DEFINE(), ast_tls_read_conf(), autopause2int(), bool_handler_fn(), boolflag_handler_fn(), build_calendar(), build_device(), build_gateway(), build_peer(), build_user(), cdr_prop_write_callback(), check_debug(), client_bitfield_handler(), config_parse_variables(), custom_bitfield_handler(), customopt_handler(), dahdi_cc_callback(), dahdi_set_dnd(), destroy_all_channels(), do_reload(), encoding_format_handler(), festival_exec(), func_channel_write_real(), func_mute_write(), function_ooh323_write(), get_encrypt_methods(), global_bitfield_handler(), handle_clear_alarms(), handle_common_options(), handle_logger_set_level(), handle_queue_set_member_ringinuse(), handle_t38_options(), hook_write(), init_logger_chain(), internal_feature_write(), is_variable_true(), load_asterisk_conf(), load_config(), load_config_meetme(), load_module(), load_moh_classes(), load_odbc_config(), loader_config_init(), manager_add_queue_member(), manager_dialplan_extension_add(), manager_mutestream(), manager_pause_queue_member(), manager_play_dtmf(), manager_queue_member_ringinuse(), mbl_load_adapter(), mbl_load_device(), message_template_build(), misdn_answer(), moh_parse_options(), my_load_module(), new_realtime_sqlite3_db(), odbc_load_module(), osp_load(), osplookup_exec(), parse_config(), parse_empty_options(), parse_line(), parse_playtone(), pbx_builtin_saycharacters(), pbx_builtin_saycharacters_case(), pbx_builtin_saydigits(), pbx_builtin_saynumber(), pbx_builtin_sayphonetic(), pbx_load_config(), pbx_load_users(), pjsip_acf_moh_passthrough_write(), pjsip_set_logger_verbose(), prack_handler(), process_dahdi(), process_echocancel(), process_my_load_module(), profile_set_param(), queue_rules_set_global_params(), queue_set_global_params(), queue_set_param(), realtime_directory(), reload(), reload_config(), reload_followme(), reload_module(), reload_single_member(), rt_handle_member_record(), rtp_reload(), run_agi(), run_startup_commands(), sayunixtime_exec(), search_directory(), search_directory_sub(), set_active(), set_config(), sla_load_config(), smdi_load(), sorcery_config_open(), sorcery_memory_cache_ami_stale_object(), sorcery_memory_cache_open(), speex_write(), stackpeek_read(), start_monitor_action(), strings_to_mask(), tds_load_module(), timers_handler(), transport_tls_bool_handler(), xfer_set(), xmldoc_get_syntax_cmd(), xmldoc_get_syntax_config_object(), xmldoc_get_syntax_fun(), and xmldoc_get_syntax_manager().

1823 {
1824  if (ast_strlen_zero(s))
1825  return 0;
1826 
1827  /* Determine if this is a true value */
1828  if (!strcasecmp(s, "yes") ||
1829  !strcasecmp(s, "true") ||
1830  !strcasecmp(s, "y") ||
1831  !strcasecmp(s, "t") ||
1832  !strcasecmp(s, "1") ||
1833  !strcasecmp(s, "on"))
1834  return -1;
1835 
1836  return 0;
1837 }
#define ast_strlen_zero(a)
Definition: muted.c:73

◆ ast_unescape_c()

char* ast_unescape_c ( char *  s)

Convert some C escape sequences.

(\b\f\n\r\t) 

into the equivalent characters. The string to be converted (will be modified).

Returns
The converted string.
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1606 of file main/utils.c.

References c, and NULL.

Referenced by ast_parse_digest().

1607 {
1608  char c, *ret, *dst;
1609 
1610  if (src == NULL)
1611  return NULL;
1612  for (ret = dst = src; (c = *src++); *dst++ = c ) {
1613  if (c != '\\')
1614  continue; /* copy char at the end of the loop */
1615  switch ((c = *src++)) {
1616  case '\0': /* special, trailing '\' */
1617  c = '\\';
1618  break;
1619  case 'b': /* backspace */
1620  c = '\b';
1621  break;
1622  case 'f': /* form feed */
1623  c = '\f';
1624  break;
1625  case 'n':
1626  c = '\n';
1627  break;
1628  case 'r':
1629  c = '\r';
1630  break;
1631  case 't':
1632  c = '\t';
1633  break;
1634  }
1635  /* default, use the char literally */
1636  }
1637  *dst = '\0';
1638  return ret;
1639 }
static struct test_val c
#define NULL
Definition: resample.c:96

◆ ast_unescape_semicolon()

char* ast_unescape_semicolon ( char *  s)

Strip backslash for "escaped" semicolons, the string to be stripped (will be modified).

Returns
The stripped string.
Examples:
/tmp/asterisk-shallow/include/asterisk/strings.h.

Definition at line 1587 of file main/utils.c.

Referenced by sip_cli_notify().

1588 {
1589  char *e;
1590  char *work = s;
1591 
1592  while ((e = strchr(work, ';'))) {
1593  if ((e > work) && (*(e-1) == '\\')) {
1594  memmove(e - 1, e, strlen(e) + 1);
1595  work = e;
1596  } else {
1597  work = e + 1;
1598  }
1599  }
1600 
1601  return s;
1602 }