]> git.ipfire.org Git - people/ric9/pakfire.git/commitdiff
packager: Refactor composing the filename
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 11 Jan 2025 14:41:19 +0000 (14:41 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 11 Jan 2025 14:41:19 +0000 (14:41 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/pakfire/packager.c

index 3546fb3ae6956389703bbab8cadf1abb1be6b25e..98c807058fe09b95409ba4636577b0a9f19bbf80 100644 (file)
@@ -220,16 +220,30 @@ struct pakfire_packager* pakfire_packager_unref(
 }
 
 const char* pakfire_packager_filename(struct pakfire_packager* packager) {
-       if (!*packager->filename) {
-               const char* filename = pakfire_package_get_string(packager->pkg, PAKFIRE_PKG_FILENAME);
-
-               // Add arch
-               if (pakfire_package_is_source(packager->pkg))
-                       pakfire_string_set(packager->filename, filename);
-               else {
-                       const char* arch = pakfire_package_get_string(packager->pkg, PAKFIRE_PKG_ARCH);
+       const char* filename = NULL;
+       const char* arch = NULL;
+       int r;
 
-                       pakfire_string_format(packager->filename, "%s/%s", arch, filename);
+       if (!*packager->filename) {
+               filename = pakfire_package_get_string(packager->pkg, PAKFIRE_PKG_FILENAME);
+               if (!filename)
+                       return NULL;
+
+               // Store the string for source packages
+               if (pakfire_package_is_source(packager->pkg)) {
+                       r = pakfire_string_set(packager->filename, filename);
+                       if (r < 0)
+                               return NULL;
+
+               // For binary packages, we prepend the architecture
+               } else {
+                       arch = pakfire_package_get_string(packager->pkg, PAKFIRE_PKG_ARCH);
+                       if (!arch)
+                               return NULL;
+
+                       r = pakfire_string_format(packager->filename, "%s/%s", arch, filename);
+                       if (r < 0)
+                               return NULL;
                }
        }