Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

octstr.h File Reference

#include <stdio.h>
#include <stdarg.h>
#include "list.h"

Include dependency graph for octstr.h:

Include dependency graph

This graph shows which files directly or indirectly include this file:

Included by dependency graph

Go to the source code of this file.

Defines

#define octstr_create(cstr)   (Octstr*)gw_claim_area(octstr_create_real((cstr), __FILE__, __LINE__, __func__))
#define octstr_create_from_data(data, len)   (Octstr*)gw_claim_area(octstr_create_from_data_real((data), (len), __FILE__, __LINE__, __func__))
#define octstr_create_from_data_trace(data, len, file, line, func)   (Octstr*)gw_claim_area(octstr_create_from_data_real(data, len, file, line, func))
#define octstr_copy(ostr, from, len)   gw_claim_area(octstr_copy_real((ostr), (from), (len), __FILE__, __LINE__, __func__))
#define octstr_duplicate(ostr)   gw_claim_area(octstr_duplicate_real((ostr), __FILE__, __LINE__, __func__))
#define octstr_get_cstr(ostr)   (octstr_get_cstr_real(ostr, __FILE__, __LINE__, __func__))
#define octstr_dump(ostr, level,)   octstr_dump_real(ostr, level, GW_DEBUG, ##__VA_ARGS__)
#define octstr_format_valist(fmt, args)   gw_claim_area(octstr_format_valist_real(fmt, args))

Typedefs

typedef Octstr Octstr
typedef int(* octstr_func_t )(int)

Functions

void octstr_init (void)
void octstr_shutdown (void)
Octstroctstr_create_real (const char *cstr, const char *file, long line, const char *func)
Octstroctstr_create_from_data_real (const char *data, long len, const char *file, long line, const char *func)
Octstroctstr_imm (const char *cstr)
void octstr_destroy (Octstr *ostr)
void octstr_destroy_item (void *os)
long octstr_len (const Octstr *ostr)
Octstroctstr_copy_real (const Octstr *ostr, long from, long len, const char *file, long line, const char *func)
Octstroctstr_duplicate_real (const Octstr *ostr, const char *file, long line, const char *func)
Octstroctstr_cat (Octstr *ostr1, Octstr *ostr2)
int octstr_get_char (const Octstr *ostr, long pos)
void octstr_set_char (Octstr *ostr, long pos, int ch)
void octstr_get_many_chars (char *buf, Octstr *ostr, long pos, long len)
char * octstr_get_cstr_real (const Octstr *ostr, const char *file, long line, const char *func)
void octstr_append_from_hex (Octstr *ostr, char *hex)
void octstr_binary_to_hex (Octstr *ostr, int uppercase)
int octstr_hex_to_binary (Octstr *ostr)
void octstr_binary_to_base64 (Octstr *ostr)
void octstr_base64_to_binary (Octstr *ostr)
long octstr_parse_long (long *number, Octstr *ostr, long pos, int base)
long octstr_parse_double (double *number, Octstr *ostr, long pos)
int octstr_check_range (Octstr *ostr, long pos, long len, octstr_func_t filter)
void octstr_convert_range (Octstr *ostr, long pos, long len, octstr_func_t map)
void octstr_convert_printable (Octstr *ostr)
int octstr_compare (const Octstr *ostr1, const Octstr *ostr2)
int octstr_case_compare (const Octstr *ostr1, const Octstr *ostr2)
int octstr_ncompare (const Octstr *ostr1, const Octstr *ostr2, long n)
int octstr_str_compare (const Octstr *ostr1, const char *str)
int octstr_str_case_compare (const Octstr *ostr1, const char *str)
int octstr_str_ncompare (const Octstr *ostr, const char *str, long n)
int octstr_print (FILE *f, Octstr *ostr)
int octstr_search_char (const Octstr *ostr, int ch, long pos)
int octstr_search_chars (const Octstr *ostr, const Octstr *chars, long pos)
int octstr_search (const Octstr *haystack, const Octstr *needle, long pos)
int octstr_case_search (const Octstr *haystack, const Octstr *needle, long pos)
int octstr_case_nsearch (const Octstr *haystack, const Octstr *needle, long pos, long n)
int octstr_pretty_print (FILE *f, Octstr *ostr)
int octstr_write_to_socket (int socket, Octstr *ostr)
long octstr_write_data (Octstr *ostr, int fd, long from)
int octstr_append_from_socket (Octstr *ostr, int socket)
void octstr_insert (Octstr *ostr1, const Octstr *ostr2, long pos)
void octstr_insert_data (Octstr *ostr, long pos, const char *data, long len)
void octstr_insert_char (Octstr *ostr, long pos, const char c)
void octstr_append_data (Octstr *ostr, const char *data, long len)
void octstr_append (Octstr *ostr1, const Octstr *ostr2)
void octstr_append_cstr (Octstr *ostr, const char *cstr)
void octstr_append_char (Octstr *ostr, int ch)
void octstr_truncate (Octstr *ostr, int new_len)
void octstr_strip_blanks (Octstr *ostr)
void octstr_strip_crlfs (Octstr *ostr)
void octstr_strip_nonalphanums (Octstr *ostr)
void octstr_shrink_blanks (Octstr *ostr)
void octstr_delete (Octstr *ostr1, long pos, long len)
Octstroctstr_read_file (const char *filename)
Octstroctstr_read_pipe (FILE *f)
Listoctstr_split_words (const Octstr *ostr)
Listoctstr_split (const Octstr *os, const Octstr *sep)
int octstr_item_match (void *item, void *pattern)
int octstr_item_case_match (void *item, void *pattern)
void octstr_dump_real (const Octstr *ostr, int level,...)
void octstr_dump_short (Octstr *ostr, int level, const char *name)
int octstr_url_decode (Octstr *ostr)
void octstr_url_encode (Octstr *ostr)
long octstr_get_bits (Octstr *ostr, long bitpos, int numbits)
void octstr_set_bits (Octstr *ostr, long bitpos, int numbits, unsigned long value)
void octstr_append_uintvar (Octstr *ostr, unsigned long value)
long octstr_extract_uintvar (Octstr *ostr, unsigned long *value, long pos)
void octstr_append_decimal (Octstr *ostr, long value)
Octstroctstr_format (const char *fmt,...)
Octstroctstr_format_valist_real (const char *fmt, va_list args)
void octstr_format_append (Octstr *os, const char *fmt,...)
unsigned long octstr_hash_key (Octstr *ostr)
int octstr_recode (Octstr *tocode, Octstr *fromcode, Octstr *orig)
void octstr_strip_char (Octstr *text, char ch)
int octstr_isnum (Octstr *ostr1)
void octstr_replace (Octstr *haystack, Octstr *needle, Octstr *repl)
int octstr_symbolize (Octstr *ostr)
void octstr_delete_matching (Octstr *haystack, Octstr *needle)
int octstr_is_all_hex (Octstr *os)
void octstr_convert_to_html_entities (Octstr *input)
void octstr_convert_from_html_entities (Octstr *input)


Define Documentation

#define octstr_copy ostr,
from,
len   )     gw_claim_area(octstr_copy_real((ostr), (from), (len), __FILE__, __LINE__, __func__))
 

Definition at line 178 of file octstr.h.

Referenced by at2_pdu_decode_deliver_sm(), at2_pdu_decode_report_sm(), at2_pdu_extract(), at2_read_line(), at2_read_pending_incoming_messages(), cfg_read(), check_reversible(), check_variable_syntax(), client_read_status(), copy_until_assign(), copy_until_coma(), copy_until_nul(), data_sm_to_msg(), date_parse_http(), decode_type(), eat_string_parm(), extract_msgdata_part(), find_charset_encoding(), get_fields(), get_header_value(), get_mime_boundary(), get_tag(), get_variable(), handle_dlr(), handle_operation(), http_get_header_parameter(), http_header_add_element(), http_header_get(), http_header_value(), httpd_serve(), main(), msg_to_bb(), octstr_convert_from_html_entities(), octstr_split(), octstr_split_by_pos(), oisd_accept_delivery_report_message(), oisd_accept_message(), oisd_get_packet(), pack_challenge(), pack_credentials(), pack_warning(), packet_add_parm(), packet_encode_message(), packet_extract(), packet_get_parm(), parm_parse(), parse_attr_value(), parse_attribute(), parse_cgivars(), parse_charset(), parse_data(), parse_get_line(), parse_get_nul_string(), parse_get_octets(), parse_get_seperated_block(), parse_st_octet_string(), parse_string(), parse_url(), parse_xml_tag(), pass_field_name(), pass_field_value(), pdu_to_msg(), radius_authenticate_pdu(), read_line(), read_msg(), sema_submit_msg(), set_charset(), smsbox_req_handle(), soap_fetch_xml_data(), soap_format_xml(), split_headers(), unlocked_get(), unpack_tpis(), urltrans_fill_escape_codes(), wap_map_url(), wsp_cap_unpack_list(), wsp_strip_parameters(), wtp_pack_sar_result(), and wtp_unpack_wdp_datagram().

#define octstr_create cstr   )     (Octstr*)gw_claim_area(octstr_create_real((cstr), __FILE__, __LINE__, __func__))
 

Definition at line 125 of file octstr.h.

Referenced by accept_escaped(), add_content_type(), at2_check_sms_memory(), at2_close_device(), at2_convertpdu(), at2_encode7bituncompressed(), at2_encode8bituncompressed(), at2_flush_buffer(), at2_format_address_field(), at2_init_device(), at2_pdu_decode_deliver_sm(), at2_pdu_decode_report_sm(), at2_pdu_encode(), at2_read_modems(), at2_send_one_message(), at2_wait_line(), at2_wait_modem_command(), attr_dict_construct(), bb_alog_sms(), bb_print_status(), bb_smscconn_send_failed(), bb_smscconn_sent(), boxc_sent_pop(), boxc_sent_push(), boxc_status(), brunet_receive_sms(), brunet_send_sms(), build_response(), cgw_handle_op(), cgwop_create(), cgwop_tostr(), charset_gsm_to_utf8(), charset_utf8_to_gsm(), check_args(), check_comparisons(), check_data_content_type_header(), cimd2_submit_msg(), cimd_receive_msg(), cimd_submit_msg(), clickatell_receive_sms(), clickatell_send_sms(), client(), client_thread(), conn_wrap_fd(), convert(), convert_content(), convert_q_value(), create_onetrans(), date_format_http(), decode_binary_data(), deconvert_content(), delayed_http_reply(), describe_code(), dlr_add(), dlr_mysql_get(), emi2_handle_smscreq(), emimsg_create_reply(), emimsg_tostring(), encode_binary_data(), entity_create(), expand_file(), fix_boundary_element(), generic_parse_reply(), get_data(), get_pattern(), get_tag(), get_variable(), get_x_kannel_from_xml(), gsm2number(), gw_regex_error(), gw_regex_subst_pre_real(), gw_regex_subst_real(), handle_dlr(), handle_login(), handle_operation(), handle_pdu(), handle_transaction(), hash_create(), html_to_sms(), http_header_get(), http_header_get_content_type(), http_header_pack(), http_something_accepted(), http_thread(), httpd_check_authorization(), httpd_check_status(), httpd_flush_dlr(), httpd_isolate(), httpd_loglevel(), httpd_restart(), httpd_restart_smsc(), httpd_resume(), httpd_serve(), httpd_shutdown(), httpd_stop_smsc(), httpd_suspend(), init_bearerbox(), init_smsbox(), kannel_parse_reply(), kannel_receive_sms(), kannel_send_sms(), main(), main_connection_loop(), main_loop(), make_close_delimiter(), make_confirmedpush_pdu(), make_emi31(), make_emi60(), make_part_delimiter(), make_push_pdu(), make_resume_reply_pdu(), make_start_delimiter(), md5digest(), mime_decompile(), mime_entity_dump_real(), mime_entity_to_octstr(), mime_something_to_entity(), msg_pack(), msg_to_cgwop(), msg_to_emimsg(), msg_to_pdu(), normalize_charset(), numhash_create(), obey_request(), obey_request_thread(), octstr_append_from_hex(), octstr_cat(), octstr_copy_real(), octstr_format_valist_real(), octstr_read_file(), octstr_read_pipe(), ois_adjust_sm_text(), oisd_expand_gsm7(), oisd_shrink_gsm7(), oisd_submit_msg(), open_receiver(), open_transceiver(), open_transmitter(), operation_name(), ota_compile(), ota_pack_push_headers(), ota_pack_udh(), ota_tokenize_bookmarks(), ota_tokenize_settings(), pack_7bit(), pack_accept(), pack_accept_charset(), pack_accept_language(), pack_appid_list(), pack_cache_control(), pack_challenge(), pack_content_disposition(), pack_content_range(), pack_credentials(), pack_pragma(), pack_range_value(), pack_server_address(), pack_udhdata(), pack_warning(), packet_add_int_parm(), packet_create(), packet_display_error(), packet_encode_message(), pap_convert_content(), parse_array_element(), parse_attribute(), parse_client_specifier(), parse_cookie(), parse_data_element(), parse_document(), parse_element(), parse_entities(), parse_fault_element(), parse_member_element(), parse_methodcall_element(), parse_methodresponse_element(), parse_ota_syncsettings(), parse_param_element(), parse_params_element(), parse_rawmessage_to_msg(), parse_st_octet_string(), parse_struct_element(), parse_url(), parse_value_element(), pass_extension_headers(), pass_optional_header(), prepend_catenation_udh(), push_content_create(), radius_acct_init(), radius_attr_pack(), radius_pdu_pack(), radius_type_convert(), randomize(), reply_known_capabilities(), return_reply(), run_batch(), run_connects(), sema_decode_msg(), sema_encode_msg(), sema_receive_msg(), send_logoff(), send_messages(), send_smpp_thread(), sendsms_thread(), server(), set_charset(), set_cookies(), setup_official_name(), si_compile(), simple_binary_create(), sl_compile(), smasi_pdu_pack(), smpp_emu_writer(), smpp_pdu_pack(), sms_send(), smsbox_req_handle(), smsbox_req_sendota(), smsbox_req_sendsms(), smsbox_sendota_post(), smsbox_sendsms_post(), smsbox_thread(), smsc2_rout(), smsc2_status(), smsc_at2_create(), smsc_cgw_create(), smsc_cimd2_create(), smsc_emi2_create(), smsc_fake_create(), smsc_oisd_create(), smsc_open(), smsc_smasi_create(), smsc_soap_create(), smsc_wrapper_create(), soap_bouyg_content_attribute(), soap_create_map(), soap_fetch_xml_data(), soap_format_xml(), soap_map_xml_data(), soap_mobitai_content_attribute(), soap_msgdata_deps(), soap_o2o_dlrmask_smsc_yn_attribute(), soap_o2o_dlrmask_success_01_attribute(), soap_o2o_msgdata_attribute(), soap_parse_dlr(), soap_parse_mo(), soap_read_response(), soap_release_dependences(), soap_send_loop(), soap_server(), soap_write_date(), soap_xmlnode_get_octstr(), start_fetch(), start_request(), store_file_status(), store_spool_save(), store_spool_status(), store_to_dict(), store_uuid(), string_table_apply(), tokenize_date(), udp_addwdp_from_server(), udpc_create(), unpack_challenge(), unpack_parameter(), unpack_range_value(), unpack_warning_value(), urltrans_fill_escape_codes(), urltrans_get_pattern(), wap_map_url_config(), wap_map_url_config_device_home(), wap_msg_send(), wapbox_start(), wdp_create(), wml_binary_create(), wml_charsets(), wml_compile(), wsp_cap_pack_list(), wsp_encoding_version_to_string(), wsp_headers_pack(), wsp_pack_retry_after(), wsp_pack_separate_content_type(), wsp_pdu_pack(), wsp_unpack_integer_value(), wsp_unpack_version_value(), wsp_unpack_well_known_field(), wtp_pdu_pack(), xidris_parse_reply(), xidris_receive_sms(), and xmlrpc_doc_parse().

#define octstr_create_from_data data,
len   )     (Octstr*)gw_claim_area(octstr_create_from_data_real((data), (len), __FILE__, __LINE__, __func__))
 

