]> mj.ucw.cz Git - libucw.git/blobdiff - ucw/mempool-fmt.c
Merge branch 'master' into table
[libucw.git] / ucw / mempool-fmt.c
index e58ce275797bf6ed91dd2ff78c399cb01e72ddce..1b98a2d39df9d5ffabac8f6b17b983fc9f585271 100644 (file)
@@ -8,15 +8,15 @@
  *     of the GNU Lesser General Public License.
  */
 
-#include "ucw/lib.h"
-#include "ucw/mempool.h"
+#include <ucw/lib.h>
+#include <ucw/mempool.h>
 
 #include <alloca.h>
 #include <stdio.h>
 #include <string.h>
 
 static char *
-mp_vprintf_at(struct mempool *mp, uns ofs, const char *fmt, va_list args)
+mp_vprintf_at(struct mempool *mp, size_t ofs, const char *fmt, va_list args)
 {
   char *ret = mp_grow(mp, ofs + 1) + ofs;
   va_list args2;
@@ -35,9 +35,9 @@ mp_vprintf_at(struct mempool *mp, uns ofs, const char *fmt, va_list args)
        }
       while (cnt < 0);
     }
-  else if ((uns)cnt >= mp_avail(mp) - ofs)
+  else if ((uint)cnt >= mp_avail(mp) - ofs)
     {
-      ret = mp_grow(mp, cnt + 1) + ofs;
+      ret = mp_grow(mp, ofs + cnt + 1) + ofs;
       va_copy(args2, args);
       int cnt2 = vsnprintf(ret, cnt + 1, fmt, args2);
       va_end(args2);
@@ -65,15 +65,15 @@ mp_printf(struct mempool *p, const char *fmt, ...)
 }
 
 char *
-mp_vprintf_append(struct mempool *mp, char *ptr, const char *fmt, va_list args)
+mp_append_vprintf(struct mempool *mp, char *ptr, const char *fmt, va_list args)
 {
-  uns ofs = mp_open(mp, ptr);
-  ASSERT(ofs);
+  size_t ofs = mp_open(mp, ptr);
+  ASSERT(ofs && !ptr[ofs - 1]);
   return mp_vprintf_at(mp, ofs - 1, fmt, args);
 }
 
 char *
-mp_printf_append(struct mempool *mp, char *ptr, const char *fmt, ...)
+mp_append_printf(struct mempool *mp, char *ptr, const char *fmt, ...)
 {
   va_list args;
   va_start(args, fmt);
@@ -89,7 +89,7 @@ int main(void)
   struct mempool *mp = mp_new(64);
   char *x = mp_printf(mp, "<Hello, %s!>", "World");
   fputs(x, stdout);
-  x = mp_printf_append(mp, x, "<Appended>");
+  x = mp_append_printf(mp, x, "<Appended>");
   fputs(x, stdout);
   x = mp_printf(mp, "<Hello, %50s!>\n", "World");
   fputs(x, stdout);