[Yum-devel] [PATCH 3/5] Add delta metadata parsing test program

James Bowes jbowes at redhat.com
Mon Jun 11 12:16:33 UTC 2007


usage: delta-parser TYPE FILENAME

delta-parser is a simple test program to output the additions and
removals in a delta xml file.
---
 Makefile       |    5 +++++
 delta-parser.c |   41 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+), 0 deletions(-)
 create mode 100644 Makefile
 create mode 100644 delta-parser.c

diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..dc6e16d
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,5 @@
+delta-parser: delta-parser.c xml-parser.c package.c
+	gcc -g -Wall -o delta-parser `pkg-config --cflags --libs libxml-2.0 glib-2.0` delta-parser.c xml-parser.c package.c
+
+clean:
+	rm delta-parser
diff --git a/delta-parser.c b/delta-parser.c
new file mode 100644
index 0000000..52dafbf
--- /dev/null
+++ b/delta-parser.c
@@ -0,0 +1,41 @@
+#include <stdio.h>
+#include <string.h>
+
+#include "xml-parser.h"
+#include "package.h"
+
+void count_callback (guint32 count, gpointer data)
+{
+    printf ("%d total packages\n", count);
+}
+
+void addition_callback (Package *pkg, gpointer data)
+{
+    printf ("add    - %s\t%s\t%s\n", pkg->name, pkg->pkgId, pkg->arch);
+}
+
+void removal_callback (Package *pkg, gpointer data)
+{
+    printf ("remove - %s\t%s\t%s\n", pkg->name, pkg->pkgId, pkg->arch);
+}
+
+int main(int argc, char* argv[])
+{
+    GError *err = NULL;
+
+    if (argc < 3) {
+        printf ("usage: %s TYPE FILE\n", argv[0]);
+        return -1;
+    }
+
+    if (!strcmp ("primary", argv[1]))
+        yum_xml_parse_primary_delta (argv[2], count_callback,
+                                     addition_callback, removal_callback,
+                                     NULL, &err);
+    else {
+        printf ("unknown metadata type '%s'\n", argv[1]);
+        return -1;
+    }
+
+    return 0;
+}
-- 
1.5.2.1.938.gac3b4




More information about the Yum-devel mailing list