1 #ifndef STRFUNS_H_
2 #define STRFUNS_H_ 1
3 
4 #include "driver.h"
5 #include "typedefs.h"
6 
7 #include <sys/types.h> /* TODO: Does C99 guarantee u_long in here? */
8 
9 /* --- strbuf_t: extendable stringbuffer ---
10  *
11  * This buffer type allows to construct a string in small steps.
12  */
13 
14 struct strbuf_s
15 {
16     u_long alloc_len;   /* Allocated size */
17     u_long length;      /* Used size in the string, excl. trailing \0 */
18     char *buf;          /* The string */
19 };
20 
21 #define MAX_STRBUF_LEN (ULONG_MAX-2)  /* Max length of a strbuf text */
22 
23 extern void strbuf_zero(strbuf_t * buf);
24 extern void strbuf_free(strbuf_t * buf);
25 extern void strbuf_add(strbuf_t *buf, const char * text);
26 extern void strbuf_addn(strbuf_t *buf, const char * text, size_t len);
27 extern void strbuf_addc(strbuf_t *buf, const char ch);
28 extern void strbuf_addf(strbuf_t *buf, const char *format, ...)
29                            FORMATDEBUG(printf,2,3);
30 extern void strbuf_send(strbuf_t *buf);
31 extern void strbuf_store(strbuf_t *buf, svalue_t *svp);
32 extern void strbuf_copy (strbuf_t *buf, char *cbuf);
33 #define strbuf_length(sbuf) ((sbuf)->length)
34 extern string_t * trim_all_spaces (const string_t * txt);
35 extern char * xstrncpy(char * dest, const char * src, size_t num);
36 
37 #ifdef HAS_ICONV
38 extern svalue_t * f_convert_charset (svalue_t *sp);
39 #endif
40 extern string_t * intersect_strings (const string_t * left, const string_t * right, Bool bSubtract);
41 extern svalue_t * x_map_string (svalue_t *sp, int num_arg);
42 extern svalue_t * x_filter_string (svalue_t *sp, int num_arg);
43 
44 #endif /* STRFUNS_H_ */
45