Definition at line 134 of file octstr.h.

Referenced by at2_pdu_decode_deliver_sm(), at2_pdu_extract(), charset_from_utf8(), charset_to_utf8(), convert(), convert_wmlscript_to_wmlscriptc(), main(), md5(), normalize_number(), octstr_split_words(), ois_adjust_destination_address(), ois_adjust_originating_address(), ois_adjust_sm_text(), ota_pack_push_headers(), packet_create(), sema_decode_msg(), sema_msg_session_mt(), sema_receive_msg(), sema_submit_msg(), udp_create_address(), udp_recvfrom(), wtp_ack_create(), wtp_invoke_create(), and wtp_pack_sar_ack().

#define octstr_create_from_data_trace data,
len,
file,
line,
func   )     (Octstr*)gw_claim_area(octstr_create_from_data_real(data, len, file, line, func))
 

Definition at line 136 of file octstr.h.

Referenced by octstr_copy_real(), octstr_create_real(), and octstr_duplicate_real().

#define octstr_dump ostr,
level   )     octstr_dump_real(ostr, level, GW_DEBUG, ##__VA_ARGS__)
 

Definition at line 552 of file octstr.h.

Referenced by check_application_headers(), cimd2_receive_msg(), cimd2_request(), client_thread(), convert_content(), decode_bearer_indication(), deconvert_content(), dump_tpis(), generic_parse_reply(), handle_connect_reply(), handle_get_reply(), handle_reply(), handle_transaction(), http_cgivar_dump(), http_header_dump(), main(), mime_entity_body(), mime_something_to_entity(), octstr_dump_short(), oisd_get_packet(), oisd_receive_msg(), oisd_request(), oisd_send_response(), oneuser_dump(), ota_pack_message(), packet_check(), packet_extract(), parse_element(), post_content_create(), proxy_thread(), read_pdu(), receive_push_reply(), receive_reply(), receive_smpp_thread(), run_requests(), send_pdu(), send_request(), smpp_emu_reader(), smpp_pdu_unpack(), smsbox_req_sendota(), soap_msgdata_attribute(), soap_msgdata_deps(), soap_o2o_msgdata_attribute(), start_push(), start_request(), wap_msg_send(), wsp_cap_dump(), wsp_headers_unpack(), wtp_unpack_wdp_datagram(), and xidris_parse_reply().

#define octstr_duplicate ostr   )     gw_claim_area(octstr_duplicate_real((ostr), __FILE__, __LINE__, __func__))
 

Definition at line 187 of file octstr.h.

Referenced by add_sar_transaction(), at2_format_address_field(), at2_pdu_decode_deliver_sm(), at2_pdu_decode_report_sm(), at2_pdu_extract(), at2_read_modems(), at2_read_pending_incoming_messages(), at2_scan_for_telnet_escapes(), at2_send_one_message(), at2_wait_modem_command(), bb_alog_init(), bb_alog_sms(), begin_sar_result(), brunet_parse_reply(), brunet_receive_sms(), cfg_create(), cfg_get_configfile(), cfg_get_group_name(), cfg_get_real(), cfg_read(), cfg_set(), cfgloc_create(), cgw_handle_op(), cgwop_add(), charset_to_utf8(), check_concatenation(), check_data_content_type_header(), check_reversible(), clickatell_parse_reply(), clickatell_receive_sms(), client_thread(), convert(), create_dlr_from_msg(), create_onetrans(), create_session(), create_tr_invoke_ind(), dict_keys(), dlr_add(), dlr_entry_duplicate(), dlr_mysql_get(), dlr_pgsql_get(), emi2_handle_smscreq(), emimsg_duplicate(), eq_create_http_request(), eq_create_submit(), extract_base64(), extract_msgdata_part_by_coding(), find_translation(), generic_parse_reply(), get_pattern(), get_x_kannel_from_headers(), get_x_kannel_from_xml(), handle_bind_receiver(), handle_bind_transmitter(), handle_dlr(), handle_operation(), handle_pdu(), http_accept_request(), http_append_headers(), http_get_header_parameter(), http_header_duplicate(), http_header_find_all(), http_header_get(), http_header_get_content_type(), http_set_interface(), http_use_proxy(), httpd_serve(), identify_to_bearerbox(), indicate_confirmedpush(), indicate_push_disconnect(), init_configuration(), init_reroute(), init_smsbox_routes(), ip_allowed_by_user(), item_create(), kannel_parse_reply(), kannel_receive_sms(), main(), make_confirmed_push_request(), make_confirmedpush_pdu(), make_emi31(), make_emi60(), make_push_pdu(), make_push_request(), make_session_request(), make_unit_push_request(), mime_entity_body(), mime_entity_duplicate(), mime_entity_set_body(), msg_to_bb(), msg_to_cgwop(), msg_to_emimsg(), msg_to_pdu(), mysql_create_conf(), normalize_charset(), number_to_string(), obey_request(), obey_request_thread(), octstr_recode(), open_connection(), open_receiver(), open_transceiver(), open_transmitter(), ota_pack_message(), ota_tokenize_bookmarks(), ota_tokenize_settings(), pack_into_push_datagram(), pack_into_result_datagram(), pack_ip_datagram(), pack_md5(), pack_server_address(), pack_sms_datagram(), packet_add_hex_parm(), packet_encode_message(), pap_request_thread(), parm_parse(), parse2trans(), parse_address(), parse_address_value(), parse_attribute(), parse_bad_message_response_value(), parse_cgivars_for_password(), parse_cgivars_for_username(), parse_charset(), parse_element(), parse_get_rest(), parse_progress_note_value(), parse_push_message_value(), parse_push_response_value(), parse_quality_of_service_value(), parse_response_result_value(), parse_url(), parse_url_value(), parse_value(), pdu_to_msg(), proxy_thread(), proxy_unpack_credentials(), push_machine_create(), radius_acct_get_msisdn(), radius_authenticate_pdu(), remember_receiver(), request_confirmed_push(), request_push(), request_unit_push(), response_push_message(), route_incoming_to_smsc(), route_msg(), run_batch(), sema_receive_msg(), send_message(), server(), server_create(), session_machine_create(), set_dlr_url(), set_group_name(), set_referer_url(), set_service_name(), set_smsbox_id(), set_smsc_id(), smpp_create(), sms_msgdata_len(), sms_receive(), sms_to_client(), smsbox_req_handle(), smsbox_req_sendota(), smsbox_sendota_post(), smsc_at2_create(), smsc_smpp_create(), smsc_soap_create(), soap_msgdata_attribute(), soap_o2o_msgdata_attribute(), soap_parse_mo(), soap_release_dependences(), split_headers(), sqlite3_create_conf(), start_fetch(), store_file_init(), store_spool_init(), string_table_add_many(), udp_addwdp_from_client(), udp_addwdp_from_server(), unpack_credentials(), unpack_datagram(), unpack_invoke(), unpack_negative_ack(), unpack_result(), unpack_segmented_invoke(), update_tables(), url_result_thread(), urltrans_fill_escape_codes(), wap_addr_create(), wap_map_url(), wap_map_user(), wap_push_ppg_pushuser_authenticate(), wap_push_ppg_pushuser_dlr_url_get(), wap_push_ppg_pushuser_smsbox_id_get(), wap_push_ppg_pushuser_smsc_id_get(), wapme_smsproxy_parse_reply(), wdp_create(), wdp_msg2event(), wsp_cap_duplicate(), wtp_pack_invoke(), wtp_pack_result(), wtp_unpack_wdp_datagram(), xidris_parse_reply(), xidris_receive_sms(), xidris_send_sms(), xmlrpc_call_create(), xmlrpc_fault_create(), xmlrpc_parse_error(), xmlrpc_scalar_create(), and xmlrpc_scalar_print().

#define octstr_format_valist fmt,
args   )     gw_claim_area(octstr_format_valist_real(fmt, args))
 

Definition at line 681 of file octstr.h.

Referenced by octstr_format(), and octstr_format_append().

#define octstr_get_cstr ostr   )     (octstr_get_cstr_real(ostr, __FILE__, __LINE__, __func__))
 

Definition at line 233 of file octstr.h.

Referenced by accept_boxc(), add_client_sdu_size(), add_dlr_mask(), add_dlr_url(), add_group(), add_msisdn(), add_network_info(), add_push_flag(), add_via(), add_x_wap_tod(), at2_check_sms_memory(), at2_close_device(), at2_decode7bituncompressed(), at2_detect_modem_type(), at2_detect_speed(), at2_device_thread(), at2_format_address_field(), at2_init_device(), at2_login_device(), at2_open_device(), at2_open_device1(), at2_pdu_decode_deliver_sm(), at2_pdu_decode_report_sm(), at2_pdu_encode(), at2_pdu_extract(), at2_read_buffer(), at2_read_delete_message(), at2_read_line(), at2_read_modems(), at2_read_pending_incoming_messages(), at2_read_sms_memory(), at2_send_one_message(), at2_set_message_storage(), at2_set_speed(), at2_shutdown_cb(), at2_start_cb(), at2_wait_modem_command(), at2_write(), at2_write_ctrlz(), at2_write_line(), authorise_username(), bb_alog_sms(), bb_print_status(), bb_smscconn_receive(), boxc_receiver(), boxc_sender(), boxc_status(), brunet_parse_reply(), brunet_receive_sms(), brunet_send_sms(), cfg_dump(), cfg_get_real(), cfg_read(), cgw_handle_op(), cgw_listener(), cgw_open_listening_socket(), cgw_open_send_connection(), challenge(), charset_convert(), charset_from_utf8(), charset_processing(), charset_to_utf8(), check_application_headers(), check_concatenation(), check_pool_conn(), check_reversible(), check_x_wap_application_id_header(), cid_matches(), cimd2_accept_delivery_report_message(), cimd2_accept_message(), cimd2_close_socket(), cimd2_destroy(), cimd2_get_packet(), cimd2_handle_request(), cimd2_login(), cimd2_logout(), cimd2_receive_msg(), cimd2_request(), cimd2_send_alive(), cimd2_send_response(), cimd2_shutdown_cb(), cimd2_start_cb(), cimd2_stop_cb(), cimd2_submit_msg(), cimd_submit_msg(), clear_old_concat_parts(), clear_sent(), clickatell_parse_reply(), clickatell_receive_sms(), clickatell_send_sms(), client(), client_create(), client_destroy(), client_read_status(), client_reset(), client_thread(), config_reload(), conn_init_client_ssl(), conn_open_tcp_nb_with_port(), conn_open_tcp_with_port(), conn_pool_get(), connect_to_bearerbox_real(), convert_addr_from_pdu(), convert_cimd2_to_gsm(), convert_content(), convert_wmlscript_to_wmlscriptc(), copy_until_assign(), copy_until_coma(), create_dlr_from_msg(), create_onetrans(), create_oneuser(), data_sm_to_msg(), deconvert_content(), deduce_body_state(), delayed_http_reply(), dispatch(), dlr_add(), dlr_find(), dlr_init(), dlr_init_mysql(), dlr_init_pgsql(), dlr_mysql_add(), dlr_mysql_flush(), dlr_mysql_get(), dlr_mysql_messages(), dlr_mysql_remove(), dlr_mysql_update(), dlr_pgsql_add(), dlr_pgsql_flush(), dlr_pgsql_get(), dlr_pgsql_messages(), dlr_pgsql_remove(), dlr_pgsql_update(), do_queue_cleanup(), does_prefix_match(), dump_pdu(), emi2_handle_smscreq(), emi2_idleprocessing(), emi2_idletimeout_handling(), emi2_listener(), emi2_open_listening_socket(), emi2_receiver(), emi2_send_loop(), emi2_sender(), emimsg_send(), error_converting(), error_requesting(), error_requesting_back(), expand_file(), expire_cookies(), fake_listener(), fake_open_connection(), field_count_op(), field_count_reply(), fill_message(), fix_boundary_element(), for_each_file(), generic_parse_reply(), generic_send_sms(), get_connection(), get_cookies(), get_data(), get_fields(), get_header_value(), get_matching_translations(), get_pattern(), get_tag(), get_x_kannel_from_headers(), get_x_kannel_from_xml(), grp_dump(), gw_accept(), gw_pcre_comp_real(), gw_pcre_exec_real(), gw_regex_comp_real(), gw_regex_exec_real(), gw_regex_subst_pre_real(), gw_regex_subst_real(), handle_cancel(), handle_dlr(), handle_enquire(), handle_login(), handle_operation(), handle_pdu(), handle_set(), handle_submit(), handle_submit_sm(), handle_transaction(), have_cookie(), header_is_called(), http_add_basic_auth(), http_header_combine(), http_header_mark_transformation(), http_header_quoted_string_len(), http_open_port_if(), http_queue_thread(), http_remove_hop_headers(), http_send_reply(), http_use_proxy(), httpadmin_run(), httpd_loglevel(), httpd_restart_smsc(), httpd_stop_smsc(), httpsmsc_receiver(), httpsmsc_send(), httpsmsc_send_cb(), httpsmsc_shutdown(), init_batch(), init_bearerbox(), init_reroute(), init_smsbox(), init_smsbox_routes(), init_wapbox(), io_thread(), ip_allowed_by_user(), kannel_receive_sms(), kannel_send_sms(), main(), make_reply_headers(), md5(), md5digest(), mime_decompile(), mime_entity_dump_real(), mime_something_to_entity(), msg_to_bb(), msg_to_emimsg(), msg_to_pdu(), my_dump(), mysql_client_thread(), mysql_select(), mysql_update(), normalize_charset(), normalize_number(), number_to_cstr(), numhash_create(), numhash_get_key(), obey_request(), obey_request_thread(), ois_adjust_sm_text(), ois_append_msisdn(), ois_append_sm_text(), ois_open_receiver(), oisd_accept_message(), oisd_close_socket(), oisd_destroy(), oisd_get_packet(), oisd_login(), oisd_receive_msg(), oisd_request(), oisd_send_delivery_request(), oisd_send_response(), oisd_shutdown_cb(), oisd_start_cb(), oisd_stop_cb(), oisd_submit_msg(), open_connection(), open_file(), open_receiver(), open_send_connection(), open_transceiver(), open_transmitter(), ota_compile(), ota_pack_message(), ota_pack_push_headers(), ota_tokenize_settings(), pack_content_disposition(), pack_content_range(), pack_credentials(), pack_range(), pack_warning(), packet_add_parm(), packet_check(), packet_check_can_receive(), packet_check_header(), packet_check_parameter(), packet_display_error(), packet_encode_message(), packet_extract(), pap_compile(), pap_request_thread(), parse_address(), parse_array_element(), parse_attribute(), parse_cookie(), parse_data_element(), parse_document(), parse_dump(), parse_element(), parse_fault_element(), parse_member_element(), parse_methodcall_element(), parse_methodresponse_element(), parse_msg_to_rawmessage(), parse_ota_syncsettings(), parse_pap_value(), parse_param_element(), parse_params_element(), parse_struct_element(), parse_url(), parse_uuid(), parse_value_element(), parse_xml_tag(), pass_extension_headers(), pass_optional_header(), pdu_to_msg(), pgsql_select(), pgsql_update(), post_content_create(), proxy_add_authentication(), proxy_thread(), push_content_create(), push_headers_create(), radius_acct_get_msisdn(), radius_acct_init(), radius_type_convert(), read_from_box(), read_pdu(), read_test_ppg_config(), receive_push_reply(), receive_reply(), reconnect(), reload_bool(), reload_int(), rename_store(), report_versions(), return_reply(), route_incoming_to_boxc(), run_batch(), run_smsbox(), run_wapbox(), sema_encode_msg(), sema_msg_session_mt(), sema_receive_msg(), send_msg(), send_request(), sendsms_thread(), server(), server_thread(), set_charset(), set_cookies(), shutdown_cb(), si_compile(), skip_until_after_colon(), sl_compile(), smasi_pdu_unpack(), smasi_thread(), sms_receive(), sms_send(), sms_to_client(), smsbox_req_handle(), smsbox_req_sendota(), smsbox_req_sendsms(), smsbox_sendota_post(), smsbox_sendsms_post(), smsbox_thread(), smsbox_xmlrpc_post(), smsc2_restart_smsc(), smsc2_rout(), smsc2_start(), smsc2_stop_smsc(), smsc_at2_create(), smsc_cimd2_create(), smsc_emi2_create(), smsc_http_create(), smsc_oisd_create(), smsc_open(), smsc_smasi_create(), smsc_smpp_create(), smsc_soap_create(), smscconn_create(), smscconn_send(), soap_add_msg_cb(), soap_client_init_query(), soap_convert_token(), soap_create_map(), soap_fetch_xml_data(), soap_format_xml(), soap_get_index(), soap_listener(), soap_map_xml_data(), soap_msgdata_attribute(), soap_msgdata_deps(), soap_o2o_msgdata_attribute(), soap_parse_dlr(), soap_parse_mo(), soap_parse_response(), soap_read_date(), soap_read_response(), soap_release_dependences(), soap_send_loop(), soap_server(), soap_server_start(), soap_server_stop(), soap_shutdown_cb(), soap_start_cb(), soap_stop_cb(), sqlite3_client_thread(), start_cb(), start_fetch(), status_cb(), store_file_init(), store_file_load(), store_file_status(), store_spool_init(), store_spool_save(), store_uuid(), string_to_versioned_number(), tell_fatal_error(), transform_message(), udp_addwdp_from_client(), udp_addwdp_from_server(), udp_create_address(), udp_get_ip(), udp_get_port(), udp_receiver(), udp_sender(), udp_sendto(), udp_start(), udpc_create(), unlocked_write(), update_table(), update_tables(), url_result_thread(), urltrans_fill_escape_codes(), use_global_client_certkey_file(), use_global_server_certkey_file(), use_global_trusted_ca_file(), version_report_string(), wait_for_ack(), wait_for_client(), wap_addr_create(), wap_addr_tuple_dump(), wap_map_url(), wap_push_ppg_pushuser_authenticate(), wap_push_ppg_pushuser_client_phone_number_acceptable(), wapme_smsproxy_send_sms(), wml_compile(), wrapper_receiver(), wrapper_sender(), wrapper_shutdown(), wsp_headers_pack(), wsp_headers_unpack(), wsp_pack_application_header(), wsp_pack_date(), wsp_pack_integer_string(), wsp_unpack_app_header(), wsp_unpack_well_known_field(), xidris_parse_reply(), xidris_receive_sms(), xidris_send_sms(), xml_error(), and xmlrpc_doc_parse().


