瀏覽代碼

libdpkg: Add new varbuf_add_arbfield()

Guillem Jover 12 年之前
父節點
當前提交
bdfc98f46c
共有 3 個文件被更改,包括 19 次插入4 次删除
  1. 14 4
      lib/dpkg/dump.c
  2. 1 0
      lib/dpkg/libdpkg.map
  3. 4 0
      lib/dpkg/parsedump.h

+ 14 - 4
lib/dpkg/dump.c

@@ -426,6 +426,19 @@ w_trigaw(struct varbuf *vb,
     varbuf_add_char(vb, '\n');
 }
 
+void
+varbuf_add_arbfield(struct varbuf *vb, const struct arbitraryfield *arbfield,
+                    enum fwriteflags flags)
+{
+  if (flags & fw_printheader) {
+    varbuf_add_str(vb, arbfield->name);
+    varbuf_add_str(vb, ": ");
+  }
+  varbuf_add_str(vb, arbfield->value);
+  if (flags & fw_printheader)
+    varbuf_add_char(vb, '\n');
+}
+
 void
 varbufrecord(struct varbuf *vb,
              const struct pkginfo *pkg, const struct pkgbin *pkgbin)
@@ -437,10 +450,7 @@ varbufrecord(struct varbuf *vb,
     fip->wcall(vb, pkg, pkgbin, fw_printheader, fip);
   }
   for (afp = pkgbin->arbs; afp; afp = afp->next) {
-    varbuf_add_str(vb, afp->name);
-    varbuf_add_str(vb, ": ");
-    varbuf_add_str(vb, afp->value);
-    varbuf_add_char(vb, '\n');
+    varbuf_add_arbfield(vb, afp, fw_printheader);
   }
 }
 

+ 1 - 0
lib/dpkg/libdpkg.map

@@ -304,6 +304,7 @@ LIBDPKG_PRIVATE {
 	versionsatisfied;
 
 	# Package on-disk database functions
+	varbuf_add_arbfield;
 	varbufdependency;
 	varbufrecord;
 	writerecord;

+ 4 - 0
lib/dpkg/parsedump.h

@@ -116,6 +116,10 @@ fwritefunction w_architecture;
 fwritefunction w_filecharf;
 fwritefunction w_trigpend, w_trigaw;
 
+void
+varbuf_add_arbfield(struct varbuf *vb, const struct arbitraryfield *arbfield,
+                    enum fwriteflags flags);
+
 struct fieldinfo {
   const char *name;
   freadfunction *rcall;