The following commit has been merged in the master branch:
commit b85e48d40910afd1f38d46e43ef40176fcbab28f
Author: Guillem Jover <[email protected]>
Date:   Thu Jan 22 20:38:09 2009 +0200

    libdpkg: Add a new varbufsubstc function

diff --git a/ChangeLog b/ChangeLog
index 3d2d0ae..341a01a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2009-01-22  Guillem Jover  <[email protected]>
 
+       * lib/dpkg-db.h (varbufsubstc): New function prototype.
+       * lib/varbuf.c (varbufsubstc): New function definition.
+       * lib/test/t-varbuf.c (test_varbuf_substc): New function.
+       (test): Call test_varbuf_substc.
+
+2009-01-22  Guillem Jover  <[email protected]>
+
        * configure.ac (AC_CONFIG_FILES): Add 'lib/test/Makefile'.
        * lib/Makefile.am (SUBDIRS): New variable.
        * lib/dpkg-test.h: New file.
diff --git a/lib/dpkg-db.h b/lib/dpkg-db.h
index 7ed8d7b..2d85995 100644
--- a/lib/dpkg-db.h
+++ b/lib/dpkg-db.h
@@ -380,6 +380,7 @@ struct varbuf;
 
 extern void varbufaddc(struct varbuf *v, int c);
 extern void varbufdupc(struct varbuf *v, int c, size_t s);
+extern void varbufsubstc(struct varbuf *v, int c_src, int c_dst);
 int varbufprintf(struct varbuf *v, const char *fmt, ...) PRINTFFORMAT(2,3);
 int varbufvprintf(struct varbuf *v, const char *fmt, va_list va);
 void varbufinit(struct varbuf *v, size_t size);
diff --git a/lib/test/t-varbuf.c b/lib/test/t-varbuf.c
index 2de4e95..4157b84 100644
--- a/lib/test/t-varbuf.c
+++ b/lib/test/t-varbuf.c
@@ -125,6 +125,23 @@ test_varbuf_dupc(void)
 }
 
 static void
+test_varbuf_substc(void)
+{
+       struct varbuf vb;
+
+       varbufinit(&vb, 5);
+
+       varbufaddbuf(&vb, "1234a5678a9012a", 15);
+
+       varbufsubstc(&vb, 'a', 'z');
+       test_pass(vb.used == 15);
+       test_pass(vb.size >= vb.used);
+       test_mem(vb.buf, ==, "1234z5678z9012z", 15);
+
+       varbuffree(&vb);
+}
+
+static void
 test_varbuf_reset(void)
 {
        struct varbuf vb;
@@ -153,6 +170,7 @@ test(void)
        test_varbuf_addbuf();
        test_varbuf_addc();
        test_varbuf_dupc();
+       test_varbuf_substc();
        test_varbuf_reset();
 
        /* FIXME: Complete. */
diff --git a/lib/varbuf.c b/lib/varbuf.c
index 5ab780e..2b62fb8 100644
--- a/lib/varbuf.c
+++ b/lib/varbuf.c
@@ -46,6 +46,16 @@ varbufdupc(struct varbuf *v, int c, size_t n)
   memset(v->buf + old_used, c, n);
 }
 
+void
+varbufsubstc(struct varbuf *v, int c_src, int c_dst)
+{
+  size_t i;
+
+  for (i = 0; i < v->used; i++)
+    if (v->buf[i] == c_src)
+      v->buf[i] = c_dst;
+}
+
 int varbufprintf(struct varbuf *v, const char *fmt, ...) {
   int r;
   va_list al;

-- 
dpkg's main repository


-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to