Typedef Documentation

typedef struct Octstr Octstr
 

Definition at line 104 of file octstr.h.

Referenced by cgwop_create(), for_each_file(), parse_data(), and wait_for_client().

typedef int(* octstr_func_t)(int)
 

Definition at line 295 of file octstr.h.


Function Documentation

void octstr_append Octstr ostr1,
const Octstr ostr2
 

Definition at line 1444 of file octstr.c.

References gw_assert, Octstr::len, and octstr_insert().

Referenced by add_part_header(), add_wsp_get(), append_crlf(), assembly_sar_event(), at2_init_device(), at2_pdu_encode(), at2_pdu_extract(), at2_wait_modem_command(), build_request(), build_response(), cgw_handle_op(), cgwop_tostr(), challenge(), charset_gsm_to_utf8(), charset_utf8_to_gsm(), check_concatenation(), conn_write(), conn_write_withlen(), convert(), emi2_handle_smscreq(), emimsg_tostring(), encode_binary_data(), expand_file(), get_pattern(), get_tag(), http_header_pack(), http_header_split_auth_value(), http_send_reply(), httpd_serve(), main(), make_close_delimiter(), make_multipart_value(), make_part_delimiter(), make_start_delimiter(), make_url(), mime_decompile(), mime_entity_to_octstr(), mime_something_to_entity(), msg_to_cgwop(), msg_to_emimsg(), obey_request(), octstr_append_from_hex(), octstr_format_append(), octstr_recode(), oisd_send_delivery_request(), oisd_shrink_gsm7(), ota_pack_push_headers(), ota_tokenize_bookmarks(), ota_tokenize_settings(), pack_7bit(), pack_cache_control(), pack_md5(), pack_quoted_string(), pack_server_address(), pack_tpis(), packet_encode_message(), parse2trans(), pass_field_name(), pass_field_value(), proxy_unpack_credentials(), push_content_create(), radius_authenticate_pdu(), radius_type_convert(), read_body_until_eof(), read_chunked_body_data(), read_mime_headers(), read_some_headers(), send_message(), set_cookies(), sms_split(), sms_to_client(), smsc2_status(), smsc_emi2_create(), soap_format_xml(), soap_msgdata_attribute(), soap_o2o_msgdata_attribute(), start_request(), unpack_cache_directive(), unpack_challenge(), unpack_credentials(), unpack_optional_q_value(), unpack_parameter(), unpack_warning_value(), urltrans_fill_escape_codes(), wap_map_url(), wml_charsets(), wsp_cap_pack_list(), wsp_pack_quoted_text(), wsp_pack_text(), wsp_pack_value(), xidris_send_sms(), and xmlrpc_print_array().

01445 {
01446     gw_assert(ostr1 != NULL);
01447     octstr_insert(ostr1, ostr2, ostr1->len);
01448 }

Here is the call graph for this function:

void octstr_append_char Octstr ostr,
int  ch
 

Definition at line 1457 of file octstr.c.

References gw_assert, Octstr::len, and octstr_insert_data().

Referenced by add_wsp_disconnect(), add_wsp_get(), append_encoded_integer(), at2_convertpdu(), at2_decode7bituncompressed(), at2_encode7bituncompressed(), at2_encode8bituncompressed(), at2_format_address_field(), at2_init_device(), at2_pdu_decode_deliver_sm(), at2_pdu_decode_report_sm(), at2_pdu_encode(), cgw_handle_op(), cgwop_tostr(), charset_gsm_to_utf8(), charset_utf8_to_gsm(), convert_html_entity(), convert_q_value(), decode_binary_data(), emi2_handle_smscreq(), emimsg_tostring(), encode_binary_data(), get_pattern(), gsm2number(), html_to_sms(), http_header_split_auth_value(), main(), msg_to_emimsg(), oisd_expand_gsm7(), oisd_send_delivery_request(), oisd_send_response(), oisd_shrink_gsm7(), ota_tokenize_bookmarks(), ota_tokenize_settings(), output_char(), output_st_char(), output_variable(), pack_7bit(), pack_challenge(), pack_credentials(), pack_md5(), pack_parameter(), pack_quoted_string(), pack_range_value(), pack_server_address(), packet_encode_message(), parse2trans(), parse_value(), parse_variable(), prepend_catenation_udh(), proxy_unpack_credentials(), randomize(), reply_known_capabilities(), set_cookies(), smasi_pdu_pack(), sms_to_client(), smsc_emi2_create(), soap_format_xml(), string_table_apply(), string_table_output(), tokenize_date(), unpack_cache_directive(), unpack_challenge(), unpack_credentials(), unpack_parameter(), unpack_range_value(), unpack_warning_value(), urltrans_fill_escape_codes(), wml_binary_output(), wml_charsets(), wsp_cap_pack_list(), wsp_pack_long_integer(), wsp_pack_quoted_text(), wsp_pack_retry_after(), wsp_pack_short_integer(), wsp_pack_text(), wsp_pack_value(), and wsp_unpack_version_value().

01458 {
01459     unsigned char c = ch;
01460 
01461     gw_assert(ch >= 0);
01462     gw_assert(ch <= UCHAR_MAX);
01463     octstr_insert_data(ostr, ostr->len, &c, 1);
01464 }

Here is the call graph for this function:

void octstr_append_cstr Octstr ostr,
const char *  cstr
 

Definition at line 1451 of file octstr.c.

References Octstr::len, and octstr_insert_data().

Referenced by add_content_transfer_encoding_type(), append_uuid(), at2_read_line(), at2_wait_modem_command(), bb_print_status(), boxc_status(), cfg_read(), clickatell_send_sms(), create_onetrans(), get_pattern(), http_header_get_content_type(), httpd_serve(), kannel_send_sms(), mime_entity_dump_real(), mime_something_to_entity(), octstr_append_decimal(), operation_name(), packet_extract(), parse_cookie(), radius_type_convert(), smasi_pdu_pack(), smsc2_status(), store_file_status(), store_spool_status(), and urltrans_fill_escape_codes().

01452 {
01453     octstr_insert_data(ostr, ostr->len, cstr, strlen(cstr));
01454 }

Here is the call graph for this function:

void octstr_append_data Octstr ostr,
const char *  data,
long  len
 

Definition at line 1437 of file octstr.c.

References data, gw_assert, Octstr::len, and octstr_insert_data().

Referenced by add_wsp_connect(), append_integer(), at2_read_buffer(), charset_convert(), conn_write_data(), conn_write_withlen(), convert(), gen_data(), get_pattern(), octstr_append_from_socket(), octstr_append_uintvar(), octstr_format_valist_real(), octstr_read_pipe(), radius_authenticate_pdu(), read_data(), read_line(), set_charset(), unlocked_read(), and wap_msg_send().

01438 {
01439     gw_assert(ostr != NULL);
01440     octstr_insert_data(ostr, ostr->len, data, len);
01441 }

Here is the call graph for this function:

void octstr_append_decimal Octstr ostr,
long  value
 

Definition at line 1913 of file octstr.c.

References octstr_append_cstr().

Referenced by cgw_handle_op(), cgwop_create(), convert(), get_pattern(), msg_to_emimsg(), pack_server_address(), smsc_emi2_create(), unpack_parameter(), unpack_range_value(), urltrans_fill_escape_codes(), wsp_unpack_integer_value(), wsp_unpack_version_value(), and wsp_unpack_well_known_field().

01914 {
01915     char tmp[128];
01916 
01917     sprintf(tmp, "%ld", value);
01918     octstr_append_cstr(ostr, tmp);
01919 }

Here is the call graph for this function:

void octstr_append_from_hex Octstr ostr,
char *  hex
 

Definition at line 446 of file octstr.c.

References gw_assert, Octstr::immutable, octstr_append(), octstr_create, octstr_destroy(), octstr_hex_to_binary(), and seems_valid.

Referenced by cimd_submit_msg(), client_thread(), main(), ota_pack_push_headers(), ota_pack_udh(), ota_tokenize_bookmarks(), and ota_tokenize_settings().

00447 {
00448     Octstr *output;
00449     
00450     seems_valid(ostr);
00451     gw_assert(!ostr->immutable);
00452     
00453     output = octstr_create(hex);
00454     octstr_hex_to_binary(output);
00455     octstr_append(ostr, output);
00456     octstr_destroy(output);
00457 }

Here is the call graph for this function:

int octstr_append_from_socket Octstr ostr,
int  socket
 

Definition at line 1220 of file octstr.c.

References error(), gw_assert, Octstr::immutable, octstr_append_data(), and seems_valid.

Referenced by cimd2_get_packet(), cimd2_receive_msg(), oisd_get_packet(), and oisd_receive_msg().

01221 {
01222     unsigned char buf[4096];
01223     int len;
01224 
01225     seems_valid(ostr);
01226     gw_assert(!ostr->immutable);
01227 
01228 again:
01229     len = recv(socket, buf, sizeof(buf), 0);
01230     if (len < 0 && errno == EINTR)
01231         goto again;
01232 
01233     if (len < 0) {
01234         error(errno, "Could not read from socket %d", socket);
01235         return -1;
01236     }
01237 
01238     octstr_append_data(ostr, buf, len);
01239     return len;
01240 }

Here is the call graph for this function:

void octstr_append_uintvar Octstr ostr,
unsigned long  value
 

Definition at line 1868 of file octstr.c.

References octstr_append_data().

Referenced by add_wsp_disconnect(), add_wsp_get(), ota_pack_push_headers(), output_variable(), pack_content_range(), pack_qvalue(), pack_range_value(), parse_attribute(), parse_element(), reply_known_capabilities(), simple_binary_output(), string_table_apply(), wml_binary_output(), wsp_cap_pack_list(), and wsp_pack_value().

01869 {
01870     /* A uintvar is defined to be up to 32 bits large, so it will
01871      * fit in 5 octets. */
01872     unsigned char octets[5];
01873     int i;
01874     int start;
01875 
01876     /* Handle last byte separately; it has no continuation bit,
01877      * and must be encoded even if value is 0. */
01878     octets[4] = value & 0x7f;
01879     value >>= 7;
01880 
01881     for (i = 3; value > 0 && i >= 0; i--) {
01882         octets[i] = 0x80 | (value & 0x7f);
01883         value >>= 7;
01884     }
01885     start = i + 1;
01886 
01887     octstr_append_data(ostr, octets + start, 5 - start);
01888 }

Here is the call graph for this function:

void octstr_base64_to_binary Octstr ostr  ) 
 

Definition at line 658 of file octstr.c.

References Octstr::data, data, gw_assert, Octstr::immutable, Octstr::len, seems_valid, and warning().

Referenced by extract_base64(), pack_credentials(), pack_md5(), and soap_msgdata_deps().

00659 {
00660     long triplet;
00661     long pos, len;
00662     long to;
00663     int quadpos = 0;
00664     int warned = 0;
00665     unsigned char *data;
00666 
00667     seems_valid(ostr);
00668     gw_assert(!ostr->immutable);
00669 
00670     len = ostr->len;
00671     data = ostr->data;
00672 
00673     if (len == 0)
00674         return;
00675 
00676     to = 0;
00677     triplet = 0;
00678     quadpos = 0;
00679     for (pos = 0; pos < len; pos++) {
00680         int c = data[pos];
00681         int sixbits;
00682 
00683         if (c >= 'A' && c <= 'Z') {
00684             sixbits = c - 'A';
00685         } else if (c >= 'a' && c <= 'z') {
00686             sixbits = 26 + c - 'a';
00687         } else if (c >= '0' && c <= '9') {
00688             sixbits = 52 + c - '0';
00689         } else if (c == '+') {
00690             sixbits = 62;
00691         } else if (c == '/') {
00692             sixbits = 63;
00693         } else if (c == '=') {
00694             /* These can only occur at the end of encoded
00695              * text.  RFC 2045 says we can assume it really
00696              * is the end. */
00697             break;
00698         } else if (isspace(c)) {
00699             /* skip whitespace */
00700             continue;
00701         } else {
00702             if (!warned) {
00703                 warning(0, "Unusual characters in base64 "
00704                         "encoded text.");
00705                 warned = 1;
00706             }
00707             continue;
00708         }
00709 
00710         triplet = (triplet << 6) | sixbits;
00711         quadpos++;
00712 
00713         if (quadpos == 4) {
00714             data[to++] = (triplet >> 16) & 0xff;
00715             data[to++] = (triplet >> 8) & 0xff;
00716             data[to++] = triplet & 0xff;
00717             quadpos = 0;
00718         }
00719     }
00720 
00721     /* Deal with leftover octets */
00722     switch (quadpos) {
00723     case 0:
00724         break;
00725     case 3:  /* triplet has 18 bits, we want the first 16 */
00726         data[to++] = (triplet >> 10) & 0xff;
00727         data[to++] = (triplet >> 2) & 0xff;
00728         break;
00729     case 2:  /* triplet has 12 bits, we want the first 8 */
00730         data[to++] = (triplet >> 4) & 0xff;
00731         break;
00732     case 1:
00733         warning(0, "Bad padding in base64 encoded text.");
00734         break;
00735     }
00736 
00737     ostr->len = to;
00738     data[to] = '\0';
00739 
00740     seems_valid(ostr);
00741 }

Here is the call graph for this function:

void octstr_binary_to_base64 Octstr ostr  ) 
 

Definition at line 537 of file octstr.c.

References Octstr::data, data, gw_assert, Octstr::immutable, Octstr::len, octstr_grow(), octstr_imm(), octstr_insert(), and seems_valid.

