X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Fstring.c;h=963948f77657bcb1cc88550662e4f648458cc09b;hb=65de12cc1acfeeacf85c3fd77d244b9dc7e79bdc;hp=db54a094b789a90e2f1d721c8b06ebbe426c8c53;hpb=80fea873648ca2ab2e592999a336c59cf054ab55;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/string.c b/src/src/string.c index db54a094b..963948f77 100644 --- a/src/src/string.c +++ b/src/src/string.c @@ -952,7 +952,7 @@ else for (;;) { for (ss = s + 1; *ss != 0 && *ss != sep; ss++); - buffer = string_cat(buffer, &size, &ptr, s, ss-s); + buffer = string_catn(buffer, &size, &ptr, s, ss-s); s = ss; if (*s == 0 || *(++s) != sep || sep_is_special) break; } @@ -995,17 +995,17 @@ uschar * sp; if (list) { - new = string_cat(new, &sz, &off, list, Ustrlen(list)); - new = string_cat(new, &sz, &off, &sep, 1); + new = string_cat (new, &sz, &off, list); + new = string_catn(new, &sz, &off, &sep, 1); } while((sp = Ustrchr(ele, sep))) { - new = string_cat(new, &sz, &off, ele, sp-ele+1); - new = string_cat(new, &sz, &off, &sep, 1); + new = string_catn(new, &sz, &off, ele, sp-ele+1); + new = string_catn(new, &sz, &off, &sep, 1); ele = sp+1; } -new = string_cat(new, &sz, &off, ele, Ustrlen(ele)); +new = string_cat(new, &sz, &off, ele); new[off] = '\0'; return new; } @@ -1039,18 +1039,18 @@ const uschar * sp; if (list) { - new = string_cat(new, &sz, &off, list, Ustrlen(list)); - new = string_cat(new, &sz, &off, &sep, 1); + new = string_cat (new, &sz, &off, list); + new = string_catn(new, &sz, &off, &sep, 1); } while((sp = Ustrnchr(ele, sep, &len))) { - new = string_cat(new, &sz, &off, ele, sp-ele+1); - new = string_cat(new, &sz, &off, &sep, 1); + new = string_catn(new, &sz, &off, ele, sp-ele+1); + new = string_catn(new, &sz, &off, &sep, 1); ele = sp+1; len--; } -new = string_cat(new, &sz, &off, ele, len); +new = string_catn(new, &sz, &off, ele, len); new[off] = '\0'; return new; } @@ -1078,7 +1078,7 @@ Arguments: characters, updated to the new offset s points to characters to add count count of characters to add; must not exceed the length of s, if s - is a C string + is a C string. If -1 given, strlen(s) is used. If string is given as NULL, *size and *ptr should both be zero. @@ -1091,7 +1091,7 @@ Returns: pointer to the start of the string, changed if copied for expansion. /* coverity[+alloc] */ uschar * -string_cat(uschar *string, int *size, int *ptr, const uschar *s, int count) +string_catn(uschar *string, int *size, int *ptr, const uschar *s, int count) { int p = *ptr; @@ -1146,6 +1146,13 @@ memcpy(string + p, s, count); *ptr = p + count; return string; } + + +uschar * +string_cat(uschar *string, int *size, int *ptr, const uschar *s) +{ +return string_catn(string, size, ptr, s, Ustrlen(s)); +} #endif /* COMPILE_UTILITY */ @@ -1183,7 +1190,7 @@ va_start(ap, count); for (i = 0; i < count; i++) { uschar *t = va_arg(ap, uschar *); - string = string_cat(string, size, ptr, t, Ustrlen(t)); + string = string_cat(string, size, ptr, t); } va_end(ap); @@ -1566,7 +1573,7 @@ if (testflag(addr, af_include_affixes) && s) if (testflag(addr, af_utf8_downcvt)) s = string_localpart_utf8_to_alabel(s, NULL); #endif - yield = string_cat(yield, sizeptr, ptrptr, s, Ustrlen(s)); + yield = string_cat(yield, sizeptr, ptrptr, s); } s = addr->local_part; @@ -1574,7 +1581,7 @@ s = addr->local_part; if (testflag(addr, af_utf8_downcvt)) s = string_localpart_utf8_to_alabel(s, NULL); #endif -yield = string_cat(yield, sizeptr, ptrptr, s, Ustrlen(s)); +yield = string_cat(yield, sizeptr, ptrptr, s); s = addr->suffix; if (testflag(addr, af_include_affixes) && s) @@ -1583,7 +1590,7 @@ if (testflag(addr, af_include_affixes) && s) if (testflag(addr, af_utf8_downcvt)) s = string_localpart_utf8_to_alabel(s, NULL); #endif - yield = string_cat(yield, sizeptr, ptrptr, s, Ustrlen(s)); + yield = string_cat(yield, sizeptr, ptrptr, s); } return yield; @@ -1634,7 +1641,7 @@ if (testflag(addr, af_pfr) || addr->transport != NULL && addr->transport->info->local)) { if (testflag(addr, af_file) && addr->local_part[0] != '/') - yield = string_cat(yield, &size, &ptr, CUS"save ", 5); + yield = string_catn(yield, &size, &ptr, CUS"save ", 5); yield = string_get_localpart(addr, yield, &size, &ptr); } @@ -1648,18 +1655,16 @@ else { const uschar * s; yield = string_get_localpart(addr, yield, &size, &ptr); - yield = string_cat(yield, &size, &ptr, US"@", 1); + yield = string_catn(yield, &size, &ptr, US"@", 1); s = addr->domain; #ifdef SUPPORT_I18N if (testflag(addr, af_utf8_downcvt)) s = string_localpart_utf8_to_alabel(s, NULL); #endif - yield = string_cat(yield, &size, &ptr, s, Ustrlen(s) ); + yield = string_cat(yield, &size, &ptr, s); } else - { - yield = string_cat(yield, &size, &ptr, addr->address, Ustrlen(addr->address)); - } + yield = string_cat(yield, &size, &ptr, addr->address); yield[ptr] = 0; /* If the address we are going to print is the same as the top address, @@ -1686,28 +1691,24 @@ if ((all_parents || testflag(addr, af_pfr)) && address_item *addr2; for (addr2 = addr->parent; addr2 != topaddr; addr2 = addr2->parent) { - yield = string_cat(yield, &size, &ptr, s, 2); - yield = string_cat(yield, &size, &ptr, addr2->address, Ustrlen(addr2->address)); + yield = string_catn(yield, &size, &ptr, s, 2); + yield = string_cat (yield, &size, &ptr, addr2->address); if (!all_parents) break; s = US", "; } - yield = string_cat(yield, &size, &ptr, US")", 1); + yield = string_catn(yield, &size, &ptr, US")", 1); } /* Add the top address if it is required */ if (add_topaddr) { - yield = string_cat(yield, &size, &ptr, US" <", 2); + yield = string_catn(yield, &size, &ptr, US" <", 2); - if (addr->onetime_parent == NULL) - yield = string_cat(yield, &size, &ptr, topaddr->address, - Ustrlen(topaddr->address)); - else - yield = string_cat(yield, &size, &ptr, addr->onetime_parent, - Ustrlen(addr->onetime_parent)); + yield = string_cat(yield, &size, &ptr, + addr->onetime_parent ? addr->onetime_parent : topaddr->address); - yield = string_cat(yield, &size, &ptr, US">", 1); + yield = string_catn(yield, &size, &ptr, US">", 1); } yield[ptr] = 0; /* string_cat() leaves space */