]> git.ipfire.org Git - pakfire.git/commitdiff
repo: Show better errors when failing to read SOLV files
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 19 Mar 2021 15:15:23 +0000 (15:15 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 19 Mar 2021 15:15:23 +0000 (15:15 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/repo.c

index af235c4b0bbef994d9e9834bfaf7aade495545b3..7fbc47ec68141652ebbee3ed40a87e026d298bc2 100644 (file)
@@ -187,8 +187,11 @@ static int pakfire_repo_read_metadata(PakfireRepo repo, const char* path, int re
 
                // Read database
                r = pakfire_repo_read_solv(repo, database_cache_path, 0);
-               if (r)
+               if (r) {
+                       ERROR(repo->pakfire, "Could not read SOLV file %s: %s\n",
+                               database_cache_path, strerror(errno));
                        goto ERROR;
+               }
        }
 
        // Success
@@ -672,9 +675,10 @@ PAKFIRE_EXPORT int pakfire_repo_read_solv(PakfireRepo repo, const char* filename
 
 PAKFIRE_EXPORT int pakfire_repo_read_solv_fp(PakfireRepo repo, FILE *f, int flags) {
        f = pakfire_xfopen(f, "r");
+       if (!f)
+               return 1;
 
        int ret = repo_add_solv(repo->repo, f, flags);
-
        switch (ret) {
                // Everything OK
                case 0:
@@ -682,27 +686,28 @@ PAKFIRE_EXPORT int pakfire_repo_read_solv_fp(PakfireRepo repo, FILE *f, int flag
 
                // Not SOLV format
                case 1:
-                       return PAKFIRE_E_SOLV_NOT_SOLV;
-
                // Unsupported version
                case 2:
-                       return PAKFIRE_E_SOLV_UNSUPPORTED;
+                       errno = ENOTSUP;
+                       return 1;
 
                // End of file
                case 3:
-                       return PAKFIRE_E_EOF;
+                       errno = EIO;
+                       return 1;
 
                // Corrupted
                case 4:
                case 5:
                case 6:
                default:
-                       return PAKFIRE_E_SOLV_CORRUPTED;
+                       errno = EBADMSG;
+                       return 1;
        }
 
        pakfire_pool_has_changed(repo->pakfire);
 
-       return ret;
+       return 0;
 }
 
 PAKFIRE_EXPORT int pakfire_repo_write_solv(PakfireRepo repo, const char* filename, int flags) {