Referenced by http_add_basic_auth(), proxy_add_authentication(), soap_o2o_msgdata_attribute(), transfer_encode(), unpack_credentials(), and wsp_unpack_well_known_field().

00538 {
00539     static const unsigned char base64[64] =
00540         "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
00541     long triplets;
00542     long lines;
00543     long orig_len;
00544     unsigned char *data;
00545     long from, to;
00546     int left_on_line;
00547 
00548     seems_valid(ostr);
00549     gw_assert(!ostr->immutable);
00550 
00551     if (ostr->len == 0) {
00552         /* Always terminate with CR LF */
00553         octstr_insert(ostr, octstr_imm("\015\012"), 0);
00554         return;
00555     }
00556 
00557     /* The lines must be 76 characters each (or less), and each
00558      * triplet will expand to 4 characters, so we can fit 19
00559      * triplets on one line.  We need a CR LF after each line,
00560      * which will add 2 octets per 19 triplets (rounded up). */
00561     triplets = (ostr->len + 2) / 3;   /* round up */
00562     lines = (triplets + 18) / 19;
00563 
00564     octstr_grow(ostr, triplets * 4 + lines * 2);
00565     orig_len = ostr->len;
00566     data = ostr->data;
00567 
00568     ostr->len = triplets * 4 + lines * 2;
00569     data[ostr->len] = '\0';
00570 
00571     /* This function works back-to-front, so that encoded data will
00572      * not overwrite source data.
00573      * from points to the start of the last triplet (which may be
00574      * an odd-sized one), and to points to the start of where the
00575      * last quad should go.  */
00576     from = (triplets - 1) * 3;
00577     to = (triplets - 1) * 4 + (lines - 1) * 2;
00578 
00579     /* First write the CR LF after the last quad */
00580     data[to + 5] = 10;   /* LF */
00581     data[to + 4] = 13;   /* CR */
00582     left_on_line = triplets - ((lines - 1) * 19);
00583 
00584     /* base64 encoding is in 3-octet units.  To handle leftover
00585      * octets, conceptually we have to zero-pad up to the next
00586      * 6-bit unit, and pad with '=' characters for missing 6-bit
00587      * units.
00588      * We do it by first completing the first triplet with 
00589      * zero-octets, and after the loop replacing some of the
00590      * result characters with '=' characters.
00591      * There is enough room for this, because even with a 1 or 2
00592      * octet source string, space for four octets of output
00593      * will be reserved.
00594      */
00595     switch (orig_len % 3) {
00596     case 0:
00597         break;
00598     case 1:
00599         data[orig_len] = 0;
00600         data[orig_len + 1] = 0;
00601         break;
00602     case 2:
00603         data[orig_len + 1] = 0;
00604         break;
00605     }
00606 
00607     /* Now we only have perfect triplets. */
00608     while (from >= 0) {
00609         long whole_triplet;
00610 
00611         /* Add a newline, if necessary */
00612         if (left_on_line == 0) {
00613             to -= 2;
00614             data[to + 5] = 10;  /* LF */
00615             data[to + 4] = 13;  /* CR */
00616             left_on_line = 19;
00617         }
00618 
00619         whole_triplet = (data[from] << 16) |
00620                         (data[from + 1] << 8) |
00621                         data[from + 2];
00622         data[to + 3] = base64[whole_triplet % 64];
00623         data[to + 2] = base64[(whole_triplet >> 6) % 64];
00624         data[to + 1] = base64[(whole_triplet >> 12) % 64];
00625         data[to] = base64[(whole_triplet >> 18) % 64];
00626 
00627         to -= 4;
00628         from -= 3;
00629         left_on_line--;
00630     }
00631 
00632     gw_assert(left_on_line == 0);
00633     gw_assert(from == -3);
00634     gw_assert(to == -4);
00635 
00636     /* Insert padding characters in the last quad.  Remember that
00637      * there is a CR LF between the last quad and the end of the
00638      * string. */
00639     switch (orig_len % 3) {
00640     case 0:
00641         break;
00642     case 1:
00643         gw_assert(data[ostr->len - 3] == 'A');
00644         gw_assert(data[ostr->len - 4] == 'A');
00645         data[ostr->len - 3] = '=';
00646         data[ostr->len - 4] = '=';
00647         break;
00648     case 2:
00649         gw_assert(data[ostr->len - 3] == 'A');
00650         data[ostr->len - 3] = '=';
00651         break;
00652     }
00653 
00654     seems_valid(ostr);
00655 }

Here is the call graph for this function:

void octstr_binary_to_hex Octstr ostr,
int  uppercase
 

Definition at line 460 of file octstr.c.

References Octstr::data, gw_assert, Octstr::immutable, Octstr::len, octstr_grow(), and seems_valid.

Referenced by at2_scan_for_telnet_escapes(), bb_alog_sms(), convert(), get_pattern(), kannel_send_sms(), main(), make_emi60(), msg_to_cgwop(), msg_to_emimsg(), ota_pack_push_headers(), pack_7bit(), packet_add_hex_parm(), soap_msgdata_attribute(), status_cb(), and store_file_status().

00461 {
00462     unsigned char *hexits;
00463     long i, tmp;
00464 
00465     seems_valid(ostr);
00466     gw_assert(!ostr->immutable);
00467     if (ostr->len == 0)
00468         return;
00469 
00470     hexits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
00471     octstr_grow(ostr, ostr->len * 2);
00472 
00473     /* In-place modification must be done back-to-front to avoid
00474      * overwriting the data while we read it.  Even the order of
00475      * the two assignments is important, to get i == 0 right. */
00476     for (i = ostr->len - 1; i >= 0; i--) {
00477         tmp = i << 1; /* tmp = i * 2; */
00478         ostr->data[tmp + 1] = hexits[ostr->data[i] & 0xf];
00479         ostr->data[tmp] = hexits[ostr->data[i] >> 4];
00480     }
00481 
00482     ostr->len = ostr->len * 2;
00483     ostr->data[ostr->len] = '\0';
00484 
00485     seems_valid(ostr);
00486 }

Here is the call graph for this function:

int octstr_case_compare const Octstr ostr1,
const Octstr ostr2
 

Definition at line 898 of file octstr.c.

References Octstr::data, Octstr::len, and seems_valid.

Referenced by brunet_parse_reply(), cfg_get_bool(), check_comparisons(), client_is_persistent(), get_x_kannel_from_headers(), handle_transaction(), http_get_header_parameter(), http_header_pack(), http_header_value(), init_bearerbox(), init_smsbox(), init_wapbox(), kannel_parse_reply(), main(), normalize_charset(), octstr_item_case_match(), octstr_recode(), ota_pack_push_headers(), ota_pack_udh(), pack_challenge(), pack_credentials(), pack_pragma(), pap_get_content(), parse_array_element(), parse_attribute(), parse_bearer(), parse_client_specifier(), parse_data_element(), parse_delivery_method(), parse_document(), parse_element(), parse_fault_element(), parse_member_element(), parse_methodcall_element(), parse_methodresponse_element(), parse_network(), parse_ota_syncsettings(), parse_param_element(), parse_params_element(), parse_priority(), parse_requirement(), parse_state(), parse_struct_element(), parse_value_element(), qualifiers(), select_bearer_network(), set_any_value(), smsbox_req_handle(), smsbox_sendota_post(), smsbox_sendsms_post(), smsbox_xmlrpc_post(), smsc_http_create(), soap_msgdata_deps(), string_to_number(), string_to_versioned_number(), url_result_thread(), uses_gsm_msisdn_address(), uses_ipv4_address(), uses_ipv6_address(), wap_map_url(), wina_bearer_identifier(), and xidris_parse_reply().

00899 {
00900     int c1, c2;
00901     long i, len;
00902 
00903     seems_valid(os1);
00904     seems_valid(os2);
00905 
00906     if (os1->len < os2->len)
00907         len = os1->len;
00908     else
00909         len = os2->len;
00910 
00911     if (len == 0) {
00912         if (os1->len == 0 && os2->len > 0)
00913             return -1;
00914         if (os1->len > 0 && os2->len == 0)
00915             return 1;
00916         return 0;
00917     }
00918 
00919     c1 = c2 = 0;
00920     for (i = 0; i < len; ++i) {
00921         c1 = toupper(os1->data[i]);
00922         c2 = toupper(os2->data[i]);
00923         if (c1 != c2)
00924             break;
00925     }
00926 
00927     if (i == len) {
00928         if (i == os1->len && i == os2->len)
00929             return 0;
00930         if (i == os1->len)
00931             return -1;
00932         return 1;
00933     } else {
00934         /*
00935         c1 = toupper(os1->data[i]);
00936         c2 = toupper(os2->data[i]);
00937         */
00938         if (c1 < c2)
00939             return -1;
00940         if (c1 == c2)
00941             return 0;
00942         return 1;
00943     }
00944 }

int octstr_case_nsearch const Octstr haystack,
const Octstr needle,
long  pos,
long  n
 

Definition at line 1103 of file octstr.c.

References Octstr::data, gw_assert, Octstr::len, and seems_valid.

Referenced by check_control_content_type_header(), check_data_content_type_header(), drop_extension_headers(), drop_optional_header(), pass_extension_headers(), and pass_optional_header().

01104 {
01105     long i, j;
01106     int c1, c2;
01107 
01108     seems_valid(haystack);
01109     seems_valid(needle);
01110     gw_assert(pos >= 0);
01111 
01112     /* Always "find" an empty string */
01113     if (needle->len == 0)
01114         return 0;
01115 
01116     for (i = pos; i <= haystack->len - needle->len && i < n; ++i) {
01117         for (j = 0; j < needle->len && j < n; ++j) {
01118             c1 = toupper(haystack->data[i + j]);
01119             c2 = toupper(needle->data[j]);
01120             if (c1 != c2)
01121                 break;
01122         }
01123         if (j == needle->len)
01124             return i;
01125     }
01126 
01127     return -1;
01128 }

int octstr_case_search const Octstr haystack,
const Octstr needle,
long  pos
 

Definition at line 1076 of file octstr.c.

References Octstr::data, gw_assert, Octstr::len, and seems_valid.

Referenced by check_control_content_type_header(), drop_extension_headers(), get_mime_boundary(), http_something_accepted(), parse_appid_header(), parse_url(), strip_prefix_and_suffix(), and type_is().

01077 {
01078     long i, j;
01079     int c1, c2;
01080 
01081     seems_valid(haystack);
01082     seems_valid(needle);
01083     gw_assert(pos >= 0);
01084 
01085     /* Always "find" an empty string */
01086     if (needle->len == 0)
01087         return 0;
01088 
01089     for (i = pos; i <= haystack->len - needle->len; ++i) {
01090     for (j = 0; j < needle->len; ++j) {
01091         c1 = toupper(haystack->data[i + j]);
01092         c2 = toupper(needle->data[j]);
01093         if (c1 != c2)
01094             break;
01095     }
01096     if (j == needle->len)
01097         return i;
01098     }
01099 
01100     return -1;    
01101 }

Octstr* octstr_cat Octstr ostr1,
Octstr ostr2
 

Definition at line 377 of file octstr.c.

References Octstr::data, gw_assert, Octstr::immutable, Octstr::len, octstr_create, seems_valid, and Octstr::size.

00378 {
00379     Octstr *ostr;
00380 
00381     seems_valid(ostr1);
00382     seems_valid(ostr2);
00383     gw_assert(!ostr1->immutable);
00384 
00385     ostr = octstr_create("");
00386     ostr->len = ostr1->len + ostr2->len;
00387     ostr->size = ostr->len + 1;
00388     ostr->data = gw_malloc(ostr->size);
00389 
00390     if (ostr1->len > 0)
00391         memcpy(ostr->data, ostr1->data, ostr1->len);
00392     if (ostr2->len > 0)
00393         memcpy(ostr->data + ostr1->len, ostr2->data, ostr2->len);
00394     ostr->data[ostr->len] = '\0';
00395 
00396     seems_valid(ostr);
00397     return ostr;
00398 }

int octstr_check_range Octstr ostr,
long  pos,
long  len,
octstr_func_t  filter
 

Definition at line 809 of file octstr.c.

References Octstr::data, gw_assert, Octstr::len, and seems_valid.

Referenced by convert_addr_from_pdu(), get_originator_type(), handle_dlr(), handle_pdu(), is_token(), msg_to_cgwop(), msg_to_emimsg(), msg_to_pdu(), octstr_hex_to_binary(), octstr_symbolize(), oisd_send_delivery_request(), pack_parameter(), packet_add_address_parm(), packet_check(), packet_check_header(), packet_check_parameter(), packet_encode_message(), parm_valid_address(), and run_batch().

00811 {
00812     long end = pos + len;
00813 
00814     seems_valid(ostr);
00815     gw_assert(len >= 0);
00816 
00817     if (pos >= ostr->len)
00818         return 1;
00819     if (end > ostr->len)
00820         end = ostr->len;
00821 
00822     for ( ; pos < end; pos++) {
00823         if (!filter(ostr->data[pos]))
00824             return 0;
00825     }
00826 
00827     return 1;
00828 }

int octstr_compare const Octstr ostr1,
const Octstr ostr2
 

Definition at line 866 of file octstr.c.

References Octstr::data, Octstr::len, and seems_valid.

Referenced by add_connection_header(), add_content_transfer_encoding_type(), add_content_type(), add_delimiter(), add_push_application_id(), at2_read_modems(), at2_read_pending_incoming_messages(), at2_send_one_message(), authorise_username(), brunet_receive_sms(), cgwop_get(), charset_to_utf8(), check_comparisons(), check_do_elements(), check_reversible(), cid_matches(), clickatell_parse_body(), client_thread(), cmp_route(), content_transformable(), dlr_init(), dlr_init_mysql(), dlr_init_pgsql(), dlr_mem_entry_match(), handle_dlr(), have_cookie(), httpd_check_authorization(), init_wapbox(), ip_allowed_by_ppg(), ip_allowed_by_user(), item_has_key(), kannel_receive_sms(), main(), mime_something_to_entity(), msg_to_bb(), my_cmp(), my_sort_cmp(), obey_request_thread(), octstr_item_match(), ota_tokenize_settings(), pack_appid_list(), packet_encode_message(), pap_convert_content(), pap_request_thread(), parse2trans(), parse_address_value(), parse_attr_value(), parse_attribute(), parse_bad_message_response_value(), parse_code(), parse_document(), parse_element(), parse_pap_value(), parse_progress_note_value(), parse_push_message_value(), parse_push_response_value(), parse_quality_of_service_value(), parse_request_line(), parse_response_result_value(), parse_url(), password_matches(), proxy_used_for_host(), push_has_pi_push_id(), radius_authenticate_pdu(), remember_receiver(), return_reply(), sendsms_thread(), session_has_addr(), session_has_pi_client_address(), set_any_value(), set_attribute_value(), smsbox_req_sendota(), smsc2_find(), smsc2_restart_smsc(), smsc_at2_create(), smsc_open(), smscconn_create(), soap_get_index(), soap_server(), start_fetch(), string_table_add(), string_table_apply(), string_table_sort_list(), test_header_combine(), transfer_encode(), udp_addwdp(), udp_receiver(), udpc_find_mapping(), update_table(), update_tables(), urltrans_find_username(), user_find_by_username(), wap_event_accept_or_create(), wap_map_user(), wildcarded_ip_found(), wsp_cap_get_data(), wsp_encoding_string_to_version(), and xidris_receive_sms().

00867 {
00868     int ret;
00869     long len;
00870 
00871     seems_valid(ostr1);
00872     seems_valid(ostr2);
00873 
00874     if (ostr1->len < ostr2->len)
00875         len = ostr1->len;
00876     else
00877         len = ostr2->len;
00878 
00879     if (len == 0) {
00880     if (ostr1->len == 0 && ostr2->len > 0)
00881         return -1;
00882     if (ostr1->len > 0 && ostr2->len == 0)
00883         return 1;
00884         return 0;
00885     }
00886 
00887     ret = memcmp(ostr1->data, ostr2->data, len);
00888     if (ret == 0) {
00889         if (ostr1->len < ostr2->len)
00890             ret = -1;
00891         else if (ostr1->len > ostr2->len)
00892             ret = 1;
00893     }
00894     return ret;
00895 }

void octstr_convert_from_html_entities Octstr input  ) 
 

Definition at line 2709 of file octstr.c.

References octstr_copy, octstr_delete(), octstr_destroy(), octstr_find_entity(), octstr_insert_char(), and octstr_search_char().

02710 {
02711     int startpos = 0, endpos;
02712     int entity;
02713     Octstr *match;
02714 
02715     while ((startpos = octstr_search_char(input, '&', startpos)) != -1) {
02716         endpos = octstr_search_char(input, ';', startpos + 1);
02717         if (endpos >= 0) {
02718             match = octstr_copy(input, startpos + 1, endpos - startpos - 1);
02719             entity = octstr_find_entity(match, 0, 0);
02720             if (entity >= 0) {
02721                 octstr_delete(input, startpos, endpos - startpos + 1);
02722                 octstr_insert_char(input, startpos, entity);
02723             }
02724             octstr_destroy(match);
02725         }
02726         startpos++;
02727     }
02728 }

Here is the call graph for this function:

void octstr_convert_printable Octstr ostr  ) 
 

Definition at line 859 of file octstr.c.

References Octstr::len, make_printable(), and octstr_convert_range().

Referenced by bb_alog_sms(), and get_pattern().

00860 {
00861     octstr_convert_range(ostr, 0, ostr->len, make_printable);
00862 }

Here is the call graph for this function:

void octstr_convert_range Octstr ostr,
long  pos,
long  len,
octstr_func_t  map
 

Definition at line 831 of file octstr.c.

References Octstr::data, gw_assert, Octstr::immutable, Octstr::len, and seems_valid.

Referenced by check_variable_syntax(), create_onetrans(), find_translation(), octstr_convert_printable(), parse_charset(), and parse_constant().

00833 {
00834     long end = pos + len;
00835 
00836     seems_valid(ostr);
00837     gw_assert(!ostr->immutable);
00838     gw_assert(len >= 0);
00839 
00840     if (pos >= ostr->len)
00841         return;
00842     if (end > ostr->len)
00843         end = ostr->len;
00844 
00845     for ( ; pos < end; pos++) {
00846         ostr->data[pos] = map(ostr->data[pos]);
00847     }
00848 
00849     seems_valid(ostr);
00850 }

void octstr_convert_to_html_entities Octstr input  ) 
 

Definition at line 2643 of file octstr.c.

References octstr_get_char(), and octstr_len().

Referenced by soap_msgdata_attribute(), soap_o2o_msgdata_attribute(), and xmlrpc_scalar_print().

02644 {
02645     int i;
02646 
02647     for (i = 0; i < octstr_len(input); ++i) {
02648         switch (octstr_get_char(input, i)) {
02649 #define ENTITY(a,b) \
02650     case a: \
02651     octstr_delete(input, i, 1); \
02652     octstr_insert(input, octstr_imm("&" b ";"), i); \
02653     i += sizeof(b); break;
02654 #include "gwlib/html-entities.def"
02655 #undef ENTITY
02656         }
02657     }
02658 }

Here is the call graph for this function:

Octstr* octstr_copy_real const Octstr ostr,
long  from,
long  len,
const char *  file,
long  line,
const char *  func
 

Definition at line 348 of file octstr.c.

References Octstr::data, file, gw_assert, Octstr::len, octstr_create, octstr_create_from_data_trace, and seems_valid.

Referenced by http_header_find_first_real().

00350 {
00351     seems_valid(ostr);
00352     gw_assert(from >= 0);
00353     gw_assert(len >= 0);
00354 
00355     if (from >= ostr->len)
00356         return octstr_create("");
00357 
00358     if (len > ostr->len - from)
00359         len = ostr->len - from;
00360 
00361     return octstr_create_from_data_trace(ostr->data + from, len, file,
00362                                          line, func);
00363 }

Octstr* octstr_create_from_data_real const char *  data,
long  len,
const char *  file,
long  line,
const char *  func
 

Definition at line 247 of file octstr.c.

References Octstr::data, data, file, gw_assert, Octstr::immutable, Octstr::len, seems_valid, and Octstr::size.

00249 {
00250     Octstr *ostr;
00251 
00252     gw_assert(len >= 0);
00253     if (data == NULL)
00254         gw_assert(len == 0);
00255 
00256     /* if gw_assert is disabled just return NULL
00257      * and caller will check for NULL or just crash.
00258      */
00259     if (len < 0 || (data == NULL && len != 0))
00260         return NULL;
00261 
00262     ostr = gw_malloc_trace(sizeof(*ostr), file, line, func);
00263     if (len == 0) {
00264         ostr->len = 0;
00265         ostr->size = 0;
00266         ostr->data = NULL;
00267     } else {
00268         ostr->len = len;
00269         ostr->size = len + 1;
00270         ostr->data = gw_malloc_trace(ostr->size, file, line, func);
00271         memcpy(ostr->data, data, len);
00272         ostr->data[len] = '\0';
00273     }
00274     ostr->immutable = 0;
00275     seems_valid(ostr);
00276     return ostr;
00277 }

Octstr* octstr_create_real const char *  cstr,
const char *  file,
long  line,
const char *  func
 

Definition at line 240 of file octstr.c.

References file, gw_assert, and octstr_create_from_data_trace.

00242 {
00243     gw_assert(cstr != NULL);
00244     return octstr_create_from_data_trace(cstr, strlen(cstr), file, line, func);
00245 }

void octstr_delete Octstr ostr1,
long  pos,
long  len
 

Definition at line 1467 of file octstr.c.

References Octstr::data, gw_assert, Octstr::immutable, Octstr::len, and seems_valid.

Referenced by at2_detect_modem_type(), at2_format_address_field(), at2_init_device(), at2_pdu_encode(), at2_scan_for_telnet_escapes(), cgw_decode_msg(), cgw_encode_msg(), charset_convert(), charset_gsm_to_latin1(), check_concatenation(), check_data_content_type_header(), client_read_status(), compare_octstr_sequence(), conn_read_line(), convert_addr_from_pdu(), convert_cimd2_to_gsm(), data_sm_to_msg(), decode_binary_data(), drop_character(), drop_extension_headers(), drop_header_true(), drop_separator(), eat_char(), eat_checksum(), eat_number(), eat_string_parm(), emi2_handle_smscreq(), encode_binary_data(), escape_data(), expand_file(), extract_msgdata_part(), find_translation(), fix_boundary_element(), get_originator_type(), get_start_param(), handle_operation(), handle_two_terminators(), http_header_get_content_type(), http_remove_hop_headers(), httpd_serve(), main(), mime_something_to_entity(), msg_to_emimsg(), msg_to_pdu(), octstr_convert_from_html_entities(), octstr_delete_matching(), octstr_drop_leading_blanks(), octstr_drop_trailing_zeros(), octstr_replace(), octstr_shrink_blanks(), octstr_split_by_pos(), octstr_strip_blanks(), octstr_strip_char(), octstr_strip_crlfs(), octstr_strip_nonalphanums(), oisd_shrink_gsm7(), pack_7bit(), pack_cache_control(), pack_challenge(), pack_known_header(), pack_parameter(), pack_quoted_string(), packet_extract(), packet_set_checksum(), parse_address(), parse_appid_header(), parse_attr_value(), parse_attribute(), parse_body_part(), parse_cgivars(), parse_data(), parse_entities(), parse_epilogue(), parse_get_rest(), parse_ppg_specifier(), parse_preamble(), parse_url_value(), parse_value(), pass_data_headers(), pass_extension_headers(), pass_optional_header(), pdu_to_msg(), radius_authenticate_pdu(), radius_pdu_pack(), read_line(), remove_crs(), remove_long(), remove_prefix(), replace_octstr_char(), send_message(), set_charset(), skip_tail(), soap_parse_dlr(), soap_parse_mo(), split_headers(), string_table_apply(), strip_keyword(), strip_prefix_and_suffix(), unescape_data(), unlocked_read(), unlocked_write(), unpack_broken_parameters(), unpack_credentials(), unpack_datagram(), unpack_warning_value(), wap_map_url(), write_data(), wsp_pack_list(), wsp_strip_parameters(), wsp_unpack_well_known_field(), and wtp_unpack_wdp_datagram().

01468 {
01469     seems_valid(ostr1);
01470     gw_assert(!ostr1->immutable);
01471 
01472     if (pos > ostr1->len)
01473         pos = ostr1->len;
01474     if (pos + len > ostr1->len)
01475         len = ostr1->len - pos;
01476     if (len > 0) {
01477         memmove(ostr1->data + pos, ostr1->data + pos + len,
01478                 ostr1->len - pos - len);
01479         ostr1->len -= len;
01480         ostr1->data[ostr1->len] = '\0';
01481     }
01482 
01483     seems_valid(ostr1);
01484 }

void octstr_delete_matching Octstr haystack,
Octstr needle
 

Definition at line 2607 of file octstr.c.

References gw_assert, Octstr::immutable, octstr_delete(), octstr_len(), octstr_search(), and seems_valid.

Referenced by push_content_create().

02608 {
02609     int p = 0;
02610     long len;
02611 
02612     seems_valid(haystack);
02613     seems_valid(needle);
02614     gw_assert(!haystack->immutable);
02615     len = octstr_len(needle);
02616 
02617     while ((p = octstr_search(haystack, needle, p)) != -1) {
02618         octstr_delete(haystack, p, len);
02619     }
02620 }

Here is the call graph for this function:

void octstr_destroy Octstr ostr  ) 
 

Definition at line 321 of file octstr.c.

References Octstr::data, Octstr::immutable, and seems_valid.

Referenced by accept_boxc(), accept_escaped(), add_client_sdu_size(), add_crs(), add_group(), add_msg_cb(), add_msisdn(), add_push_flag(), add_via(), add_wsp_get(), add_x_wap_tod(), ap_destroy(), at2_close_device(), at2_detect_modem_type(), at2_device_thread(), at2_flush_buffer(), at2_init_device(), at2_pdu_decode_deliver_sm(), at2_pdu_decode_report_sm(), at2_pdu_extract(), at2_read_line(), at2_read_pending_incoming_messages(), at2_scan_for_telnet_escapes(), at2_send_one_message(), at2_set_message_storage(), at2_wait_line(), at2_wait_modem_command(), attribute_destroy(), bb_alog_shutdown(), bb_alog_sms(), bb_print_status(), bb_smscconn_send_failed(), bb_smscconn_sent(), bearerbox_address_destroy(), boxc_cleanup(), boxc_destroy(), boxc_receiver(), boxc_sent_pop(), boxc_sent_push(), boxc_status(), brunet_parse_body(), brunet_receive_sms(), brunet_send_sms(), cfg_destroy(), cfg_dump(), cfg_get_bool(), cfg_get_integer(), cfg_get_list(), cfg_read(), cfgloc_destroy(), cgw_handle_op(), cgw_listener(), cgw_sender(), cgwop_create(), cgwop_destroy(), cgwop_send(), challenge(), charset_gsm_to_utf8(), charset_utf8_to_gsm(), check_application_headers(), check_comparisons(), check_concatenation(), check_data_content_type_header(), check_do_elements(), check_reversible(), check_variable_name(), check_variable_syntax(), check_x_wap_application_id_header(), cid_matches(), cimd2_accept_delivery_report_message(), cimd2_accept_message(), cimd2_destroy(), cimd2_request(), cimd2_submit_msg(), clear_old_concat_parts(), clickatell_parse_body(), clickatell_receive_sms(), clickatell_send_sms(), client_destroy(), client_is_persistent(), client_read_status(), client_shutdown(), client_thread(), config_reload(), conn_config_ssl(), conn_destroy(), conn_pool_get(), conndata_destroy(), content_transformable(), convert(), convert_content(), convert_wml_to_wmlc(), cookie_destroy(), create_onetrans(), create_oneuser(), date_parse_http(), decode_binary_data(), deconvert_content(), deduce_body_state(), delayed_http_reply(), deliver_to_bearerbox_real(), destroy_concatMsg(), destroy_group(), destroy_onetrans(), destroy_oneuser(), dispatch(), dlr_init(), dlr_init_mysql(), dlr_init_pgsql(), dlr_mysql_add(), dlr_mysql_flush(), dlr_mysql_get(), dlr_mysql_messages(), dlr_mysql_remove(), dlr_mysql_update(), dlr_pgsql_add(), dlr_pgsql_flush(), dlr_pgsql_get(), dlr_pgsql_messages(), dlr_pgsql_remove(), dlr_pgsql_update(), do_queue_cleanup(), eat_int_parm(), eat_string_parm(), emi2_handle_smscreq(), emi2_listener(), emi2_receiver(), emi2_sender(), emimsg_destroy(), emimsg_send(), emimsg_tostring(), encode_binary_data(), entity_destroy(), eq_destroy_event(), expand_file(), extract_msgdata_part_by_coding(), fake_listener(), fill_message(), find_charset_encoding(), find_translation(), fix_boundary_element(), flag_date_length(), for_each_file(), generic_send_sms(), get_data(), get_tag(), get_x_kannel_from_headers(), grp_dump(), handle_connect_reply(), handle_dlr(), handle_enquire(), handle_get_reply(), handle_login(), handle_operation(), handle_pdu(), handle_push_message(), handle_submit(), handle_transaction(), hash_destroy(), http_accept_request(), http_add_basic_auth(), http_close_proxy(), http_destroy_cgiargs(), http_get_header_parameter(), http_header_add_element(), http_header_combine(), http_header_mark_transformation(), http_header_pack(), http_header_remove_all(), http_header_split_auth_value(), http_header_value(), http_queue_thread(), http_remove_hop_headers(), http_send_reply(), http_something_accepted(), http_thread(), http_urlparse_destroy(), httpadmin_run(), httpadmin_start(), httpadmin_stop(), httpd_emu(), httpd_serve(), httpsmsc_receiver(), httpsmsc_send_cb(), init_bearerbox(), init_reroute(), init_smsbox(), init_smsbox_routes(), init_wapbox(), io_thread(), ip_allowed_by_user(), item_destroy(), kannel_parse_reply(), kannel_receive_sms(), kannel_send_sms(), kill_kannel(), main(), main_connection_loop(), make_reply_headers(), md5digest(), mime_entity_body(), mime_entity_destroy(), mime_entity_dump_real(), mime_entity_set_body(), mime_entity_to_octstr(), mime_multipart_start_elem(), mime_something_to_entity(), msg_to_bb(), msg_to_cgwop(), msg_to_emimsg(), msg_to_pdu(), normalize_charset(), normalize_number(), numhash_create(), obey_request(), obey_request_thread(), octstr_append_from_hex(), octstr_convert_from_html_entities(), octstr_destroy_item(), octstr_format_append(), octstr_read_file(), octstr_read_pipe(), octstr_recode(), ois_open_receiver(), oisd_accept_delivery_report_message(), oisd_destroy(), oisd_request(), oisd_shrink_gsm7(), oisd_submit_msg(), open_send_connection(), ota_compile(), ota_pack_message(), ota_pack_push_headers(), ota_tokenize_bookmarks(), ota_tokenize_settings(), pack_7bit(), pack_accept(), pack_accept_charset(), pack_accept_language(), pack_appid_list(), pack_cache_control(), pack_challenge(), pack_content_disposition(), pack_content_range(), pack_credentials(), pack_md5(), pack_pragma(), pack_range_value(), pack_server_address(), pack_warning(), packet_add_hex_parm(), packet_add_int_parm(), packet_add_parm(), packet_check_can_receive(), packet_destroy(), packet_display_error(), packet_encode_message(), packet_get_hex_parm(), packet_get_int_parm(), pap_convert_content(), pap_get_content(), pap_request_thread(), parm_destroy(), parse_address(), parse_address_value(), parse_appid_header(), parse_array_element(), parse_attr_value(), parse_attribute(), parse_body_part(), parse_cdata(), parse_cgivars(), parse_charset(), parse_client_specifier(), parse_code(), parse_constant(), parse_data(), parse_data_element(), parse_document(), parse_element(), parse_entities(), parse_fault_element(), parse_inline_string(), parse_member_element(), parse_methodcall_element(), parse_methodresponse_element(), parse_ota_syncsettings(), parse_param_element(), parse_params_element(), parse_preamble(), parse_push_message_value(), parse_push_response_value(), parse_request_line(), parse_st_octet_string(), parse_struct_element(), parse_text(), parse_url_value(), parse_uuid(), parse_value(), parse_value_element(), parse_variable(), parse_xml_tag(), pass_extension_headers(), pass_field_name(), pass_field_value(), pass_optional_header(), pattern_list_matches_ip(), port_add(), port_get_request(), port_put_request(), port_remove(), prepend_char(), proxy_add_authentication(), proxy_thread(), proxy_unpack_credentials(), push_content_create(), push_headers_create(), radius_acct_init(), radius_acct_shutdown(), radius_authenticate_pdu(), radius_pdu_pack(), radius_pdu_unpack(), radius_type_convert(), read_body_until_eof(), read_body_with_length(), read_chunked_body_crlf(), read_chunked_body_data(), read_chunked_body_len(), read_from_bearerbox_real(), read_mime_headers(), read_msg(), read_pdu(), read_ppg_config(), read_some_headers(), receive_push_reply(), receive_reply(), receive_request(), receive_smpp_thread(), report_versions(), return_replies_thread(), return_reply(), route_incoming_to_boxc(), route_incoming_to_smsc(), run_batch(), run_requests(), run_smsbox(), sar_info_destroy(), sardata_destroy(), sema_encode_msg(), sema_msg_session_mt(), send_bad_message_response(), send_enquire_link(), send_file(), send_invoke_connect(), send_invoke_disconnect(), send_invoke_get(), send_logoff(), send_messages(), send_msg(), send_pdu(), send_push_response(), send_request(), send_smpp_thread(), send_to_pi(), send_udp(), send_unbind(), sendsms_thread(), server(), server_destroy(), server_thread(), set_addr_tuple(), set_bearer_defaults(), set_charset(), set_dlr_mask(), set_group_name(), set_network_defaults(), set_referer_url(), shutdown_cb(), si_compile(), simple_binary_destroy(), sl_compile(), smasi_destroy(), smasi_pdu_pack(), smasi_pdu_unpack(), smpp_destroy(), smpp_emu(), smpp_emu_handle_pdu(), smpp_emu_reader(), smpp_emu_writer(), smpp_pdu_pack(), smpp_pdu_read_len(), sms_msgdata_len(), sms_split(), sms_to_client(), smsbox_req_handle(), smsbox_req_sendota(), smsbox_sendota_post(), smsbox_sendsms_post(), smsbox_start(), smsbox_thread(), smsbox_xmlrpc_post(), smsc2_cleanup(), smsc2_restart_smsc(), smsc2_start(), smsc_cgw_create(), smsc_emi2_create(), smsc_emu_submit_ack(), smsc_fake_create(), smsc_http_create(), smsc_open(), smsc_smpp_create(), smsc_soap_create(), smscconn_create(), smscconn_destroy(), soap_create_map(), soap_destroy_map(), soap_fetch_xml_data(), soap_format_xml(), soap_map_xml_data(), soap_parse_dlr(), soap_parse_mo(), socket_shutdown(), split_headers(), start_fetch(), start_push(), start_request(), status_cb(), store_dumper(), store_file_load(), store_spool_save(), store_spool_shutdown(), store_to_dict(), string_table_add(), string_table_apply(), string_table_collect_strings(), string_table_destroy(), string_table_proposal_destroy(), string_table_sort_list(), tell_fatal_error(), tokenize_date(), transform_message(), type_is(), udp_addwdp(), udp_addwdp_from_client(), udp_addwdp_from_server(), udp_die(), udp_receiver(), udp_start(), udpc_create(), udpc_destroy(), unpack_cache_directive(), unpack_challenge(), unpack_credentials(), unpack_datagram(), unpack_optional_q_value(), unpack_parameter(), unpack_range_value(), unpack_warning_value(), update_table(), update_tables(), url_result_thread(), urltrans_fill_escape_codes(), wait_for_ack(), wait_for_client(), wap_addr_destroy(), wap_map_destroy(), wap_map_url(), wap_msg_recv(), wap_msg_send(), wap_push_ppg_pushuser_authenticate(), wap_push_ppg_shutdown(), wap_user_map_destroy(), wapme_smsproxy_send_sms(), wml_binary_destroy(), wrapper_sender(), write_msg(), write_to_bearerbox_real(), wsp_cap_destroy(), wsp_headers_pack(), wsp_pack_list(), wsp_pack_retry_after(), wsp_pack_separate_content_type(), wsp_unpack_app_header(), wsp_unpack_well_known_field(), wtp_tpi_destroy(), wtp_unpack_wdp_datagram(), xidris_parse_reply(), xidris_receive_sms(), xidris_send_sms(), xml_error(), xmlrpc_call_destroy(), xmlrpc_call_print(), xmlrpc_doc_destroy(), xmlrpc_doc_print(), xmlrpc_doc_send(), xmlrpc_fault_destroy(), xmlrpc_member_destroy(), xmlrpc_print_array(), xmlrpc_print_struct(), xmlrpc_response_print(), xmlrpc_scalar_destroy(), xmlrpc_scalar_print(), and xmlrpc_value_print().

