]> git.ipfire.org Git - pakfire.git/commitdiff
arch: Use the new/old string functions exclusively
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 18 Aug 2022 19:05:55 +0000 (19:05 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 18 Aug 2022 19:05:55 +0000 (19:05 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/arch.c
src/libpakfire/include/pakfire/arch.h

index 55978a584b69119b180edf608fbb443f087a8622..a11bdd8a2e7cd9b9a3eacc8276726d6580d63986 100644 (file)
@@ -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
index 22dda9a04f76dc52947a1eaa2fb544c5956d3a48..c1ffa130f00cfa49e782a6c84ca4c9ce068eed3c 100644 (file)
@@ -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);