ldns documentation

- Main Page
- Related Pages
- Data Structures
- Files

- File List
- Globals

Functions
buffer.c File Reference

Go to the source code of this file.

## Functions
ldns_buffer * | ldns_buffer_new (size_t capacity)
| creates a new buffer with the specified capacity. More...
void | ldns_buffer_new_frm_data (ldns_buffer *buffer, void *data, size_t size)
| creates a buffer with the specified data. More...
bool | ldns_buffer_set_capacity (ldns_buffer *buffer, size_t capacity)
| changes the buffer's capacity. More...
bool | ldns_buffer_reserve (ldns_buffer *buffer, size_t amount)
| ensures BUFFER can contain at least AMOUNT more bytes. More...
int | ldns_buffer_printf (ldns_buffer *buffer, const char *format,...)
| prints to the buffer, increasing the capacity if required using buffer_reserve(). More...
void | ldns_buffer_free (ldns_buffer *buffer)
| frees the buffer. More...
void * | ldns_buffer_export (ldns_buffer *buffer)
| Makes the buffer fixed and returns a pointer to the data. More...
int | ldns_bgetc (ldns_buffer *buffer)
| returns the next character from a buffer. More...
void | ldns_buffer_copy (ldns_buffer *result, ldns_buffer *from)
| Copy contents of the from buffer to the result buffer and then flips the result buffer. More...

## Function Documentation

ldns_buffer* ldns_buffer_new | ( | size_t | capacity | ) |

creates a new buffer with the specified capacity.

Parameters

  [in] | capacity | the size (in bytes) to allocate for the buffer

Returns
  the created buffer

Definition at line 16 of file buffer.c.

References ldns_struct_buffer::_capacity, ldns_struct_buffer::_data, ldns_struct_buffer::_fixed, ldns_struct_buffer::_limit, ldns_struct_buffer::_position, ldns_struct_buffer::_status, LDNS_FREE, LDNS_MALLOC, LDNS_STATUS_OK, and LDNS_XMALLOC.

void ldns_buffer_new_frm_data | ( | ldns_buffer * | buffer,
|  | void * | data,
|  | size_t | size
| ) |  |

creates a buffer with the specified data.

The data IS copied and MEMORY allocations are done. The buffer is not fixed and can be resized using buffer_reserve().

Parameters

  [in] | buffer | pointer to the buffer to put the data in
  [in] | data | the data to encapsulate in the buffer
  [in] | size | the size of the data

Definition at line 41 of file buffer.c.

References ldns_struct_buffer::_capacity, ldns_struct_buffer::_data, ldns_struct_buffer::_fixed, ldns_struct_buffer::_limit, ldns_struct_buffer::_position, ldns_struct_buffer::_status, LDNS_STATUS_MEM_ERR, LDNS_STATUS_OK, and LDNS_XMALLOC.

bool ldns_buffer_set_capacity | ( | ldns_buffer * | buffer,
|  | size_t | capacity
| ) |  |

changes the buffer's capacity.

The data is reallocated so any pointers to the data may become invalid. The buffer's limit is set to the buffer's new capacity.

Parameters

  [in] | buffer | the buffer
  [in] | capacity | the capacity to use

Returns
  whether this failed or succeeded

Definition at line 60 of file buffer.c.

References ldns_struct_buffer::_capacity, ldns_struct_buffer::_data, ldns_struct_buffer::_limit, ldns_struct_buffer::_position, ldns_struct_buffer::_status, LDNS_STATUS_MEM_ERR, and LDNS_XREALLOC.

bool ldns_buffer_reserve | ( | ldns_buffer * | buffer,
|  | size_t | amount
| ) |  |

ensures BUFFER can contain at least AMOUNT more bytes.

The buffer's capacity is increased if necessary using buffer_set_capacity().

The buffer's limit is always set to the (possibly increased) capacity.

Parameters

  [in] | buffer | the buffer
  [in] | amount | amount to use

Returns
  whether this failed or succeeded

Definition at line 79 of file buffer.c.

References ldns_struct_buffer::_capacity, ldns_struct_buffer::_fixed, ldns_struct_buffer::_limit, ldns_struct_buffer::_position, ldns_struct_buffer::_status, ldns_buffer_set_capacity(), and LDNS_STATUS_MEM_ERR.

int ldns_buffer_printf | ( | ldns_buffer * | buffer,
|  | const char * | format,
|  |  | ...
| ) |  |

prints to the buffer, increasing the capacity if required using buffer_reserve().

The buffer's position is set to the terminating '\0' Returns the number of characters written (not including the terminating '\0') or -1 on failure.

Definition at line 99 of file buffer.c.

References ldns_struct_buffer::_capacity, ldns_struct_buffer::_limit, ldns_struct_buffer::_position, ldns_struct_buffer::_status, ldns_buffer_reserve(), LDNS_STATUS_INTERNAL_ERR, and LDNS_STATUS_MEM_ERR.

void ldns_buffer_free | ( | ldns_buffer * | buffer | ) |

frees the buffer.

Parameters

  [in] | *buffer | the buffer to be freed

Returns
  void

Definition at line 137 of file buffer.c.

References ldns_struct_buffer::_data, ldns_struct_buffer::_fixed, and LDNS_FREE.

void* ldns_buffer_export | ( | ldns_buffer * | buffer | ) |

Makes the buffer fixed and returns a pointer to the data.

The caller is responsible for free'ing the result.

Parameters

  [in] | *buffer | the buffer to be exported

Returns
  void

Definition at line 150 of file buffer.c.

References ldns_struct_buffer::_data, and ldns_struct_buffer::_fixed.

int ldns_bgetc | ( | ldns_buffer * | buffer | ) |

returns the next character from a buffer.

Advances the position pointer with 1. When end of buffer is reached returns EOF. This is the buffer's equivalent for getc().

Parameters

  [in] | *buffer | buffer to read from

Returns
  EOF on failure otherwise return the character

Definition at line 157 of file buffer.c.

References ldns_struct_buffer::_position.

void ldns_buffer_copy | ( | ldns_buffer * | result,
|  | ldns_buffer * | from
| ) |  |

Copy contents of the from buffer to the result buffer and then flips the result buffer.

Data will be silently truncated if the result buffer is too small.

Parameters

  [out] | *result | resulting buffer which is copied to.
  [in] | *from | what to copy to result.

Definition at line 168 of file buffer.c.