Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Library for dynamic buffer handling
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
.gitignore
AUTHORS
COPYING
ChangeLog
INSTALL
Makefile.am
NEWS
README
config.h.in
configure.in
pbuffer.c
pbuffer.h

README

libpbuffer is a library for dynamic buffer handling written in C.

This document explains briefly how to use this library.

==========

INITIALIZING AND DESTROYING:
----------------------------
/* declaring a buffer */
pbuffer *buffer;

/* allocating and initializing the buffer */
buffer = pbuffer_init();

/* freeing the buffer */
pbuffer_free(buffer);

SETTING THE BUFFER:
-------------------
/* set one raw byte of data */
pbuffer_set(buffer, 0x31, 1);

/* set a string */
pbuffer_strcpy(buffer, "First string");

/* include some variables */
pbuffer_sprintf(buffer, "This is string %d", count);

ADDING TO THE BUFFER:
---------------------
/* add raw data to the end */
pbuffer_add(buffer, 0x33, 1);

/* add a string to the end */
pbuffer_strcat(buffer, "\nSecond string");

/* add a string with vars to the end */
pbuffer_add_sprintf(buffer, "\nThis is string %d", count+1);

OTHER FUNCTIONS:
----------------
/* extract two bytes of raw data to dst */
pbuffer_extract(buffer, dst, 2);

/* Shift the beginning of the buffer 10 bytes forward */
pbuffer_shift(buffer, 10);

/* Make sure the buffer is large enough for holding 10 bytes */
pbuffer_assure(buffer, 10);

SOME MACROS:
------------
/* return to the start of the buffer (after shifting) */
pbuffer_start(buffer);

/* give the position of the last byte in the buffer */
printf(pbuffer_end(buffer));

/* give the space left (before we need to grow) */
printf(pbuffer_unused(buffer));

==========

Linking against pbuffer, you just add -lpbuffer to the commandline of your linker.

More functions will appear as soon as they are needed, but for now that's it.

The buffer itself is just a typedef to a struct pbuffer:

struct pbuffer {
	size_t length;
	size_t allocated;
	void *start;
	void *data;
};

==========

To build the code, you need to run autoreconf first. This will create the necesary
files.
Something went wrong with that request. Please try again.