}
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;
}
}