string class
[D-BUS internal implementation details]

DBusString data structure. More...

Defines

#define ASSIGN_2_OCTETS(p, octets)   *((dbus_uint16_t*)(p)) = *((dbus_uint16_t*)(octets));
 assign 2 bytes from one string to another
#define ASSIGN_4_OCTETS(p, octets)   *((dbus_uint32_t*)(p)) = *((dbus_uint32_t*)(octets));
 assign 4 bytes from one string to another
#define ASSIGN_8_OCTETS(p, octets)   *((dbus_uint64_t*)(p)) = *((dbus_uint64_t*)(octets));
 assign 8 bytes from one string to another
#define DBUS_STRING_COPY_PREAMBLE(source, start, dest, insert_at)
 Checks assertions for two strings we're copying a segment between, and declares real_source/real_dest variables.
#define UTF8_COMPUTE(Char, Mask, Len)
 computes length and mask of a unicode character
#define UTF8_LENGTH(Char)
 computes length of a unicode character in UTF-8
#define UTF8_GET(Result, Chars, Count, Mask, Len)
 Gets a UTF-8 value.
#define UNICODE_VALID(Char)
 Check whether a unicode char is in a valid range.

Functions

dbus_bool_t _dbus_string_ends_with_c_str (const DBusString *a, const char *c_str)
 Returns whether a string ends with the given suffix.
dbus_bool_t _dbus_string_find_byte_backward (const DBusString *str, int start, unsigned char byte, int *found)
 Find the given byte scanning backward from the given start.
void _dbus_string_skip_white (const DBusString *str, int start, int *end)
 Skips whitespace from start, storing the first non-whitespace in *end.
dbus_bool_t _dbus_string_init_preallocated (DBusString *str, int allocate_size)
 Initializes a string that can be up to the given allocation size before it has to realloc.
dbus_bool_t _dbus_string_init (DBusString *str)
 Initializes a string.
void _dbus_string_init_const (DBusString *str, const char *value)
 Initializes a constant string.
void _dbus_string_init_const_len (DBusString *str, const char *value, int len)
 Initializes a constant string with a length.
void _dbus_string_free (DBusString *str)
 Frees a string created by _dbus_string_init().
void _dbus_string_lock (DBusString *str)
 Locks a string such that any attempts to change the string will result in aborting the program.
char * _dbus_string_get_data (DBusString *str)
 Gets the raw character buffer from the string.
const char * _dbus_string_get_const_data (const DBusString *str)
 Gets the raw character buffer from a const string.
char * _dbus_string_get_data_len (DBusString *str, int start, int len)
 Gets a sub-portion of the raw character buffer from the string.
const char * _dbus_string_get_const_data_len (const DBusString *str, int start, int len)
 const version of _dbus_string_get_data_len().
void _dbus_string_set_byte (DBusString *str, int i, unsigned char byte)
 Sets the value of the byte at the given position.
unsigned char _dbus_string_get_byte (const DBusString *str, int start)
 Gets the byte at the given position.
dbus_bool_t _dbus_string_insert_bytes (DBusString *str, int i, int n_bytes, unsigned char byte)
 Inserts a number of bytes of a given value at the given position.
dbus_bool_t _dbus_string_insert_byte (DBusString *str, int i, unsigned char byte)
 Inserts a single byte at the given position.
dbus_bool_t _dbus_string_steal_data (DBusString *str, char **data_return)
 Like _dbus_string_get_data(), but removes the gotten data from the original string.
dbus_bool_t _dbus_string_steal_data_len (DBusString *str, char **data_return, int start, int len)
 Like _dbus_string_get_data_len(), but removes the gotten data from the original string.
dbus_bool_t _dbus_string_copy_data (const DBusString *str, char **data_return)
 Copies the data from the string into a char*.
void _dbus_string_copy_to_buffer (const DBusString *str, char *buffer, int avail_len)
 Copies the contents of a DBusString into a different buffer.
dbus_bool_t _dbus_string_copy_data_len (const DBusString *str, char **data_return, int start, int len)
 Copies a segment of the string into a char*.
int _dbus_string_get_length (const DBusString *str)
 Gets the length of a string (not including nul termination).
