ul_list.h ul_listbase.h ul_utdefs.h ul_utmalloc.h \
ul_uniqid.h ul_dbufflog.h ul_log.h ul_logbase.h \
ul_logreg.h ul_cbuff.h ul_dqfifo.h ul_hashtab.h \
- ul_hashtabcust.h
+ ul_hashtabcust.h ul_dbuffprintf.h
ifneq ($(CONFIG_OC_ULUTMINIMAL),y)
ulut_HEADERS += ul_evcbase.h
ul_gavlprim.c ul_hashtabprim.c ul_hptree.c \
ul_htimer.c ul_htimbase.c ul_htimroot.c \
ul_htimdefault.c ul_dbufflog.c ul_logbase.c \
- ul_cbuff.c
+ ul_cbuff.c ul_dbuffprintf.c
ifneq ($(CONFIG_OC_ULUTMINIMAL),y)
ulut_SOURCES += ul_evcbase.c ul_gavl.c ul_htimmstime.c ul_logreg.c \
- ul_uniqid.c
+ ul_uniqid.c
endif
lib_LOADLIBES = ulut
--- /dev/null
+#include <stdarg.h>
+#include <stdio.h>
+#include "ul_dbuff.h"
+#include "ul_dbuffprintf.h"
+
+int ul_dbuff_printf(ul_dbuff_t *dbuf, const char *format, ...)
+{
+ int len;
+ va_list ap;
+ va_start(ap, format);
+ len = ul_dbuff_vprintf(dbuf, format, ap);
+ va_end(ap);
+ return len;
+}
+
+int ul_dbuff_vprintf(ul_dbuff_t *dbuf, const char *format, va_list ap)
+{
+ int space = dbuf->capacity - dbuf->len;
+ int len, pos;
+ va_list aq;
+
+ va_copy(aq, ap);
+ pos = dbuf->len;
+ len = vsnprintf((char*)dbuf->data + pos, space, format, ap);
+ if(len >= space) {
+ ul_dbuff_set_len(dbuf, pos + len + 2);
+ if(dbuf->capacity > pos) {
+ space = dbuf->capacity - pos;
+ len = vsnprintf((char*)dbuf->data + pos, space, format, aq);
+ }
+ }
+ va_end(aq);
+ dbuf->len = pos + len;
+ if(dbuf->len > dbuf->capacity)
+ dbuf->len = dbuf->capacity;
+ return len;
+}
--- /dev/null
+#ifndef _UL_DBUFF_PRINTF_H
+#define _UL_DBUFF_PRINTF_H
+
+#include <stdarg.h>
+#include <ul_dbuff.h>
+
+int ul_dbuff_printf(ul_dbuff_t *dbuf, const char *format, ...);
+int ul_dbuff_vprintf(ul_dbuff_t *dbuf, const char *format, va_list ap);
+
+#endif /*_UL_DBUFF_PRINTF_H*/