From: Michael Tremer Date: Thu, 18 Aug 2022 19:05:55 +0000 (+0000) Subject: arch: Use the new/old string functions exclusively X-Git-Tag: 0.9.28~446 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=603694adaad955cc5c96cf629b530d103acedcf0;p=pakfire.git arch: Use the new/old string functions exclusively Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/arch.c b/src/libpakfire/arch.c index 55978a584..a11bdd8a2 100644 --- a/src/libpakfire/arch.c +++ b/src/libpakfire/arch.c @@ -150,43 +150,33 @@ unsigned long pakfire_arch_personality(const char* name) { } int __pakfire_arch_machine(char* buffer, size_t length, const char* arch, const char* vendor) { - int r = __pakfire_arch_buildtarget(buffer, length, arch, vendor); - if (r < 0) - return r; - - size_t bytes_written = strlen(buffer); + char buildtarget[1024]; - // Fail if there is no space left - if (bytes_written >= length) - return -1; - - // Append -gnu - r = snprintf(buffer + bytes_written, length - bytes_written, "-gnu"); - if (r < 0) + // Fetch buildtarget + int r = __pakfire_arch_buildtarget(buildtarget, sizeof(buildtarget), arch, vendor); + if (r) return r; - return 0; + // Append -gnu + return __pakfire_string_format(buffer, length, "%s-gnu", buildtarget); } int __pakfire_arch_buildtarget(char* buffer, size_t length, const char* arch, const char* vendor) { if (!vendor) vendor = "unknown"; - // Create a working copy on the stack and sanitize it - char* suffix = strdupa(vendor); - if (!suffix) { - errno = ENOMEM; - return 1; - } + // Determine the length of the vendor string + int vendor_length = strlen(vendor); // Cut off suffix if it contains spaces - char* space = strchr(suffix, ' '); + char* space = strchr(vendor, ' '); if (space) - *space = '\0'; + vendor_length = space - vendor; // Format string - int r = snprintf(buffer, length, "%s-%s-linux", arch, suffix); - if (r < 0) + int r = __pakfire_string_format(buffer, length, "%s-%.*s-linux", + arch, vendor_length, vendor); + if (r) return r; // Make everything lowercase diff --git a/src/libpakfire/include/pakfire/arch.h b/src/libpakfire/include/pakfire/arch.h index 22dda9a04..c1ffa130f 100644 --- a/src/libpakfire/include/pakfire/arch.h +++ b/src/libpakfire/include/pakfire/arch.h @@ -29,11 +29,11 @@ const char* pakfire_arch_native(void); unsigned long pakfire_arch_personality(const char* name); #define pakfire_arch_machine(buffer, arch, vendor) \ - __pakfire_arch_machine(buffer, sizeof(buffer) - 1, arch, vendor) + __pakfire_arch_machine(buffer, sizeof(buffer), arch, vendor) int __pakfire_arch_machine(char* buffer, size_t length, const char* arch, const char* vendor); #define pakfire_arch_buildtarget(buffer, arch, vendor) \ - __pakfire_arch_buildtarget(buffer, sizeof(buffer) - 1, arch, vendor) + __pakfire_arch_buildtarget(buffer, sizeof(buffer), arch, vendor) int __pakfire_arch_buildtarget(char* buffer, size_t length, const char* arch, const char* vendor); const char* pakfire_arch_platform(const char* name);