C89 compilers (like Minix' ACK) only need to handle 31 functions arguments
authorDan Fandrich <dan@coneharvesters.com>
Tue, 9 Dec 2008 01:02:28 +0000 (01:02 +0000)
committerDan Fandrich <dan@coneharvesters.com>
Tue, 9 Dec 2008 01:02:28 +0000 (01:02 +0000)
so split a long sprintf into two calls to get below that number.

ares_gethostbyaddr.c

index 30b3cb0..76f5870 100644 (file)
@@ -266,13 +266,16 @@ static void ptr_rr_name(char *name, struct ares_addr *addr)
   else
     {
        unsigned char *bytes = (unsigned char *)&addr->addrV6.s6_addr;
+       /* There are too many arguments to do this in one line using
+       * minimally C89-compliant compilers */
        sprintf(name,
-                "%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x."
-                "%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.ip6.arpa",
+                "%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.",
                 bytes[15]&0xf, bytes[15] >> 4, bytes[14]&0xf, bytes[14] >> 4,
                 bytes[13]&0xf, bytes[13] >> 4, bytes[12]&0xf, bytes[12] >> 4,
                 bytes[11]&0xf, bytes[11] >> 4, bytes[10]&0xf, bytes[10] >> 4,
-                bytes[9]&0xf, bytes[9] >> 4, bytes[8]&0xf, bytes[8] >> 4,
+                bytes[9]&0xf, bytes[9] >> 4, bytes[8]&0xf, bytes[8] >> 4);
+       sprintf(name+strlen(name),
+                "%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.ip6.arpa",
                 bytes[7]&0xf, bytes[7] >> 4, bytes[6]&0xf, bytes[6] >> 4,
                 bytes[5]&0xf, bytes[5] >> 4, bytes[4]&0xf, bytes[4] >> 4,
                 bytes[3]&0xf, bytes[3] >> 4, bytes[2]&0xf, bytes[2] >> 4,