2 * Copyright (c) 1995-2000, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.9 2000-02-29 13:44:55 adam
8 * Check for config.h (currently not generated).
10 * Revision 1.8 1999/11/30 13:47:12 adam
11 * Improved installation. Moved header files to include/yaz.
13 * Revision 1.7 1999/11/03 09:05:56 adam
14 * Implemented wrbuf_puts.
16 * Revision 1.6 1999/10/28 11:36:40 adam
17 * wrbuf_write allows zero buffer length.
19 * Revision 1.5 1999/08/27 09:40:32 adam
20 * Renamed logf function to yaz_log. Removed VC++ project files.
22 * Revision 1.4 1998/02/11 11:53:36 adam
23 * Changed code so that it compiles as C++.
25 * Revision 1.3 1997/05/01 15:08:15 adam
26 * Added log_mask_str_x routine.
28 * Revision 1.2 1995/11/01 13:55:06 quinn
31 * Revision 1.1 1995/10/06 08:51:25 quinn
38 * Growing buffer for writing various stuff.
48 #include <yaz/wrbuf.h>
50 WRBUF wrbuf_alloc(void)
54 if (!(n = (WRBUF)xmalloc(sizeof(*n))))
62 void wrbuf_free(WRBUF b, int free_buf)
64 if (free_buf && b->buf)
69 void wrbuf_rewind(WRBUF b)
74 int wrbuf_grow(WRBUF b, int minsize)
84 if (b->size && !(b->buf =(char *)xrealloc(b->buf, b->size += togrow)))
86 else if (!b->size && !(b->buf = (char *)xmalloc(b->size = togrow)))
91 int wrbuf_write(WRBUF b, const char *buf, int size)
95 if (b->pos + size >= b->size)
97 memcpy(b->buf + b->pos, buf, size);
102 int wrbuf_puts(WRBUF b, const char *buf)
104 wrbuf_write(b, buf, strlen(buf)+1); /* '\0'-terminate as well */
105 (b->pos)--; /* don't include '\0' in count */