dbus_bool_t _dbus_string_lengthen (DBusString *str, int additional_length)
 Makes a string longer by the given number of bytes.
void _dbus_string_shorten (DBusString *str, int length_to_remove)
 Makes a string shorter by the given number of bytes.
dbus_bool_t _dbus_string_set_length (DBusString *str, int length)
 Sets the length of a string.
dbus_bool_t _dbus_string_align_length (DBusString *str, int alignment)
 Align the length of a string to a specific alignment (typically 4 or 8) by appending nul bytes to the string.
dbus_bool_t _dbus_string_alloc_space (DBusString *str, int extra_bytes)
 Preallocate extra_bytes such that a future lengthening of the string by extra_bytes is guaranteed to succeed without an out of memory error.
dbus_bool_t _dbus_string_append (DBusString *str, const char *buffer)
 Appends a nul-terminated C-style string to a DBusString.
dbus_bool_t _dbus_string_append_4_aligned (DBusString *str, const unsigned char octets[4])
 Appends 4 bytes aligned on a 4 byte boundary with any alignment padding initialized to 0.
dbus_bool_t _dbus_string_append_8_aligned (DBusString *str, const unsigned char octets[8])
 Appends 8 bytes aligned on an 8 byte boundary with any alignment padding initialized to 0.
dbus_bool_t _dbus_string_insert_2_aligned (DBusString *str, int insert_at, const unsigned char octets[4])
 Inserts 2 bytes aligned on a 2 byte boundary with any alignment padding initialized to 0.
dbus_bool_t _dbus_string_insert_4_aligned (DBusString *str, int insert_at, const unsigned char octets[4])
 Inserts 4 bytes aligned on a 4 byte boundary with any alignment padding initialized to 0.
dbus_bool_t _dbus_string_insert_8_aligned (DBusString *str, int insert_at, const unsigned char octets[8])
 Inserts 8 bytes aligned on an 8 byte boundary with any alignment padding initialized to 0.
dbus_bool_t _dbus_string_insert_alignment (DBusString *str, int *insert_at, int alignment)
 Inserts padding at *insert_at such to align it to the given boundary.
dbus_bool_t _dbus_string_append_printf_valist (DBusString *str, const char *format, va_list args)
 Appends a printf-style formatted string to the DBusString.
dbus_bool_t _dbus_string_append_printf (DBusString *str, const char *format,...)
 Appends a printf-style formatted string to the DBusString.
dbus_bool_t _dbus_string_append_len (DBusString *str, const char *buffer, int len)
 Appends block of bytes with the given length to a DBusString.
dbus_bool_t _dbus_string_append_byte (DBusString *str, unsigned char byte)
 Appends a single byte to the string, returning FALSE if not enough memory.
dbus_bool_t _dbus_string_append_unichar (DBusString *str, dbus_unichar_t ch)
 Appends a single Unicode character, encoding the character in UTF-8 format.
void _dbus_string_delete (DBusString *str, int start, int len)
 Deletes a segment of a DBusString with length len starting at start.
dbus_bool_t _dbus_string_move (DBusString *source, int start, DBusString *dest, int insert_at)
 Moves the end of one string into another string.
dbus_bool_t _dbus_string_copy (const DBusString *source, int start, DBusString *dest, int insert_at)
 Like _dbus_string_move(), but does not delete the section of the source string that's copied to the dest string.
dbus_bool_t _dbus_string_move_len (DBusString *source, int start, int len, DBusString *dest, int insert_at)
 Like _dbus_string_move(), but can move a segment from the middle of the source string.
dbus_bool_t _dbus_string_copy_len (const DBusString *source, int start, int len, DBusString *dest, int insert_at)
 Like _dbus_string_copy(), but can copy a segment from the middle of the source string.
dbus_bool_t _dbus_string_replace_len (const DBusString *source, int start, int len, DBusString *dest, int replace_at, int replace_len)
 Replaces a segment of dest string with a segment of source string.
void _dbus_string_get_unichar (const DBusString *str, int start, dbus_unichar_t *ch_return, int *end_return)
 Gets a unicode character from a UTF-8 string.
