int main() {
struct XmlStruct res;
+
+ init_package_parser();
+
+ int x;
+ for (x=0; x<1000; x++) {
+ res = xml_from_package_file("icedax-1.1.10-2.fc14.i686.rpm", PKG_CHECKSUM_SHA256, "", "", 4);
+ free(res.primary);
+ free(res.filelists);
+ free(res.other);
+ }
+
res = xml_from_package_file("icedax-1.1.10-2.fc14.i686.rpm", PKG_CHECKSUM_SHA256, "", "", 4);
+ free_package_parser();
+
printf("Test - Start\n");
printf("%s\n\n%s\n\n%s\n", res.primary, res.filelists, res.other);
printf("Test - Done\n");
#include "misc.h"
#include "parsehdr.h"
+short initialized = 0;
+rpmts ts = NULL;
+
+void init_package_parser()
+{
+ initialized = 1;
+ rpmReadConfigFiles(NULL, NULL);
+ ts = rpmtsCreate();
+}
+
+
+
+void free_package_parser()
+{
+ if (ts) {
+ rpmtsFree(ts);
+ }
+
+ rpmFreeMacros(NULL);
+ rpmFreeRpmrc();
+}
+
+
struct XmlStruct xml_from_package_file(const char *filename, ChecksumType checksum_type,
const char *location_href, const char *location_base, int changelog_limit)
result.filelists = NULL;
result.other = NULL;
- // Get header
-
- // Create transaction
- rpmts ts = NULL;
- rpmReadConfigFiles(NULL, NULL);
- ts = rpmtsCreate();
-
// Open rpm file
FD_t fd = NULL;
fd = Fopen(filename, "r.ufdio");
}
// Cleanup
- rpmtsFree(ts);
Fclose(fd);
// Get file stat
free(checksum);
headerFree(hdr);
- rpmFreeMacros(NULL);
- rpmFreeRpmrc();
-
return result;
}
const char *location_href, const char *location_base,
int changelog_limit, gint64 hdr_start, gint64 hdr_end);
*/
+
+extern short initialized;
+void init_package_parser();
+void free_package_parser();
+
struct XmlStruct xml_from_package_file(const char *filename, ChecksumType checksum_type,
const char *location_href, const char *location_base,
int changelog_limit);