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