From: Michael Tremer Date: Fri, 3 Jan 2025 07:53:53 +0000 (+0000) Subject: packages: Accept format arguments when adding a new dependency X-Git-Tag: 0.9.30~575 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d47f8f48b9ae9a19baa552023ad11ffd2045c1b0;p=pakfire.git packages: Accept format arguments when adding a new dependency Signed-off-by: Michael Tremer --- diff --git a/src/pakfire/archive.c b/src/pakfire/archive.c index 33a0fbc2b..cebd995dd 100644 --- a/src/pakfire/archive.c +++ b/src/pakfire/archive.c @@ -1721,7 +1721,7 @@ static int pakfire_archive_make_package_from_json(struct pakfire_archive* archiv continue; // Add the dependency to the package - r = pakfire_package_add_dep(pkg, dep->key, string); + r = pakfire_package_add_dep(pkg, dep->key, "%s", string); if (r) goto ERROR; } diff --git a/src/pakfire/build.c b/src/pakfire/build.c index 76cc08fcd..42026887e 100644 --- a/src/pakfire/build.c +++ b/src/pakfire/build.c @@ -472,7 +472,7 @@ static int pakfire_build_process_deps(struct pakfire_ctx* ctx, void* data, } // Add dependency - r = pakfire_package_add_dep(p->pkg, p->dep, dep); + r = pakfire_package_add_dep(p->pkg, p->dep, "%s", dep); if (r < 0) { ERROR(ctx, "Could not process dependency '%s': %s\n", dep, strerror(-r)); goto ERROR; diff --git a/src/pakfire/deps.c b/src/pakfire/deps.c index a682333f8..b001eb73e 100644 --- a/src/pakfire/deps.c +++ b/src/pakfire/deps.c @@ -371,7 +371,7 @@ int pakfire_str2deps(struct pakfire* pakfire, struct pakfire_package* pkg, // Walk through the buffer line by line while (dep) { // Add the dependency - r = pakfire_package_add_dep(pkg, key, dep); + r = pakfire_package_add_dep(pkg, key, "%s", dep); if (r) goto ERROR; diff --git a/src/pakfire/package.c b/src/pakfire/package.c index 4d5916a92..b0958a558 100644 --- a/src/pakfire/package.c +++ b/src/pakfire/package.c @@ -1370,16 +1370,27 @@ SUCCESS: } int pakfire_package_add_dep(struct pakfire_package* pkg, - const enum pakfire_package_key key, const char* dep) { + const enum pakfire_package_key key, const char* format, ...) { + char buffer[PATH_MAX]; + va_list args; + int r; + + // Format the dependency + va_start(args, format); + r = pakfire_string_vformat(buffer, format, args); + va_end(args); + if (r < 0) + return r; + // Ignore comments - if (pakfire_string_startswith(dep, "#")) + if (pakfire_string_startswith(buffer, "#")) return 0; // Parse the dependency - Id id = pakfire_str2dep(pkg->pakfire, dep); + Id id = pakfire_str2dep(pkg->pakfire, buffer); if (!id) { ERROR(pkg->ctx, "Could not add dependency '%s' to %s\n", - dep, pakfire_package_get_string(pkg, PAKFIRE_PKG_NEVRA)); + buffer, pakfire_package_get_string(pkg, PAKFIRE_PKG_NEVRA)); return -EINVAL; } diff --git a/src/pakfire/package.h b/src/pakfire/package.h index 3558d7dce..d1f8519c3 100644 --- a/src/pakfire/package.h +++ b/src/pakfire/package.h @@ -174,7 +174,8 @@ int pakfire_package_append_file(struct pakfire_package* pkg, const char* path); // Dependencies int pakfire_package_add_dep(struct pakfire_package* pkg, - const enum pakfire_package_key key, const char* dep); + const enum pakfire_package_key key, const char* format, ...) + __attribute__((format(printf, 3, 4))); int pakfire_package_has_rich_deps(struct pakfire_package* pkg); int pakfire_package_matches_dep(struct pakfire_package* pkg,