Testsuite: Add Ustrtok() to quieten solaris' compiler
[users/heiko/exim.git] / test / src / fakens.c
index 7e93979ecfb529267dcde21dbe386286162f7d47..444422124b794659cbdc91fb1270a2d5ebcc8e19 100644 (file)
@@ -75,9 +75,11 @@ a number of seconds (followed by one space).
 #include <errno.h>
 #include <signal.h>
 #include <arpa/nameser.h>
+#include <arpa/inet.h>
 #include <sys/types.h>
 #include <sys/time.h>
 #include <dirent.h>
+#include <unistd.h>
 
 #define FALSE         0
 #define TRUE          1
@@ -97,6 +99,7 @@ typedef unsigned char uschar;
 #define Ustrlen(s)         (int)strlen(CCS(s))
 #define Ustrncmp(s,t,n)    strncmp(CCS(s),CCS(t),n)
 #define Ustrncpy(s,t,n)    strncpy(CS(s),CCS(t),n)
+#define Ustrtok(s,t)       strtok(CS(s),CCS(t))
 
 typedef struct zoneitem {
   uschar *zone;
@@ -484,11 +487,11 @@ while (fgets(CS buffer, sizeof(buffer), f) != NULL)
   switch (tvalue)
     {
     case ns_t_soa:
-      p = strtok(p, " ");
+      p = Ustrtok(p, " ");
       ep = p + strlen(p);
       if (ep[-1] != '.') sprintf(CS ep, "%s.", zone);
       pk = packname(p, pk);                     /* primary ns */
-      p = strtok(NULL, " ");
+      p = Ustrtok(NULL, " ");
       pk = packname(p , pk);                    /* responsible mailbox */
       *(p += strlen(p)) = ' ';
       while (isspace(*p)) p++;
@@ -500,35 +503,13 @@ while (fgets(CS buffer, sizeof(buffer), f) != NULL)
       break;
 
     case ns_t_a:
-      for (i = 0; i < 4; i++)
-        {
-        value = 0;
-        while (isdigit(*p)) value = value*10 + *p++ - '0';
-        *pk++ = value;
-        p++;
-        }
+      inet_pton(AF_INET, p, pk);                /* FIXME: error checking */
+      pk += 4;
       break;
 
-    /* The only occurrence of a double colon is for ::1 */
     case ns_t_aaaa:
-      if (Ustrcmp(p, "::1") == 0)
-        {
-        memset(pk, 0, 15);
-        pk += 15;
-        *pk++ = 1;
-        }
-      else for (i = 0; i < 8; i++)
-        {
-        value = 0;
-        while (isxdigit(*p))
-          {
-          value = value * 16 + toupper(*p) - (isdigit(*p)? '0' : '7');
-          p++;
-          }
-        *pk++ = (value >> 8) & 255;
-        *pk++ = value & 255;
-        p++;
-        }
+      inet_pton(AF_INET6, p, pk);               /* FIXME: error checking */
+      pk += 16;
       break;
 
     case ns_t_mx: