X-Git-Url: https://git.exim.org/users/jgh/exim.git/blobdiff_plain/2c98a555f730e665a305652a84bd558f1fed83f6..53621a47bcdce24b63663d5402ac4826a5a5a32c:/test/src/fakens.c?ds=sidebyside diff --git a/test/src/fakens.c b/test/src/fakens.c index 29914cd46..e4584c4df 100644 --- a/test/src/fakens.c +++ b/test/src/fakens.c @@ -75,10 +75,14 @@ a number of seconds (followed by one space). #include #include #include +#include #include #include #include #include +#ifdef HAVE_SYS_SOCKET_H +#include +#endif #define FALSE 0 #define TRUE 1 @@ -98,6 +102,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) (uschar*)strtok(CS(s),CCS(t)) typedef struct zoneitem { uschar *zone; @@ -485,13 +490,13 @@ while (fgets(CS buffer, sizeof(buffer), f) != NULL) switch (tvalue) { case ns_t_soa: - p = strtok(p, " "); - ep = p + strlen(p); + p = Ustrtok(p, " "); + ep = p + Ustrlen(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)) = ' '; + *(p += Ustrlen(p)) = ' '; while (isspace(*p)) p++; pk = longfield(&p, pk); /* serial */ pk = longfield(&p, pk); /* refresh */ @@ -501,35 +506,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, CCS 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, CCS p, pk); /* FIXME: error checking */ + pk += 16; break; case ns_t_mx: