X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/8b4556856d2434c8006df5011d4855c07a7ba2b8..e59797e3bda39abf611063fc0ba38fcb4e6596e4:/src/src/string.c diff --git a/src/src/string.c b/src/src/string.c index 5e48b445c..fed210080 100644 --- a/src/src/string.c +++ b/src/src/string.c @@ -37,7 +37,6 @@ Returns: 0 if the string is not a textual representation of an IP address int string_is_ip_address(const uschar *s, int *maskptr) { -int i; int yield = 4; /* If an optional mask is permitted, check for it. If found, pass back the @@ -60,7 +59,6 @@ if (Ustrchr(s, ':') != NULL) { BOOL had_double_colon = FALSE; BOOL v4end = FALSE; - int count = 0; yield = 6; @@ -73,7 +71,7 @@ if (Ustrchr(s, ':') != NULL) may be one and only one appearance of double colon, which implies any number of binary zero bits. The number of preceding components is held in count. */ - for (count = 0; count < 8; count++) + for (int count = 0; count < 8; count++) { /* If the end of the string is reached before reading 8 components, the address is valid provided a double colon has been read. This also applies @@ -134,7 +132,7 @@ if (Ustrchr(s, ':') != NULL) /* Test for IPv4 address, which may be the tail-end of an IPv6 address. */ -for (i = 0; i < 4; i++) +for (int i = 0; i < 4; i++) { long n; uschar * end; @@ -409,6 +407,7 @@ return ss; +#ifdef HAVE_LOCAL_SCAN /************************************************* * Copy and save string * *************************************************/ @@ -420,7 +419,7 @@ Returns: copy of string in new store */ uschar * -string_copy(const uschar *s) +string_copy_function(const uschar *s) { int len = Ustrlen(s) + 1; uschar *ss = store_get(len); @@ -429,49 +428,6 @@ return ss; } - -/************************************************* -* Copy and save string in malloc'd store * -*************************************************/ - -/* This function assumes that memcpy() is faster than strcpy(). - -Argument: string to copy -Returns: copy of string in new store -*/ - -uschar * -string_copy_malloc(const uschar *s) -{ -int len = Ustrlen(s) + 1; -uschar *ss = store_malloc(len); -memcpy(ss, s, len); -return ss; -} - - - -/************************************************* -* Copy, lowercase and save string * -*************************************************/ - -/* -Argument: string to copy -Returns: copy of string in new store, with letters lowercased -*/ - -uschar * -string_copylc(const uschar *s) -{ -uschar *ss = store_get(Ustrlen(s) + 1); -uschar *p = ss; -while (*s != 0) *p++ = tolower(*s++); -*p = 0; -return ss; -} - - - /************************************************* * Copy and save string, given length * *************************************************/ @@ -487,36 +443,32 @@ Returns: copy of string in new store */ uschar * -string_copyn(const uschar *s, int n) +string_copyn_function(const uschar *s, int n) { uschar *ss = store_get(n + 1); Ustrncpy(ss, s, n); ss[n] = 0; return ss; } +#endif /************************************************* -* Copy, lowercase, and save string, given length * +* Copy and save string in malloc'd store * *************************************************/ -/* It is assumed the data contains no zeros. A zero is added -onto the end. - -Arguments: - s string to copy - n number of characters +/* This function assumes that memcpy() is faster than strcpy(). -Returns: copy of string in new store, with letters lowercased +Argument: string to copy +Returns: copy of string in new store */ uschar * -string_copynlc(uschar *s, int n) +string_copy_malloc(const uschar *s) { -uschar *ss = store_get(n + 1); -uschar *p = ss; -while (n-- > 0) *p++ = tolower(*s++); -*p = 0; +int len = Ustrlen(s) + 1; +uschar *ss = store_malloc(len); +memcpy(ss, s, len); return ss; } @@ -738,7 +690,7 @@ if (!gp2) #ifdef COMPILE_UTILITY return string_copy(gp->s); #else -gstring_reset_unused(gp); +gstring_release_unused(gp); return gp->s; #endif } @@ -955,7 +907,6 @@ if (buffer) else { - const uschar *ss; gstring * g = NULL; /* We know that *s != 0 at this point. However, it might be pointing to a @@ -978,14 +929,15 @@ else for (;;) { - for (ss = s + 1; *ss && *ss != sep; ss++) ; + const uschar * ss; + for (ss = s + 1; *ss && *ss != sep; ) ss++; g = string_catn(g, s, ss-s); s = ss; if (!*s || *++s != sep || sep_is_special) break; } while (g->ptr > 0 && isspace(g->s[g->ptr-1])) g->ptr--; buffer = string_from_gstring(g); - gstring_reset_unused(g); + gstring_release_unused(g); } /* Update the current pointer and return the new string */ @@ -1095,35 +1047,6 @@ return list; /************************************************/ -/* Create a growable-string with some preassigned space */ - -gstring * -string_get(unsigned size) -{ -gstring * g = store_get(sizeof(gstring) + size); -g->size = size; -g->ptr = 0; -g->s = US(g + 1); -return g; -} - -/* NUL-terminate the C string in the growable-string, and return it. */ - -uschar * -string_from_gstring(gstring * g) -{ -if (!g) return NULL; -g->s[g->ptr] = '\0'; -return g->s; -} - -void -gstring_reset_unused(gstring * g) -{ -store_reset(g->s + (g->size = g->ptr + 1)); -} - - /* Add more space to a growable-string. Arguments: @@ -1664,7 +1587,7 @@ doesn't seem much we can do about that. */ va_start(ap, format); (void) string_vformat(g, FALSE, format, ap); string_from_gstring(g); -gstring_reset_unused(g); +gstring_release_unused(g); va_end(ap); return eno == EACCES