dbus_bool_t _dbus_string_find (const DBusString *str, int start, const char *substr, int *found)
 Finds the given substring in the string, returning TRUE and filling in the byte index where the substring was found, if it was found.
dbus_bool_t _dbus_string_find_to (const DBusString *str, int start, int end, const char *substr, int *found)
 Finds the given substring in the string, up to a certain position, returning TRUE and filling in the byte index where the substring was found, if it was found.
dbus_bool_t _dbus_string_find_blank (const DBusString *str, int start, int *found)
 Finds a blank (space or tab) in the string.
void _dbus_string_skip_blank (const DBusString *str, int start, int *end)
 Skips blanks from start, storing the first non-blank in *end (blank is space or tab).
dbus_bool_t _dbus_string_pop_line (DBusString *source, DBusString *dest)
 Assigns a newline-terminated or \r\n-terminated line from the front of the string to the given dest string.
void _dbus_string_delete_first_word (DBusString *str)
 Deletes up to and including the first blank space in the string.
void _dbus_string_delete_leading_blanks (DBusString *str)
 Deletes any leading blanks in the string.
dbus_bool_t _dbus_string_equal (const DBusString *a, const DBusString *b)
 Tests two DBusString for equality.
dbus_bool_t _dbus_string_equal_len (const DBusString *a, const DBusString *b, int len)
 Tests two DBusString for equality up to the given length.
dbus_bool_t _dbus_string_equal_substring (const DBusString *a, int a_start, int a_len, const DBusString *b, int b_start)
 Tests two sub-parts of two DBusString for equality.
dbus_bool_t _dbus_string_equal_c_str (const DBusString *a, const char *c_str)
 Checks whether a string is equal to a C string.
dbus_bool_t _dbus_string_starts_with_c_str (const DBusString *a, const char *c_str)
 Checks whether a string starts with the given C string.
dbus_bool_t _dbus_string_append_byte_as_hex (DBusString *str, int byte)
 Appends a two-character hex digit to a string, where the hex digit has the value of the given byte.
dbus_bool_t _dbus_string_hex_encode (const DBusString *source, int start, DBusString *dest, int insert_at)
 Encodes a string in hex, the way MD5 and SHA-1 are usually encoded.
dbus_bool_t _dbus_string_hex_decode (const DBusString *source, int start, int *end_return, DBusString *dest, int insert_at)
 Decodes a string from hex encoding.
dbus_bool_t _dbus_string_validate_ascii (const DBusString *str, int start, int len)
 Checks that the given range of the string is valid ASCII with no nul bytes.
dbus_bool_t _dbus_string_validate_utf8 (const DBusString *str, int start, int len)
 Checks that the given range of the string is valid UTF-8.
dbus_bool_t _dbus_string_validate_nul (const DBusString *str, int start, int len)
 Checks that the given range of the string is all nul bytes.
void _dbus_string_zero (DBusString *str)
 Clears all allocated bytes in the string to zero.
dbus_bool_t _dbus_string_get_dirname (const DBusString *filename, DBusString *dirname)
 Get the directory name from a complete filename.
dbus_bool_t _dbus_string_append_int (DBusString *str, long value)
 Appends an integer to a DBusString.
dbus_bool_t _dbus_string_append_uint (DBusString *str, unsigned long value)
 Appends an unsigned integer to a DBusString.
dbus_bool_t _dbus_string_append_double (DBusString *str, double value)
 Appends a double to a DBusString.
dbus_bool_t _dbus_string_parse_int (const DBusString *str, int start, long *value_return, int *end_return)
 Parses an integer contained in a DBusString.
dbus_bool_t _dbus_check_dir_is_private_to_user (DBusString *dir, DBusError *error)
 Checks to make sure the given directory is private to the user.
dbus_bool_t _dbus_string_parse_uint (const DBusString *str, int start, unsigned long *value_return, int *end_return)
 Parses an unsigned integer contained in a DBusString.
dbus_bool_t _dbus_string_parse_double (const DBusString *str, int start, double *value_return, int *end_return)
 Parses a floating point number contained in a DBusString.

Detailed Description

DBusString data structure.

Types and functions related to DBusString. DBusString is intended to be a string class that makes it hard to mess up security issues (and just in general harder to write buggy code). It should be used (or extended and then used) rather than the libc stuff in string.h. The string class is a bit inconvenient at spots because it handles out-of-memory failures and tries to be extra-robust.

A DBusString has a maximum length set at initialization time; this can be used to ensure that a buffer doesn't get too big. The _dbus_string_lengthen() method checks for overflow, and for max length being exceeded.

Try to avoid conversion to a plain C string, i.e. add methods on the string object instead, only convert to C string when passing things out to the public API. In particular, no sprintf, strcpy, strcat, any of that should be used. The GString feature of accepting negative numbers for "length of string" is also absent, because it could keep us from detecting bogus huge lengths. i.e. if we passed in some bogus huge length it would be taken to mean "current length of string" instead of "broken crack"

Todo:
DBusString needs a lot of cleaning up; some of the API is no longer used, and the API is pretty inconsistent. In particular all the "append" APIs, especially those involving alignment but probably lots of them, are no longer used by the marshaling code which always does "inserts" now.

Define Documentation

#define DBUS_STRING_COPY_PREAMBLE source,
start,
dest,
insert_at   ) 
 

Value:

DBusRealString *real_source = (DBusRealString*) source;               \
  DBusRealString *real_dest = (DBusRealString*) dest;                   \
  _dbus_assert ((source) != (dest));                                    \
  DBUS_GENERIC_STRING_PREAMBLE (real_source);                           \
  DBUS_GENERIC_STRING_PREAMBLE (real_dest);                             \
  _dbus_assert (!real_dest->constant);                                  \
  _dbus_assert (!real_dest->locked);                                    \
  _dbus_assert ((start) >= 0);                                          \
  _dbus_assert ((start) <= real_source->len);                           \
  _dbus_assert ((insert_at) >= 0);                                      \
  _dbus_assert ((insert_at) <= real_dest->len)
Checks assertions for two strings we're copying a segment between, and declares real_source/real_dest variables.

Parameters:
source the source string
start the starting offset
dest the dest string
insert_at where the copied segment is inserted

Definition at line 1424 of file dbus-string.c.

Referenced by _dbus_string_copy(), _dbus_string_copy_len(), _dbus_string_move_len(), and _dbus_string_replace_len().

#define UNICODE_VALID Char   ) 
 

Value:

((Char) < 0x110000 &&                     \
     (((Char) & 0xFFFFF800) != 0xD800) &&     \
     ((Char) < 0xFDD0 || (Char) > 0xFDEF) &&  \
     ((Char) & 0xFFFF) != 0xFFFF)
Check whether a unicode char is in a valid range.

Parameters:
Char the character

Definition at line 1713 of file dbus-string.c.

Referenced by _dbus_string_validate_utf8().

#define UTF8_COMPUTE Char,
Mask,
Len   ) 
 

computes length and mask of a unicode character

Parameters:
Char the char
Mask the mask variable to assign to
Len the length variable to assign to

Definition at line 1638 of file dbus-string.c.

Referenced by _dbus_string_get_unichar(), and _dbus_string_validate_utf8().

#define UTF8_GET Result,
Chars,
Count,
Mask,
Len   ) 
 

Value:

(Result) = (Chars)[0] & (Mask);                                       \
  for ((Count) = 1; (Count) < (Len); ++(Count))                               \
    {                                                                         \
      if (((Chars)[(Count)] & 0xc0) != 0x80)                                  \
        {                                                                     \
          (Result) = -1;                                                      \
          break;                                                              \
        }                                                                     \
      (Result) <<= 6;                                                         \
      (Result) |= ((Chars)[(Count)] & 0x3f);                                  \
    }
Gets a UTF-8 value.

Parameters:
Result variable for extracted unicode char.
Chars the bytes to decode
Count counter variable
Mask mask for this char
Len length for this char in bytes

Definition at line 1695 of file dbus-string.c.

Referenced by _dbus_string_get_unichar(), and _dbus_string_validate_utf8().

#define UTF8_LENGTH Char   ) 
 

Value:

((Char) < 0x80 ? 1 :                 \
   ((Char) < 0x800 ? 2 :               \
    ((Char) < 0x10000 ? 3 :            \
     ((Char) < 0x200000 ? 4 :          \
      ((Char) < 0x4000000 ? 5 : 6)))))
computes length of a unicode character in UTF-8

Parameters:
Char the char

Definition at line 1679 of file dbus-string.c.

Referenced by _dbus_string_validate_utf8().


Function Documentation

dbus_bool_t _dbus_check_dir_is_private_to_user DBusString dir,
DBusError error
 

Checks to make sure the given directory is private to the user.

Parameters:
dir the name of the directory
error error return
Returns:
FALSE on failure

Definition at line 1234 of file dbus-sysdeps.c.

References _dbus_error_from_errno(), _dbus_strerror(), _dbus_string_get_const_data(), dbus_set_error(), FALSE, and TRUE.

dbus_bool_t _dbus_string_align_length DBusString str,
int  alignment
 

Align the length of a string to a specific alignment (typically 4 or 8) by appending nul bytes to the string.

Parameters:
str a string
alignment the alignment
Returns:
FALSE if no memory

Definition at line 934 of file dbus-string.c.

dbus_bool_t _dbus_string_alloc_space DBusString str,
int  extra_bytes
 

Preallocate extra_bytes such that a future lengthening of the string by extra_bytes is guaranteed to succeed without an out of memory error.

Parameters:
str a string
extra_bytes bytes to alloc
Returns:
FALSE if no memory

Definition at line 950 of file dbus-string.c.

References _dbus_string_lengthen(), _dbus_string_shorten(), FALSE, and TRUE.

Referenced by _dbus_type_writer_write_basic().

dbus_bool_t _dbus_string_append DBusString str,
const char *  buffer
 

Appends a nul-terminated C-style string to a DBusString.

Parameters:
str the DBusString
buffer the nul-terminated characters to append
Returns:
FALSE if not enough memory.

Definition at line 986 of file dbus-string.c.

References _dbus_assert, DBUS_STRING_PREAMBLE, FALSE, DBusRealString::max_length, and NULL.

Referenced by _dbus_auth_script_run(), _dbus_become_daemon(), _dbus_directory_get_next_file(), _dbus_homedir_from_username(), _dbus_keyring_new_homedir(), _dbus_server_debug_pipe_new(), _dbus_server_new_for_domain_socket(), _dbus_server_new_for_tcp_socket(), _dbus_string_get_dirname(), _dbus_string_save_to_file(), _dbus_string_test(), _dbus_transport_debug_pipe_new(), _dbus_transport_new_for_domain_socket(), _dbus_transport_new_for_tcp_socket(), _dbus_user_at_console(), dbus_server_listen(), and dbus_set_error().

dbus_bool_t _dbus_string_append_4_aligned DBusString str,
const unsigned char  octets[4]
 

Appends 4 bytes aligned on a 4 byte boundary with any alignment padding initialized to 0.

Parameters:
str the DBusString
octets 4 bytes to append
Returns:
FALSE if not enough memory.

Definition at line 1043 of file dbus-string.c.

References ASSIGN_4_OCTETS, DBUS_STRING_PREAMBLE, FALSE, DBusRealString::len, DBusRealString::str, and TRUE.

dbus_bool_t _dbus_string_append_8_aligned DBusString str,
const unsigned char  octets[8]
 

Appends 8 bytes aligned on an 8 byte boundary with any alignment padding initialized to 0.

Parameters:
str the DBusString
octets 8 bytes to append
Returns:
FALSE if not enough memory.

Definition at line 1067 of file dbus-string.c.

References ASSIGN_8_OCTETS, DBUS_STRING_PREAMBLE, FALSE, DBusRealString::len, DBusRealString::str, and TRUE.

dbus_bool_t _dbus_string_append_byte DBusString str,
unsigned char  byte
 

Appends a single byte to the string, returning FALSE if not enough memory.

Parameters:
str the string
byte the byte to append
Returns:
TRUE on success

Definition at line 1273 of file dbus-string.c.

References DBUS_STRING_PREAMBLE, FALSE, DBusRealString::len, and TRUE.

Referenced by _dbus_address_append_escaped(), _dbus_concat_dir_and_file(), _dbus_message_test(), _dbus_string_append_byte_as_hex(), _dbus_string_hex_decode(), and _dbus_string_test().

dbus_bool_t _dbus_string_append_byte_as_hex DBusString str,
int  byte
 

Appends a two-character hex digit to a string, where the hex digit has the value of the given byte.

Parameters:
str the string
byte the byte
Returns:
FALSE if no memory

Definition at line 2272 of file dbus-string.c.

References _dbus_string_append_byte(), _dbus_string_get_length(), _dbus_string_set_length(), FALSE, and TRUE.

Referenced by _dbus_address_append_escaped(), and _dbus_string_hex_encode().

dbus_bool_t _dbus_string_append_double DBusString str,
double  value
 

Appends a double to a DBusString.

Parameters:
str the string
value the floating point value
Returns:
FALSE if not enough memory or other failure.

Definition at line 1156 of file dbus-sysdeps.c.

References _dbus_string_get_data_len(), _dbus_string_get_length(), _dbus_string_lengthen(), _dbus_string_shorten(), FALSE, and TRUE.

Referenced by _dbus_string_test().

dbus_bool_t _dbus_string_append_int DBusString str,
long  value
 

Appends an integer to a DBusString.

Parameters:
str the string
value the integer value
Returns:
FALSE if not enough memory or other failure.

Definition at line 1079 of file dbus-sysdeps.c.

References _dbus_string_get_data_len(), _dbus_string_get_length(), _dbus_string_lengthen(), _dbus_string_shorten(), FALSE, and TRUE.

Referenced by _dbus_become_daemon(), _dbus_server_new_for_tcp_socket(), _dbus_string_test(), and _dbus_transport_new_for_tcp_socket().

dbus_bool_t _dbus_string_append_len DBusString str,
const char *  buffer,
int  len
 

Appends block of bytes with the given length to a DBusString.

Parameters:
str the DBusString
buffer the bytes to append
len the number of bytes to append
Returns:
FALSE if not enough memory.

Definition at line 1253 of file dbus-string.c.

References _dbus_assert, DBUS_STRING_PREAMBLE, and NULL.

Referenced by _dbus_md5_final(), _dbus_sha_final(), dbus_message_iter_get_signature(), and dbus_signature_iter_get_signature().

dbus_bool_t _dbus_string_append_printf DBusString str,
const char *  format,
  ...
 

Appends a printf-style formatted string to the DBusString.

Parameters:
str the string
format printf format
Returns:
FALSE if no memory

Definition at line 1230 of file dbus-string.c.

References _dbus_string_append_printf_valist().

Referenced by dbus_connection_dispatch().

dbus_bool_t _dbus_string_append_printf_valist DBusString str,
const char *  format,
va_list  args
 

Appends a printf-style formatted string to the DBusString.

Parameters:
str the string
format printf format
args variable argument list
Returns:
FALSE if no memory

Definition at line 1191 of file dbus-string.c.

References _dbus_string_lengthen(), DBUS_STRING_PREAMBLE, FALSE, DBusRealString::len, DBusRealString::str, and TRUE.

Referenced by _dbus_string_append_printf(), dbus_message_new_error_printf(), and dbus_set_error().

dbus_bool_t _dbus_string_append_uint DBusString str,
unsigned long  value
 

Appends an unsigned integer to a DBusString.

Parameters:
str the string
value the integer value
Returns:
FALSE if not enough memory or other failure.

Definition at line 1117 of file dbus-sysdeps.c.

References _dbus_string_get_data_len(), _dbus_string_get_length(), _dbus_string_lengthen(), _dbus_string_shorten(), FALSE, and TRUE.

Referenced by _dbus_auth_script_run().

dbus_bool_t _dbus_string_append_unichar DBusString str,
dbus_unichar_t  ch
 

Appends a single Unicode character, encoding the character in UTF-8 format.

Parameters:
str the string
ch the Unicode character

Definition at line 1295 of file dbus-string.c.

