Wed Jan 8 2020 09:50:21

Asterisk developer's documentation


strings.h File Reference

String manipulation functions. More...

#include <ctype.h>
#include "asterisk/utils.h"
#include "asterisk/threadstorage.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 _DB1(x)
 
#define AS_OR(a, b)   (a && ast_str_strlen(a)) ? ast_str_buffer(a) : (b)
 
#define ast_str_alloca(init_len)
 
#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...
 

Functions

int __ast_str_helper (struct ast_str **buf, ssize_t max_len, int append, const char *fmt, va_list ap)
 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)
 
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...
 
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...
 
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 (char *s, size_t len, const char *const w[])
 
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_copy_string (struct ast_str **dst, struct ast_str *src)
 
struct ast_strast_str_create (size_t init_len)
 Create a malloc'ed dynamic length string. More...
 
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 hash)
 Compute a hash value on a string. More...
 
int ast_str_make_space (struct ast_str **buf, size_t new_len)
 
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...
 
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...
 
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_tech_to_upper (char *dev_str)
 Convert the tech portion of a device string to upper case. More...
 
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

#define __AST_STR_LEN   len

Definition at line 40 of file strings.h.

#define __AST_STR_STR   str

Definition at line 41 of file strings.h.

#define __AST_STR_TS   ts

Definition at line 42 of file strings.h.

#define __AST_STR_USED   used

Definition at line 39 of file strings.h.

#define _DB1 (   x)

Definition at line 534 of file strings.h.

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

Definition at line 47 of file strings.h.

#define DS_ALLOCA   ((struct ast_threadstorage *)2)

Definition at line 369 of file strings.h.

#define DS_MALLOC   ((struct ast_threadstorage *)1)

Definition at line 368 of file strings.h.

#define DS_STATIC   ((struct ast_threadstorage *)3) /* not supported yet */

Definition at line 370 of file strings.h.

#define S_COR (   a,
  b,
 
)    ({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>")

Definition at line 83 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_agents(), action_coreshowchannels(), action_meetmelist(), action_status(), add_rpid(), analog_call(), analog_ss_thread(), ast_app_dtget(), ast_bridge_call(), ast_cel_report_event(), ast_channel_bridge(), ast_channel_set_caller_event(), ast_hangup(), ast_setstate(), background_detect_exec(), builtin_automixmonitor(), builtin_automonitor(), collect_digits(), conf_run(), console_call(), console_transfer(), copy_message(), dahdi_handle_dtmf(), dahdi_handle_event(), dial_exec_full(), disa_exec(), do_forward(), find_matching_endwhile(), findmeexec(), forward_message(), gosub_exec(), gosub_run(), handle_chanlist(), handle_cli_misdn_show_channels(), handle_gosub(), handle_setpriority(), handle_showchan(), isAnsweringMachine(), isexten_function_read(), join_queue(), leave_voicemail(), local_call(), manager_bridge_event(), manager_parking_status(), 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_set_callerid(), ospauth_exec(), osplookup_exec(), oss_call(), park_call_full(), parkandannounce_exec(), parked_call_exec(), party_id_read(), pbx_builtin_background(), pbx_builtin_waitexten(), pbx_parseable_goto(), phase_e_handler(), post_manager_event(), process_ast_dsp(), process_sdp(), queue_exec(), readexten_exec(), release_chan(), report_new_callerid(), ring_entry(), senddialevent(), serialize_showchan(), set_one_cid(), setup_env(), sig_pri_call(), sig_pri_event_party_id(), sip_read(), skinny_answer(), skinny_call(), skinny_indicate(), skinny_ss(), sms_exec(), socket_process(), state_notify_build_xml(), try_calling(), update_connectedline(), valid_exit(), vm_authenticate(), waitstream_core(), and write_metadata().

#define S_OR (   a,
 
)    ({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.

Definition at line 77 of file strings.h.

Referenced by __analog_handle_event(), __ast_channel_alloc_ap(), __ast_cli_register(), __ssl_setup(), _sip_show_peer(), _skinny_show_device(), _skinny_show_line(), acf_curl_helper(), acf_if(), acf_transaction_write(), action_agents(), action_coreshowchannels(), action_getvar(), action_reload(), action_setvar(), action_status(), add_peer_mailboxes(), add_peer_mwi_subs(), agent_hangup(), aji_handle_presence(), aji_initialize(), alloc_event(), analog_hangup(), analog_ss_thread(), app_exec(), array(), ast_async_goto(), ast_bridge_call(), ast_bridge_timelimit(), ast_bt_get_symbols(), ast_call_forward(), ast_cc_call_init(), ast_cdr_end(), ast_cdr_init(), ast_cdr_serialize_variables(), ast_cdr_setapp(), ast_cdr_update(), ast_cel_fill_record(), ast_cel_get_ama_flag_name(), ast_cel_get_type_name(), ast_cel_report_event(), ast_channel_connected_line_macro(), ast_channel_redirecting_macro(), ast_cli_command_full(), ast_do_masquerade(), ast_hangup(), ast_play_and_record_full(), ast_queue_log(), ast_sockaddr_parse(), ast_sockaddr_resolve(), authenticate(), build_callid_pvt(), build_callid_registry(), build_peer(), build_route(), builtin_automixmonitor(), builtin_automonitor(), calltoken_required(), cc_generic_agent_init(), cc_interfaces_datastore_init(), cdr_handler(), check_auth(), check_post(), cli_odbc_write(), close_lib(), common_exec(), config_curl(), config_handler(), config_parse_variables(), create_dynamic_parkinglot(), create_queue_member(), dahdi_handle_dtmf(), dahdi_handle_event(), dahdi_hangup(), dahdi_show_channel(), dbt_data2str_full(), dial_exec_full(), do_forward(), dundi_exec(), enable_jack_hook(), execif_exec(), fast_originate(), feature_check(), feature_interpret(), file_write(), find_conf(), find_queue_by_name_rt(), forward_message(), generic_recall(), get_also_info(), get_cached_mwi(), get_cid_name(), get_destination(), get_rdnis(), get_refer_info(), gosub_run(), goto_exten(), gtalk_add_candidate(), gtalk_newcall(), gtalk_parser(), gtalk_response(), gtalk_ringing_ack(), handle_call_token(), handle_chanlist(), handle_cli_agi_show(), handle_cli_check_permissions(), handle_cli_config_list(), handle_cli_iax2_show_channels(), handle_cli_moh_show_classes(), handle_gosub(), handle_manager_show_settings(), handle_request_invite(), handle_request_subscribe(), handle_response_register(), handle_show_function(), handle_show_functions(), handle_show_settings(), handle_showchan(), handle_showmancmd(), handle_skinny_show_settings(), handle_verbose(), hashtab_compare_exten_labels(), hashtab_hash_labels(), help1(), help_workhorse(), iftime(), init_pvt(), leave_voicemail(), load_module(), local_read(), login_exec(), make_email_file(), manage_parked_call(), manager_dbput(), manager_queue_log_custom(), manager_queue_reload(), manager_set_defaults(), manager_show_registry(), misdn_cfg_get(), misdn_copy_redirecting_from_ast(), misdn_get_connected_line(), mstime(), my_distinctive_ring(), my_handle_dtmf(), npval(), on_dns_update_registry(), originate_exec(), oss_call(), park_call_exec(), park_call_full(), park_space_reserve(), pbx_builtin_execiftime(), pbx_builtin_waitexten(), pbx_exec(), pbx_extension_helper(), pbx_load_config(), peer_mailboxes_to_str(), pgsql_reconnect(), phase_e_handler(), play_mailbox_owner(), play_moh_exec(), prep_email_sub_vars(), pri_dchannel(), print_app_docs(), process_sdp(), process_text_line(), queue_exec(), realtime_common(), realtime_curl(), realtime_destroy_handler(), realtime_directory(), realtime_exec(), realtime_handler(), realtime_multi_curl(), realtime_multi_handler(), realtime_store_handler(), realtime_update2_handler(), realtime_update_handler(), receivefax_exec(), register_exten(), register_group_feature(), register_peer_exten(), reload_config(), return_exec(), ring_entry(), rt_handle_member_record(), run_externnotify(), select_entry(), send_provisional_keepalive_full(), sendfax_exec(), sendpage(), serialize_showchan(), set_channel_variables(), set_member_paused(), set_one_cid(), setup_env(), setup_filestack(), shared_write(), show_channels_cb(), sig_pri_event_party_id(), sip_parse_register_line(), sip_read(), sip_show_domains(), sip_show_settings(), sip_uri_cmp(), skinny_hold(), sla_show_stations(), sla_show_trunks(), sms_exec(), sms_log(), socket_process(), start_moh_exec(), static_callback(), testtime_write(), transmit_notify_with_mwi(), transmit_register(), unregister_exten(), update_realtime_members(), and wait_for_answer().

Enumeration Type Documentation

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 700 of file strings.h.

700  {
701  /*! An error has occurred and the contents of the dynamic string
702  * are undefined */
704  /*! The buffer size for the dynamic string had to be increased, and
705  * __ast_str_helper() needs to be called again after
706  * a va_end() and va_start(). This return value is legacy and will
707  * no longer be used.
708  */
710 };

Function Documentation

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

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(...)

Definition at line 59 of file strings.c.

References AST_DYNSTR_BUILD_FAILED, ast_str_make_space(), ast_verbose(), if(), and len().

Referenced by ast_str_set_va().

62 {
63  int res, need;
64  int offset = (append && (*buf)->__AST_STR_LEN) ? (*buf)->__AST_STR_USED : 0;
65  va_list aq;
66 
67  do {
68  if (max_len < 0) {
69  max_len = (*buf)->__AST_STR_LEN; /* don't exceed the allocated space */
70  }
71  /*
72  * Ask vsnprintf how much space we need. Remember that vsnprintf
73  * does not count the final <code>'\0'</code> so we must add 1.
74  */
75  va_copy(aq, ap);
76  res = vsnprintf((*buf)->__AST_STR_STR + offset, (*buf)->__AST_STR_LEN - offset, fmt, aq);
77 
78  need = res + offset + 1;
79  /*
80  * If there is not enough space and we are below the max length,
81  * reallocate the buffer and return a message telling to retry.
82  */
83  if (need > (*buf)->__AST_STR_LEN && (max_len == 0 || (*buf)->__AST_STR_LEN < max_len) ) {
84  int len = (int)(*buf)->__AST_STR_LEN;
85  if (max_len && max_len < need) { /* truncate as needed */
86  need = max_len;
87  } else if (max_len == 0) { /* if unbounded, give more room for next time */
88  need += 16 + need / 4;
89  }
90  if (0) { /* debugging */
91  ast_verbose("extend from %d to %d\n", len, need);
92  }
93  if (
94 #if (defined(MALLOC_DEBUG) && !defined(STANDALONE))
95  _ast_str_make_space(buf, need, file, lineno, function)
96 #else
97  ast_str_make_space(buf, need)
98 #endif
99  ) {
100  ast_verbose("failed to extend from %d to %d\n", len, need);
101  va_end(aq);
103  }
104  (*buf)->__AST_STR_STR[offset] = '\0'; /* Truncate the partial write. */
105 
106  /* Restart va_copy before calling vsnprintf() again. */
107  va_end(aq);
108  continue;
109  }
110  va_end(aq);
111  break;
112  } while (1);
113  /* update space used, keep in mind the truncation */
114  (*buf)->__AST_STR_USED = (res + offset > (*buf)->__AST_STR_LEN) ? (*buf)->__AST_STR_LEN - 1: res + offset;
115 
116  return res;
117 }
void ast_verbose(const char *fmt,...)
Definition: logger.c:1568
int ast_str_make_space(struct ast_str **buf, size_t new_len)
Definition: strings.h:588
static int len(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t buflen)
if(yyss+yystacksize-1<=yyssp)
Definition: ast_expr2.c:1874
char* __ast_str_helper2 ( struct ast_str **  buf,
ssize_t  max_len,
const char *  src,
size_t  maxsrc,
int  append,
int  escapecommas 
)

Definition at line 119 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().

120 {
121  int dynamic = 0;
122  char *ptr = append ? &((*buf)->__AST_STR_STR[(*buf)->__AST_STR_USED]) : (*buf)->__AST_STR_STR;
123 
124  if (maxlen < 1) {
125  if (maxlen == 0) {
126  dynamic = 1;
127  }
128  maxlen = (*buf)->__AST_STR_LEN;
129  }
130 
131  while (*src && maxsrc && maxlen && (!escapecommas || (maxlen - 1))) {
132  if (escapecommas && (*src == '\\' || *src == ',')) {
133  *ptr++ = '\\';
134  maxlen--;
135  (*buf)->__AST_STR_USED++;
136  }
137  *ptr++ = *src++;
138  maxsrc--;
139  maxlen--;
140  (*buf)->__AST_STR_USED++;
141 
142  if ((ptr >= (*buf)->__AST_STR_STR + (*buf)->__AST_STR_LEN - 3) ||
143  (dynamic && (!maxlen || (escapecommas && !(maxlen - 1))))) {
144  char *oldbase = (*buf)->__AST_STR_STR;
145  size_t old = (*buf)->__AST_STR_LEN;
146  if (ast_str_make_space(buf, (*buf)->__AST_STR_LEN * 2)) {
147  /* If the buffer can't be extended, end it. */
148  break;
149  }
150  /* What we extended the buffer by */
151  maxlen = old;
152 
153  ptr += (*buf)->__AST_STR_STR - oldbase;
154  }
155  }
156  if (__builtin_expect(!maxlen, 0)) {
157  ptr--;
158  }
159  *ptr = '\0';
160  return (*buf)->__AST_STR_STR;
161 }
int ast_str_make_space(struct ast_str **buf, size_t new_len)
Definition: strings.h:588
if(yyss+yystacksize-1<=yyssp)
Definition: ast_expr2.c:1874
size_t __AST_STR_LEN
Definition: strings.h:365
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.

Definition at line 1521 of file utils.c.

References ast_build_string_va().

Referenced by ast_fax_caps_to_str(), config_odbc(), generate_filenames_string(), and handle_speechrecognize().

1522 {
1523  va_list ap;
1524  int result;
1525 
1526  va_start(ap, fmt);
1527  result = ast_build_string_va(buffer, space, fmt, ap);
1528  va_end(ap);
1529 
1530  return result;
1531 }
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: utils.c:1502
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

Definition at line 1502 of file utils.c.

Referenced by ast_build_string().

1503 {
1504  int result;
1505 
1506  if (!buffer || !*buffer || !space || !*space)
1507  return -1;
1508 
1509  result = vsnprintf(*buffer, *space, fmt, ap);
1510 
1511  if (result < 0)
1512  return -1;
1513  else if (result > *space)
1514  result = *space;
1515 
1516  *buffer += result;
1517  *space -= result;
1518  return 0;
1519 }
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

Definition at line 919 of file strings.h.

Referenced by create_addr().

928 {
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.

Definition at line 223 of file strings.h.

Referenced by __analog_handle_event(), __analog_ss_thread(), __ast_channel_alloc_ap(), __ast_context_destroy(), __ast_http_load(), __ast_http_post_load(), __ast_pbx_run(), __ast_play_and_record(), __ast_request_and_dial(), __iax2_show_peers(), __init_manager(), __oh323_new(), __schedule_action(), __set_address_from_contact(), _ast_odbc_request_obj2(), _get_mohbyname(), _macro_exec(), _sip_show_peers_one(), acf_channel_read(), acf_curl_helper(), 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_mailbox_exists(), acf_odbc_read(), acf_sprintf(), acf_transaction_read(), acf_version_exec(), action_originate(), actual_load_config(), add_agent(), add_cc_call_info_to_response(), add_exten_to_pattern_tree(), add_line(), add_realm_authentication(), add_route(), add_sdp(), add_sip_domain(), adsi_load(), adsi_message(), adsi_process(), aes_helper(), agent_new(), agentmonitoroutgoing_exec(), aji_create_buddy(), aji_create_client(), aji_find_version(), aji_handle_message(), aji_handle_presence(), alarmreceiver_exec(), alloc_profile(), alsa_new(), analog_call(), analog_hangup(), analog_ss_thread(), announce_thread(), answer_call(), answer_exec_enable(), aoc_create_ie_data(), aoc_create_ie_data_charging_rate(), aoc_parse_ie_charging_rate(), app_exec(), append_mailbox(), apply_general_options(), apply_option(), apply_options_full(), ast_add_extension2_lockopt(), 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_bridge_call(), ast_bridge_dtmf_stream(), ast_bridge_features_hook(), ast_bridge_features_register(), ast_call_forward(), ast_callerid_merge(), ast_callerid_parse(), ast_callerid_split(), ast_category_new(), ast_category_rename(), ast_cc_extension_monitor_add_dialstring(), ast_cc_get_param(), ast_cdr_appenduserfield(), ast_cdr_getvar(), ast_cdr_init(), ast_cdr_merge(), ast_cdr_register(), ast_cdr_setaccount(), ast_cdr_setapp(), ast_cdr_setdestchan(), ast_cdr_setpeeraccount(), ast_cdr_setuserfield(), ast_cdr_update(), ast_cel_fabricate_channel_from_event(), ast_channel_destructor(), ast_channel_get_cc_agent_type(), ast_channel_get_device_name(), ast_channel_get_full(), ast_cli_completion_matches(), ast_context_find(), ast_context_find_or_create(), ast_context_remove_extension_callerid2(), ast_devstate_prov_add(), ast_do_masquerade(), ast_eivr_getvariable(), ast_event_subscribe(), ast_explicit_goto(), ast_expr(), ast_frame_dump(), ast_func_read(), ast_get_enum(), ast_get_hint(), ast_get_indication_zone(), ast_get_srv(), ast_get_txt(), ast_getformatname_multiple(), ast_http_prefix(), ast_iax2_new(), ast_linear_stream(), ast_makesocket(), ast_moh_files_next(), ast_monitor_change_fname(), ast_monitor_stop(), ast_pbx_outgoing_app(), ast_pbx_outgoing_exten(), ast_privacy_check(), ast_privacy_set(), ast_read_image(), ast_readconfig(), ast_remove_hint(), 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_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_th(), ast_say_enumeration_full_da(), ast_say_enumeration_full_de(), ast_say_enumeration_full_en(), 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_it(), 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_setstate(), AST_TEST_DEFINE(), ast_tryconnect(), ast_tzset(), ast_unregister_indication_country(), ast_var_assign(), ast_var_indications(), ast_var_indications_table(), ast_xmldoc_printable(), async_wait(), auth_http_callback(), authenticate(), authenticate_verify(), begin_dial_channel(), blr_ebl(), bridge_channel_dtmf_stream(), build_alias(), build_conf(), build_context(), build_device(), build_event_channel(), build_gateway(), build_mapping(), build_peer(), build_reply_digest(), build_route(), build_user(), cache_lookup(), cache_lookup_internal(), calendar_event_read(), calendar_join_attendees(), calendar_query_result_exec(), callerid_feed(), callerid_feed_jp(), callerid_read(), callerpres_read(), cb_events(), cc_build_payload(), cc_generic_agent_init(), cdata(), change_password_realtime(), channel_iterator_search(), check_auth(), check_availability(), check_match(), check_password(), check_sip_domain(), check_via(), check_via_response(), cleanup_stale_contexts(), cli_tps_report(), common_exec(), compile_script(), complete_dpreply(), complete_fn(), complete_indications(), conf_exec(), conf_run(), config_device(), config_function_read(), config_line(), config_parse_variables(), config_pgsql(), config_text_file_load(), connectedline_read(), console_dial(), construct_pidf_body(), copy_message(), copy_via_headers(), create_addr(), create_dynamic_parkinglot(), create_epa_entry(), create_followme_number(), create_parkinglot(), create_queue_member(), create_vmaccount(), crement_function_read(), csv_quote(), cut_internal(), dahdi_call(), dahdi_func_read(), dahdi_handle_event(), dahdi_hangup(), dahdi_new(), dahdi_queryoption(), dahdi_show_channels(), db_get_common(), devstate_read(), dial_exec_full(), dialgroup_read(), dialgroup_write(), dialout(), dictate_exec(), disa_exec(), do_forward(), do_idle_thread(), do_notify(), do_reload(), 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(), enum_query_read(), enum_result_read(), env_read(), epoch_to_exchange_time(), external_rtp_create(), extract_uri(), exts_compare(), extstate_read(), 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_peer(), find_queue_by_name_rt(), find_realtime_gw(), find_subchannel_and_lock(), find_subchannel_by_name(), find_user_realtime(), findmeexec(), forward_message(), func_channel_read(), func_check_sipdomain(), func_header_read(), function_agent(), function_enum(), function_iaxpeer(), function_realtime_read(), function_realtime_readdestroy(), function_sipchaninfo_read(), function_sippeer(), gen_header(), generate_uri(), generic_recall(), get_also_info(), get_date(), get_destination(), get_domain(), get_esc_entry(), get_name_and_number(), get_pai(), get_pidf_body(), get_rdnis(), get_refer_info(), get_rpid(), getdisplaybyname(), getflagbyname(), getkeybyname(), getstatebyname(), getsubbyname(), gettag(), global_read(), gosub_exec(), gosub_run(), group_count_function_read(), group_function_read(), group_function_write(), group_list_function_read(), gtalk_add_candidate(), gtalk_alloc(), gtalk_call(), gtalk_create_candidates(), gtalk_create_member(), gtalk_load_config(), gtalk_new(), gtalk_newcall(), gtalk_ringing_ack(), gtalk_show_channels(), handle_cli_iax2_show_cache(), handle_cli_iax2_show_registry(), 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_ulimit(), handle_command_response(), handle_common_options(), handle_dial_page(), handle_enbloc_call_message(), handle_gosub(), handle_pri_set_debug_file(), handle_request_info(), handle_request_invite(), handle_response(), handle_response_publish(), handle_setcallerid(), handle_setcontext(), handle_setextension(), handle_soft_key_event_message(), handle_statechange(), handle_stimulus_message(), has_voicemail(), hash_read(), iax2_ack_registry(), iax2_append_register(), iax2_call(), iax2_exec(), iax2_getpeername(), iax2_register(), iax2_transfer(), iax_frame_subclass2str(), iax_park(), iax_parse_ies(), iax_show_provisioning(), iax_template_copy(), ices_exec(), ifmodule_read(), iftime(), import_ch(), inboxcount2(), init_acf_query(), init_logger_chain(), init_profile(), init_state(), initreqprep(), jingle_add_candidate(), jingle_alloc(), jingle_call(), jingle_create_candidates(), jingle_create_member(), jingle_load_config(), jingle_new(), jingle_newcall(), jingle_show_channels(), jingle_transmit_invite(), join_conference_bridge(), join_queue(), key_dial_page(), key_history(), key_main_page(), key_select_extension(), Keyfavorite(), leave_voicemail(), listfilter(), load_config(), load_module(), load_moh_classes(), load_odbc_config(), load_password(), load_pktccops_config(), local_alloc(), local_ast_moh_start(), local_attended_transfer(), local_new(), local_read(), lock_read(), log_events(), login_exec(), main(), make_email_file(), make_fn(), make_logchannel(), manager_iax2_show_peer_list(), manager_iax2_show_registry(), manager_modulecheck(), manager_set_defaults(), masq_park_call(), math(), message_template_build(), message_template_create(), message_template_parse_filebody(), mgcp_call(), mgcp_new(), 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_new(), misdn_request(), misdn_send_text(), misdn_set_opt_exec(), mkif(), mkintf(), moh_files_alloc(), moh_scan_files(), my_dial_digits(), my_distinctive_ring(), my_get_callerid(), my_new_pri_ast_channel(), my_pri_init_config(), my_pri_make_cc_dialstring(), my_set_callerid(), my_set_dnid(), my_set_rdnis(), nbs_alloc(), nbs_new(), netconsole(), notify_new_message(), odbc_log(), oh323_alloc(), oh323_call(), oh323_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(), park_call_exec(), park_call_full(), parkinglot_config_read(), parse_config(), parse_moved_contact(), parse_naptr(), parse_ok_contact(), parse_options(), parse_register_contact(), parse_sip_options(), parse_tag(), parse_tone_zone(), ParseBookmark(), party_id_read(), party_name_read(), party_number_read(), party_subaddress_read(), pbx_builtin_background(), pbx_builtin_saynumber(), pbx_extension_helper(), pbx_load_config(), pbx_load_users(), pbx_retrieve_variable(), pbx_substitute_variables_helper_full(), peek_read(), peer_status(), pgsql_reconnect(), phone_call(), phone_new(), pktccops_show_cmtses(), pktccops_show_gates(), play_record_review(), populate_defaults(), pri_dchannel(), pri_ss_thread(), private_enum_init(), process_applicationmap_line(), process_config(), process_dahdi(), process_precache(), process_sdp(), profile_set_param(), proxy_from_config(), queue_function_queuememberpaused(), queue_function_queuememberstatus(), queue_set_param(), quote(), rcv_mac_addr(), read_agent_config(), read_config(), read_config_maps(), read_password_from_file(), realtime_common(), realtime_peer(), realtime_peer_by_addr(), realtime_switch_common(), realtime_update_peer(), realtimefield_read(), receive_ademco_contact_id(), record_exec(), redirecting_read(), register_exten(), register_peer_exten(), register_verify(), registry_rerequest(), reload_config(), reload_followme(), reload_queue_rules(), reload_single_member(), remap_feature(), remove_from_queue(), reply_digest(), reqprep(), reset_user_pw(), respprep(), return_exec(), ring_entry(), rt_extend_conf(), rt_handle_member_record(), run_externnotify(), sdp_crypto_process(), search_directory_sub(), select_entry(), sendmail(), sendpage(), set(), set_c_e_p(), set_callforwards(), set_config(), set_destination(), set_ext_pri(), set_insecure_flags(), set_one_cid(), setup_filestack(), setup_incoming_call(), setup_privacy_args(), shared_read(), show_entry_history(), sig_pri_aoc_d_from_ast(), sig_pri_aoc_e_from_ast(), sig_pri_aoc_s_from_ast(), sig_pri_call(), sig_pri_handle_subcmds(), sig_pri_init_config(), sig_pri_party_name_from_ast(), sig_pri_party_number_from_ast(), sig_pri_party_subaddress_from_ast(), sig_pri_send_mwi_indication(), sip_acf_channel_read(), sip_call(), sip_cc_agent_init(), sip_cli_notify(), sip_get_cc_information(), sip_new(), sip_park(), sip_parse_register_line(), sip_poke_peer(), sip_prepare_socket(), sip_prune_realtime(), sip_queryoption(), sip_request_call(), sip_show_inuse(), sip_sipredirect(), sip_subscribe_mwi(), skinny_new(), skinny_newcall(), skinny_register(), skinny_request(), skinny_ss(), smdi_load(), smdi_msg_read(), smdi_read(), sms_exec(), sms_handleincoming(), sms_handleincoming_proto2(), sms_writefile(), socket_read(), softhangup_exec(), spawn_dp_lookup(), spawn_mp3(), speech_grammar(), speech_read(), speech_score(), speech_text(), srv_query_read(), srv_result_read(), stat_read(), store_config(), store_odbc(), store_tone_zone_ring_cadence(), substring(), temp_peer(), term_color(), term_prompt(), timeout_read(), timezone_add(), transmit_callinfo(), transmit_cfwdstate(), transmit_connect(), transmit_connect_with_sdp(), transmit_dialednumber(), transmit_displaynotify(), transmit_displaypromptstatus(), 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_common_options(), uridecode(), users_data_provider_get(), vars2manager(), vm_authenticate(), vm_change_password(), vm_change_password_shell(), vm_execmain(), vmauthenticate(), wait_for_answer(), while(), and write_metadata().

364 {
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.

Definition at line 1550 of file utils.c.

References ast_strlen_zero().

Referenced by __ast_udptl_reload(), acf_faxopt_write(), acf_transaction_write(), actual_load_config(), aji_create_client(), aji_load_config(), aoc_cli_debug_enable(), build_peer(), build_user(), dahdi_set_dnd(), find_realtime(), func_channel_write_real(), handle_common_options(), init_acf_query(), load_config(), load_odbc_config(), manager_mute_mixmonitor(), parse_empty_options(), reload_config(), rtp_reload(), run_agi(), set_config(), set_insecure_flags(), sla_build_trunk(), and strings_to_mask().

1551 {
1552  if (ast_strlen_zero(s))
1553  return 0;
1554 
1555  /* Determine if this is a false value */
1556  if (!strcasecmp(s, "no") ||
1557  !strcasecmp(s, "false") ||
1558  !strcasecmp(s, "n") ||
1559  !strcasecmp(s, "f") ||
1560  !strcasecmp(s, "0") ||
1561  !strcasecmp(s, "off"))
1562  return -1;
1563 
1564  return 0;
1565 }
static force_inline int attribute_pure ast_strlen_zero(const char *s)
Definition: strings.h:63
int ast_get_time_t ( const char *  src,
time_t *  dst,
time_t  _default,
int *  consumed 
)

get values from config variables.

Definition at line 2118 of file utils.c.

References ast_strlen_zero().

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

2119 {
2120  long t;
2121  int scanned;
2122 
2123  if (dst == NULL)
2124  return -1;
2125 
2126  *dst = _default;
2127 
2128  if (ast_strlen_zero(src))
2129  return -1;
2130 
2131  /* only integer at the moment, but one day we could accept more formats */
2132  if (sscanf(src, "%30ld%n", &t, &scanned) == 1) {
2133  *dst = t;
2134  if (consumed)
2135  *consumed = scanned;
2136  return 0;
2137  } else
2138  return -1;
2139 }
static force_inline int attribute_pure ast_strlen_zero(const char *s)
Definition: strings.h:63
int ast_get_timeval ( const char *  src,
struct timeval *  tv,
struct timeval  _default,
int *  consumed 
)

get values from config variables.

Definition at line 2091 of file utils.c.

References ast_strlen_zero().

Referenced by acf_strftime().

2092 {
2093  long double dtv = 0.0;
2094  int scanned;
2095 
2096  if (dst == NULL)
2097  return -1;
2098 
2099  *dst = _default;
2100 
2101  if (ast_strlen_zero(src))
2102  return -1;
2103 
2104  /* only integer at the moment, but one day we could accept more formats */
2105  if (sscanf(src, "%30Lf%n", &dtv, &scanned) > 0) {
2106  dst->tv_sec = dtv;
2107  dst->tv_usec = (dtv - dst->tv_sec) * 1000000.0;
2108  if (consumed)
2109  *consumed = scanned;
2110  return 0;
2111  } else
2112  return -1;
2113 }
static force_inline int attribute_pure ast_strlen_zero(const char *s)
Definition: strings.h:63
void ast_join ( char *  s,
size_t  len,
const char *const  w[] 
)

Definition at line 1690 of file utils.c.

References len().

Referenced by __ast_cli_generator(), ast_agi_register(), ast_agi_unregister(), ast_cli_command_full(), cli_console_sendtext(), console_sendtext(), find_best(), handle_cli_agi_show(), handle_cli_check_permissions(), handle_help(), help1(), help_workhorse(), set_full_cmd(), and write_htmldump().

1691 {
1692  int x, ofs = 0;
1693  const char *src;
1694 
1695  /* Join words into a string */
1696  if (!s)
1697  return;
1698  for (x = 0; ofs < len && w[x]; x++) {
1699  if (x > 0)
1700  s[ofs++] = ' ';
1701  for (src = w[x]; *src && ofs < len; src++)
1702  s[ofs++] = *src;
1703  }
1704  if (ofs == len)
1705  ofs--;
1706  s[ofs] = '\0';
1707 }
static int len(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t buflen)
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

Definition at line 136 of file strings.h.

References ast_skip_blanks(), and ast_trim_blanks().

Referenced by __ast_cli_register(), determine_firstline_parts(), handle_response(), and httpd_helper_thread().

149 {
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.

Definition at line 900 of file strings.h.

Referenced by __ast_manager_event_multichan(), __queues_show(), acf_curl_helper(), acf_odbc_read(), action_createconfig(), action_status(), action_userevent(), add_blank(), add_codec_to_sdp(), add_content(), add_header(), add_ipv4_ie(), add_noncodec_to_sdp(), add_required_respheader(), add_rpid(), add_sdp(), add_tcodec_to_sdp(), add_vcodec_to_sdp(), 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_ie(), append_var_and_value_to_filter(), ast_aoc_decoded2str(), ast_cdr_serialize_variables(), ast_eivr_getvariable(), ast_realtime_encode_chunk(), ast_rtp_lookup_mime_multiple2(), ast_sched_report(), ast_str_encode_mime(), ast_str_quote(), ast_str_substitute_variables_full(), ast_term_color_code(), ast_translate_path_to_str(), ast_xmldoc_build_seealso(), ast_xmldoc_printable(), auth_http_callback(), authority_to_str(), build_peer(), caldav_get_events_between(), caldav_write_event(), calendar_join_attendees(), CB_ADD(), CB_ADD_LEN(), cc_unique_append(), cdata(), cdr_handler(), chanavail_exec(), check_message_integrity(), cli_alias_passthrough(), cli_prompt(), commit_exec(), construct_pidf_body(), cut_internal(), data_result_print_cli(), data_result_print_cli_node(), data_search_generate(), destroy_curl(), destroy_pgsql(), detect_disconnect(), dump_queue_members(), encmethods_to_str(), epoch_to_exchange_time(), ewscal_write_event(), exchangecal_get_events_between(), exchangecal_write_event(), fetch_response_reader(), finalize_content(), function_realtime_read(), function_realtime_readdestroy(), generate_uri(), generic_http_callback(), get_pidf_body(), handle_characters(), handle_cli_core_show_translation(), handle_cli_indication_show(), handle_showchan(), hashkeys_read2(), httpstatus_callback(), initreqprep(), listfilter(), load_column_config(), load_config(), log_jack_status(), manager_sipnotify(), meetme_cmd_helper(), odbc_log(), pbx_builtin_serialize_variables(), peer_mailboxes_to_str(), pgsql_log(), pgsql_reconnect(), print_uptimestr(), process_output(), process_text_line(), realtime_curl(), realtime_ldap_base_ap(), realtime_multi_curl(), realtime_multi_pgsql(), realtime_pgsql(), realtime_update2_handler(), realtimefield_read(), require_curl(), rollback_exec(), run_station(), send_eivr_event(), sig_pri_event_party_id(), sig_pri_mcid_event(), sip_cli_notify(), sip_tcptls_read(), state_notify_build_xml(), store_curl(), store_pgsql(), substitute_escapes(), transmit_info_with_aoc(), transmit_notify_with_mwi(), update2_curl(), update2_ldap(), update2_pgsql(), update2_prepare(), update_curl(), update_ldap(), update_pgsql(), user_authority_to_str(), userevent_exec(), xml_copy_escape(), xml_encode_str(), xml_translate(), xmldoc_get_syntax_cmd(), xmldoc_get_syntax_manager(), xmldoc_parse_argument(), xmldoc_parse_cmd_enumlist(), xmldoc_parse_enumlist(), 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().

910 {
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.

Definition at line 837 of file strings.h.

References ast_str_set_va().

Referenced by acf_odbc_read().

864 {
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.

Definition at line 823 of file strings.h.

References __ast_str_helper2().

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

827 {
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.

Definition at line 809 of file strings.h.

References __ast_str_helper2().

Referenced by __ast_manager_event_multichan(), and ast_str_set().

813 {
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.

Definition at line 497 of file strings.h.

References ast_str::__AST_STR_STR, ast_str::__AST_STR_USED, len(), and typeof().

Referenced by __ast_manager_event_multichan(), __ast_verbose_ap(), __iax2_show_peers(), __queues_show(), __sip_pretend_ack(), __sip_reliable_xmit(), __sip_semi_ack(), __sip_xmit(), _macro_exec(), _sip_show_peer(), _sip_tcp_helper_thread(), acf_curl_helper(), acf_cut_exec(), acf_odbc_read(), acf_odbc_write(), action_createconfig(), action_status(), action_userevent(), add_cc_call_info_to_response(), add_ipv4_ie(), add_required_respheader(), add_rpid(), add_sdp(), add_timeval_ie(), ALLOC_COMMENT(), alloc_event(), aoc_display_decoded_debug(), aocmessage_get_unit_entry(), append_channel_vars(), ast_agi_send(), ast_aoc_manager_event(), ast_cc_agent_set_interfaces_chanvar(), ast_cli(), ast_eivr_getvariable(), ast_extension_state3(), ast_func_read(), ast_func_read2(), ast_http_send(), ast_log(), ast_odbc_ast_str_SQLGetData(), ast_parse_digest(), ast_realtime_encode_chunk(), ast_rtp_lookup_mime_multiple2(), ast_set_cc_interfaces_chanvar(), ast_sockaddr_stringify_fmt(), 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_translate_path_to_str(), ast_var_channels_table(), ast_xmldoc_build_arguments(), ast_xmldoc_build_seealso(), ast_xmldoc_printable(), astman_append(), authority_to_str(), base64_helper(), blacklist_read2(), build_peer(), caldav_request(), calendar_join_attendees(), cc_extension_monitor_init(), cc_generic_agent_start_monitoring(), cc_unique_append(), cdata(), cdr_handler(), chanavail_exec(), change_hold_state(), check_message_integrity(), cli_alias_passthrough(), cli_match_char_tree(), cli_odbc_read(), cli_odbc_write(), cli_prompt(), commit_exec(), config_curl(), config_pgsql(), config_text_file_load(), construct_pidf_body(), create_channel_name(), custom_log(), cut_internal(), dahdi_cc_callback(), dahdi_new(), data_provider_print_cli(), data_result_manager_output(), data_result_print_cli(), data_result_print_cli_node(), data_search_generate(), destroy_curl(), destroy_pgsql(), detect_disconnect(), do_magic_pickup(), do_notify(), dump_queue_members(), dumpchan_exec(), eivr_comm(), endelm(), exchangecal_get_events_between(), exchangecal_request(), exchangecal_write_event(), exec_exec(), fetch_icalendar(), finalize_content(), find_realtime(), find_table(), function_fieldnum_helper(), function_fieldqty_helper(), function_realtime_read(), function_realtime_readdestroy(), function_sippeer(), generate_uri(), get_pidf_body(), handle_call_token(), handle_cli_core_show_translation(), handle_cli_iax2_show_peer(), handle_cli_indication_show(), handle_dbget(), handle_end_element(), handle_getvariablefull(), handle_request_do(), handle_show_chanvar(), handle_showchan(), handle_statechange(), hashkeys_read(), hashkeys_read2(), http_post_callback(), iax_parse_ies(), initreqprep(), is_valid_uuid(), leave_voicemail(), listfilter(), load_column_config(), log_jack_status(), make_email_file(), manager_iax2_show_peer_list(), manager_log(), meetme_cmd_helper(), meetme_show_cmd(), odbc_log(), parse_request(), pbx_find_extension(), pbx_retrieve_variable(), peers_data_provider_get(), pgsql_log(), pgsql_reconnect(), print_uptimestr(), process_text_line(), read_raw_content_length(), realtime_curl(), realtime_ldap_base_ap(), realtime_multi_curl(), realtime_multi_odbc(), realtime_multi_pgsql(), realtime_odbc(), realtime_pgsql(), realtime_update2_handler(), realtimefield_read(), replace(), require_curl(), require_pgsql(), retrans_pkt(), rollback_exec(), run_station(), say_periodic_announcement(), security_event_cb(), send_eivr_event(), send_ews_request_and_parse(), send_request(), send_response(), sendmail(), sendpage(), sendtext_exec(), set2(), shift_pop(), show_channels_cb(), sig_pri_mcid_event(), sig_pri_start_pri(), sip_hangup(), sip_send_mwi_to_peer(), sip_show_sched(), sip_tcptls_read(), startelm(), store_curl(), store_pgsql(), string_tolower2(), string_toupper2(), substitute_escapes(), syslog_log(), system_exec_helper(), transmit_info_with_aoc(), transmit_invite(), transmit_notify_with_mwi(), transmit_state_notify(), tryexec_exec(), unshift_push(), update2_curl(), update2_ldap(), update2_odbc(), update2_pgsql(), update2_prepare(), update_caldav(), update_curl(), update_ewscal(), update_exchangecal(), update_ldap(), update_pgsql(), user_authority_to_str(), userevent_exec(), vars2manager(), xmldoc_build_field(), xmldoc_get_formatted(), xmldoc_get_syntax_cmd(), xmldoc_get_syntax_manager(), xmldoc_parse_cmd_enumlist(), xmldoc_parse_para(), xmldoc_parse_variable(), and xmldoc_string_wrap().

508 {
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.

Definition at line 989 of file strings.h.

Referenced by app_hash(), ast_channel_hash_cb(), ast_tone_zone_hash(), cache_hash(), calendar_hash_fn(), conference_bridge_hash_cb(), data_provider_hash(), dialog_hash_cb(), hint_hash(), lid_hash(), moh_class_hash(), parkinglot_hash_cb(), peer_hash_cb(), profile_cmp_fn(), pvt_hash_cb(), queue_hash_cb(), routes_cmp_fn(), sla_station_hash(), sla_trunk_hash(), tps_hash_cb(), and users_cmp_fn().

990 {
991  int hash = 5381;
992 
993  while (*str) {
994  hash = hash * 33 ^ tolower(*str++);
995  }
996 
997  return abs(hash);
998 }
const char * str
Definition: app_jack.c:144
int ast_str_copy_string ( struct ast_str **  dst,
struct ast_str src 
)
inline

Definition at line 606 of file strings.h.

Referenced by copy_request().

609 { \
struct ast_str * ast_str_create ( size_t  init_len)

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.

Definition at line 420 of file strings.h.

References ast_str::__AST_STR_LEN, ast_str::__AST_STR_STR, and ast_str::__AST_STR_USED.

Referenced by __ast_http_post_load(), __sip_reliable_xmit(), _macro_exec(), _sip_tcp_helper_thread(), acf_curl_helper(), acf_cut_exec(), action_status(), add_required_respheader(), aoc_display_decoded_debug(), ast_aoc_manager_event(), ast_cc_agent_set_interfaces_chanvar(), ast_func_read(), ast_http_auth(), ast_http_error(), ast_parse_digest(), ast_set_cc_interfaces_chanvar(), ast_str_substitute_variables_full(), ast_tcptls_client_create(), ast_tcptls_server_root(), ast_xmldoc_build_arguments(), ast_xmldoc_build_seealso(), ast_xmldoc_printable(), auth_http_callback(), caldav_get_events_between(), caldav_request(), caldav_write_event(), calendar_join_attendees(), cdr_handler(), cli_prompt(), config_text_file_load(), copy_request(), create_channel_name(), cut_internal(), data_provider_print_cli(), data_result_manager_output(), data_result_print_cli(), data_result_print_cli_node(), data_search_generate(), do_notify(), dump_queue_members(), ewscal_write_event(), exchangecal_get_events_between(), exchangecal_request(), exchangecal_write_event(), exec_exec(), fetch_icalendar(), find_realtime(), generic_http_callback(), get_ewscal_ids_for(), handle_dbget(), handle_getvariablefull(), handle_showchan(), handle_statechange(), handle_updates(), handle_uri(), httpstatus_callback(), iax_parse_ies(), init_appendbuf(), init_queue(), init_req(), init_resp(), leave_voicemail(), load_column_config(), load_config(), make_email_file(), meetme_cmd_helper(), meetme_show_cmd(), odbc_log(), parse_ewscal_id(), pbx_retrieve_variable(), pgsql_log(), pgsql_reconnect(), queue_set_param(), read_raw_content_length(), realtime_ldap_base_ap(), replace(), require_pgsql(), run_station(), send_eivr_event(), sendmail(), sendpage(), sig_pri_mcid_event(), sip_notify_allocate(), sip_tcptls_write(), sipsock_read(), startelm(), static_callback(), tryexec_exec(), update2_ldap(), update_caldav(), update_ldap(), userevent_exec(), xmldoc_get_formatted(), xmldoc_get_syntax_cmd(), xmldoc_get_syntax_manager(), xmldoc_parse_cmd_enumlist(), xmldoc_string_cleanup(), and xmldoc_string_wrap().

428 {
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

Definition at line 949 of file strings.h.

Referenced by alias_hash_cb(), ast_event_append_ie_str(), ast_event_hash_devstate(), ast_event_hash_devstate_change(), ast_event_hash_mwi(), ast_event_sub_append_ie_str(), data_filter_hash(), data_result_hash(), data_search_hash(), entry_hash_fn(), esc_hash_fn(), event_hash_fn(), generic_monitor_hash_fn(), group_hash_fn(), peer_hash_cb(), user_hash_cb(), and variable_count_hash_fn().

950 {
951  int hash = 5381;
952 
953  while (*str)
954  hash = hash * 33 ^ *str++;
955 
956  return abs(hash);
957 }
const char * str
Definition: app_jack.c:144
static force_inline int ast_str_hash_add ( const char *  str,
int  hash 
)
static

Compute a hash value on a string.

Parameters
[in]strThe string to add to the hash
[in]hashThe hash value to add to

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

Definition at line 974 of file strings.h.

Referenced by ast_event_hash_mwi().

975 {
976  while (*str)
977  hash = hash * 33 ^ *str++;
978 
979  return abs(hash);
980 }
const char * str
Definition: app_jack.c:144
int ast_str_make_space ( struct ast_str **  buf,
size_t  new_len 
)
inline
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()

Definition at line 874 of file strings.h.

References ast_str_append_va().

Referenced by __ast_http_post_load(), __ast_manager_event_multichan(), __queues_show(), __sip_reliable_xmit(), acf_curl_helper(), acf_curlopt_helper(), action_createconfig(), add_cc_call_info_to_response(), add_ipv4_ie(), add_rpid(), aocmessage_get_unit_entry(), ast_extension_state2(), ast_http_auth(), ast_http_error(), ast_parse_digest(), ast_realtime_encode_chunk(), ast_sched_report(), ast_sockaddr_stringify_fmt(), ast_str_encode_mime(), ast_str_expr(), ast_str_get_encoded_str(), ast_str_get_hint(), ast_str_quote(), ast_str_retrieve_variable(), ast_translate_path_to_str(), bs_to_exchange_bs(), build_peer(), caldav_write_event(), cc_extension_monitor_init(), cc_generic_agent_start_monitoring(), cdata(), cdr_handler(), check_auth(), cli_match_char_tree(), cli_odbc_read(), cli_prompt(), config_curl(), config_pgsql(), create_channel_name(), data_provider_print_cli(), data_result_manager_output(), destroy_curl(), destroy_pgsql(), do_magic_pickup(), do_notify(), encmethods_to_str(), encode_timestamp(), ewscal_write_event(), exchangecal_write_event(), file_count_line(), file_format(), find_realtime(), find_table(), function_fieldnum_helper(), function_fieldqty_helper(), generate_exchange_uuid(), generate_uri(), get_ewscal_ids_for(), handle_call_token(), handle_cli_core_show_translation(), handle_cli_indication_show(), handle_statechange(), handle_uri(), hashkeys_read(), hashkeys_read2(), iax_parse_ies(), init_queue(), init_req(), init_resp(), initreqprep(), leave_voicemail(), listfilter(), log_jack_status(), make_email_file(), meetme_cmd_helper(), meetme_show_cmd(), odbc_log(), parse_ewscal_id(), passthru(), pgsql_log(), pgsql_reconnect(), process_text_line(), queue_set_param(), read_raw_content_length(), realtime_curl(), realtime_multi_curl(), realtime_multi_pgsql(), realtime_odbc(), realtime_pgsql(), realtime_update2_handler(), replace(), require_curl(), require_pgsql(), run_station(), security_event_cb(), sendmail(), sendpage(), shift_pop(), sig_pri_start_pri(), sip_tcptls_write(), sipsock_read(), stackpeek_read(), startelm(), static_callback(), store_curl(), store_pgsql(), transmit_fake_auth_response(), unshift_push(), update2_curl(), update2_pgsql(), update2_prepare(), update_curl(), and update_pgsql().

890 {
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.

Definition at line 830 of file strings.h.

References __ast_str_helper2().

Referenced by acf_curl_helper(), and realtimefield_read().

834 {
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.

Definition at line 816 of file strings.h.

References __ast_str_helper2().

Referenced by ast_str_substitute_variables_full().

820 {
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.

Definition at line 792 of file strings.h.

References __ast_str_helper().

Referenced by __ast_verbose_ap(), ast_agi_send(), ast_cli(), ast_log(), ast_str_append_escapecommas(), and astman_append().

806 {
size_t ast_str_size ( const struct ast_str buf)
inline

Returns the current maximum length (without reallocation) of the current buffer.

Parameters
bufA pointer to the ast_str structure.
Return values
Currentmaximum length of the buffer.

Definition at line 482 of file strings.h.

References ast_str::__AST_STR_STR.

Referenced by add_sdp(), ast_func_read(), ast_func_read2(), ast_odbc_ast_str_SQLGetData(), ast_str_get_encoded_str(), base64_helper(), blacklist_read2(), handle_dbget(), load_config(), pbx_find_extension(), pgsql_reconnect(), realtime_multi_odbc(), realtime_odbc(), set2(), string_tolower2(), string_toupper2(), and WriteMemoryCallback().

490 {
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.

Definition at line 471 of file strings.h.

References ast_str::__AST_STR_LEN.

Referenced by __sip_reliable_xmit(), __sip_xmit(), _sip_tcp_helper_thread(), acf_curl_helper(), acf_odbc_read(), add_header(), add_required_respheader(), add_sdp(), ALLOC_COMMENT(), ast_agi_send(), ast_cli(), ast_http_send(), ast_str_encode_mime(), ast_str_expr(), ast_str_substitute_variables_full(), ast_str_substring(), ast_var_channels_table(), ast_xmldoc_build_arguments(), authority_to_str(), base64_helper(), blacklist_read2(), build_cc_interfaces_chanvar(), build_peer(), caldav_request(), cc_extension_monitor_init(), cdata(), chanavail_exec(), check_message_integrity(), commit_exec(), config_text_file_load(), copy_request(), cut_internal(), dump_queue_members(), encmethods_to_str(), endelm(), exchangecal_request(), fetch_icalendar(), finalize_content(), function_fieldnum_helper(), function_fieldqty_helper(), handle_dbget(), handle_end_element(), handle_request_cancel(), handle_request_do(), handle_show_chanvar(), hashkeys_read(), hashkeys_read2(), is_valid_uuid(), listfilter(), load_column_config(), load_config(), lws2sws(), manager_log(), manager_sipnotify(), odbc_log(), parse_request(), pgsql_log(), print_uptimestr(), realtime_multi_odbc(), realtime_odbc(), replace(), rollback_exec(), say_periodic_announcement(), send_ews_request_and_parse(), shift_pop(), sip_cli_notify(), sip_hangup(), sip_send_mwi_to_peer(), sip_tcptls_read(), system_exec_helper(), transmit_invite(), unshift_push(), update_caldav(), update_exchangecal(), user_authority_to_str(), WriteMemoryCallback(), xmldoc_build_field(), xmldoc_get_formatted(), and xmldoc_parse_variable().

479 {
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;
* ...
* }
*

Definition at line 669 of file strings.h.

References ast_str::__AST_STR_LEN, ast_str::__AST_STR_TS, and ast_str::__AST_STR_USED.

Referenced by __ast_manager_event_multichan(), __ast_verbose_ap(), acf_curl_helper(), acf_odbc_read(), acf_odbc_write(), action_userevent(), append_channel_vars(), ast_agi_send(), ast_cli(), ast_extension_state2(), ast_log(), ast_sockaddr_stringify_fmt(), astman_append(), check_auth(), cli_odbc_read(), cli_odbc_write(), commit_exec(), config_curl(), config_pgsql(), custom_log(), destroy_curl(), destroy_pgsql(), dumpchan_exec(), find_table(), function_fieldnum_helper(), function_fieldqty_helper(), handle_showchan(), listfilter(), pbx_find_extension(), realtime_curl(), realtime_multi_curl(), realtime_multi_odbc(), realtime_multi_pgsql(), realtime_odbc(), realtime_pgsql(), realtime_update2_handler(), realtimefield_read(), require_curl(), rollback_exec(), security_event_cb(), shift_pop(), store_curl(), store_pgsql(), substitute_escapes(), syslog_log(), system_exec_helper(), transmit_fake_auth_response(), unshift_push(), update2_curl(), update2_odbc(), update2_pgsql(), update2_prepare(), update_curl(), update_pgsql(), and vars2manager().

674 {
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.

Definition at line 461 of file strings.h.

References ast_str::__AST_STR_USED.

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

468 {
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.

Definition at line 521 of file strings.h.

Referenced by ast_xmldoc_build_arguments(), build_cc_interfaces_chanvar(), check_message_integrity(), xmldoc_get_formatted(), and xmldoc_string_wrap().

543 {
void ast_str_update ( struct ast_str buf)
inline

Update the length of the buffer, after using ast_str merely as a buffer.

Parameters
bufA pointer to the ast_str string.

Definition at line 446 of file strings.h.

References ast_str::__AST_STR_STR, and ast_str::__AST_STR_USED.

Referenced by ast_odbc_ast_str_SQLGetData(), ast_str_get_encoded_str(), ast_str_substring(), base64_helper(), blacklist_read2(), handle_dbget(), realtime_multi_odbc(), realtime_odbc(), string_tolower2(), and string_toupper2().

453 {
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.

Definition at line 155 of file strings.h.

Referenced by acf_if(), add_peer_mailboxes(), ast_callerid_parse(), ast_el_add_history(), ast_playtones_start(), ast_register_file_version(), ast_strip_quoted(), check_blacklist(), config_text_file_load(), eivr_comm(), load_column_config(), load_config(), load_dynamic_module(), parse_apps(), parse_cookies(), parse_events(), parse_sip_options(), pbx_builtin_background(), pbx_load_config(), process_text_line(), realtime_multi_odbc(), realtime_multi_pgsql(), realtime_odbc(), realtime_pgsql(), reload_config(), reload_single_member(), set(), sig_pri_msn_match(), sig_pri_start_pri(), and store_tone_zone_ring_cadence().

214 {
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, "[{(", "]})");

Definition at line 1431 of file utils.c.

References ast_strip().

Referenced by ast_callerid_parse(), ast_register_file_version(), get_rdnis(), iftime(), load_values_config(), parse_allowed_methods(), parse_cookies(), parse_dial_string(), and sip_parse_register_line().

1432 {
1433  char *e;
1434  char *q;
1435 
1436  s = ast_strip(s);
1437  if ((q = strchr(beg_quotes, *s)) && *q != '\0') {
1438  e = s + strlen(s) - 1;
1439  if (*e == *(end_quotes + (q - beg_quotes))) {
1440  s++;
1441  *e = '\0';
1442  }
1443  }
1444 
1445  return s;
1446 }
char * ast_strip(char *s)
Strip leading/trailing whitespace from a string.
Definition: strings.h:155
static force_inline int attribute_pure ast_strlen_zero ( const char *  s)
static

Definition at line 63 of file strings.h.

Referenced by __analog_handle_event(), __analog_ss_thread(), __ast_bridge_technology_register(), __ast_callerid_generate(), __ast_channel_alloc_ap(), __ast_cli_generator(), __ast_cli_register(), __ast_datastore_alloc(), __ast_http_load(), __ast_pbx_run(), __ast_request_and_dial(), __astman_get_header(), __has_voicemail(), __iax2_show_peers(), __init_manager(), __oh323_new(), __queues_show(), __set_address_from_contact(), __sip_subscribe_mwi_do(), __ssl_setup(), _macro_exec(), _sip_show_peer(), _sip_show_peers(), _sip_show_peers_one(), _skinny_show_devices(), _skinny_show_lines(), acf_curl_helper(), acf_if(), acf_isexten_exec(), acf_jabberreceive_read(), acf_mailbox_exists(), acf_meetme_info(), acf_odbc_read(), acf_odbc_write(), acf_rand_exec(), acf_retrieve_docs(), acf_strptime(), acf_transaction_read(), acf_transaction_write(), acf_version_exec(), acf_vmcount_exec(), action_add_agi_cmd(), action_agent_logoff(), action_agents(), action_aocmessage(), action_atxfer(), action_bridge(), action_challenge(), action_command(), action_coresettings(), action_coreshowchannels(), action_corestatus(), action_dahdidialoffhook(), action_dahdidndoff(), action_dahdidndon(), action_dahdishowchannels(), action_events(), action_extensionstate(), action_getconfig(), action_getconfigjson(), action_getvar(), action_hangup(), action_listcategories(), action_mailboxcount(), action_mailboxstatus(), action_meetmelist(), action_originate(), action_ping(), action_redirect(), action_sendtext(), action_setvar(), action_status(), action_timeout(), action_transfer(), action_transferhangup(), action_updateconfig(), action_waitevent(), actual_load_config(), add_agent(), add_calltoken_ignore(), add_cc_call_info_to_response(), add_diversion_header(), add_peer_mailboxes(), add_realm_authentication(), add_rpid(), add_sdp(), add_sip_domain(), admin_exec(), adsi_exec(), adsi_input_format(), adsi_message(), advanced_options(), aes_helper(), agent_hangup(), agentmonitoroutgoing_exec(), agents_show(), agents_show_online(), agi_exec_full(), agi_handle_command(), aji_join_exec(), aji_leave_exec(), aji_log_hook(), aji_send_exec(), aji_sendgroup_exec(), alarmreceiver_exec(), alsa_new(), analog_call(), analog_hangup(), analog_ss_thread(), answer_exec_enable(), aoc_create_ie_data(), aoc_create_ie_data_charging_rate(), aoc_parse_ie_charging_rate(), aocmessage_get_unit_entry(), app_exec(), append_mailbox(), append_mailbox_mapping(), append_transaction(), apply_general_options(), apply_options_full(), apply_outgoing(), apply_peer(), apply_plan_to_existing_number(), aqm_exec(), ast_add_extension2_lockopt(), ast_agi_register(), 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_getdata(), ast_app_getdata_full(), ast_app_group_get_count(), ast_app_group_match_get_count(), ast_app_group_set_channel(), ast_app_group_split_group(), ast_app_run_macro(), ast_app_run_sub(), ast_bridge_call(), ast_bridge_features_enable(), ast_bridge_features_register(), ast_bridge_timelimit(), ast_bt_get_symbols(), ast_build_timing(), ast_cc_is_recall(), ast_cdr_copy_vars(), ast_cdr_data_add_structure(), ast_cdr_fork(), ast_cdr_getvar(), ast_cdr_getvar_internal(), ast_cdr_merge(), ast_cdr_setaccount(), ast_cdr_setpeeraccount(), ast_cel_check_retire_linkedid(), ast_cel_fabricate_channel_from_event(), ast_cel_linkedid_ref(), ast_channel_cmp_cb(), ast_channel_connected_line_macro(), ast_channel_get_full(), ast_channel_hash_cb(), ast_channel_redirecting_macro(), ast_cli_complete(), ast_cli_perms_init(), ast_complete_channels(), ast_context_remove_extension_callerid2(), ast_data_add_password(), ast_data_add_str(), ast_db_gettree(), ast_dnsmgr_get_family(), ast_eivr_senddtmf(), ast_event_str_to_event_type(), ast_explicit_goto(), ast_false(), ast_frame_dump(), ast_get_encoded_char(), ast_get_enum(), ast_get_group(), ast_get_indication_zone(), ast_get_time_t(), ast_get_timeval(), ast_iax2_new(), ast_include_new(), ast_is_valid_string(), ast_jb_read_conf(), ast_linear_stream(), ast_load_realtime(), ast_makesocket(), ast_manager_register2(), ast_masq_park_call_exten(), ast_module_check(), ast_moh_files_next(), ast_monitor_change_fname(), ast_monitor_start(), ast_monitor_stop(), ast_odbc_sanity_check(), ast_park_call_exten(), ast_parse_arg(), ast_parse_digest(), ast_pbx_outgoing_app(), ast_pbx_outgoing_exten(), ast_pickup_call(), ast_playtones_start(), ast_privacy_set(), ast_readconfig(), ast_register_application2(), ast_register_indication(), ast_remotecontrol(), ast_rtp_engine_register2(), ast_rtp_glue_register2(), ast_rtp_instance_new(), ast_set_cc_agent_dialstring(), ast_set_cc_callback_macro(), ast_set_hangupsource(), ast_set_indication_country(), ast_set_owners_and_peers(), ast_speech_unregister(), ast_str_substitute_variables_full(), ast_stream_and_wait(), ast_taskprocessor_get(), AST_TEST_DEFINE(), ast_true(), ast_tzset(), ast_var_channels_table(), ast_variable_delete(), ast_variable_update(), ast_xmldoc_build_arguments(), ast_xmldoc_build_seealso(), ast_xmldoc_load_documentation(), astman_send_response_full(), async_wait(), asyncgoto_exec(), attempt_thread(), auth_exec(), auth_http_callback(), authenticate(), authenticate_reply(), authenticate_verify(), autoanswer_complete(), autopause2int(), background_detect_exec(), base64_helper(), begin_dial_channel(), bridge_exec(), build_channels(), build_contact(), build_device(), build_gateway(), build_mapping(), build_peer(), build_reply_digest(), build_route(), build_user(), builtin_atxfer(), builtin_automixmonitor(), builtin_automonitor(), cache_get_callno_locked(), caldav_add_event(), caldav_load_calendar(), caldav_request(), caldav_write_event(), calendar_busy_exec(), calendar_event_read(), calendar_query_exec(), calendar_query_result_exec(), calendar_write_exec(), calendarstate(), callerid_feed(), callerid_genmsg(), cb_events(), cc_esc_publish_handler(), cc_handle_publish_error(), cc_unique_append(), cdr_read(), cdr_write(), celgenuserevent_exec(), chan_misdn_log(), chanavail_exec(), change_monitor_action(), change_redirecting_information(), channel_admin_exec(), channel_iterator_search(), channel_spy(), chanspy_exec(), check_access(), check_auth(), check_blacklist(), check_day(), check_dow(), check_goto_on_transfer(), check_match(), check_month(), check_password(), check_peer_ok(), check_sip_domain(), check_timerange(), check_user_full(), cleaned_basedn(), clear_stats(), cli_alias_passthrough(), cli_console_dial(), cli_console_sendtext(), cli_odbc_read(), cli_odbc_write(), close_client(), commit_exec(), common_exec(), compare(), compile_script(), complete_number(), conf_exec(), conf_run(), confbridge_exec(), config_curl(), config_function_read(), config_ldap(), config_line(), config_module(), config_parse_variables(), config_text_file_load(), console_dial(), console_new(), console_sendtext(), controlplayback_exec(), copy_all_header(), copy_header(), copy_message(), copy_rules(), copy_via_headers(), count_exec(), create_addr(), create_addr_from_peer(), create_channel_name(), create_dynamic_parkinglot(), create_parkinglot(), create_queue_member(), create_vmaccount(), crement_function_read(), csv_log(), csv_quote(), custom_prepare(), dahdi_accept_r2_call_exec(), dahdi_handle_event(), dahdi_hangup(), dahdi_new(), dahdi_r2_get_channel_category(), dahdi_r2_set_context(), dahdi_read(), dahdi_send_callrerouting_facility_exec(), dahdi_send_keypad_facility_exec(), dahdi_show_channel(), dahdiscan_exec(), data_filter_find(), data_result_create(), database_increment(), deltree_exec(), destroy_endpoint(), destroy_pgsql(), destroy_trans(), determine_sip_publish_type(), determine_starting_point(), device_state_cb(), devstate_change_collector_cb(), devstate_write(), dial_exec_full(), dial_handle_playtones(), dialgroup_read(), dialgroup_refreshdb(), dialgroup_write(), dialout(), dictate_exec(), directory_exec(), disa_exec(), do_forward(), do_immediate_setup(), do_message(), do_monitor(), do_notify(), do_pause_or_unpause(), dump_cause(), dump_hint(), dumpchan_exec(), dundi_exec(), dundi_flags2str(), dundi_helper(), dundi_hint2str(), dundi_lookup_local(), dundi_query_read(), dundi_query_thread(), dundi_result_read(), dundi_show_mappings(), dundi_show_peer(), dundifunc_read(), enable_jack_hook(), enum_callback(), enum_query_read(), enum_result_read(), env_write(), ewscal_load_calendar(), exchangecal_load_calendar(), exchangecal_write_event(), exec_exec(), execif_exec(), expand_gosub_args(), export_ch(), extension_match_core(), extenspy_exec(), extract_uri(), extstate_read(), fast_originate(), feature_attended_transfer(), feature_blind_transfer(), feature_exec_app(), feature_interpret_helper(), feature_request_and_dial(), festival_exec(), fetch_icalendar(), fileexists_core(), filename_parse(), find_account(), find_call(), find_cli(), find_conf_realtime(), find_engine(), find_line_by_name(), find_or_create(), find_parkinglot(), find_realtime_gw(), find_sdp(), find_sip_method(), find_table(), findparkinglotname(), forkcdr_exec(), forward_message(), func_channel_read(), func_channels_read(), func_check_sipdomain(), func_header_read(), func_inheritance_write(), function_agent(), function_db_delete(), function_db_exists(), function_db_read(), function_db_write(), function_enum(), function_eval(), function_eval2(), function_fieldnum_helper(), function_realtime_read(), function_realtime_readdestroy(), function_realtime_store(), function_realtime_write(), function_txtcidname(), generic_fax_exec(), generic_recall(), get_also_info(), get_destination(), get_domain(), get_in_brackets_const(), get_in_brackets_full(), get_ip_and_port_from_sdp(), get_name_and_number(), get_name_from_variable(), get_pai(), get_queue_member_status(), get_range(), get_rdnis(), get_realm(), get_refer_info(), get_rpid(), get_sip_pvt_byid_locked(), get_timerange(), get_transport_str2enum(), gosub_exec(), gosubif_exec(), goto_exten(), group_count_function_read(), group_function_read(), group_function_write(), group_list_function_read(), group_match_count_function_read(), group_show_channels(), gtalk_create_candidates(), gtalk_new(), gtalk_parser(), gui_init(), handle_cc_notify(), handle_cc_subscribe(), handle_chanlist(), handle_cli_check_permissions(), handle_cli_config_reload(), handle_cli_core_show_translation(), handle_cli_devstate_change(), handle_cli_dialplan_save(), handle_cli_file_convert(), handle_cli_iax2_show_cache(), handle_cli_iax2_show_peer(), handle_cli_iax2_show_users(), handle_cli_realtime_pgsql_status(), handle_command_response(), handle_controlstreamfile(), handle_debug_dialplan(), handle_exec(), handle_getvariable(), handle_incoming(), handle_options(), handle_orig(), handle_playtones(), handle_pri_set_debug_file(), handle_queue_pause_member(), handle_queue_rule_show(), handle_request_bye(), handle_request_info(), handle_request_invite(), handle_request_invite_st(), handle_request_notify(), handle_request_options(), handle_request_publish(), handle_request_refer(), handle_request_subscribe(), handle_request_update(), handle_response(), handle_response_invite(), handle_response_notify(), handle_response_publish(), handle_response_refer(), handle_response_register(), handle_saydatetime(), handle_show_dialplan(), handle_soft_key_event_message(), handle_speechrecognize(), handle_stimulus_message(), handle_subscribe(), handle_updates(), handle_verbose(), handle_voicemail_show_users(), has_voicemail(), hashtab_compare_extens(), hint_hash(), hint_read(), httpd_helper_thread(), iax2_call(), iax2_datetime(), iax2_devicestate(), iax2_prov_app(), iax2_request(), iax_check_version(), iax_firmware_append(), iax_provflags2str(), ical_load_calendar(), icalendar_add_event(), ices_exec(), iconv_read(), iftime(), import_helper(), inboxcount2(), init_acf_query(), init_jack_data(), initialize_cc_max_requests(), initreqprep(), insert_penaltychange(), inspect_module(), internal_dnsmgr_lookup(), is_argument(), is_prefix(), is_valid_tone_zone(), isAnsweringMachine(), isexten_function_read(), jack_exec(), jb_choose_impl(), jingle_create_candidates(), jingle_new(), key_dial_page(), key_main_page(), kill_dead_queues(), launch_asyncagi(), launch_monitor_thread(), launch_netscript(), ldap_reconnect(), ldap_table_config_add_attribute(), leave_voicemail(), load_column_config(), load_config(), load_dynamic_module(), load_indications(), load_module(), load_moh_classes(), load_odbc_config(), load_values_config(), local_ast_moh_start(), local_attended_transfer(), log_events(), log_exec(), logger_print_normal(), login_exec(), loopback_parse(), lua_get_variable(), lua_get_variable_value(), main(), make_dir(), make_email_file(), make_filename(), make_fn(), make_logchannel(), man_do_variable_value(), manage_parked_call(), manager_add_queue_member(), manager_data_get(), manager_dbdel(), manager_dbdeltree(), manager_dbget(), manager_dbput(), manager_iax2_show_peer_list(), manager_iax2_show_peers(), manager_iax2_show_registry(), manager_jabber_send(), manager_list_voicemail_users(), manager_modulecheck(), manager_moduleload(), manager_mute_mixmonitor(), manager_mutestream(), manager_optimize_away(), manager_park(), manager_parking_status(), manager_pause_queue_member(), manager_play_dtmf(), manager_queue_log_custom(), manager_queue_member_penalty(), manager_queue_rule_show(), manager_queues_status(), manager_queues_summary(), manager_remove_queue_member(), manager_show_dialplan(), manager_show_dialplan_helper(), manager_show_registry(), manager_sip_qualify_peer(), manager_sip_show_peer(), manager_sip_show_peers(), manager_sipnotify(), manager_skinny_show_device(), manager_skinny_show_devices(), manager_skinny_show_line(), manager_skinny_show_lines(), mark_dead_and_unfound(), mark_parsed_methods(), match_req_to_dialog(), matchcid(), math(), md5(), meetmemute(), message_template_find(), message_template_parse_filebody(), mgcp_call(), mgcp_hangup(), mgcp_new(), mgcp_prune_realtime_gateway(), mgcp_request(), mgcp_ss(), mgcpsock_read(), milliwatt_exec(), minivm_accmess_exec(), minivm_account_func_read(), minivm_counter_func_read(), minivm_counter_func_write(), minivm_delete_exec(), minivm_greet_exec(), minivm_mwi_exec(), minivm_notify_exec(), minivm_record_exec(), misdn_answer(), misdn_call(), misdn_cfg_update_ptp(), misdn_check_l2l1(), misdn_facility_exec(), misdn_new(), misdn_overlap_dial_task(), misdn_request(), misdn_set_opt_exec(), mixmonitor_exec(), mkintf(), monitor_dial(), morsecode_exec(), mp3_exec(), multicast_rtp_request(), nbs_alloc(), new_outgoing(), next_node_name(), notify_message(), notify_new_message(), odbc_log(), oh323_call(), oh323_request(), oldest_linkedid(), onedigit_goto(), orig_app(), orig_exten(), originate_exec(), osp_auth(), osp_convert_inout(), osp_convert_outin(), osp_get_varfloat(), osp_get_varint(), osp_lookup(), osp_report_qos(), ospauth_exec(), ospfinished_exec(), osplookup_exec(), ospnext_exec(), oss_call(), oss_new(), page_exec(), park_call_exec(), park_call_full(), park_space_reserve(), parkandannounce_exec(), parked_call_exec(), parkinglot_config_read(), parse(), parse_allowed_methods(), parse_apps(), parse_config(), parse_cookies(), parse_dial_string(), parse_events(), parse_minse(), parse_moved_contact(), parse_register_contact(), parse_request(), parse_session_expires(), parse_sip_options(), parse_tag(), parse_uri_full(), parse_via(), ParseBookmark(), pbx_builtin_answer(), pbx_builtin_background(), pbx_builtin_execiftime(), pbx_builtin_gotoif(), pbx_builtin_gotoiftime(), pbx_builtin_hangup(), pbx_builtin_importvar(), pbx_builtin_incomplete(), pbx_builtin_resetcdr(), pbx_builtin_saydate(), pbx_builtin_saynumber(), pbx_builtin_saytime(), pbx_builtin_setvar(), pbx_builtin_setvar_multiple(), pbx_builtin_waitexten(), pbx_checkcondition(), pbx_exec(), pbx_extension_helper(), pbx_find_extension(), pbx_load_config(), pbx_load_users(), pbx_parseable_goto(), pbx_set_overrideswitch(), pbx_substitute_variables_helper_full(), peek_read(), peer_mailboxes_to_str(), pgsql_reconnect(), phone_call(), phone_new(), pickup_exec(), pickupchan_exec(), pidf_validate_presence(), play_file(), play_mailbox_owner(), play_message(), play_message_callerid(), play_message_category(), play_message_datetime(), play_moh_exec(), play_record_review(), playback_exec(), poll_subscribed_mailboxes(), port_str2int(), post_cdr(), pqm_exec(), prep_email_sub_vars(), pri_dchannel(), pri_ss_thread(), print_ext(), print_frame(), print_message(), privacy_exec(), proc_422_rsp(), process_applicationmap_line(), process_ast_dsp(), process_dahdi(), process_echocancel(), process_message(), process_message_callback(), process_sdp(), process_sdp_o(), process_text_line(), process_token(), proxy_from_config(), ql_exec(), queue_exec(), queue_function_exists(), queue_function_memberpenalty_read(), queue_function_memberpenalty_write(), queue_function_qac(), queue_function_qac_dep(), queue_function_queuememberlist(), queue_function_queuememberpaused(), queue_function_queuememberstatus(), queue_function_queuewaitingcount(), queue_function_var(), queue_mwi_event(), queue_reload_request(), queues_data_provider_get(), quote(), rcv_mac_addr(), rcvfax_exec(), read_agent_config(), read_config(), read_exec(), readexten_exec(), readfile_exec(), real_ctx(), really_quit(), realtime_common(), realtime_curl(), realtime_directory(), realtime_exec(), realtime_ldap_entry_to_var(), realtime_ldap_result_to_vars(), realtime_ldap_status(), realtime_multi_curl(), realtime_multi_odbc(), realtime_multi_pgsql(), realtime_odbc(), realtime_pgsql(), realtime_update_peer(), realtimefield_read(), receive_ademco_contact_id(), receivefax_exec(), record_exec(), recordthread(), register_exten(), register_peer_exten(), register_verify(), registry_rerequest(), reload_config(), reload_followme(), reload_queue_members(), reload_queues(), reload_single_member(), remove_members_and_mark_unfound(), replace(), reply_digest(), reqprep(), requirecalltoken_mark_auto(), respprep(), retrydial_exec(), ring_entry(), rollback_exec(), rotate_file(), rqm_exec(), rt_handle_member_record(), rtcp_do_debug_ip(), rtp_do_debug_ip(), run_agi(), run_externnotify(), saycountedadj_exec(), saycountednoun_exec(), sdl_setup(), sdp_crypto_offer(), search_directory(), search_directory_sub(), select_item_pause(), SendDialTone(), senddtmf_exec(), sendfax_exec(), sendimage_exec(), sendmail(), sendpage(), sendurl_exec(), set(), set_bridge_features_on_config(), set_callforwards(), set_config(), set_insecure_flags(), set_local_info(), set_member_paused(), set_member_penalty(), set_moh_exec(), set_nonce_randdata(), setup_dahdi_int(), setup_incoming_call(), setup_privacy_args(), setup_stunaddr(), sha1(), shared_read(), shared_write(), shell_helper(), shift_pop(), show_main_page(), sig_pri_aoc_d_from_ast(), sig_pri_aoc_e_from_ast(), sig_pri_aoc_s_from_ast(), sig_pri_call(), sig_pri_extract_called_num_subaddr(), sig_pri_handle_subcmds(), sig_pri_hangup(), sig_pri_msn_match(), sig_pri_mwi_event_cb(), sig_pri_party_name_from_ast(), sig_pri_party_number_from_ast(), sig_pri_party_subaddress_from_ast(), sig_pri_set_caller_id(), sig_pri_start_pri(), sip_acf_channel_read(), sip_addheader(), sip_alloc(), sip_call(), sip_cc_agent_respond(), sip_cc_monitor_suspend(), sip_cc_monitor_unsuspend(), sip_get_cc_information(), sip_new(), sip_parse_host(), sip_parse_register_line(), sip_pidf_validate(), sip_poke_peer(), sip_prepare_socket(), sip_removeheader(), sip_request_call(), sip_send_mwi_to_peer(), sip_show_channel(), sip_show_registry(), sip_show_settings(), sip_show_user(), sip_sipredirect(), sip_subscribe_mwi(), sip_uri_cmp(), sip_uri_headers_cmp(), sip_uri_params_cmp(), skel_exec(), skinny_hold(), skinny_new(), skinny_register(), skinny_request(), skinny_ss(), sla_build_station(), sla_build_trunk(), sla_check_device(), sla_queue_event_conf(), sla_station_destructor(), sla_station_exec(), sla_trunk_destructor(), sla_trunk_exec(), smdi_msg_find(), smdi_msg_read(), smdi_msg_retrieve_read(), sms_exec(), sndfax_exec(), socket_process(), softhangup_exec(), spawn_mp3(), speech_background(), split_ext(), srv_query_read(), srv_result_read(), stackpeek_read(), start_monitor_action(), start_monitor_exec(), static_callback(), stop_monitor_action(), store_config(), strings_to_mask(), substituted(), sysinfo_helper(), system_exec_helper(), testclient_exec(), testserver_exec(), transfer_exec(), transmit_cfwdstate(), transmit_fake_auth_response(), transmit_info_with_aoc(), transmit_invite(), transmit_modify_request(), transmit_modify_with_sdp(), transmit_notify_request(), transmit_notify_request_with_callerid(), transmit_refer(), transmit_register(), transmit_request_with_auth(), try_calling(), try_firmware(), tryexec_exec(), unalloc_sub(), unistim_new(), unistim_request(), unistim_send_mwi_to_peer(), unregister_exten(), unshift_push(), update_bridge_vars(), update_connectedline(), update_odbc(), update_realtime_member_field(), update_registry(), upqm_exec(), uridecode(), uriencode(), userevent_exec(), users_data_provider_get(), valid_exit(), verbose_exec(), vm_authenticate(), vm_box_exists(), vm_exec(), vm_execmain(), vm_newuser(), vm_options(), vmauthenticate(), vmsayname_exec(), vmu_tm(), volume_write(), wait_for_answer(), wait_for_hangup(), wait_for_winner(), waituntil_exec(), word_match(), write_metadata(), xfer_park_call_helper(), xml_translate(), xmldoc_build_field(), xmldoc_get_node(), xmldoc_get_syntax_fun(), xmldoc_parse_specialtags(), and zapateller_exec().

64 {
65  return (!s || (*s == '\0'));
66 }
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

Definition at line 939 of file strings.h.

Referenced by ast_event_append_ie_str(), ast_event_sub_append_ie_str(), create_new_generic_list(), find_generic_monitor_instance_list(), match_ie_val(), and match_sub_ie_val_to_event().

950 {
char * ast_trim_blanks ( char *  str)
inline

Trims trailing whitespace characters from a string.

Parameters
strthe input string
Returns
a pointer to the modified string

Definition at line 122 of file strings.h.

References str.

Referenced by apply_outgoing(), ast_skip_nonblanks(), callerid_write(), connectedline_write(), determine_firstline_parts(), do_say(), httpd_helper_thread(), keypad_setup(), party_id_write(), party_name_write(), party_number_write(), party_subaddress_write(), redirecting_write(), and xml_translate().

131 {
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.

Definition at line 1533 of file utils.c.

References ast_strlen_zero().

Referenced by __ast_http_load(), __ast_udptl_reload(), __init_manager(), _parse(), acf_curlopt_write(), acf_faxopt_write(), acf_transaction_write(), action_agent_logoff(), action_bridge(), action_originate(), action_updateconfig(), actual_load_config(), aji_create_client(), aji_load_config(), aoc_cli_debug_enable(), apply_general_options(), apply_option(), apply_outgoing(), ast_bridge_timelimit(), ast_jb_read_conf(), ast_plc_reload(), ast_readconfig(), ast_tls_read_conf(), autopause2int(), build_device(), build_gateway(), build_peer(), build_user(), config_parse_variables(), dahdi_accept_r2_call_exec(), dahdi_r2_answer(), dahdi_set_dnd(), data_search_cmp_bool(), do_reload(), festival_exec(), func_channel_write_real(), func_inheritance_write(), func_mute_write(), get_encrypt_methods(), gtalk_load_config(), handle_common_options(), handle_logger_set_level(), handle_mfcr2_call_files(), handle_t38_options(), init_logger_chain(), jingle_load_config(), load_config(), load_config_meetme(), load_module(), load_modules(), load_moh_classes(), load_odbc_config(), local_ast_moh_start(), login_exec(), manager_add_queue_member(), manager_mutestream(), manager_pause_queue_member(), message_template_build(), misdn_answer(), odbc_load_module(), osp_load(), osplookup_exec(), parkinglot_config_read(), parse_config(), parse_empty_options(), pbx_load_config(), pbx_load_users(), process_config(), process_dahdi(), process_echocancel(), queue_set_global_params(), queue_set_param(), read_agent_config(), realtime_directory(), reload_config(), rtp_reload(), run_startup_commands(), search_directory(), search_directory_sub(), set_active(), set_config(), sla_load_config(), smdi_load(), speex_write(), stackpeek_read(), start_monitor_action(), strings_to_mask(), tds_load_module(), update_common_options(), xmldoc_get_syntax_cmd(), xmldoc_get_syntax_fun(), and xmldoc_get_syntax_manager().

1534 {
1535  if (ast_strlen_zero(s))
1536  return 0;
1537 
1538  /* Determine if this is a true value */
1539  if (!strcasecmp(s, "yes") ||
1540  !strcasecmp(s, "true") ||
1541  !strcasecmp(s, "y") ||
1542  !strcasecmp(s, "t") ||
1543  !strcasecmp(s, "1") ||
1544  !strcasecmp(s, "on"))
1545  return -1;
1546 
1547  return 0;
1548 }
static force_inline int attribute_pure ast_strlen_zero(const char *s)
Definition: strings.h:63
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.

Definition at line 1467 of file utils.c.

Referenced by ast_parse_digest().

1468 {
1469  char c, *ret, *dst;
1470 
1471  if (src == NULL)
1472  return NULL;
1473  for (ret = dst = src; (c = *src++); *dst++ = c ) {
1474  if (c != '\\')
1475  continue; /* copy char at the end of the loop */
1476  switch ((c = *src++)) {
1477  case '\0': /* special, trailing '\' */
1478  c = '\\';
1479  break;
1480  case 'b': /* backspace */
1481  c = '\b';
1482  break;
1483  case 'f': /* form feed */
1484  c = '\f';
1485  break;
1486  case 'n':
1487  c = '\n';
1488  break;
1489  case 'r':
1490  c = '\r';
1491  break;
1492  case 't':
1493  c = '\t';
1494  break;
1495  }
1496  /* default, use the char literally */
1497  }
1498  *dst = '\0';
1499  return ret;
1500 }
char* ast_unescape_semicolon ( char *  s)

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

Returns
The stripped string.

Definition at line 1448 of file utils.c.

Referenced by sip_cli_notify().

1449 {
1450  char *e;
1451  char *work = s;
1452 
1453  while ((e = strchr(work, ';'))) {
1454  if ((e > work) && (*(e-1) == '\\')) {
1455  memmove(e - 1, e, strlen(e) + 1);
1456  work = e;
1457  } else {
1458  work = e + 1;
1459  }
1460  }
1461 
1462  return s;
1463 }