static struct pakfire_package* pakfire_archive_get_package(struct pakfire_archive* archive) {
if (!archive->package) {
- struct pakfire_repo* repo = pakfire_get_repo(archive->pakfire, "@dummy");
- if (!repo)
- return NULL;
-
- int r = pakfire_archive_make_package(archive, repo, &archive->package);
- pakfire_repo_unref(repo);
-
+ int r = pakfire_archive_make_package(archive, NULL, &archive->package);
if (!r)
return NULL;
}
*/
PAKFIRE_EXPORT int pakfire_archive_make_package(struct pakfire_archive* archive,
struct pakfire_repo* repo, struct pakfire_package** package) {
+ struct pakfire_repo* dummy = NULL;
+
+ // Use dummy repo if no repository was passed
+ if (!repo) {
+ dummy = pakfire_get_repo(archive->pakfire, "@dummy");
+ if (!dummy)
+ return 1;
+
+ repo = dummy;
+ }
+
char* name = pakfire_archive_get(archive, "package", "name");
char* arch = pakfire_archive_get(archive, "package", "arch");
*package = pkg;
+ // Cleanup
+ if (dummy)
+ pakfire_repo_unref(dummy);
+
return 0;
}