Arguments:
pp points a pointer to the initiating "\" in the string;
the pointer gets updated to point to the final character
+ If the backslash is the last character in the string, it
+ is not interpreted.
Returns: the value of the character escape
*/
int ch;
const uschar *p = *pp;
ch = *(++p);
+if (ch == '\0') return **pp;
if (isdigit(ch) && ch != '8' && ch != '9')
{
ch -= '0';
g->ptr = p + count;
return g;
}
-
-
+
+
gstring *
string_cat(gstring *string, const uschar *s)
{
if (!(flags & SVFMT_TAINT_NOCHK) && !dest_tainted && is_tainted(format))
{
+#ifndef MACRO_PREDEF
if (!(flags & SVFMT_REBUFFER))
die_tainted(US"string_vformat", func, line);
+#endif
gstring_rebuffer(g);
dest_tainted = TRUE;
}
gp = CS g->s + g->ptr;
dest_tainted = TRUE;
}
+#ifndef MACRO_PREDEF
else
die_tainted(US"string_vformat", func, line);
+#endif
INSERT_STRING: /* Come to from %D or %M above */