From: Michael Tremer Date: Fri, 18 Oct 2024 15:31:36 +0000 (+0000) Subject: pakfire: Catch errors when loading distro information X-Git-Tag: 0.9.30~1007 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=05433bcbe81a2d3ce41361a0e519b2c22875e0bf;p=pakfire.git pakfire: Catch errors when loading distro information Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/pakfire.c b/src/libpakfire/pakfire.c index 4ca2e01c1..8f2c203fa 100644 --- a/src/libpakfire/pakfire.c +++ b/src/libpakfire/pakfire.c @@ -587,50 +587,95 @@ const char* pakfire_get_distro_tag(struct pakfire* pakfire) { } static int pakfire_config_import_distro(struct pakfire* pakfire) { + int r; + // Nothing to do if there is no distro section if (!pakfire_config_has_section(pakfire->config, "distro")) return 0; // Name const char* name = pakfire_config_get(pakfire->config, "distro", "name", NULL); - if (name) - pakfire_string_set(pakfire->distro.name, name); + if (name) { + r = pakfire_string_set(pakfire->distro.name, name); + if (r < 0) { + CTX_ERROR(pakfire->ctx, "Could not set distro name: %s\n", strerror(-r)); + return r; + } + } // ID const char* id = pakfire_config_get(pakfire->config, "distro", "id", NULL); - if (id) - pakfire_string_set(pakfire->distro.id, id); + if (id) { + r = pakfire_string_set(pakfire->distro.id, id); + if (r < 0) { + CTX_ERROR(pakfire->ctx, "Could not set distro ID: %s\n", strerror(-r)); + return r; + } + } // Version ID const char* version_id = pakfire_config_get(pakfire->config, "distro", "version_id", NULL); - if (version_id) - pakfire_string_set(pakfire->distro.version_id, version_id); + if (version_id) { + r = pakfire_string_set(pakfire->distro.version_id, version_id); + if (r < 0) { + CTX_ERROR(pakfire->ctx, "Could not set distro version ID: %s\n", strerror(-r)); + return r; + } + } // Codename const char* codename = pakfire_config_get(pakfire->config, "distro", "codename", NULL); - if (codename) - pakfire_string_set(pakfire->distro.version_codename, codename); + if (codename) { + r = pakfire_string_set(pakfire->distro.version_codename, codename); + if (r < 0) { + CTX_ERROR(pakfire->ctx, "Could not set distro codename: %s\n", strerror(-r)); + return r; + } + } // Fill in version - if (*pakfire->distro.version_codename) - pakfire_string_format(pakfire->distro.version, "%s (%s)", - pakfire->distro.version_id, pakfire->distro.version_codename); - else - pakfire_string_set(pakfire->distro.version, pakfire->distro.version_id); + if (*pakfire->distro.version_codename) { + r = pakfire_string_format(pakfire->distro.version, "%s (%s)", + pakfire->distro.version_id, pakfire->distro.version_codename); + if (r < 0) { + CTX_ERROR(pakfire->ctx, "Could not set distro version: %s\n", strerror(-r)); + return r; + } + } else { + r = pakfire_string_set(pakfire->distro.version, pakfire->distro.version_id); + if (r < 0) { + CTX_ERROR(pakfire->ctx, "Could not set distro version: %s\n", strerror(-r)); + return r; + } + } // Fill in pretty name - pakfire_string_format(pakfire->distro.pretty_name, "%s %s", - pakfire->distro.name, pakfire->distro.version); + r = pakfire_string_format(pakfire->distro.pretty_name, "%s %s", + pakfire->distro.name, pakfire->distro.version); + if (r < 0) { + CTX_ERROR(pakfire->ctx, "Could not set distro pretty name: %s\n", strerror(-r)); + return r; + } // Vendor const char* vendor = pakfire_config_get(pakfire->config, "distro", "vendor", NULL); - if (vendor) - pakfire_string_set(pakfire->distro.vendor, vendor); + if (vendor) { + r = pakfire_string_set(pakfire->distro.vendor, vendor); + if (r < 0) { + CTX_ERROR(pakfire->ctx, "Could not set distro vendor: %s\n", strerror(-r)); + return r; + } + } // Slogan const char* slogan = pakfire_config_get(pakfire->config, "distro", "slogan", NULL); - if (slogan) - pakfire_string_set(pakfire->distro.slogan, slogan); + if (slogan) { + r = pakfire_string_set(pakfire->distro.slogan, slogan); + if (r < 0) { + CTX_ERROR(pakfire->ctx, "Could not set distro slogan: %s\n", strerror(-r)); + return r; + } + } return 0; }