References DBUS_STRING_PREAMBLE, FALSE, DBusRealString::len, DBusRealString::max_length, and TRUE.

Referenced by _dbus_string_test().

dbus_bool_t _dbus_string_copy const DBusString source,
int  start,
DBusString dest,
int  insert_at
 

Like _dbus_string_move(), but does not delete the section of the source string that's copied to the dest string.

Parameters:
source the source string
start where to start copying the source string
dest the destination string
insert_at where to place the copied part of source string
Returns:
FALSE if not enough memory

Definition at line 1472 of file dbus-string.c.

References DBUS_STRING_COPY_PREAMBLE.

Referenced by _dbus_auth_decode_data(), _dbus_auth_encode_data(), _dbus_auth_script_run(), _dbus_auth_server_new(), _dbus_concat_dir_and_file(), _dbus_header_copy(), _dbus_keyring_new_homedir(), _dbus_string_save_to_file(), _dbus_string_test(), and dbus_message_copy().

dbus_bool_t _dbus_string_copy_data const DBusString str,
char **  data_return
 

Copies the data from the string into a char*.

Parameters:
str the string
data_return place to return the data
Returns:
TRUE on success, FALSE on no memory

Definition at line 696 of file dbus-string.c.

References _dbus_assert, DBUS_CONST_STRING_PREAMBLE, dbus_malloc(), FALSE, DBusRealString::len, NULL, DBusRealString::str, and TRUE.

Referenced by _dbus_transport_init_base().

dbus_bool_t _dbus_string_copy_data_len const DBusString str,
char **  data_return,
int  start,
int  len
 

Copies a segment of the string into a char*.

Parameters:
str the string
data_return place to return the data
start start index
len length to copy
Returns:
FALSE if no memory

Definition at line 746 of file dbus-string.c.

References _dbus_assert, _dbus_string_copy_len(), _dbus_string_free(), _dbus_string_init(), _dbus_string_steal_data(), DBUS_CONST_STRING_PREAMBLE, FALSE, DBusRealString::max_length, NULL, and TRUE.

dbus_bool_t _dbus_string_copy_len const DBusString source,
int  start,
int  len,
DBusString dest,
int  insert_at
 

Like _dbus_string_copy(), but can copy a segment from the middle of the source string.

Parameters:
source the source string
start where to start copying the source string
len length of segment to copy
dest the destination string
insert_at where to place the copied segment of source string
Returns:
FALSE if not enough memory

Definition at line 1567 of file dbus-string.c.

References _dbus_assert, and DBUS_STRING_COPY_PREAMBLE.

Referenced by _dbus_header_load(), _dbus_string_copy_data_len(), _dbus_string_get_dirname(), and dbus_parse_address().

void _dbus_string_copy_to_buffer const DBusString str,
char *  buffer,
int  avail_len
 

Copies the contents of a DBusString into a different buffer.

The resulting buffer will be nul-terminated.

Parameters:
str a string
buffer a C buffer to copy data to
avail_len maximum length of C buffer

Definition at line 720 of file dbus-string.c.

References _dbus_assert, DBUS_CONST_STRING_PREAMBLE, DBusRealString::len, and DBusRealString::str.

Referenced by _dbus_generate_random_bytes_buffer().

void _dbus_string_delete DBusString str,
int  start,
int  len
 

Deletes a segment of a DBusString with length len starting at start.

(Hint: to clear an entire string, setting length to 0 with _dbus_string_set_length() is easier.)

Parameters:
str the DBusString
start where to start deleting
len the number of bytes to delete

Definition at line 1382 of file dbus-string.c.

References _dbus_assert, DBUS_STRING_PREAMBLE, FALSE, DBusRealString::str, and TRUE.

Referenced by _dbus_auth_bytes_sent(), _dbus_auth_script_run(), _dbus_header_create(), _dbus_string_delete_first_word(), _dbus_string_delete_leading_blanks(), and _dbus_type_writer_write_reader_partial().

void _dbus_string_delete_first_word DBusString str  ) 
 

Deletes up to and including the first blank space in the string.

Parameters:
str the string

Definition at line 2017 of file dbus-string.c.

References _dbus_string_delete(),