00322 {
00323     if (ostr != NULL) {
00324         seems_valid(ostr);
00325     if (!ostr->immutable) {
00326             gw_free(ostr->data);
00327             gw_free(ostr);
00328         }
00329     }
00330 }

void octstr_destroy_item void *  os  ) 
 

Definition at line 333 of file octstr.c.

References octstr_destroy().

Referenced by add_group(), at2_detect_modem_type(), at2_device_thread(), at2_init_device(), cfg_read(), check_do_elements(), clear_old_concat_parts(), client_thread(), config_reload(), conn_pool_put(), create_group(), create_onetrans(), destroy_onetrans(), dlr_pgsql_get(), dlr_pgsql_messages(), do_dump(), do_queue_cleanup(), expand_file(), find_translation(), get_pattern(), handle_submit(), http_close_proxy(), http_destroy_headers(), init_reroute(), init_smsbox(), init_smsbox_routes(), main(), mime_entity_destroy(), pack_cache_control(), pack_known_header(), parse_request_line(), pattern_list_matches_ip(), prefix_allowed(), randomize(), run_smsbox(), smsbox_req_handle(), smsc_soap_create(), smscconn_destroy(), soap_create_map(), soap_fetch_xml_data(), soap_map_xml_data(), soap_release_dependences(), store_file_load(), store_file_status(), urltrans_fill_escape_codes(), wap_appl_shutdown(), wap_push_ppg_pushuser_list_add(), wap_push_ppg_pushuser_search_ip_from_wildcarded_list(), wildcarded_ip_found(), and xmlrpc_print_struct().

00334 {
00335     octstr_destroy(os);
00336 }

Here is the call graph for this function:

void octstr_dump_real const Octstr ostr,
int  level,
  ...
 

Definition at line 2052 of file octstr.c.

References error(), GW_DEBUG, GW_ERROR, GW_INFO, GW_WARNING, info(), octstr_dump_debug(), octstr_dump_LOGLEVEL, and warning().

02053 {
02054     va_list p;
02055     unsigned int loglevel;
02056     
02057     va_start(p, level);
02058     loglevel = va_arg(p, unsigned int);
02059     va_end(p);
02060     
02061     switch (loglevel) {
02062         case GW_DEBUG:
02063             octstr_dump_debug(ostr, level);
02064             break;
02065         case GW_INFO:
02066             octstr_dump_LOGLEVEL(info, ostr, level);
02067             break;
02068         case GW_WARNING:
02069             octstr_dump_LOGLEVEL(warning, ostr, level);
02070             break;
02071         case GW_ERROR:
02072             octstr_dump_LOGLEVEL(error, ostr, level);
02073             break;
02074         default:
02075             octstr_dump_debug(ostr, level);
02076             break;
02077     }
02078 }                             

Here is the call graph for this function:

void octstr_dump_short Octstr ostr,
int  level,
const char *  name
 

Definition at line 2081 of file octstr.c.

References Octstr::data, debug(), Octstr::len, name, octstr_dump, and seems_valid.

Referenced by main(), and radius_pdu_unpack().

02082 {
02083     char buf[100];
02084     char *p;
02085     long i;
02086     int c;
02087 
02088     if (ostr == NULL) {
02089         debug("gwlib.octstr", 0, "%*s%s: NULL", level, "", name);
02090         return;
02091     }
02092 
02093     seems_valid(ostr);
02094 
02095     if (ostr->len < 20) {
02096         p = buf;
02097         for (i = 0; i < ostr->len; i++) {
02098             c = ostr->data[i];
02099             if (c == '\n') {
02100                 *p++ = '\\';
02101                 *p++ = 'n';
02102             } else if (!isprint(c)) {
02103                 break;
02104             } else if (c == '"') {
02105                 *p++ = '\\';
02106                 *p++ = '"';
02107             } else if (c == '\\') {
02108                 *p++ = '\\';
02109                 *p++ = '\\';
02110             } else {
02111                 *p++ = c;
02112             }
02113         }
02114         if (i == ostr->len) {
02115             *p++ = 0;
02116             /* We got through the loop without hitting nonprintable
02117              * characters. */
02118             debug("gwlib.octstr", 0, "%*s%s: \"%s\"", level, "", name, buf);
02119             return;
02120         }
02121     }
02122 
02123     debug("gwlib.octstr", 0, "%*s%s:", level, "", name);
02124     octstr_dump(ostr, level + 1);
02125 }

Here is the call graph for this function:

Octstr* octstr_duplicate_real const Octstr ostr,
const char *  file,
long  line,
const char *  func
 

Definition at line 367 of file octstr.c.

References Octstr::data, file, Octstr::len, octstr_create_from_data_trace, and seems_valid.

00369 {
00370     if (ostr == NULL)
00371         return NULL;
00372     seems_valid(ostr);
00373     return octstr_create_from_data_trace(ostr->data, ostr->len, file, line, func);
00374 }

long octstr_extract_uintvar Octstr ostr,
unsigned long *  value,
long  pos
 

Definition at line 1891 of file octstr.c.

References octstr_get_char().

Referenced by is_default_cap(), parse_get_uintvar(), sanitize_capabilities(), wsp_cap_get_client_sdu(), wsp_cap_get_server_sdu(), and wsp_cap_unpack_list().

01892 {
01893     int c;
01894     int count;
01895     unsigned long ui;
01896 
01897     ui = 0;
01898     for (count = 0; count < 5; count++) {
01899         c = octstr_get_char(ostr, pos + count);
01900         if (c < 0)
01901             return -1;
01902         ui = (ui << 7) | (c & 0x7f);
01903         if (!(c & 0x80)) {
01904             *value = ui;
01905             return pos + count + 1;
01906         }
01907     }
01908 
01909     return -1;
01910 }

Here is the call graph for this function:

Octstr* octstr_format const char *  fmt,
  ...
 

Definition at line 2390 of file octstr.c.

References octstr_format_valist.

Referenced by add_client_sdu_size(), add_content_type(), add_crs(), add_msg_cb(), add_push_flag(), add_via(), add_wsp_get(), at2_init_device(), at2_pdu_decode_report_sm(), at2_send_one_message(), at2_set_message_storage(), at2_write_line(), boxc_status(), brunet_send_sms(), build_request(), challenge(), check_concatenation(), check_x_wap_application_id_header(), clickatell_send_sms(), client_thread(), config_reload(), conn_pool_key(), create_onetrans(), date_create_iso(), dlr_mysql_add(), dlr_mysql_flush(), dlr_mysql_get(), dlr_mysql_messages(), dlr_mysql_remove(), dlr_mysql_update(), dlr_pgsql_add(), dlr_pgsql_flush(), dlr_pgsql_get(), dlr_pgsql_messages(), dlr_pgsql_remove(), dlr_pgsql_update(), eat_string_parm(), emimsg_tostring(), error_converting(), error_requesting(), error_requesting_back(), fix_boundary_element(), flag_date_length(), for_each_file(), get_originator_type(), get_ton_npi_value(), gw_netaddr_to_octstr4(), handle_dlr(), handle_pdu(), handle_submit_sm(), headers_acceptable(), http_add_basic_auth(), http_header_add(), http_header_mark_transformation(), http_send_reply(), httpd_loglevel(), httpd_restart_smsc(), httpd_serve(), httpd_stop_smsc(), init_configuration(), kannel_send_sms(), kill_kannel(), main(), make_multipart_value(), msg_to_emimsg(), msg_to_pdu(), obey_request(), open_send_connection(), pap_request_thread(), parse_appid_header(), parse_array(), parse_array_element(), parse_code(), parse_constant(), parse_data(), parse_data_element(), parse_document(), parse_fault(), parse_fault_element(), parse_inline_string(), parse_member(), parse_member_element(), parse_methodcall(), parse_methodcall_element(), parse_methodresponse(), parse_methodresponse_element(), parse_param(), parse_param_element(), parse_params(), parse_params_element(), parse_struct(), parse_struct_element(), parse_value(), parse_value_element(), parse_xml_tag(), port_key(), prepend_char(), proxy_add_authentication(), push_content_create(), radius_type_convert(), read_ppg_config(), route_incoming_to_boxc(), send_bad_message_response(), send_messages(), send_push_response(), send_smpp_thread(), set_bearer_defaults(), set_network_defaults(), set_time(), smpp_emu_writer(), smsbox_req_sendota(), smsbox_sendota_post(), smsbox_xmlrpc_post(), smsc2_status(), smsc_at2_create(), smsc_cgw_create(), smsc_cimd2_create(), smsc_emi2_create(), smsc_fake_create(), smsc_http_create(), smsc_oisd_create(), smsc_smpp_create(), smsc_soap_create(), soap_bouyg_validity_attribute(), soap_o2o_msgdata_attribute(), soap_o2o_validity30_attribute(), soap_rand_attribute(), soap_send(), soap_write_date(), store_file_init(), store_spool_save(), tell_fatal_error(), tell_ppg_name(), type_is(), unpack_datagram(), version_report_string(), wap_event_accept_or_create(), wap_push_ppg_pushuser_authenticate(), wapme_smsproxy_send_sms(), xidris_send_sms(), xml_error(), xmlrpc_call_print(), xmlrpc_doc_print(), xmlrpc_fault_print(), xmlrpc_print_array(), xmlrpc_print_struct(), xmlrpc_response_print(), xmlrpc_scalar_print(), and xmlrpc_value_print().

02391 {
02392     Octstr *os;
02393     va_list args;
02394 
02395     va_start(args, fmt);
02396     os = octstr_format_valist(fmt, args);
02397     va_end(args);
02398     return os;
02399 }

void octstr_format_append Octstr os,
const char *  fmt,
  ...
 

Definition at line 2433 of file octstr.c.

References octstr_append(), octstr_destroy(), and octstr_format_valist.

Referenced by add_delimiter(), boxc_status(), brunet_send_sms(), build_request(), challenge(), clear_old_concat_parts(), clickatell_send_sms(), create_onetrans(), fix_boundary_element(), get_pattern(), http_cgivar_dump_into(), http_send_reply(), httpd_serve(), kannel_send_sms(), main(), make_close_delimiter(), make_part_delimiter(), ota_pack_message(), ota_pack_push_headers(), ota_tokenize_bookmarks(), ota_tokenize_settings(), pack_appid_list(), pack_udhdata(), parse_inline_string(), prepend_catenation_udh(), randomize(), send_bad_message_response(), send_packet(), send_push_response(), simple_binary_output(), smsbox_req_handle(), smsc2_status(), status_cb(), store_file_status(), tell_fatal_error(), urltrans_fill_escape_codes(), xidris_send_sms(), xmlrpc_call_print(), xmlrpc_print_array(), and xmlrpc_print_struct().

02434 {
02435     Octstr *temp;
02436     va_list args;
02437 
02438     va_start(args, fmt);
02439     temp = octstr_format_valist(fmt, args);
02440     va_end(args);
02441     octstr_append(os, temp);
02442     octstr_destroy(temp);
02443 }

