|
Data Structures |
struct | ibuf |
| Input specific buffer. More...
|
struct | iobuf |
| The base I/O buffer structure. More...
|
struct | obuf |
| Output specific buffer. More...
|
Status Flags |
#define | IOBUF_EOF 1 |
| Reading reached end of file.
|
#define | IOBUF_ERROR 2 |
| The iobuf has encountered an error.
|
#define | IOBUF_TIMEOUT 4 |
| The timeout expired before the read or write could be completed.
|
#define | IOBUF_BADFLAGS 0xf |
| Mask of all the error type flags.
|
#define | IOBUF_SEEKABLE 0x10 |
| lseek is possible on the file descriptor.
|
#define | IOBUF_NEEDSCLOSE 0x20 |
| The file descriptor needs to be closed.
|
#define | IOBUF_NEEDSFREE 0x40 |
| The buffer needs to be deallocated with free .
|
#define | IOBUF_NEEDSMUNMAP 0x80 |
| The buffer needs to be deallocated with munmap .
|
unsigned | iobuf_bufsize |
| The default iobuf buffer size, defaults to 8192.
|
Common |
#define | IOBUF_SET_ERROR(io) |
| Set the error flag, save errno , and return false.
|
#define | iobuf_closed(io) ((io)->fd == -1) |
| True if the iobuf has been closed.
|
#define | iobuf_error(io) ((io)->flags & IOBUF_ERROR) |
| True if the iobuf has an error flag.
|
#define | iobuf_timedout(io) ((io)->flags & IOBUF_TIMEOUT) |
| True if the input or output to the iobuf previously timed out.
|
#define | iobuf_bad(io) ((io)->flags & IOBUF_BADFLAGS) |
| True if the iobuf is in a "bad" state.
|
typedef iobuf | iobuf |
int | iobuf_init (iobuf *io, int fd, unsigned bufsize, char *buffer, unsigned flags) |
| Initialize an iobuf structure.
|
int | iobuf_close (iobuf *io) |
| Close an iobuf and deallocate the buffer.
|
int | iobuf_timeout (iobuf *io, int poll_out) |
| Wait for a file descriptor to be ready for reading or writing.
|
ibuf: Input |
#define | ibuf_close(in) iobuf_close(&((in)->io)) |
| Close the ibuf .
|
#define | ibuf_closed(in) iobuf_closed(&((in)->io)) |
| Test if the ibuf has been closed.
|
#define | ibuf_error(in) iobuf_error(&((in)->io)) |
| Test if the ibuf is in an error state.
|
#define | ibuf_timedout(in) iobuf_timedout(&((in)->io)) |
| Test if the last ibuf read timed out.
|
#define | ibuf_rewind(in) ibuf_seek(in,0) |
| Set the effective read position to the start of the file.
|
#define | ibuf_seekfwd(in, off) ibuf_seek(ibuf_tell(in)+(offset)) |
| Set the effective read position off bytes forward.
|
typedef int(* | ibuf_fn )(int, void *, unsigned long) |
| ibuf read function pointer prototype.
|
typedef ibuf | ibuf |
ibuf | inbuf |
| Input buffer for stdin .
|
obuf: Output |
#define | OBUF_CREATE O_CREAT |
| Create the file if it does not already exist.
|
#define | OBUF_EXCLUSIVE O_EXCL |
| If OBUF_CREATE is set, fail to create the file if it already exists.
|
#define | OBUF_TRUNCATE O_TRUNC |
| If the file exists, truncate it to length 0.
|
#define | OBUF_APPEND O_APPEND |
| All writes go to the end of the file.
|
#define | obuf_error(out) iobuf_error(&(out)->io) |
| Test if the obuf is in an error state.
|
#define | obuf_closed(out) iobuf_closed(&(out)->io) |
| Test if the obuf has been closed.
|
#define | obuf_timedout(out) iobuf_timedout(&((out)->io)) |
| Test if the last obuf write timed out.
|
#define | obuf_rewind(out) obuf_seek(out,0) |
| Set the effective write position to the start of the file.
|
#define | obuf_tell(out) ((out)->io.offset+(out)->bufpos) |
| Look up the current effective write position.
|
#define | obuf_puts(out, str) obuf_write(out,str,strlen(str)) |
| Write a C string to the obuf .
|
#define | obuf_putstr(out, str) obuf_write(out,(str)->s,(str)->len) |
| Write a dynamic string to the iobuf .
|
typedef int(* | obuf_fn )(int, const void *, unsigned long) |
| obuf write function pointer prototype.
|
typedef obuf | obuf |
int | obuf_init (obuf *out, int fd, obuf_fn fn, unsigned flags, unsigned bufsize) |
| Initialize an obuf from an already-opened file descriptor.
|
int | obuf_open (obuf *out, const char *filename, int oflags, int mode, unsigned bufsize) |
| Initialize an obuf by opening a file for writing.
|
int | obuf_close (obuf *out) |
| Flush and close the obuf .
|
int | obuf_flush (obuf *out) |
| Write all pending data in the obuf to the file descriptor.
|
int | obuf_sync (obuf *out) |
| Flush the obuf and then fsync the file descriptor.
|
int | obuf_write_large (obuf *out, const char *data, unsigned datalen) |
| Write a large block of data to the obuf , avoiding copying.
|
int | obuf_write (obuf *out, const char *data, unsigned datalen) |
| Write a block of data to the obuf .
|
int | obuf_seek (obuf *out, unsigned offset) |
| Set the effective write position.
|
int | obuf_pad (obuf *out, unsigned width, char ch) |
| Pad the output with width instances of the single character ch .
|
int | obuf_endl (obuf *out) |
| Write a newline to the obuf and flush it.
|
int | obuf_putc (obuf *out, char ch) |
| Write a single character to the obuf .
|
int | obuf_put2s (obuf *out, const char *s1, const char *s2) |
| Write 2 C strings to the obuf .
|
int | obuf_put3s (obuf *out, const char *s1, const char *s2, const char *s3) |
| Write 3 C strings to the obuf .
|
int | obuf_put4s (obuf *out, const char *s1, const char *s2, const char *s3, const char *s4) |
| Write 4 C strings to the obuf .
|
int | obuf_put5s (obuf *out, const char *s1, const char *s2, const char *s3, const char *s4, const char *s5) |
| Write 5 C strings to the obuf .
|
int | obuf_put6s (obuf *out, const char *s1, const char *s2, const char *s3, const char *s4, const char *s5, const char *s6) |
| Write 6 C strings to the obuf .
|
int | obuf_put7s (obuf *out, const char *s1, const char *s2, const char *s3, const char *s4, const char *s5, const char *s6, const char *s7) |
| Write 7 C strings to the obuf .
|
int | obuf_putsflush (obuf *out, const char *s) |
| Write a C string to the obuf and flush it.
|
int | obuf_puti (obuf *out, long data) |
| Write a signed integer as decimal to the obuf .
|
int | obuf_putiw (obuf *out, long data, unsigned width, char pad) |
| Write a signed integer as decimal to the obuf with padding.
|
int | obuf_putu (obuf *out, unsigned long data) |
| Write an unsigned integer as decimal to the obuf .
|
int | obuf_putuw (obuf *out, unsigned long data, unsigned width, char pad) |
| Write an unsigned integer as decimal to the obuf with padding.
|
int | obuf_putill (obuf *out, long long data) |
| Write a signed long long integer as decimal to the obuf .
|
int | obuf_putiwll (obuf *out, long long data, unsigned width, char pad) |
| Write a signed long long integer as decimal to the obuf with padding.
|
int | obuf_putull (obuf *out, unsigned long long data) |
| Write an unsigned long long integer as decimal to the obuf .
|
int | obuf_putuwll (obuf *out, unsigned long long data, unsigned width, char pad) |
| Write an unsigned long long integer as decimal to the obuf with padding.
|
int | obuf_putx (obuf *out, unsigned long data) |
| Write an unsigned integer as (lower-case) hexadecimal to the obuf .
|
int | obuf_putxw (obuf *out, unsigned long data, unsigned width, char pad) |
| Write an unsigned integer as (lower-case) hexadecimal to the obuf with padding.
|
int | obuf_putX (obuf *out, unsigned long data) |
| Write an unsigned integer as (upper-case) hexadecimal to the obuf .
|
int | obuf_putXw (obuf *out, unsigned long data, unsigned width, char pad) |
| Write an unsigned integer as (upper-case) hexadecimal to the obuf with padding.
|
int | obuf_putxll (obuf *out, unsigned long long data) |
| Write an unsigned long long integer as (lower-case) hexadecimal to the obuf .
|
int | obuf_putxwll (obuf *out, unsigned long long data, unsigned width, char pad) |
| Write an unsigned long long integer as (lower-case) hexadecimal to the obuf with padding.
|
int | obuf_putXll (obuf *out, unsigned long long data) |
| Write an unsigned long long integer as (upper-case) hexadecimal to the obuf .
|
int | obuf_putXwll (obuf *out, unsigned long long data, unsigned width, char pad) |
| Write an unsigned long long integer as (upper-case) hexadecimal to the obuf with padding.
|
int | obuf_putsnumw (obuf *out, long num, unsigned width, char pad, unsigned base, const char *digits) |
| Write a signed integer to the obuf with optional padding.
|
int | obuf_putunumw (obuf *out, unsigned long num, unsigned width, char pad, unsigned base, const char *digits) |
| Write an unsigned integer to the obuf with optional padding.
|
int | obuf_putsllnumw (obuf *out, long long num, unsigned width, char pad, unsigned base, const char *digits) |
| Write a signed long long integer to the obuf with optional padding.
|
int | obuf_putullnumw (obuf *out, unsigned long long num, unsigned width, char pad, unsigned base, const char *digits) |
| Write an unsigned long long integer to the obuf with optional padding.
|
int | obuf_putnetstring (obuf *out, const char *data, unsigned datalen) |
| Write the binary block to the obuf as a "netstring".
|
int | obuf_sign_pad (obuf *out, int sign, unsigned width, char pad) |
obuf | outbuf |
| Output buffer for stdout .
|
obuf | errbuf |
| Output buffer for stderr .
|
const char | obuf_dec_digits [10] |
const char | obuf_hex_lcase_digits [16] |
const char | obuf_hex_ucase_digits [16] |
int | iobuf_copy (ibuf *in, obuf *out) |
| Copy all the data from an ibuf to an obuf .
|
int | iobuf_copyflush (ibuf *in, obuf *out) |
| Copy all the data from an ibuf to an obuf , and flush the obuf after writing is completed.
|
Functions |
int | ibuf_init (ibuf *in, int fd, ibuf_fn fn, unsigned flags, unsigned bufsize) |
| Initialize an ibuf from an already-opened file descriptor.
|
int | ibuf_open (ibuf *in, const char *filename, unsigned bufsize) |
| Initialize an ibuf by opening a file for reading.
|
int | ibuf_eof (ibuf *in) |
| Test if the ibuf has reaced end of file.
|
int | ibuf_refill (ibuf *in) |
| (Re)fill the buffer from the file descriptor.
|
int | ibuf_read_large (ibuf *in, char *data, unsigned datalen) |
| Read a block of data from the ibuf .
|
int | ibuf_read (ibuf *in, char *data, unsigned datalen) |
| Read a block of data from the ibuf .
|
unsigned | ibuf_tell (ibuf *in) |
| Look up the current effective read position.
|
int | ibuf_seek (ibuf *in, unsigned offset) |
| Set the effective read position.
|
int | ibuf_peek (ibuf *in, char *ch) |
| Retrieve the next character in the ibuf without advancing the current read position.
|
int | ibuf_getc (ibuf *in, char *ch) |
| Retrieve a single character from the ibuf .
|
int | ibuf_getu (ibuf *in, unsigned long *data) |
| Read an unsigned long from the ibuf .
|
int | ibuf_gets (ibuf *in, char *data, unsigned datalen, char boundary) |
| Read a line from the ibuf into a C string.
|
int | ibuf_getstr (ibuf *in, struct str *s, char boundary) |
| Read a line from the ibuf into a dynamic string.
|
int | ibuf_getstr_crlf (ibuf *in, struct str *s) |
| Read a line from the ibuf into a dynamic string, terminated by a CR+LF pair.
|