#ifndef STRFUNS_H_
#define STRFUNS_H_ 1
#include "driver.h"
#include "typedefs.h"
#include <sys/types.h> /* TODO: Does C99 guarantee u_long in here? */
/* --- strbuf_t: extendable stringbuffer ---
*
* This buffer type allows to construct a string in small steps.
*/
struct strbuf_s
{
u_long alloc_len; /* Allocated size */
u_long length; /* Used size in the string, excl. trailing \0 */
char *buf; /* The string */
};
#define MAX_STRBUF_LEN (ULONG_MAX-2) /* Max length of a strbuf text */
extern void strbuf_zero(strbuf_t * buf);
extern void strbuf_free(strbuf_t * buf);
extern void strbuf_add(strbuf_t *buf, const char * text);
extern void strbuf_addn(strbuf_t *buf, const char * text, size_t len);
extern void strbuf_addc(strbuf_t *buf, char ch);
extern void strbuf_addf(strbuf_t *buf, const char *format, ...);
extern void strbuf_send(strbuf_t *buf);
extern void strbuf_store(strbuf_t *buf, svalue_t *svp);
extern char * intersect_strings (char * left, char * right, Bool bSubtract);
extern char * xstrncpy(char * dest, const char * src, size_t num);
#endif /* STRFUNS_H_ */