Here is the call graph for this function:

Octstr* octstr_format_valist_real const char *  fmt,
va_list  args
 

Definition at line 2402 of file octstr.c.

References convert(), format_flags(), format_prec(), format_type(), format_width(), gw_assert, octstr_append_data(), octstr_create, seems_valid, and VARGS.

02403 {
02404     Octstr *os;
02405     size_t n;
02406 
02407     os = octstr_create("");
02408 
02409     while (*fmt != '\0') {
02410         struct format format = { 0, };
02411 
02412         n = strcspn(fmt, "%");
02413         octstr_append_data(os, fmt, n);
02414         fmt += n;
02415 
02416         gw_assert(*fmt == '%' || *fmt == '\0');
02417         if (*fmt == '\0')
02418             continue;
02419 
02420         ++fmt;
02421         format_flags(&format, &fmt);
02422         format_width(&format, &fmt, VARGS(args));
02423         format_prec(&format, &fmt, VARGS(args));
02424         format_type(&format, &fmt);
02425         convert(os, &format, &fmt, VARGS(args));
02426     }
02427 
02428     seems_valid(os);
02429     return os;
02430 }

Here is the call graph for this function:

long octstr_get_bits Octstr ostr,
long  bitpos,
int  numbits
 

Definition at line 1740 of file octstr.c.

References Octstr::data, gw_assert, Octstr::len, result, and seems_valid.

Referenced by deduce_tid(), get_tid(), unpack_ack(), unpack_tpis(), wtp_type(), and wtp_unpack_wdp_datagram().

01741 {
01742     long pos;
01743     long result;
01744     int mask;
01745     int shiftwidth;
01746 
01747     seems_valid(ostr);
01748     gw_assert(bitpos >= 0);
01749     gw_assert(numbits <= 32);
01750     gw_assert(numbits >= 0);
01751 
01752     pos = bitpos / 8;
01753     bitpos = bitpos % 8;
01754 
01755     /* This also takes care of the len == 0 case */
01756     if (pos >= ostr->len)
01757         return 0;
01758 
01759     mask = (1 << numbits) - 1;
01760 
01761     /* It's easy if the range fits in one octet */
01762     if (bitpos + numbits <= 8) {
01763         /* shiftwidth is the number of bits to ignore on the right.
01764          * bitpos 0 is the leftmost bit. */
01765         shiftwidth = 8 - (bitpos + numbits);
01766         return (ostr->data[pos] >> shiftwidth) & mask;
01767     }
01768 
01769     /* Otherwise... */
01770     result = 0;
01771     while (bitpos + numbits > 8) {
01772         result = (result << 8) | ostr->data[pos];
01773         numbits -= (8 - bitpos);
01774         bitpos = 0;
01775         pos++;
01776         if (pos >= ostr->len)
01777             return (result << numbits) & mask;
01778     }
01779 
01780     gw_assert(bitpos == 0);
01781     result <<= numbits;
01782     result |= ostr->data[pos] >> (8 - numbits);
01783     return result & mask;
01784 }

int octstr_get_char const Octstr ostr,
long  pos
 

Definition at line 401 of file octstr.c.

References Octstr::data, Octstr::len, and seems_valid.

Referenced by accept_escaped(), accept_safe(), add_crs(), at2_convertpdu(), at2_decode7bituncompressed(), at2_encode7bituncompressed(), at2_encode8bituncompressed(), at2_format_address_field(), at2_pdu_decode(), at2_pdu_decode_deliver_sm(), at2_pdu_decode_report_sm(), at2_pdu_extract(), at2_read_line(), at2_scan_for_telnet_escapes(), calculate_checksum(), cfg_read(), charset_gsm_to_latin1(), charset_gsm_to_nrc_iso_21_german(), charset_gsm_to_utf8(), charset_gsm_truncate(), charset_latin1_to_gsm(), charset_nrc_iso_21_german_to_gsm(), charset_utf8_to_gsm(), check_concatenation(), check_variable_syntax(), concatenated_message(), conn_read_line(), convert_addr_from_pdu(), convert_cimd2_to_gsm(), convert_gsm_to_cimd2(), convert_html_entity(), create_peek_window(), data_sm_to_msg(), date_parse_http(), date_parse_iso(), decode_bearer_indication(), decode_binary_data(), decode_integer(), drop_extension_headers(), eat_char(), eat_checksum(), emi2_handle_smscreq(), encode_binary_data(), escape_data(), escape_fragment(), expand_file(), extract_msgdata_part(), fix_boundary_element(), get_fields(), get_mime_boundary(), get_originator_type(), get_pattern(), get_start_param(), get_variable(), get_varint(), get_wtp_pdu_type(), gsm2number(), handle_connect_reply(), handle_get_reply(), handle_operation(), html_to_sms(), http_get_header_parameter(), http_header_get_content_type(), http_header_quoted_string_len(), http_header_split_auth_value(), http_header_split_value(), httpd_serve(), is_default_cap(), issafe(), kannel_receive_sms(), main(), mime_something_to_entity(), msg_to_emimsg(), msg_to_pdu(), octstr_convert_to_html_entities(), octstr_drop_leading_blanks(), octstr_drop_trailing_zeros(), octstr_dump_debug(), octstr_extract_uintvar(), octstr_hash_key(), octstr_is_all_hex(), octstr_isnum(), octstr_search_chars(), octstr_shrink_blanks(), octstr_strip_blanks(), octstr_strip_char(), octstr_strip_crlfs(), octstr_strip_nonalphanums(), oisd_accept_delivery_report_message(), oisd_accept_message(), oisd_expand_gsm7_to_bits(), oisd_request(), oisd_shrink_gsm7(), pack_7bit(), pack_cache_control(), pack_challenge(), pack_content_range(), pack_credentials(), pack_if_range(), pack_quoted_string(), pack_range(), pack_range_value(), pack_warning(), packet_check_header(), packet_check_parameter(), packet_extract(), packet_parse_header(), packet_set_checksum(), parse_address(), parse_constant(), parse_date(), parse_dom_fragment(), parse_escaped_value(), parse_field_name(), parse_field_value(), parse_get_char(), parse_global_phone_number(), parse_http_version(), parse_ipv4_fragment(), parse_ipv6_fragment(), parse_msg_to_rawmessage(), parse_peek_char(), parse_ppg_specifier(), parse_qualifier_keyword(), parse_qualifier_value(), parse_qvalue(), parse_st_octet_string(), parse_terminator(), parse_transport_padding(), parse_type(), parse_value(), parse_variable(), pass_extension_headers(), pass_field_name(), pass_field_value(), pattern_matches_ip(), pdu_to_msg(), qualifiers(), radius_type_convert(), read_mime_headers(), read_some_headers(), remove_crs(), resend_sar_result(), sanitize_capabilities(), send_packet(), set_tid(), set_tid_new(), skip_html_tag(), smsbox_req_handle(), soap_fetch_xml_data(), soap_format_xml(), split_headers(), string_table_apply(), strip_keyword(), tokenize_date(), unescape_data(), unpack_datagram(), unpack_parameter(), unpack_warning_value(), urltrans_fill_escape_codes(), wait_for_ack(), wap_map_url(), wap_msg_send(), wsp_cap_get_method_mor(), wsp_cap_get_push_mor(), wsp_cap_pack_list(), wsp_cap_unpack_list(), wsp_pack_integer_string(), wsp_pack_retry_after(), wsp_pack_text(), wsp_pack_version_value(), wsp_strip_parameters(), and wtp_unpack_wdp_datagram().

00402 {
00403     seems_valid(ostr);
00404     if (pos >= ostr->len || pos < 0)
00405         return -1;
00406     return ostr->data[pos];
00407 }

char* octstr_get_cstr_real const Octstr ostr,
const char *  file,
long  line,
const char *  func
 

Definition at line 434 of file octstr.c.

References Octstr::data, file, Octstr::len, and seems_valid_real().

00436 {
00437     if (!ostr)
00438         return "(null)";
00439     seems_valid_real(ostr, file, line, func);
00440     if (ostr->len == 0)
00441         return "";
00442     return ostr->data;
00443 }

Here is the call graph for this function:

void octstr_get_many_chars char *  buf,
Octstr ostr,
long  pos,
long  len
 

Definition at line 420 of file octstr.c.

References Octstr::data, gw_assert, Octstr::len, and seems_valid.

Referenced by cimd_submit_msg(), compare_octstr_sequence(), conn_read_withlen(), convert_html_entity(), html_comment_begins(), packet_extract(), parse_integer(), parse_msg_to_rawmessage(), read_msg(), smpp_pdu_read_len(), wap_msg_recv(), and write_data().

00421 {
00422     gw_assert(buf != NULL);
00423     seems_valid(ostr);
00424 
00425     if (pos >= ostr->len)
00426         return;
00427     if (pos + len > ostr->len)
00428         len = ostr->len - pos;
00429     if (len > 0)
00430         memcpy(buf, ostr->data + pos, len);
00431 }

unsigned long octstr_hash_key Octstr ostr  ) 
 

Definition at line 2446 of file octstr.c.

References octstr_get_char(), and octstr_len().

Referenced by key_to_index(), and store_spool_save().

02447 {
02448     unsigned long key = 0;
02449     long i;
02450 
02451     if (ostr == NULL)
02452     return 0;
02453 
02454     for (i = 0; i < octstr_len(ostr); i++)
02455     key = key + octstr_get_char(ostr, i);
02456 
02457     return key;
02458 }

Here is the call graph for this function:

int octstr_hex_to_binary Octstr ostr  ) 
 

Definition at line 489 of file octstr.c.

References Octstr::data, gw_assert, gw_isxdigit(), Octstr::immutable, Octstr::len, octstr_check_range(), and seems_valid.

Referenced by accept_escaped(), at2_pdu_extract(), decode_binary_data(), get_x_kannel_from_headers(), get_x_kannel_from_xml(), handle_operation(), main(), octstr_append_from_hex(), packet_get_hex_parm(), push_content_create(), soap_msgdata_deps(), and store_file_status().

00490 {
00491     long len, i;
00492     unsigned char *p;
00493 
00494     seems_valid(ostr);
00495     gw_assert(!ostr->immutable);
00496 
00497     if (ostr->len == 0)
00498         return 0;
00499 
00500     /* Check if it's in the right format */
00501     if (!octstr_check_range(ostr, 0, ostr->len, gw_isxdigit))
00502         return -1;
00503 
00504     len = ostr->len;
00505 
00506     /* Convert ascii data to binary values */
00507     for (i = 0, p = ostr->data; i < len; i++, p++) {
00508         if (*p >= '0' && *p <= '9')
00509             *p -= '0';
00510         else if (*p >= 'a' && *p <= 'f')
00511             *p = *p - 'a' + 10;
00512         else if (*p >= 'A' && *p <= 'F')
00513             *p = *p - 'A' + 10;
00514         else {
00515             /* isxdigit checked the whole string, so we should
00516              * not be able to get here. */
00517             gw_assert(0);
00518             *p = 0;
00519         }
00520     }
00521 
00522     /* De-hexing will compress data by factor of 2 */
00523     len = ostr->len / 2;
00524 
00525     for (i = 0; i < len; i++) {
00526         ostr->data[i] = ostr->data[i * 2] * 16 | ostr->data[i * 2 + 1];
00527     }
00528 
00529     ostr->len = len;
00530     ostr->data[len] = '\0';
00531 
00532     seems_valid(ostr);
00533     return 0;
00534 }

Here is the call graph for this function:

Octstr* octstr_imm const char *  cstr  ) 
 

Definition at line 280 of file octstr.c.

References CSTR_TO_LONG, Octstr::data, data, gw_assert, Octstr::immutable, immutables, immutables_init, immutables_mutex, Octstr::len, mutex_lock, mutex_unlock, panic, seems_valid, and Octstr::size.

Referenced by add_connection_header(), add_content_transfer_encoding_type(), add_content_type(), add_delimiter(), add_group(), add_push_application_id(), add_via(), append_crlf(), at2_check_sms_memory(), at2_detect_modem_type(), at2_init_device(), at2_pdu_extract(), at2_read_line(), at2_read_modems(), at2_send_one_message(), at2_wait_modem_command(), authorise_user(), bb_alog_sms(), brunet_parse_body(), brunet_parse_reply(), brunet_send_sms(), build_request(), build_response(), cfg_get_bool(), cfg_read(), cgw_decode_msg(), cgw_encode_msg(), cgw_handle_op(), cgwop_create(), cgwop_tostr(), challenge(), charset_to_utf8(), check_config(), check_control_content_type_header(), check_control_headers(), cid_matches(), clickatell_parse_body(), clickatell_parse_reply(), clickatell_send_sms(), client_is_persistent(), client_thread(), config_reload(), conn_config_ssl(), connect_denied(), construct_linear_table(), construct_numbered_table(), content_transformable(), convert_addr_from_pdu(), core_is_allowed_in_group(), create_onetrans(), create_oneuser(), describe_code(), dlr_db_fields_create(), dlr_init(), dlr_init_mysql(), dlr_init_pgsql(), drop_extension_headers(), drop_optional_header(), escape_fragment(), expand_file(), find_charset_encoding(), fix_boundary_element(), get_data(), get_mime_boundary(), get_start_param(), get_tag(), get_x_kannel_from_headers(), get_x_kannel_from_xml(), handle_dlr(), handle_transaction(), http_add_basic_auth(), http_header_get_content_type(), http_header_pack(), httpadmin_start(), httpd_serve(), init_batch(), init_bearerbox(), init_configuration(), init_reroute(), init_smsbox(), init_smsbox_routes(), init_wapbox(), ip_allowed_by_ppg(), ip_allowed_by_user(), kannel_parse_reply(), kannel_send_sms(), main(), make_multipart_value(), make_url(), mime_decompile(), mime_entity_dump_real(), mime_entity_to_octstr(), mime_multipart_start_elem(), mime_something_to_entity(), msg_to_bb(), msg_to_cgwop(), msg_to_pdu(), normalize_charset(), obey_request(), obey_request_thread(), octstr_binary_to_base64(), octstr_recode(), open_send_connection(), ota_pack_message(), ota_pack_push_headers(), ota_pack_udh(), ota_tokenize_bookmarks(), ota_tokenize_settings(), pack_appid_list(), pack_cache_control(), pack_challenge(), pack_content_range(), pack_credentials(), pack_pragma(), pack_range(), packet_encode_message(), pap_convert_content(), pap_get_content(), pap_request_thread(), parse2trans(), parse_address_value(), parse_appid_header(), parse_array_element(), parse_attr_value(), parse_attribute(), parse_bad_message_response_value(), parse_bearer(), parse_client_specifier(), parse_data_element(), parse_date(), parse_delivery_method(), parse_document(), parse_element(), parse_entities(), parse_fault_element(), parse_http_version(), parse_member_element(), parse_methodcall_element(), parse_methodresponse_element(), parse_network(), parse_ota_syncsettings(), parse_pap_value(), parse_param_element(), parse_params_element(), parse_priority(), parse_progress_note_value(), parse_push_message_value(), parse_push_response_value(), parse_quality_of_service_value(), parse_request_line(), parse_requirement(), parse_response_result_value(), parse_state(), parse_struct_element(), parse_url(), parse_url_value(), parse_value_element(), pass_data_headers(), pass_extension_headers(), pattern_list_matches_ip(), prefix_allowed(), prepend_crlf(), proxy_add_authentication(), push_content_create(), qualifiers(), radius_acct_init(), read_ppg_config(), read_test_ppg_config(), reply(), return_reply(), select_bearer_network(), server(), set_addr_tuple(), set_any_value(), set_attribute_value(), set_dlr_mask(), set_dlr_url(), set_smsbox_id(), set_smsc_id(), skip_html_comment(), sms_to_client(), smsbox_req_handle(), smsbox_req_sendota(), smsbox_sendota_post(), smsbox_sendsms_post(), smsbox_start(), smsbox_xmlrpc_post(), smsc2_restart_smsc(), smsc2_start(), smsc2_status(), smsc_at2_create(), smsc_cgw_create(), smsc_cimd2_create(), smsc_emi2_create(), smsc_fake_create(), smsc_http_create(), smsc_oisd_create(), smsc_open(), smsc_smpp_create(), smsc_soap_create(), smscconn_create(), soap_create_map(), soap_fetch_xml_data(), soap_map_xml_data(), soap_msgdata_deps(), soap_parse_dlr(), soap_read_response(), soap_release_dependences(), soap_server(), start_fetch(), start_request(), test_header_combine(), transfer_encode(), type_is(), udp_start(), unpack_challenge(), unpack_optional_q_value(), unpack_parameter(), update_table(), update_tables(), url_result_thread(), urltrans_add_cfg(), urltrans_fill_escape_codes(), uses_gsm_msisdn_address(), uses_ipv4_address(), uses_ipv6_address(), wap_event_accept_or_create(), wap_map_url_config(), wap_map_url_config_device_home(), wapbox_start(), wildcarded_ip_found(), wina_bearer_identifier(), wml_charsets(), wsp_encoding_string_to_version(), xidris_parse_reply(), xidris_receive_sms(), xidris_send_sms(), xml_error(), and xmlrpc_fault_print().

