General purpose object for storing and parsing strings. More...
#include <stdbool.h>#include <stddef.h>
Include dependency graph for buffer.h:
This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Data Structures | |
| struct | Buffer |
| String manipulation buffer. More... | |
Functions | |
| struct Buffer * | buf_new (const char *str) |
| Allocate a new Buffer. | |
| void | buf_free (struct Buffer **ptr) |
| Deallocates a buffer. | |
| void | buf_alloc (struct Buffer *buf, size_t size) |
| Make sure a buffer can store at least new_size bytes. | |
| void | buf_dealloc (struct Buffer *buf) |
| Release the memory allocated by a buffer. | |
| void | buf_fix_dptr (struct Buffer *buf) |
| Move the dptr to end of the Buffer. | |
| struct Buffer * | buf_init (struct Buffer *buf) |
| Initialise a new Buffer. | |
| bool | buf_is_empty (const struct Buffer *buf) |
| Is the Buffer empty? | |
| size_t | buf_len (const struct Buffer *buf) |
| Calculate the length of a Buffer. | |
| void | buf_reset (struct Buffer *buf) |
| Reset an existing Buffer. | |
| char * | buf_strdup (const struct Buffer *buf) |
| Copy a Buffer's string. | |
| struct Buffer * | buf_dup (const struct Buffer *buf) |
| Copy a Buffer into a new allocated buffer. | |
| void | buf_seek (struct Buffer *buf, size_t offset) |
| Set current read/write position to offset from beginning. | |
| const char * | buf_find_string (const struct Buffer *buf, const char *s) |
| Return a pointer to a substring found in the buffer. | |
| const char * | buf_find_char (const struct Buffer *buf, const char c) |
| Return a pointer to a char found in the buffer. | |
| char | buf_at (const struct Buffer *buf, size_t offset) |
| Return the character at the given offset. | |
| bool | buf_str_equal (const struct Buffer *a, const struct Buffer *b) |
| Return if two buffers are equal. | |
| bool | buf_istr_equal (const struct Buffer *a, const struct Buffer *b) |
| Return if two buffers are equal, case insensitive. | |
| int | buf_coll (const struct Buffer *a, const struct Buffer *b) |
| Collate two strings (compare using locale) | |
| size_t | buf_startswith (const struct Buffer *buf, const char *prefix) |
| Check whether a buffer starts with a prefix. | |
| const char * | buf_rfind (const struct Buffer *buf, const char *str) |
| Find last instance of a substring. | |
| size_t | buf_addch (struct Buffer *buf, char c) |
| Add a single character to a Buffer. | |
| size_t | buf_addstr (struct Buffer *buf, const char *s) |
| Add a string to a Buffer. | |
| size_t | buf_addstr_n (struct Buffer *buf, const char *s, size_t len) |
| Add a string to a Buffer, expanding it if necessary. | |
| int | buf_add_printf (struct Buffer *buf, const char *fmt,...) __attribute__((__format__(__printf__ |
| int void | buf_join_str (struct Buffer *str, const char *item, char sep) |
| Join a buffer with a string separated by sep. | |
| size_t | buf_insert (struct Buffer *buf, size_t offset, const char *s) |
| Add a string in the middle of a buffer. | |
| size_t | buf_concat_path (struct Buffer *buf, const char *dir, const char *fname) |
| Join a directory name and a filename. | |
| size_t | buf_concatn_path (struct Buffer *dst, const char *dir, size_t dirlen, const char *fname, size_t fnamelen) |
| Join a directory name and a filename. | |
| size_t | buf_copy (struct Buffer *dst, const struct Buffer *src) |
| Copy a Buffer's contents to another Buffer. | |
| int | buf_printf (struct Buffer *buf, const char *fmt,...) __attribute__((__format__(__printf__ |
| int size_t | buf_strcpy (struct Buffer *buf, const char *s) |
| Copy a string into a Buffer. | |
| size_t | buf_strcpy_n (struct Buffer *buf, const char *s, size_t len) |
| Copy a string into a Buffer. | |
| size_t | buf_substrcpy (struct Buffer *buf, const char *beg, const char *end) |
| Copy a partial string into a Buffer. | |
| void | buf_dequote_comment (struct Buffer *buf) |
| Un-escape characters in an email address comment. | |
| void | buf_lower (struct Buffer *buf) |
| Sets a buffer to lowercase. | |
| void | buf_inline_replace (struct Buffer *buf, size_t pos, size_t len, const char *str) |
| static const char * | buf_string (const struct Buffer *buf) |
| Convert a buffer to a const char * "string". | |
General purpose object for storing and parsing strings.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
Definition in file buffer.h.
| struct Buffer * buf_new | ( | const char * | str | ) |
Allocate a new Buffer.
| str | String to initialise the buffer with, can be NULL |
| ptr | Pointer to new buffer |
Definition at line 304 of file buffer.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void buf_free | ( | struct Buffer ** | ptr | ) |
Deallocates a buffer.
| ptr | Buffer to free |
Definition at line 319 of file buffer.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void buf_alloc | ( | struct Buffer * | buf, |
| size_t | new_size ) |
Make sure a buffer can store at least new_size bytes.
| buf | Buffer to change |
| new_size | New size |
Definition at line 337 of file buffer.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void buf_dealloc | ( | struct Buffer * | buf | ) |
| void buf_fix_dptr | ( | struct Buffer * | buf | ) |
Move the dptr to end of the Buffer.
| buf | Buffer to alter |
Ensure buffer->dptr points to the end of the buffer.
Definition at line 182 of file buffer.c.
Here is the call graph for this function:
Here is the caller graph for this function:| bool buf_is_empty | ( | const struct Buffer * | buf | ) |
Is the Buffer empty?
| buf | Buffer to inspect |
| true | Buffer is empty |
Definition at line 291 of file buffer.c.
Here is the call graph for this function:| size_t buf_len | ( | const struct Buffer * | buf | ) |
| void buf_reset | ( | struct Buffer * | buf | ) |
| char * buf_strdup | ( | const struct Buffer * | buf | ) |
Copy a Buffer into a new allocated buffer.
| buf | Buffer to copy |
| buf | New allocated copy of buffer |
Definition at line 586 of file buffer.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void buf_seek | ( | struct Buffer * | buf, |
| size_t | offset ) |
Set current read/write position to offset from beginning.
| buf | Buffer to use |
| offset | Distance from the beginning |
This is used for cases where the buffer is read from A value is placed in the buffer, and then b->dptr is set back to the beginning as a read marker instead of write marker.
Definition at line 622 of file buffer.c.
Here is the caller graph for this function:| const char * buf_find_string | ( | const struct Buffer * | buf, |
| const char * | s ) |
| const char * buf_find_char | ( | const struct Buffer * | buf, |
| const char | c ) |
| char buf_at | ( | const struct Buffer * | buf, |
| size_t | offset ) |
Return the character at the given offset.
| buf | Buffer to search |
| offset | Offset to get |
| NUL | Offset out of bounds |
Definition at line 668 of file buffer.c.
Here is the call graph for this function:
Here is the caller graph for this function:Return if two buffers are equal.
| true | Strings are equal |
| false | String are not equal |
Definition at line 683 of file buffer.c.
Here is the call graph for this function:
Here is the caller graph for this function:Return if two buffers are equal, case insensitive.
| a | - First buffer to compare |
| b | - Second buffer to compare |
| true | Strings are equal |
| false | String are not equal |
Definition at line 695 of file buffer.c.
Here is the call graph for this function:
Here is the caller graph for this function:Collate two strings (compare using locale)
| a | First buffer to compare |
| b | Second buffer to compare |
| <0 | a precedes b |
| 0 | a and b are identical |
| >0 | b precedes a |
Definition at line 723 of file buffer.c.
Here is the call graph for this function:
Here is the caller graph for this function:| size_t buf_startswith | ( | const struct Buffer * | buf, |
| const char * | prefix ) |
Check whether a buffer starts with a prefix.
| buf | Buffer to check |
| prefix | Prefix to match |
| num | Length of prefix if str starts with prefix |
| 0 | str does not start with prefix |
Definition at line 707 of file buffer.c.
Here is the call graph for this function:
Here is the caller graph for this function:| const char * buf_rfind | ( | const struct Buffer * | buf, |
| const char * | str ) |
Find last instance of a substring.
| buf | Buffer to search through |
| str | String to find |
| NULL | String not found |
| ptr | Location of string |
Return the last instance of str in the buffer, or NULL.
Definition at line 795 of file buffer.c.
Here is the call graph for this function:
Here is the caller graph for this function:| size_t buf_addch | ( | struct Buffer * | buf, |
| char | c ) |
Add a single character to a Buffer.
| buf | Buffer to add to |
| c | Character to add |
| num | Bytes written to Buffer |
If necessary, the Buffer will be expanded.
Definition at line 241 of file buffer.c.
Here is the call graph for this function:| size_t buf_addstr | ( | struct Buffer * | buf, |
| const char * | s ) |
Add a string to a Buffer.
| buf | Buffer to add to |
| s | String to add |
| num | Bytes written to Buffer |
If necessary, the Buffer will be expanded.
Definition at line 226 of file buffer.c.
Here is the call graph for this function:| size_t buf_addstr_n | ( | struct Buffer * | buf, |
| const char * | s, | ||
| size_t | len ) |
Add a string to a Buffer, expanding it if necessary.
| buf | Buffer to add to |
| s | String to add |
| len | Length of the string |
| num | Bytes written to Buffer |
| 0 | Error |
Dynamically grow a Buffer to accommodate s, in increments of 128 bytes. Always one byte bigger than necessary for the NUL-terminator, and the buffer is always NUL-terminated
Definition at line 96 of file buffer.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int buf_add_printf | ( | struct Buffer * | buf, |
| const char * | fmt, | ||
| ... ) |
Here is the call graph for this function:| int void buf_join_str | ( | struct Buffer * | buf, |
| const char * | str, | ||
| char | sep ) |
Join a buffer with a string separated by sep.
| buf | Buffer to append to |
| str | String to append |
| sep | separator between string item |
Definition at line 748 of file buffer.c.
Here is the call graph for this function:
Here is the caller graph for this function:| size_t buf_insert | ( | struct Buffer * | buf, |
| size_t | offset, | ||
| const char * | s ) |
Add a string in the middle of a buffer.
| buf | Buffer |
| offset | Position for the insertion |
| s | String to insert |
| num | Characters written |
| -1 | Error |
Definition at line 256 of file buffer.c.
Here is the call graph for this function:
Here is the caller graph for this function:| size_t buf_concat_path | ( | struct Buffer * | buf, |
| const char * | dir, | ||
| const char * | fname ) |
Join a directory name and a filename.
| buf | Buffer to add to |
| dir | Directory name |
| fname | File name |
| num | Bytes written to Buffer |
If both dir and fname are supplied, they are separated with '/'. If either is missing, then the other will be copied exactly.
Definition at line 509 of file buffer.c.
Here is the call graph for this function:
Here is the caller graph for this function:| size_t buf_concatn_path | ( | struct Buffer * | buf, |
| const char * | dir, | ||
| size_t | dirlen, | ||
| const char * | fname, | ||
| size_t | fnamelen ) |
Join a directory name and a filename.
| buf | Buffer for the result |
| dir | Directory name |
| dirlen | Directory name |
| fname | File name |
| fnamelen | File name |
| num | Size of buffer |
If both dir and fname are supplied, they are separated with '/'. If either is missing, then the other will be copied exactly.
Definition at line 546 of file buffer.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int buf_printf | ( | struct Buffer * | buf, |
| const char * | fmt, | ||
| ... ) |
Here is the call graph for this function:| int size_t buf_strcpy | ( | struct Buffer * | buf, |
| const char * | s ) |
Copy a string into a Buffer.
| buf | Buffer to overwrite |
| s | String to copy |
| num | Bytes written to Buffer |
Overwrites any existing content.
Definition at line 395 of file buffer.c.
Here is the call graph for this function:| size_t buf_strcpy_n | ( | struct Buffer * | buf, |
| const char * | s, | ||
| size_t | len ) |
Copy a string into a Buffer.
| buf | Buffer to overwrite |
| s | String to copy |
| len | Length of string to copy |
| num | Bytes written to Buffer |
Overwrites any existing content.
Definition at line 416 of file buffer.c.
Here is the call graph for this function:
Here is the caller graph for this function:| size_t buf_substrcpy | ( | struct Buffer * | buf, |
| const char * | beg, | ||
| const char * | end ) |
Copy a partial string into a Buffer.
| buf | Buffer to overwrite |
| beg | Start of string to copy |
| end | End of string to copy |
| num | Bytes written to Buffer |
Overwrites any existing content.
Definition at line 471 of file buffer.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void buf_dequote_comment | ( | struct Buffer * | buf | ) |
Un-escape characters in an email address comment.
| buf | Buffer to be un-escaped |
Definition at line 434 of file buffer.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void buf_lower | ( | struct Buffer * | buf | ) |
Sets a buffer to lowercase.
| [out] | buf | Buffer to transform to lowercase |
Definition at line 734 of file buffer.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void buf_inline_replace | ( | struct Buffer * | buf, |
| size_t | pos, | ||
| size_t | len, | ||
| const char * | str ) |
Definition at line 768 of file buffer.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
Convert a buffer to a const char * "string".
| buf | Buffer to that is to be converted |
| ptr | String inside the Buffer |
This method exposes Buffer's underlying data field
Definition at line 96 of file buffer.h.
Here is the call graph for this function: