* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
* USA
*
- * $Id: linebuf.c 25038 2008-01-23 16:03:08Z androsyn $
+ * $Id: linebuf.c 26092 2008-09-19 15:13:52Z androsyn $
*/
#include <libratbox_config.h>
void
rb_linebuf_init(size_t heap_size)
{
-#ifndef NOBALLOC
rb_linebuf_heap = rb_bh_create(sizeof(buf_line_t), heap_size, "librb_linebuf_heap");
-#endif
}
static buf_line_t *
rb_linebuf_allocate(void)
{
buf_line_t *t;
-#ifndef NOBALLOC
t = rb_bh_alloc(rb_linebuf_heap);
-#else
- t = rb_malloc(sizeof(buf_line_t));
-#endif
return (t);
}
static void
rb_linebuf_free(buf_line_t * p)
{
-#ifndef NOBALLOC
rb_bh_free(rb_linebuf_heap, p);
-#else
- rb_free(p);
-#endif
}
/*
* We've finished with the given line, so deallocate it
*/
static void
-rb_linebuf_done_line(buf_head_t * bufhead, buf_line_t * bufline, rb_dlink_node * node)
+rb_linebuf_done_line(buf_head_t * bufhead, buf_line_t * bufline, rb_dlink_node *node)
{
/* Remove it from the linked list */
rb_dlinkDestroy(node, &bufhead->list);
{
while(bufhead->list.head != NULL)
{
- rb_linebuf_done_line(bufhead, (buf_line_t *) bufhead->list.head->data, bufhead->list.head);
+ rb_linebuf_done_line(bufhead, (buf_line_t *) bufhead->list.head->data,
+ bufhead->list.head);
}
}
* Then format/va_args is appended to the buffer.
*/
void
-rb_linebuf_putmsg(buf_head_t * bufhead, const char *format, va_list * va_args, const char *prefixfmt, ...)
+rb_linebuf_putmsg(buf_head_t * bufhead, const char *format, va_list * va_args,
+ const char *prefixfmt, ...)
{
buf_line_t *bufline;
int len = 0;
bufline->terminated = 1;
/* Truncate the data if required */
- if(unlikely(len > 510))
+ if(rb_unlikely(len > 510))
{
len = 510;
bufline->buf[len++] = '\r';
bufline->buf[len++] = '\n';
}
- else if(unlikely(len == 0))
+ else if(rb_unlikely(len == 0))
{
bufline->buf[len++] = '\r';
bufline->buf[len++] = '\n';
else
{
/* Chop trailing CRLF's .. */
- while((bufline->buf[len] == '\r') || (bufline->buf[len] == '\n') || (bufline->buf[len] == '\0'))
+ while((bufline->buf[len] == '\r') || (bufline->buf[len] == '\n')
+ || (bufline->buf[len] == '\0'))
{
len--;
}
}
void
-rb_linebuf_putbuf(buf_head_t *bufhead, const char *buffer)
+rb_linebuf_putbuf(buf_head_t * bufhead, const char *buffer)
{
buf_line_t *bufline;
int len = 0;
/* Create a new line */
bufline = rb_linebuf_new_line(bufhead);
- if(unlikely(buffer != NULL))
+ if(rb_unlikely(buffer != NULL))
len = rb_strlcpy(bufline->buf, buffer, BUF_DATA_SIZE);
bufline->terminated = 1;
/* Truncate the data if required */
- if(unlikely(len > 510))
+ if(rb_unlikely(len > 510))
{
len = 510;
bufline->buf[len++] = '\r';
bufline->buf[len++] = '\n';
}
- else if(unlikely(len == 0))
+ else if(rb_unlikely(len == 0))
{
bufline->buf[len++] = '\r';
bufline->buf[len++] = '\n';
else
{
/* Chop trailing CRLF's .. */
- while((bufline->buf[len] == '\r') || (bufline->buf[len] == '\n') || (bufline->buf[len] == '\0'))
+ while((bufline->buf[len] == '\r') || (bufline->buf[len] == '\n')
+ || (bufline->buf[len] == '\0'))
{
len--;
}
bufline->len = len;
bufhead->len += len;
-
+
}
void
/* Create a new line */
bufline = rb_linebuf_new_line(bufhead);
- if(unlikely(format != NULL))
+ if(rb_unlikely(format != NULL))
{
va_start(args, format);
len = rb_vsnprintf(bufline->buf, BUF_DATA_SIZE, format, args);
bufline->terminated = 1;
/* Truncate the data if required */
- if(unlikely(len > 510))
+ if(rb_unlikely(len > 510))
{
len = 510;
bufline->buf[len++] = '\r';
bufline->buf[len++] = '\n';
}
- else if(unlikely(len == 0))
+ else if(rb_unlikely(len == 0))
{
bufline->buf[len++] = '\r';
bufline->buf[len++] = '\n';
else
{
/* Chop trailing CRLF's .. */
- while((bufline->buf[len] == '\r') || (bufline->buf[len] == '\n') || (bufline->buf[len] == '\0'))
+ while((bufline->buf[len] == '\r') || (bufline->buf[len] == '\n')
+ || (bufline->buf[len] == '\0'))
{
len--;
}
}
ptr = bufhead->list.head;
-
+
bufline = ptr->data;
if(!bufline->terminated)
{
bufline = ptr->data;
if(!bufline->terminated)
break;
-
+
vec[x].iov_base = bufline->buf;
vec[x].iov_len = bufline->len;
ptr = ptr->next;
- } while(++x < RB_UIO_MAXIOV);
+ }
+ while(++x < RB_UIO_MAXIOV);
if(x == 0)
{
rb_linebuf_done_line(bufhead, bufline, bufhead->list.head);
bufhead->writeofs = 0;
}
- else
+ else
{
bufhead->writeofs += xret;
break;
return retval;
}
-#endif
+#endif
+
+ /* this is the non-writev case */
- /* this is the non-writev case */
-
/* Check we actually have a first buffer */
if(bufhead->list.head == NULL)
{
*/
void
-rb_count_rb_linebuf_memory(size_t * count, size_t * rb_linebuf_memory_used)
+rb_count_rb_linebuf_memory(size_t *count, size_t *rb_linebuf_memory_used)
{
-#ifndef NOBALLOC
rb_bh_usage(rb_linebuf_heap, count, NULL, rb_linebuf_memory_used, NULL);
-#else
- *count = 0;
- *rb_linebuf_memory_used = 0;
-#endif
}