Hello community,
here is the log from the commit of package yum-metadata-parser
checked in at Wed Aug 29 22:54:26 CEST 2007.
--------
--- yum-metadata-parser/yum-metadata-parser.changes 2007-05-21 13:27:41.000000000 +0200
+++ /mounts/work_src_done/STABLE/yum-metadata-parser/yum-metadata-parser.changes 2007-08-29 19:50:34.172480000 +0200
@@ -1,0 +2,6 @@
+Wed Aug 29 19:51:52 CEST 2007 - cthiel@suse.de
+
+- update to version 1.1.2
+ * add some indexes to speed up a number of lookups in yum
+
+-------------------------------------------------------------------
Old:
----
yum-metadata-parser-1.1.1.tar.bz2
New:
----
yum-metadata-parser-1.1.2.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yum-metadata-parser.spec ++++++
--- /var/tmp/diff_new_pack.V13597/_old 2007-08-29 22:53:38.000000000 +0200
+++ /var/tmp/diff_new_pack.V13597/_new 2007-08-29 22:53:38.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package yum-metadata-parser (Version 1.1.1)
+# spec file for package yum-metadata-parser (Version 1.1.2)
#
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -13,11 +13,11 @@
Name: yum-metadata-parser
BuildRequires: glib2-devel libxml2-devel pkgconfig python-devel sqlite-devel
Summary: A fast metadata parser for yum
-Version: 1.1.1
+Version: 1.1.2
Release: 1
Source: %{name}-%{version}.tar.bz2
Patch: %{name}-1.0-quiet.patch
-License: GNU General Public License (GPL)
+License: GPL v2 or later
Group: Development/Libraries/Python
URL: http://devel.linux.duke.edu/cgi-bin/viewcvs.cgi/yum-metadata-parser/
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -56,6 +56,9 @@
%{py_sitedir}/*
%changelog
+* Wed Aug 29 2007 - cthiel@suse.de
+- update to version 1.1.2
+ * add some indexes to speed up a number of lookups in yum
* Mon May 21 2007 - cthiel@suse.de
- update to version 1.1.1
* Expose DBVERSION
++++++ yum-metadata-parser-1.1.1.tar.bz2 -> yum-metadata-parser-1.1.2.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yum-metadata-parser-1.1.1/ChangeLog new/yum-metadata-parser-1.1.2/ChangeLog
--- old/yum-metadata-parser-1.1.1/ChangeLog 2007-05-16 10:24:24.000000000 +0200
+++ new/yum-metadata-parser-1.1.2/ChangeLog 2007-08-24 15:43:05.000000000 +0200
@@ -1,242 +1,233 @@
-2007-05-16 09:24 pnasrat
+2007-08-24 Seth Vidal
- * AUTHORS, ChangeLog, setup.py, yum-metadata-parser.spec: Bump to
- version 1.1.1 to allow multiple dbversions
+ * setup.py, yum-metadata-parser.spec: bump version number
-2007-05-16 09:15 pnasrat
+2007-08-24 Seth Vidal
- * sqlitecache.c, sqlitecachec.py: Add DBVERSION attribute Jeremy
- Katzj
+ * db.c: commit Florian's patches to create more indexes in the
+ sqlite files made by yum-metadata-parser
-2007-04-27 14:30 skvidal
+2007-07-03 James Bowes
- * setup.py, yum-metadata-parser.spec:
- bump version to 1.1.0 b/c of the dbversion change
+ * xml-parser.c: Fix segfault in the xml parser
-2007-04-10 23:30 jbowes
+2007-06-03 James Bowes
- * db.c, db.h, package.h, xml-parser.c: Bump database version to 10
+ * xml-parser.c: Use a common sax_error function
- build_* and time_* values are stored as ints, rather than text,
- and checksum_value has been dropped, as this is the same value as
- pkgId.
+2007-06-03 James Bowes
-2007-04-08 00:52 jbowes
+ * xml-parser.c: Use a common sax_characters function
- * xml-parser.c: Reduce some code duplication in xml-parser
+2007-06-03 James Bowes
-2007-04-04 05:07 skvidal
+ * xml-parser.c: Use SAXContext for other
- * ChangeLog: merge changelog
+2007-06-03 James Bowes
-2007-04-04 05:07 skvidal
+ * xml-parser.c: Use SAXContext for filelists
- * setup.py, yum-metadata-parser.spec:
- mark as 1.0.4
+2007-06-03 James Bowes
-2007-04-03 15:02 jbowes
+ * xml-parser.c: Extract out a common set of SAXContext members for
+ the three file types, and use them with primary.
- * db.c: Create a pkgKey index for provides, requires, conflicts,
- and obsoletes.
+2007-06-03 James Bowes
- Originally suggested by Florian Festi on yum-devel.
+ * xml-parser.c: Use a common sax warning callback for the three file
+ types.
-2007-02-18 03:38 jbowes
+2007-05-30 James Bowes
- * db.c, db.h, package.h, sqlitecache.c, xml-parser.c: Apply patch
- from Florian Festi to include Prereqs.
+ * xml-parser.c: Get SAX error callbacks for filelists and other to
+ use the right context type.
-2007-01-07 20:31 skvidal
+2007-05-16 Paul Nasrat
- * ChangeLog:
- check in changelog
+ * ChangeLog: Update ChangeLog
-2007-01-07 20:31 skvidal
+2007-05-16 Paul Nasrat
- * setup.py, yum-metadata-parser.spec:
- mark as 1.0.3
+ * AUTHORS, ChangeLog, setup.py, yum-metadata-parser.spec: Bump to
+ version 1.1.1 to allow multiple dbversions
-2007-01-04 18:20 jbowes
+2007-05-16 Paul Nasrat
- * ChangeLog, sqlitecache.c: 2007-12-04 13:10 jbowes
+ * sqlitecache.c, sqlitecachec.py: Add DBVERSION attribute Jeremy
+ Katzj
- * sqlitecache.c: Never use the default glib log handler.
- This way, when
- -d0 is passed, we won't output to the glib log handler
- (since nothing
- should be displayed at all).
+2007-04-27 Seth Vidal
-2006-12-05 20:50 katzj
+ * setup.py, yum-metadata-parser.spec: bump version to 1.1.0 b/c of
+ the dbversion change
- * sqlitecachec.py: support newer pysqlite as included in python 2.5
+2007-04-10 James Bowes
-2006-11-23 01:28 jbowes
+ * db.c, db.h, package.h, xml-parser.c: Bump database version to 10
+ build_* and time_* values are stored as ints, rather than text, and
+ checksum_value has been dropped, as this is the same value as pkgId.
- * ChangeLog, sqlitecache.c: Use structs and function pointers to
- reduce code duplication.
-2006-11-23 01:22 jbowes
+2007-04-07 James Bowes
- * ChangeLog, sqlitecache.c, sqlitecachec.py: Display repoid while
- populating the cache.
+ * xml-parser.c: Reduce some code duplication in xml-parser
-2006-07-12 06:40 skvidal
+2007-04-04 Seth Vidal
- * ChangeLog, setup.py, yum-metadata-parser.spec:
- version bump check in changelog
+ * ChangeLog: merge changelog
-2006-07-10 17:54 pnasrat
+2007-04-04 Seth Vidal
- * db.c, db.h: Move to dbversion 9 - add pre for requires
+ * setup.py, yum-metadata-parser.spec: mark as 1.0.4
-2006-06-19 05:37 skvidal
+2007-04-03 James Bowes
- * yum-metadata-parser.spec:
- update specfile
+ * db.c: Create a pkgKey index for provides, requires, conflicts, and
+ obsoletes. Originally suggested by Florian Festi on yum-devel.
-2006-06-19 02:54 skvidal
+2007-02-18 James Bowes
- * setup.py:
- bump second minor version number
+ * db.c, db.h, package.h, sqlitecache.c, xml-parser.c: Apply patch
+ from Florian Festi to include Prereqs.
-2006-06-15 18:36 pnasrat
+2007-01-07 Seth Vidal
- * xml-parser.c: Actually populate location_base attribute - used
- for cd installs
+ * ChangeLog: check in changelog
-2006-06-14 21:03 pnasrat
+2007-01-07 Seth Vidal
- * db.c: Fix the order to correspond with the schema
+ * setup.py, yum-metadata-parser.spec: mark as 1.0.3
-2006-06-06 14:41 skvidal
+2007-01-04 James Bowes
- * MANIFEST.in: add spec file in MANIFEST.in as Terje mentioned
+ * ChangeLog, sqlitecache.c: 2007-12-04 13:10 jbowes *
+ sqlitecache.c: Never use the default glib log handler. This way,
+ when -d0 is passed, we won't output to the glib log handler (since
+ nothing should be displayed at all).
-2006-06-06 05:00 katzj
+2006-12-05 Jeremy Katz
- * yum-metadata-parser.spec: add pkgconfig as a BR
+ * sqlitecachec.py: support newer pysqlite as included in python 2.5
-2006-06-06 05:00 katzj
- * sqlitecachec.py: doesn't actually have anything to run
+2006-11-23 James Bowes
-2006-06-05 18:58 katzj
+ * ChangeLog, sqlitecache.c: Use structs and function pointers to
+ reduce code duplication.
- * yum-metadata-parser.spec: glib2, not glib
+2006-11-23 James Bowes
-2006-06-05 14:02 tambet
+ * ChangeLog, sqlitecache.c, sqlitecachec.py: Display repoid while
+ populating the cache.
- * ChangeLog, yum-metadata-parser.spec: 2006-06-05 Tambet Ingo
-
+2006-07-12 Seth Vidal
- * yum-metadata-parser.spec: Relax the required yum
- version a bit, the
- next release from the 2.6 branch works with this as well.
+ * ChangeLog, setup.py, yum-metadata-parser.spec: version bump check
+ in changelog
-2006-06-05 13:58 tambet
+2006-07-10 Paul Nasrat
- * ChangeLog, MANIFEST.in, setup.py, yum-metadata-parser.spec:
- 2006-06-05 Tambet Ingo
+ * db.c, db.h: Move to dbversion 9 - add pre for requires
- Patch from Terje Rosten
+2006-06-19 Seth Vidal
- * setup.py: Set the name of the module correctly.
+ * yum-metadata-parser.spec: update specfile
- * yum-metadata-parser.spec: Implement.
+2006-06-19 Seth Vidal
- * MANIFEST.in: New file.
+ * setup.py: bump second minor version number
-2006-05-24 21:03 tambet
+2006-06-15 Paul Nasrat
- * ChangeLog, db.c, debug.c, debug.h, setup.py, sqlitecache.c,
- xml-parser.c: 2006-05-24 Tambet Ingo
+ * xml-parser.c: Actually populate location_base attribute - used for
+ cd installs
- * debug.[ch]: Remove. No need for our own logging
- framework, glib
- already has one.
+2006-06-14 Paul Nasrat
- *.[ch]: Use glib messaging/logging functions instead of
- debug_*.
+ * db.c: Fix the order to correspond with the schema
- * sqlitecache.c: A small cleanup to get rid of some
- awfully similar
- looking code.
+2006-06-06 Seth Vidal
-2006-05-24 15:20 tambet
+ * MANIFEST.in: add spec file in MANIFEST.in as Terje mentioned
- * ChangeLog, db.c, sqlitecache.c: 2006-05-24 Tambet Ingo
-
+2006-06-06 Jeremy Katz
- * ChangeLog: Start keeping change log.
+ * yum-metadata-parser.spec: add pkgconfig as a BR
- * sqlitecache.c (update_primary): Nullify the update info
- structure,
- so we don't find garbage from it on freeing.
- (update_filelist): Ditto.
- (update_other): Ditto.
+2006-06-06 Jeremy Katz
- * db.c (yum_db_open): Delete the cache file if the
- dbversion
- does not match.
+ * sqlitecachec.py: doesn't actually have anything to run
-2006-05-24 13:59 tambet
+2006-06-05 Jeremy Katz
- * AUTHORS, README: 2006-05-24 Tambet Ingo
+ * yum-metadata-parser.spec: glib2, not glib
- * AUTHORS: Add.
+2006-06-05 Tambet Ingo
+
+ * ChangeLog, yum-metadata-parser.spec: 2006-06-05 Tambet Ingo
+ * yum-metadata-parser.spec: Relax the required
+ yum version a bit, the next release from the 2.6 branch works with
+ this as well.
+
+2006-06-05 Tambet Ingo
+
+ * ChangeLog, MANIFEST.in, setup.py, yum-metadata-parser.spec:
+ 2006-06-05 Tambet Ingo Patch from Terje
+ Rosten * setup.py: Set the name of the
+ module correctly. * yum-metadata-parser.spec: Implement. *
+ MANIFEST.in: New file.
- * README: Add.
+2006-05-24 Tambet Ingo
-2006-05-24 13:51 tambet
+ * ChangeLog, db.c, debug.c, debug.h, setup.py, sqlitecache.c,
+ xml-parser.c: 2006-05-24 Tambet Ingo *
+ debug.[ch]: Remove. No need for our own logging framework, glib
+ already has one. *.[ch]: Use glib messaging/logging functions
+ instead of debug_*. * sqlitecache.c: A small cleanup to get rid of
+ some awfully similar looking code.
- * .cvsignore: 2006-05-24 Tambet Ingo
+2006-05-24 Tambet Ingo
- * .cvsignore: Add.
+ * ChangeLog, db.c, sqlitecache.c: 2006-05-24 Tambet Ingo
+ * ChangeLog: Start keeping change log. *
+ sqlitecache.c (update_primary): Nullify the update info structure,
+ so we don't find garbage from it on freeing. (update_filelist):
+ Ditto. (update_other): Ditto. * db.c (yum_db_open): Delete the
+ cache file if the dbversion does not match.
-2006-05-24 13:49 tambet
+2006-05-24 Tambet Ingo
- * db.c, db.h, setup.py, sqlitecache.c, sqlitecache.py,
- sqlitecachec.py, xml-parser.c, xml-parser.h: 2006-05-24 Tambet
- Ingo
+ * AUTHORS, README: 2006-05-24 Tambet Ingo *
+ AUTHORS: Add. * README: Add.
- * Implement the database opening correctly, just like yum
- does.
+2006-05-24 Tambet Ingo
- * Implement raising the correct exception if something
- goes wrong.
+ * .cvsignore: 2006-05-24 Tambet Ingo *
+ .cvsignore: Add.
- * Some small performance optimizations: Don't copy
- uninteresting XML
- characters to the local buffer, use typed python object
- initialization
- functions instead of BuildValue(), and add a dedicated
- string chunk to
- package ids collection instead of doing one malloc per
- id.
+2006-05-24 Tambet Ingo
- * Rename sqlitecache.py to sqlitecachec.py
+ * db.c, db.h, setup.py, sqlitecache.c, sqlitecache.py,
+ sqlitecachec.py, xml-parser.c, xml-parser.h: 2006-05-24 Tambet Ingo
+ * Implement the database opening correctly,
+ just like yum does. * Implement raising the correct exception if
+ something goes wrong. * Some small performance optimizations:
+ Don't copy uninteresting XML characters to the local buffer, use
+ typed python object initialization functions instead of
+ BuildValue(), and add a dedicated string chunk to package ids
+ collection instead of doing one malloc per id. * Rename
+ sqlitecache.py to sqlitecachec.py
-2006-05-16 04:53 skvidal
+2006-05-16 Seth Vidal
* debug.c, debug.h, sqlitecache.c, sqlitecache.py, xml-parser.c,
- xml-parser.h:
- committing Tambet's patch:
+ xml-parser.h: committing Tambet's patch: "Here's a patch to fix the
+ logging output and to implement the progress bar callback. The
+ previous patch that implemented logging always added a log callback,
+ so it worked correctly for the first time, but every other time the
+ output callback was added and a duplicate log line was printed. "
+
+2006-05-11 Seth Vidal
- "Here's a patch to fix the logging output and to implement the
- progress bar callback. The previous patch that implemented
- logging always added a log callback, so it worked correctly for
- the first time, but every other time the output callback was
- added and a duplicate log line was printed. "
-
-2006-05-11 18:33 skvidal
-
- * db.c, db.h, debug.c, debug.h, package.c, package.h, setup.py,
- sqlitecache.c, sqlitecache.py, xml-parser.c, xml-parser.h:
- Initial revision
-
-2006-05-11 18:33 skvidal
-
- * db.c, db.h, debug.c, debug.h, package.c, package.h, setup.py,
- sqlitecache.c, sqlitecache.py, xml-parser.c, xml-parser.h: yum
- metdata parser
+ * Initial revision
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yum-metadata-parser-1.1.1/db.c new/yum-metadata-parser-1.1.2/db.c
--- old/yum-metadata-parser-1.1.1/db.c 2007-05-15 18:26:20.000000000 +0200
+++ new/yum-metadata-parser-1.1.2/db.c 2007-08-24 15:38:29.000000000 +0200
@@ -380,6 +380,15 @@
return;
}
+ sql = "CREATE INDEX filenames ON files (name)";
+ rc = sqlite3_exec (db, sql, NULL, NULL, NULL);
+ if (rc != SQLITE_OK) {
+ g_set_error (err, YUM_DB_ERROR, YUM_DB_ERROR,
+ "Can not create filenames index: %s",
+ sqlite3_errmsg (db));
+ return;
+ }
+
sql =
"CREATE TABLE %s ("
" name TEXT,"
@@ -392,7 +401,8 @@
const char *deps[] = { "requires", "provides", "conflicts", "obsoletes", NULL };
int i;
- const char *indexsql = "CREATE INDEX IF NOT EXISTS pkg%s on %s (pkgKey)";
+ const char *pkgindexsql = "CREATE INDEX pkg%s on %s (pkgKey)";
+ const char *nameindexsql = "CREATE INDEX %sname ON %s (name)";
for (i = 0; deps[i]; i++) {
const char *prereq;
@@ -414,7 +424,7 @@
return;
}
- query = g_strdup_printf(indexsql, deps[i], deps[i]);
+ query = g_strdup_printf(pkgindexsql, deps[i], deps[i]);
rc = sqlite3_exec (db, query, NULL, NULL, NULL);
g_free (query);
@@ -424,15 +434,18 @@
deps[i], sqlite3_errmsg (db));
return;
}
- }
- sql = "CREATE INDEX providesname ON provides (name)";
- rc = sqlite3_exec (db, sql, NULL, NULL, NULL);
- if (rc != SQLITE_OK) {
- g_set_error (err, YUM_DB_ERROR, YUM_DB_ERROR,
- "Can not create providesname index: %s",
- sqlite3_errmsg (db));
- return;
+ if (i < 2) {
+ query = g_strdup_printf(nameindexsql, deps[i], deps[i]);
+ rc = sqlite3_exec (db, query, NULL, NULL, NULL);
+ if (rc != SQLITE_OK) {
+ g_set_error (err, YUM_DB_ERROR, YUM_DB_ERROR,
+ "Can not create %sname index: %s",
+ deps[i], sqlite3_errmsg (db));
+ return;
+ }
+ }
+
}
sql =
@@ -682,6 +695,15 @@
return;
}
+ sql = "CREATE INDEX dirnames ON filelist (dirname)";
+ rc = sqlite3_exec (db, sql, NULL, NULL, NULL);
+ if (rc != SQLITE_OK) {
+ g_set_error (err, YUM_DB_ERROR, YUM_DB_ERROR,
+ "Can not create dirnames index: %s",
+ sqlite3_errmsg (db));
+ return;
+ }
+
sql =
"CREATE TRIGGER remove_filelist AFTER DELETE ON packages"
" BEGIN"
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yum-metadata-parser-1.1.1/MANIFEST new/yum-metadata-parser-1.1.2/MANIFEST
--- old/yum-metadata-parser-1.1.1/MANIFEST 2007-05-16 10:22:31.000000000 +0200
+++ new/yum-metadata-parser-1.1.2/MANIFEST 1970-01-01 01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
-AUTHORS
-ChangeLog
-MANIFEST
-MANIFEST.in
-README
-db.c
-db.h
-package.c
-package.h
-setup.py
-sqlitecache.c
-sqlitecachec.py
-xml-parser.c
-xml-parser.h
-yum-metadata-parser.spec
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yum-metadata-parser-1.1.1/PKG-INFO new/yum-metadata-parser-1.1.2/PKG-INFO
--- old/yum-metadata-parser-1.1.1/PKG-INFO 2007-05-16 10:24:43.000000000 +0200
+++ new/yum-metadata-parser-1.1.2/PKG-INFO 2007-08-24 15:43:43.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: yum-metadata-parser
-Version: 1.1.1
+Version: 1.1.2
Summary: A fast YUM meta-data parser
Home-page: UNKNOWN
Author: UNKNOWN
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yum-metadata-parser-1.1.1/setup.py new/yum-metadata-parser-1.1.2/setup.py
--- old/yum-metadata-parser-1.1.1/setup.py 2007-05-16 10:17:00.000000000 +0200
+++ new/yum-metadata-parser-1.1.2/setup.py 2007-08-24 15:41:41.000000000 +0200
@@ -23,7 +23,7 @@
'sqlitecache.c'])
setup (name = 'yum-metadata-parser',
- version = '1.1.1',
+ version = '1.1.2',
description = 'A fast YUM meta-data parser',
py_modules = ['sqlitecachec'],
ext_modules = [module])
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yum-metadata-parser-1.1.1/xml-parser.c new/yum-metadata-parser-1.1.2/xml-parser.c
--- old/yum-metadata-parser-1.1.1/xml-parser.c 2007-05-15 18:26:20.000000000 +0200
+++ new/yum-metadata-parser-1.1.2/xml-parser.c 2007-07-23 19:00:01.000000000 +0200
@@ -50,6 +50,20 @@
return z;
}
+typedef struct {
+ const char *md_type;
+ xmlParserCtxt *xml_context;
+ GError **error;
+ CountFn count_fn;
+ PackageFn package_fn;
+ gpointer user_data;
+
+ Package *current_package;
+
+ gboolean want_text;
+ GString *text_buffer;
+} SAXContext;
+
typedef enum {
PRIMARY_PARSER_TOPLEVEL = 0,
PRIMARY_PARSER_PACKAGE,
@@ -58,19 +72,12 @@
} PrimarySAXContextState;
typedef struct {
- xmlParserCtxt *xml_context;
+ SAXContext sctx;
+
PrimarySAXContextState state;
- GError **error;
- CountFn count_fn;
- PackageFn package_fn;
- gpointer user_data;
- Package *current_package;
GSList **current_dep_list;
PackageFile *current_file;
-
- gboolean want_text;
- GString *text_buffer;
} PrimarySAXContext;
static void
@@ -78,15 +85,17 @@
const char *name,
const char **attrs)
{
+ SAXContext *sctx = &ctx->sctx;
+
if (!strcmp (name, "package")) {
- g_assert (ctx->current_package == NULL);
+ g_assert (sctx->current_package == NULL);
ctx->state = PRIMARY_PARSER_PACKAGE;
- ctx->current_package = package_new ();
+ sctx->current_package = package_new ();
}
- else if (ctx->count_fn && !strcmp (name, "metadata")) {
+ else if (sctx->count_fn && !strcmp (name, "metadata")) {
int i;
const char *attr;
const char *value;
@@ -96,8 +105,8 @@
value = attrs[++i];
if (!strcmp (attr, "packages")) {
- ctx->count_fn (string_to_guint32_with_default (value, 0),
- ctx->user_data);
+ sctx->count_fn (string_to_guint32_with_default (value, 0),
+ sctx->user_data);
break;
}
}
@@ -129,14 +138,16 @@
const char *name,
const char **attrs)
{
- Package *p = ctx->current_package;
+ SAXContext *sctx = &ctx->sctx;
+
+ Package *p = sctx->current_package;
int i;
const char *attr;
const char *value;
g_assert (p != NULL);
- ctx->want_text = TRUE;
+ sctx->want_text = TRUE;
if (!strcmp (name, "format")) {
ctx->state = PRIMARY_PARSER_FORMAT;
@@ -200,7 +211,9 @@
const char *name,
const char **attrs)
{
- Package *p = ctx->current_package;
+ SAXContext *sctx = &ctx->sctx;
+
+ Package *p = sctx->current_package;
int i;
const char *attr;
const char *value;
@@ -221,16 +234,16 @@
else if (!strcmp (name, "rpm:provides")) {
ctx->state = PRIMARY_PARSER_DEP;
- ctx->current_dep_list = &ctx->current_package->provides;
+ ctx->current_dep_list = &sctx->current_package->provides;
} else if (!strcmp (name, "rpm:requires")) {
ctx->state = PRIMARY_PARSER_DEP;
- ctx->current_dep_list = &ctx->current_package->requires;
+ ctx->current_dep_list = &sctx->current_package->requires;
} else if (!strcmp (name, "rpm:obsoletes")) {
ctx->state = PRIMARY_PARSER_DEP;
- ctx->current_dep_list = &ctx->current_package->obsoletes;
+ ctx->current_dep_list = &sctx->current_package->obsoletes;
} else if (!strcmp (name, "rpm:conflicts")) {
ctx->state = PRIMARY_PARSER_DEP;
- ctx->current_dep_list = &ctx->current_package->conflicts;
+ ctx->current_dep_list = &sctx->current_package->conflicts;
}
else if (!strcmp (name, "file")) {
@@ -252,6 +265,8 @@
const char *name,
const char **attrs)
{
+ SAXContext *sctx = &ctx->sctx;
+
const char *tmp_name = NULL;
const char *tmp_version = NULL;
const char *tmp_release = NULL;
@@ -288,7 +303,7 @@
}
if (!ignore) {
- GStringChunk *chunk = ctx->current_package->chunk;
+ GStringChunk *chunk = sctx->current_package->chunk;
dep = dependency_new ();
dep->name = g_string_chunk_insert (chunk, tmp_name);
@@ -312,9 +327,10 @@
primary_sax_start_element (void *data, const char *name, const char **attrs)
{
PrimarySAXContext *ctx = (PrimarySAXContext *) data;
+ SAXContext *sctx = &ctx->sctx;
- if (ctx->text_buffer->len)
- g_string_truncate (ctx->text_buffer, 0);
+ if (sctx->text_buffer->len)
+ g_string_truncate (sctx->text_buffer, 0);
switch (ctx->state) {
case PRIMARY_PARSER_TOPLEVEL:
@@ -338,89 +354,93 @@
static void
primary_parser_package_end (PrimarySAXContext *ctx, const char *name)
{
- Package *p = ctx->current_package;
+ SAXContext *sctx = &ctx->sctx;
+
+ Package *p = sctx->current_package;
g_assert (p != NULL);
if (!strcmp (name, "package")) {
- if (ctx->package_fn && !*ctx->error)
- ctx->package_fn (p, ctx->user_data);
+ if (sctx->package_fn && !*sctx->error)
+ sctx->package_fn (p, sctx->user_data);
package_free (p);
- ctx->current_package = NULL;
+ sctx->current_package = NULL;
- ctx->want_text = FALSE;
+ sctx->want_text = FALSE;
ctx->state = PRIMARY_PARSER_TOPLEVEL;
}
- else if (ctx->text_buffer->len == 0)
+ else if (sctx->text_buffer->len == 0)
/* Nothing interesting to do here */
return;
else if (!strcmp (name, "name"))
p->name = g_string_chunk_insert_len (p->chunk,
- ctx->text_buffer->str,
- ctx->text_buffer->len);
+ sctx->text_buffer->str,
+ sctx->text_buffer->len);
else if (!strcmp (name, "arch"))
p->arch = g_string_chunk_insert_len (p->chunk,
- ctx->text_buffer->str,
- ctx->text_buffer->len);
+ sctx->text_buffer->str,
+ sctx->text_buffer->len);
else if (!strcmp (name, "checksum"))
p->pkgId = g_string_chunk_insert_len (p->chunk,
- ctx->text_buffer->str,
- ctx->text_buffer->len);
+ sctx->text_buffer->str,
+ sctx->text_buffer->len);
else if (!strcmp (name, "summary"))
p->summary = g_string_chunk_insert_len (p->chunk,
- ctx->text_buffer->str,
- ctx->text_buffer->len);
+ sctx->text_buffer->str,
+ sctx->text_buffer->len);
else if (!strcmp (name, "description"))
p->description = g_string_chunk_insert_len (p->chunk,
- ctx->text_buffer->str,
- ctx->text_buffer->len);
+ sctx->text_buffer->str,
+ sctx->text_buffer->len);
else if (!strcmp (name, "packager"))
p->rpm_packager = g_string_chunk_insert_len (p->chunk,
- ctx->text_buffer->str,
- ctx->text_buffer->len);
+ sctx->text_buffer->str,
+ sctx->text_buffer->len);
else if (!strcmp (name, "url"))
p->url = g_string_chunk_insert_len (p->chunk,
- ctx->text_buffer->str,
- ctx->text_buffer->len);
+ sctx->text_buffer->str,
+ sctx->text_buffer->len);
}
static void
primary_parser_format_end (PrimarySAXContext *ctx, const char *name)
{
- Package *p = ctx->current_package;
+ SAXContext *sctx = &ctx->sctx;
+
+ Package *p = sctx->current_package;
g_assert (p != NULL);
if (!strcmp (name, "rpm:license"))
p->rpm_license = g_string_chunk_insert_len (p->chunk,
- ctx->text_buffer->str,
- ctx->text_buffer->len);
+ sctx->text_buffer->str,
+ sctx->text_buffer->len);
if (!strcmp (name, "rpm:vendor"))
p->rpm_vendor = g_string_chunk_insert_len (p->chunk,
- ctx->text_buffer->str,
- ctx->text_buffer->len);
+ sctx->text_buffer->str,
+ sctx->text_buffer->len);
if (!strcmp (name, "rpm:group"))
p->rpm_group = g_string_chunk_insert_len (p->chunk,
- ctx->text_buffer->str,
- ctx->text_buffer->len);
+ sctx->text_buffer->str,
+ sctx->text_buffer->len);
if (!strcmp (name, "rpm:buildhost"))
p->rpm_buildhost = g_string_chunk_insert_len (p->chunk,
- ctx->text_buffer->str,
- ctx->text_buffer->len);
+ sctx->text_buffer->str,
+ sctx->text_buffer->len);
if (!strcmp (name, "rpm:sourcerpm"))
p->rpm_sourcerpm = g_string_chunk_insert_len (p->chunk,
- ctx->text_buffer->str,
- ctx->text_buffer->len);
+ sctx->text_buffer->str,
+ sctx->text_buffer->len);
else if (!strcmp (name, "file")) {
PackageFile *file = ctx->current_file != NULL ?
ctx->current_file : package_file_new ();
file->name = g_string_chunk_insert_len (p->chunk,
- ctx->text_buffer->str,
- ctx->text_buffer->len);
+ sctx->text_buffer->str,
+ sctx->text_buffer->len);
if (!file->type)
file->type = g_string_chunk_insert_const (p->chunk, "file");
@@ -434,7 +454,9 @@
static void
primary_parser_dep_end (PrimarySAXContext *ctx, const char *name)
{
- g_assert (ctx->current_package != NULL);
+ SAXContext *sctx = &ctx->sctx;
+
+ g_assert (sctx->current_package != NULL);
if (strcmp (name, "rpm:entry"))
ctx->state = PRIMARY_PARSER_FORMAT;
@@ -444,6 +466,7 @@
primary_sax_end_element (void *data, const char *name)
{
PrimarySAXContext *ctx = (PrimarySAXContext *) data;
+ SAXContext *sctx = &ctx->sctx;
switch (ctx->state) {
case PRIMARY_PARSER_PACKAGE:
@@ -459,20 +482,20 @@
break;
}
- g_string_truncate (ctx->text_buffer, 0);
+ g_string_truncate (sctx->text_buffer, 0);
}
static void
-primary_sax_characters (void *data, const char *ch, int len)
+sax_characters (void *data, const char *ch, int len)
{
- PrimarySAXContext *ctx = (PrimarySAXContext *) data;
+ SAXContext *sctx = (SAXContext *) data;
- if (ctx->want_text)
- g_string_append_len (ctx->text_buffer, ch, len);
+ if (sctx->want_text)
+ g_string_append_len (sctx->text_buffer, ch, len);
}
static void
-primary_sax_warning (void *data, const char *msg, ...)
+sax_warning (void *data, const char *msg, ...)
{
va_list args;
char *tmp;
@@ -487,17 +510,17 @@
}
static void
-primary_sax_error (void *data, const char *msg, ...)
+sax_error (void *data, const char *msg, ...)
{
- PrimarySAXContext *ctx = (PrimarySAXContext *) data;
+ SAXContext *sctx = (SAXContext *) data;
va_list args;
char *tmp;
va_start (args, msg);
tmp = g_strdup_vprintf (msg, args);
- g_set_error (ctx->error, YUM_PARSER_ERROR, YUM_PARSER_ERROR,
- "Parsing primary.xml error: %s", tmp);
+ g_set_error (sctx->error, YUM_PARSER_ERROR, YUM_PARSER_ERROR,
+ "Parsing %s error: %s", sctx->md_type, tmp);
g_free (tmp);
va_end (args);
@@ -521,16 +544,34 @@
(startElementSAXFunc) primary_sax_start_element, /* startElement */
(endElementSAXFunc) primary_sax_end_element, /* endElement */
NULL, /* reference */
- (charactersSAXFunc) primary_sax_characters, /* characters */
+ (charactersSAXFunc) sax_characters, /* characters */
NULL, /* ignorableWhitespace */
NULL, /* processingInstruction */
NULL, /* comment */
- primary_sax_warning, /* warning */
- primary_sax_error, /* error */
- primary_sax_error, /* fatalError */
+ sax_warning, /* warning */
+ sax_error, /* error */
+ sax_error, /* fatalError */
};
void
+sax_context_init (SAXContext *sctx,
+ const char *md_type,
+ CountFn count_callback,
+ PackageFn package_callback,
+ gpointer user_data,
+ GError **err)
+{
+ sctx->md_type = md_type;
+ sctx->error = err;
+ sctx->count_fn = count_callback;
+ sctx->package_fn = package_callback;
+ sctx->user_data = user_data;
+ sctx->current_package = NULL;
+ sctx->want_text = FALSE;
+ sctx->text_buffer = g_string_sized_new (PACKAGE_FIELD_SIZE);
+}
+
+void
yum_xml_parse_primary (const char *filename,
CountFn count_callback,
PackageFn package_callback,
@@ -538,28 +579,25 @@
GError **err)
{
PrimarySAXContext ctx;
+ SAXContext *sctx = &ctx.sctx;
int rc;
ctx.state = PRIMARY_PARSER_TOPLEVEL;
- ctx.error = err;
- ctx.count_fn = count_callback;
- ctx.package_fn = package_callback;
- ctx.user_data = user_data;
- ctx.current_package = NULL;
ctx.current_dep_list = NULL;
ctx.current_file = NULL;
- ctx.want_text = FALSE;
- ctx.text_buffer = g_string_sized_new (PACKAGE_FIELD_SIZE);
+
+ sax_context_init(sctx, "primary.xml", count_callback, package_callback,
+ user_data, err);
xmlSubstituteEntitiesDefault (1);
rc = xmlSAXUserParseFile (&primary_sax_handler, &ctx, filename);
- if (ctx.current_package) {
+ if (sctx->current_package) {
g_warning ("Incomplete package lost");
- package_free (ctx.current_package);
+ package_free (sctx->current_package);
}
- g_string_free (ctx.text_buffer, TRUE);
+ g_string_free (sctx->text_buffer, TRUE);
}
/*****************************************************************************/
@@ -591,18 +629,11 @@
} FilelistSAXContextState;
typedef struct {
- xmlParserCtxt *xml_context;
+ SAXContext sctx;
+
FilelistSAXContextState state;
- GError **error;
- CountFn count_fn;
- PackageFn package_fn;
- gpointer user_data;
- Package *current_package;
PackageFile *current_file;
-
- gboolean want_text;
- GString *text_buffer;
} FilelistSAXContext;
static void
@@ -610,16 +641,18 @@
const char *name,
const char **attrs)
{
+ SAXContext *sctx = &ctx->sctx;
+
if (!strcmp (name, "package")) {
- g_assert (ctx->current_package == NULL);
+ g_assert (sctx->current_package == NULL);
ctx->state = FILELIST_PARSER_PACKAGE;
- ctx->current_package = package_new ();
- parse_package (attrs, ctx->current_package);
+ sctx->current_package = package_new ();
+ parse_package (attrs, sctx->current_package);
}
- else if (ctx->count_fn && !strcmp (name, "filelists")) {
+ else if (sctx->count_fn && !strcmp (name, "filelists")) {
int i;
const char *attr;
const char *value;
@@ -629,8 +662,8 @@
value = attrs[++i];
if (!strcmp (attr, "packages")) {
- ctx->count_fn (string_to_guint32_with_default (value, 0),
- ctx->user_data);
+ sctx->count_fn (string_to_guint32_with_default (value, 0),
+ sctx->user_data);
break;
}
}
@@ -642,14 +675,16 @@
const char *name,
const char **attrs)
{
- Package *p = ctx->current_package;
+ SAXContext *sctx = &ctx->sctx;
+
+ Package *p = sctx->current_package;
int i;
const char *attr;
const char *value;
g_assert (p != NULL);
- ctx->want_text = TRUE;
+ sctx->want_text = TRUE;
if (!strcmp (name, "version")) {
parse_version_info(attrs, p);
@@ -673,9 +708,10 @@
filelist_sax_start_element (void *data, const char *name, const char **attrs)
{
FilelistSAXContext *ctx = (FilelistSAXContext *) data;
+ SAXContext *sctx = &ctx->sctx;
- if (ctx->text_buffer->len)
- g_string_truncate (ctx->text_buffer, 0);
+ if (sctx->text_buffer->len)
+ g_string_truncate (sctx->text_buffer, 0);
switch (ctx->state) {
case FILELIST_PARSER_TOPLEVEL:
@@ -692,18 +728,20 @@
static void
filelist_parser_package_end (FilelistSAXContext *ctx, const char *name)
{
- Package *p = ctx->current_package;
+ SAXContext *sctx = &ctx->sctx;
+
+ Package *p = sctx->current_package;
g_assert (p != NULL);
- ctx->want_text = FALSE;
+ sctx->want_text = FALSE;
if (!strcmp (name, "package")) {
- if (ctx->package_fn && !*ctx->error)
- ctx->package_fn (p, ctx->user_data);
+ if (sctx->package_fn && !*sctx->error)
+ sctx->package_fn (p, sctx->user_data);
package_free (p);
- ctx->current_package = NULL;
+ sctx->current_package = NULL;
if (ctx->current_file) {
g_free (ctx->current_file);
@@ -716,8 +754,8 @@
else if (!strcmp (name, "file")) {
PackageFile *file = ctx->current_file;
file->name = g_string_chunk_insert_len (p->chunk,
- ctx->text_buffer->str,
- ctx->text_buffer->len);
+ sctx->text_buffer->str,
+ sctx->text_buffer->len);
if (!file->type)
file->type = g_string_chunk_insert_const (p->chunk, "file");
@@ -730,6 +768,7 @@
filelist_sax_end_element (void *data, const char *name)
{
FilelistSAXContext *ctx = (FilelistSAXContext *) data;
+ SAXContext *sctx = &ctx->sctx;
switch (ctx->state) {
case FILELIST_PARSER_PACKAGE:
@@ -739,48 +778,7 @@
break;
}
- g_string_truncate (ctx->text_buffer, 0);
-}
-
-static void
-filelist_sax_characters (void *data, const char *ch, int len)
-{
- FilelistSAXContext *ctx = (FilelistSAXContext *) data;
-
- if (ctx->want_text)
- g_string_append_len (ctx->text_buffer, ch, len);
-}
-
-static void
-filelist_sax_warning (void *data, const char *msg, ...)
-{
- va_list args;
- char *tmp;
-
- va_start (args, msg);
-
- tmp = g_strdup_vprintf (msg, args);
- g_warning ("* SAX Warning: %s", tmp);
- g_free (tmp);
-
- va_end (args);
-}
-
-static void
-filelist_sax_error (void *data, const char *msg, ...)
-{
- PrimarySAXContext *ctx = (PrimarySAXContext *) data;
- va_list args;
- char *tmp;
-
- va_start (args, msg);
-
- tmp = g_strdup_vprintf (msg, args);
- g_set_error (ctx->error, YUM_PARSER_ERROR, YUM_PARSER_ERROR,
- "Parsing filelists.xml error: %s", tmp);
- g_free (tmp);
-
- va_end (args);
+ g_string_truncate (sctx->text_buffer, 0);
}
static xmlSAXHandler filelist_sax_handler = {
@@ -801,13 +799,13 @@
(startElementSAXFunc) filelist_sax_start_element, /* startElement */
(endElementSAXFunc) filelist_sax_end_element, /* endElement */
NULL, /* reference */
- (charactersSAXFunc) filelist_sax_characters, /* characters */
+ (charactersSAXFunc) sax_characters, /* characters */
NULL, /* ignorableWhitespace */
NULL, /* processingInstruction */
NULL, /* comment */
- filelist_sax_warning, /* warning */
- filelist_sax_error, /* error */
- filelist_sax_error, /* fatalError */
+ sax_warning, /* warning */
+ sax_error, /* error */
+ sax_error, /* fatalError */
};
void
@@ -818,30 +816,28 @@
GError **err)
{
FilelistSAXContext ctx;
+ SAXContext *sctx = &ctx.sctx;
+
int rc;
ctx.state = FILELIST_PARSER_TOPLEVEL;
- ctx.error = err;
- ctx.count_fn = count_callback;
- ctx.package_fn = package_callback;
- ctx.user_data = user_data;
- ctx.current_package = NULL;
ctx.current_file = NULL;
- ctx.want_text = FALSE;
- ctx.text_buffer = g_string_sized_new (PACKAGE_FIELD_SIZE);
+
+ sax_context_init(sctx, "filelists.xml", count_callback, package_callback,
+ user_data, err);
xmlSubstituteEntitiesDefault (1);
rc = xmlSAXUserParseFile (&filelist_sax_handler, &ctx, filename);
- if (ctx.current_package) {
+ if (sctx->current_package) {
g_warning ("Incomplete package lost");
- package_free (ctx.current_package);
+ package_free (sctx->current_package);
}
if (ctx.current_file)
g_free (ctx.current_file);
- g_string_free (ctx.text_buffer, TRUE);
+ g_string_free (sctx->text_buffer, TRUE);
}
/*****************************************************************************/
@@ -852,18 +848,11 @@
} OtherSAXContextState;
typedef struct {
- xmlParserCtxt *xml_context;
+ SAXContext sctx;
+
OtherSAXContextState state;
- GError **error;
- CountFn count_fn;
- PackageFn package_fn;
- gpointer user_data;
- Package *current_package;
ChangelogEntry *current_entry;
-
- gboolean want_text;
- GString *text_buffer;
} OtherSAXContext;
static void
@@ -871,16 +860,18 @@
const char *name,
const char **attrs)
{
+ SAXContext *sctx = &ctx->sctx;
+
if (!strcmp (name, "package")) {
- g_assert (ctx->current_package == NULL);
+ g_assert (sctx->current_package == NULL);
ctx->state = OTHER_PARSER_PACKAGE;
- ctx->current_package = package_new ();
- parse_package (attrs, ctx->current_package);
+ sctx->current_package = package_new ();
+ parse_package (attrs, sctx->current_package);
}
- else if (ctx->count_fn && !strcmp (name, "otherdata")) {
+ else if (sctx->count_fn && !strcmp (name, "otherdata")) {
int i;
const char *attr;
const char *value;
@@ -890,8 +881,8 @@
value = attrs[++i];
if (!strcmp (attr, "packages")) {
- ctx->count_fn (string_to_guint32_with_default (value, 0),
- ctx->user_data);
+ sctx->count_fn (string_to_guint32_with_default (value, 0),
+ sctx->user_data);
break;
}
}
@@ -903,14 +894,16 @@
const char *name,
const char **attrs)
{
- Package *p = ctx->current_package;
+ SAXContext *sctx = &ctx->sctx;
+
+ Package *p = sctx->current_package;
int i;
const char *attr;
const char *value;
g_assert (p != NULL);
- ctx->want_text = TRUE;
+ sctx->want_text = TRUE;
if (!strcmp (name, "version")) {
parse_version_info(attrs, p);
@@ -936,9 +929,10 @@
other_sax_start_element (void *data, const char *name, const char **attrs)
{
OtherSAXContext *ctx = (OtherSAXContext *) data;
+ SAXContext *sctx = &ctx->sctx;
- if (ctx->text_buffer->len)
- g_string_truncate (ctx->text_buffer, 0);
+ if (sctx->text_buffer->len)
+ g_string_truncate (sctx->text_buffer, 0);
switch (ctx->state) {
case OTHER_PARSER_TOPLEVEL:
@@ -955,22 +949,24 @@
static void
other_parser_package_end (OtherSAXContext *ctx, const char *name)
{
- Package *p = ctx->current_package;
+ SAXContext *sctx = &ctx->sctx;
+
+ Package *p = sctx->current_package;
g_assert (p != NULL);
- ctx->want_text = FALSE;
+ sctx->want_text = FALSE;
if (!strcmp (name, "package")) {
if (p->changelogs)
p->changelogs = g_slist_reverse (p->changelogs);
- if (ctx->package_fn && !*ctx->error)
- ctx->package_fn (p, ctx->user_data);
+ if (sctx->package_fn && !*sctx->error)
+ sctx->package_fn (p, sctx->user_data);
package_free (p);
- ctx->current_package = NULL;
+ sctx->current_package = NULL;
if (ctx->current_entry) {
g_free (ctx->current_entry);
@@ -983,8 +979,8 @@
else if (!strcmp (name, "changelog")) {
ctx->current_entry->changelog =
g_string_chunk_insert_len (p->chunk,
- ctx->text_buffer->str,
- ctx->text_buffer->len);
+ sctx->text_buffer->str,
+ sctx->text_buffer->len);
p->changelogs = g_slist_prepend (p->changelogs, ctx->current_entry);
ctx->current_entry = NULL;
@@ -995,6 +991,7 @@
other_sax_end_element (void *data, const char *name)
{
OtherSAXContext *ctx = (OtherSAXContext *) data;
+ SAXContext *sctx = &ctx->sctx;
switch (ctx->state) {
case OTHER_PARSER_PACKAGE:
@@ -1004,48 +1001,7 @@
break;
}
- g_string_truncate (ctx->text_buffer, 0);
-}
-
-static void
-other_sax_characters (void *data, const char *ch, int len)
-{
- OtherSAXContext *ctx = (OtherSAXContext *) data;
-
- if (ctx->want_text)
- g_string_append_len (ctx->text_buffer, ch, len);
-}
-
-static void
-other_sax_warning (void *data, const char *msg, ...)
-{
- va_list args;
- char *tmp;
-
- va_start (args, msg);
-
- tmp = g_strdup_vprintf (msg, args);
- g_warning ("* SAX Warning: %s", tmp);
- g_free (tmp);
-
- va_end (args);
-}
-
-static void
-other_sax_error (void *data, const char *msg, ...)
-{
- PrimarySAXContext *ctx = (PrimarySAXContext *) data;
- va_list args;
- char *tmp;
-
- va_start (args, msg);
-
- tmp = g_strdup_vprintf (msg, args);
- g_set_error (ctx->error, YUM_PARSER_ERROR, YUM_PARSER_ERROR,
- "Parsing other.xml error: %s", tmp);
- g_free (tmp);
-
- va_end (args);
+ g_string_truncate (sctx->text_buffer, 0);
}
static xmlSAXHandler other_sax_handler = {
@@ -1066,13 +1022,13 @@
(startElementSAXFunc) other_sax_start_element, /* startElement */
(endElementSAXFunc) other_sax_end_element, /* endElement */
NULL, /* reference */
- (charactersSAXFunc) other_sax_characters, /* characters */
+ (charactersSAXFunc) sax_characters, /* characters */
NULL, /* ignorableWhitespace */
NULL, /* processingInstruction */
NULL, /* comment */
- other_sax_warning, /* warning */
- other_sax_error, /* error */
- other_sax_error, /* fatalError */
+ sax_warning, /* warning */
+ sax_error, /* error */
+ sax_error, /* fatalError */
};
void
@@ -1083,28 +1039,26 @@
GError **err)
{
OtherSAXContext ctx;
+ SAXContext *sctx = &ctx.sctx;
+
int rc;
ctx.state = OTHER_PARSER_TOPLEVEL;
- ctx.error = err;
- ctx.count_fn = count_callback;
- ctx.package_fn = package_callback;
- ctx.user_data = user_data;
- ctx.current_package = NULL;
ctx.current_entry = NULL;
- ctx.want_text = FALSE;
- ctx.text_buffer = g_string_sized_new (PACKAGE_FIELD_SIZE);
+
+ sax_context_init(sctx, "other.xml", count_callback, package_callback,
+ user_data, err);
xmlSubstituteEntitiesDefault (1);
rc = xmlSAXUserParseFile (&other_sax_handler, &ctx, filename);
- if (ctx.current_package) {
+ if (sctx->current_package) {
g_warning ("Incomplete package lost");
- package_free (ctx.current_package);
+ package_free (sctx->current_package);
}
if (ctx.current_entry)
g_free (ctx.current_entry);
- g_string_free (ctx.text_buffer, TRUE);
+ g_string_free (sctx->text_buffer, TRUE);
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yum-metadata-parser-1.1.1/yum-metadata-parser.spec new/yum-metadata-parser-1.1.2/yum-metadata-parser.spec
--- old/yum-metadata-parser-1.1.1/yum-metadata-parser.spec 2007-05-16 10:16:51.000000000 +0200
+++ new/yum-metadata-parser-1.1.2/yum-metadata-parser.spec 2007-08-24 15:42:07.000000000 +0200
@@ -2,7 +2,7 @@
Summary: A fast metadata parser for yum
Name: yum-metadata-parser
-Version: 1.1.1
+Version: 1.1.2
Release: 1%{?dist}
Source0: %{name}-%{version}.tar.gz
License: GPL
@@ -40,6 +40,9 @@
%{python_sitelib_platform}/sqlitecachec.pyo
%changelog
+* Fri Aug 24 2007 Seth Vidal <skvidal at fedoraproject.org>
+- 1.1.2
+
* Wed May 16 2007 Paul Nasrat <pnasrat at redhat.com>
- Expose DBVERSION
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org