]> git.ipfire.org Git - pakfire.git/commitdiff
repo: Try reading metadata on creation
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 13 Mar 2021 11:34:52 +0000 (11:34 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 13 Mar 2021 11:34:52 +0000 (11:34 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/repo.c

index de2c0de80fffaafc8e10c36d437a2a2fe3431af8..f629109fc017ebe58728cb27a0800a93216c62d6 100644 (file)
@@ -56,6 +56,8 @@ struct pakfire_repo_appdata {
        char* baseurl;
        char* keyfile;
 
+       char* metadata;
+
        // Database filename
        char database[NAME_MAX];
 
@@ -193,9 +195,29 @@ PAKFIRE_EXPORT PakfireRepo pakfire_repo_create(Pakfire pakfire, const char* name
                goto ERROR;
        }
 
+       // Skip remaining initialization for "virtual" repositories
+       if (*name == '@')
+               return repo;
+
+       // Make path for metadata
+       repo->appdata->metadata = pakfire_make_cache_path(
+               repo->pakfire, "repodata/%s/repomd.json", pakfire_repo_get_name(repo));
+       if (!repo->appdata->metadata)
+               goto ERROR;
+
        // Make path to mirrorlist
        repo->appdata->mirrorlist = pakfire_make_cache_path(
                repo->pakfire, "repodata/%s/mirrorlist", pakfire_repo_get_name(repo));
+       if (!repo->appdata->mirrorlist)
+               goto ERROR;
+
+       // Try loading metadata
+       int r = pakfire_repo_read_metadata(repo, repo->appdata->metadata);
+       if (r) {
+               ERROR(repo->pakfire, "Could not initialize repository metadata: %s\n",
+                       strerror(errno));
+               goto ERROR;
+       }
 
        return repo;