00281 {
00282     Octstr *os;
00283     long i, index;
00284     unsigned char *data;
00285 
00286     gw_assert(immutables_init);
00287     gw_assert(cstr != NULL);
00288 
00289     index = CSTR_TO_LONG(cstr) % MAX_IMMUTABLES;
00290     data = (unsigned char *) cstr;
00291 
00292     mutex_lock(&immutables_mutex);
00293     i = index;
00294     for (; ; ) {
00295     if (immutables[i] == NULL || immutables[i]->data == data)
00296             break;
00297         i = (i + 1) % MAX_IMMUTABLES;
00298         if (i == index)
00299             panic(0, "Too many immutable strings.");
00300     }
00301     os = immutables[i];
00302     if (os == NULL) {
00303     /*
00304      * Can't use octstr_create() because it copies the string,
00305      * which would break our hashing.
00306      */
00307     os = gw_malloc(sizeof(*os));
00308         os->data = data;
00309         os->len = strlen(data);
00310         os->size = os->len + 1;
00311         os->immutable = 1;
00312     immutables[i] = os;
00313     seems_valid(os);
00314     }
00315     mutex_unlock(&immutables_mutex);
00316 
00317     return os;
00318 }

void octstr_init void   ) 
 

Definition at line 215 of file octstr.c.

References immutables_init, immutables_mutex, mutex_init_static, and urlcode_init().

Referenced by gwlib_init().

00216 {
00217     urlcode_init();
00218     mutex_init_static(&immutables_mutex);
00219     immutables_init = 1;
00220 }

Here is the call graph for this function:

void octstr_insert Octstr ostr1,
const Octstr ostr2,
long  pos
 

Definition at line 1243 of file octstr.c.

References Octstr::data, gw_assert, Octstr::immutable, Octstr::len, octstr_grow(), and seems_valid.

Referenced by accept_escaped(), add_crs(), append_string(), cgw_decode_msg(), cgw_encode_msg(), decode_binary_data(), escape_data(), flag_date_length(), http_add_basic_auth(), init_smsbox_routes(), main(), msg_to_pdu(), octstr_append(), octstr_binary_to_base64(), octstr_replace(), output_octet_string(), output_st_octet_string(), pack_challenge(), packet_add_parm(), parse_entities(), parse_inline_string(), parse_st_octet_string(), prefix_allowed(), prepend_char(), prepend_crlf(), proxy_add_authentication(), radius_authenticate_pdu(), radius_pdu_pack(), replace_octstr_char(), smasi_pdu_pack(), smpp_pdu_pack(), sms_split(), string_table_apply(), string_table_output(), unpack_parameter(), wml_binary_output(), and xmlrpc_doc_print().

01244 {
01245     if (ostr2 == NULL)
01246         return;
01247 
01248     seems_valid(ostr1);
01249     seems_valid(ostr2);
01250     gw_assert(pos <= ostr1->len);
01251     gw_assert(!ostr1->immutable);
01252 
01253     if (ostr2->len == 0)
01254         return;
01255 
01256     octstr_grow(ostr1, ostr1->len + ostr2->len);
01257     memmove(ostr1->data + pos + ostr2->len, ostr1->data + pos,
01258             ostr1->len - pos);
01259     memcpy(ostr1->data + pos, ostr2->data, ostr2->len);
01260     ostr1->len += ostr2->len;
01261     ostr1->data[ostr1->len] = '\0';
01262 
01263     seems_valid(ostr1);
01264 }

Here is the call graph for this function:

void octstr_insert_char Octstr ostr,
long  pos,
const char  c
 

Definition at line 1421 of file octstr.c.

References Octstr::data, gw_assert, Octstr::immutable, Octstr::len, octstr_grow(), and seems_valid.

Referenced by convert_addr_from_pdu(), init_smsbox_routes(), and octstr_convert_from_html_entities().

01422 {
01423     seems_valid(ostr);
01424     gw_assert(!ostr->immutable);
01425     gw_assert(pos <= ostr->len);
01426     
01427     octstr_grow(ostr, ostr->len + 1);
01428     if (ostr->len > pos)
01429         memmove(ostr->data + pos + 1, ostr->data + pos, ostr->len - pos);
01430     memcpy(ostr->data + pos, &c, 1);
01431     ostr->len += 1;
01432     ostr->data[ostr->len] = '\0';
01433     
01434     seems_valid(ostr);
01435 }

Here is the call graph for this function:

void octstr_insert_data Octstr ostr,
long  pos,
const char *  data,
long  len
 

Definition at line 1401 of file octstr.c.

References data, Octstr::data, gw_assert, Octstr::immutable, Octstr::len, octstr_grow(), and seems_valid.

Referenced by bb_smscconn_send_failed(), bb_smscconn_sent(), cgw_encode_msg(), charset_latin1_to_gsm(), compare_octstr_sequence(), convert(), convert_gsm_to_cimd2(), http_header_split_auth_value(), line_append_hex_IA5(), msg_to_emimsg(), normalize_number(), octstr_append_char(), octstr_append_cstr(), octstr_append_data(), octstr_read_file(), octstr_symbolize(), pack_into_push_datagram(), pack_into_result_datagram(), packet_add_parm(), packet_set_checksum(), sema_encode_msg(), sema_msg_session_mt(), unescape_data(), unpack_credentials(), unpack_warning_value(), write_msg(), and wsp_pack_long_integer().

01402 {
01403     seems_valid(ostr);
01404     gw_assert(!ostr->immutable);
01405     gw_assert(pos <= ostr->len);
01406 
01407     if (len == 0)
01408         return;
01409 
01410     octstr_grow(ostr, ostr->len + len);
01411     if (ostr->len > pos) {  /* only if neccessary*/
01412         memmove(ostr->data + pos + len, ostr->data + pos, ostr->len - pos);
01413     }
01414     memcpy(ostr->data + pos, data, len);
01415     ostr->len += len;
01416     ostr->data[ostr->len] = '\0';
01417 
01418     seems_valid(ostr);
01419 }

Here is the call graph for this function:

int octstr_is_all_hex Octstr os  ) 
 

Definition at line 2622 of file octstr.c.

References gw_isxdigit(), octstr_get_char(), octstr_len(), and seems_valid.

Referenced by main(), and push_content_create().

02623 {
02624     long len, i;
02625     int ch;
02626 
02627     seems_valid(os);
02628     len = octstr_len(os);
02629     for (i = 0; i < len; ++i) {
02630         ch = octstr_get_char(os, i);
02631         if (!gw_isxdigit(ch))
02632             return 0;
02633     }
02634 
02635     return 1;
02636 }

Here is the call graph for this function:

int octstr_isnum Octstr ostr1  ) 
 

Definition at line 2554 of file octstr.c.

References octstr_get_char(), octstr_len(), and seems_valid.

02555 {
02556     int start = 0;
02557     char c;
02558 
02559     seems_valid(ostr1);
02560     while (start < octstr_len(ostr1)) {
02561         c = octstr_get_char(ostr1, start);
02562         if (!isdigit(c) && (c!='+'))
02563             return 0;
02564         start++;
02565     }
02566     return 1;
02567 }

Here is the call graph for this function:

int octstr_item_case_match void *  item,
void *  pattern
 

Definition at line 1607 of file octstr.c.

References octstr_case_compare().

01608 {
01609     return octstr_case_compare(item, pattern) == 0;
01610 }

Here is the call graph for this function:

int octstr_item_match void *  item,
void *  pattern
 

Definition at line 1601 of file octstr.c.

References octstr_compare().

Referenced by at2_detect_modem_type(), at2_init_device(), cfg_read(), check_allowed_translation(), smsbox_req_handle(), and smscconn_usable().

01602 {
01603     return octstr_compare(item, pattern) == 0;
01604 }

Here is the call graph for this function:

long octstr_len const Octstr ostr  ) 
 

Definition at line 339 of file octstr.c.

References Octstr::len, and seems_valid.

Referenced by add_content_type(), add_crs(), add_msisdn(), add_network_info(), add_wsp_get(), append_string(), at2_check_sms_memory(), at2_convertpdu(), at2_decode7bituncompressed(), at2_detect_modem_type(), at2_encode7bituncompressed(), at2_encode8bituncompressed(), at2_format_address_field(), at2_init_device(), at2_login_device(), at2_pdu_decode_deliver_sm(), at2_pdu_encode(), at2_pdu_extract(), at2_read_line(), at2_read_modems(), at2_scan_for_telnet_escapes(), at2_send_one_message(), at2_wait_modem_command(), at2_write_line(), bb_alog_sms(), begin_sar_result(), brunet_parse_body(), brunet_send_sms(), calculate_checksum(), cfg_read(), cgw_encode_msg(), charset_convert(), charset_from_utf8(), charset_gsm_to_latin1(), charset_gsm_to_nrc_iso_21_german(), charset_gsm_to_utf8(), charset_gsm_truncate(), charset_latin1_to_gsm(), charset_nrc_iso_21_german_to_gsm(), charset_processing(), charset_to_utf8(), charset_utf8_to_gsm(), check_concatenation(), check_data_content_type_header(), check_variable_syntax(), cid_matches(), cimd2_accept_message(), cimd_submit_msg(), clickatell_receive_sms(), clickatell_send_sms(), compare_octstr_sequence(), conn_read_line(), conn_read_packet(), conn_write_withlen(), convert(), convert_addr_from_pdu(), convert_cimd2_to_gsm(), convert_content(), convert_gsm_to_cimd2(), convert_wmlscript_to_wmlscriptc(), copy_until_assign(), count_occurences(), create_onetrans(), data_sm_to_msg(), date_parse_http(), decode_binary_data(), decode_integer(), deconvert_content(), deliver_after_test_cleared(), deliver_before_test_cleared(), dlr_add(), dlr_find(), eat_checksum(), eat_int_parm(), eat_string_parm(), emi2_handle_smscreq(), emimsg_tostring(), encode_binary_data(), escape_data(), escape_fragment(), expand_file(), extract_msgdata_part(), extract_msgdata_part_by_coding(), fields_to_dcs(), fill_message(), find_charset_encoding(), find_translation(), fix_boundary_element(), flag_date_length(), get_fields(), get_header_value(), get_mime_boundary(), get_pattern(), get_start_param(), get_tag(), get_variable(), gsm2number(), gw_pcre_exec_real(), handle_dlr(), handle_operation(), handle_pdu(), html_to_sms(), http_get_header_parameter(), http_header_add_element(), http_header_find_first_real(), http_header_get(), http_header_get_content_type(), http_header_mark_transformation(), http_header_pack(), http_header_quoted_string_len(), http_header_split_auth_value(), http_header_split_value(), http_header_value(), http_send_reply(), http_use_proxy(), httpd_serve(), init_bearerbox(), init_smsbox_routes(), is_allowed_ip(), is_default_cap(), is_token(), kannel_receive_sms(), kannel_send_sms(), line_append_hex_IA5(), main(), main_loop(), make_emi31(), md5(), mime_decompile(), mime_entity_dump_real(), mime_parse(), mime_something_to_entity(), msg_to_cgwop(), msg_to_emimsg(), msg_to_pdu(), normalize_charset(), normalize_number(), numhash_get_key(), obey_request(), obey_request_thread(), octstr_convert_to_html_entities(), octstr_delete_matching(), octstr_drop_trailing_zeros(), octstr_dump_debug(), octstr_hash_key(), octstr_is_all_hex(), octstr_isnum(), octstr_read_file(), octstr_replace(), octstr_search_chars(), octstr_shrink_blanks(), octstr_split(), octstr_strip_blanks(), octstr_strip_char(), octstr_strip_crlfs(), octstr_strip_nonalphanums(), ois_adjust_sm_text(), ois_append_msisdn(), ois_append_sm_text(), ois_append_submission_options(), oisd_accept_message(), oisd_expand_gsm7(), oisd_expand_gsm7_to_bits(), oisd_send_delivery_request(), oisd_shrink_gsm7(), open_send_connection(), ota_compile(), ota_pack_push_headers(), output_octet_string(), output_st_octet_string(), pack_7bit(), pack_cache_control(), pack_challenge(), pack_content_range(), pack_credentials(), pack_known_header(), pack_md5(), pack_parameter(), pack_quoted_string(), pack_range(), pack_server_address(), pack_tpis(), pack_warning(), packet_add_address_parm(), packet_add_parm(), packet_check(), packet_check_header(), packet_encode_message(), packet_extract(), packet_set_checksum(), packet_set_data_size(), pap_compile(), pap_request_thread(), parm_parse(), parm_valid_address(), parse_address(), parse_appid_header(), parse_array_element(), parse_attr_value(), parse_attribute(), parse_cgivars(), parse_charset(), parse_close_delimiter(), parse_constant(), parse_context_create(), parse_data(), parse_data_element(), parse_document(), parse_element(), parse_epilogue(), parse_fault_element(), parse_field_name(), parse_field_value(), parse_get_seperated_block(), parse_http_version(), parse_integer(), parse_member_element(), parse_methodcall_element(), parse_methodresponse_element(), parse_msg_to_rawmessage(), parse_ota_syncsettings(), parse_param_element(), parse_params_element(), parse_st_octet_string(), parse_struct_element(), parse_tail(), parse_text(), parse_url(), parse_url_value(), parse_value(), parse_value_element(), parse_variable(), parse_xml_tag(), pass_data_headers(), pass_field_name(), pass_field_value(), pass_optional_header(), pattern_matches_ip(), pdu_to_msg(), prepend_catenation_udh(), radius_authenticate_pdu(), radius_pdu_pack(), radius_pdu_unpack(), read_line(), read_mime_headers(), read_msg(), read_some_headers(), receive_push_reply(), remove_crs(), remove_prefix(), replace_octstr_char(), return_reply(), route_incoming_to_boxc(), sanitize_capabilities(), sema_encode_msg(), sema_msg_session_mt(), sema_receive_msg(), sema_submit_msg(), send_bad_message_response(), send_file(), send_message(), send_packet(), send_request(), set_charset(), set_dlr_mask(), set_zero(), si_compile(), simple_binary_output(), skip_html_comment(), skip_html_tag(), skip_tail(), sl_compile(), smpp_pdu_pack(), smpp_pdu_unpack(), sms_msgdata_len(), sms_split(), sms_to_client(), smsbox_req_handle(), smsbox_req_sendota(), smsbox_req_sendsms(), smsbox_sendota_post(), smsbox_sendsms_post(), smsc_at2_create(), smsc_cimd2_create(), smsc_emi2_create(), smsc_smpp_create(), soap_fetch_xml_data(), soap_format_xml(), soap_o2o_msgdata_attribute(), soap_read_date(), split_headers(), start_fetch(), start_push(), store_file_init(), store_file_load(), store_spool_save(), string_table_add(), string_table_add_many(), string_table_apply(), string_table_collect_strings(), string_table_output(), strip_prefix_and_suffix(), tokenize_date(),