ADDC
ADDC(buf, buflen, '"');
ADDC(buf, buflen, data[i]);
ADDC(buf, buflen, '"');
ADDC(buf, buflen, '\0');
ADDC(buf, buflen, '"');
ADDC(buf, buflen, data[i]);
ADDC(buf, buflen, '"');
ADDC(buf, buflen, '\0');
ADDC(buf, buflen, '"');
ADDC(buf, buflen, data[i]);
ADDC(buf, buflen, '"');
ADDC(buf, buflen, '\0');
#define ADDS(p) do { for (s = p; *s; s++) ADDC(*s); } \
ADDC(*ptr);
ADDC('%');
ADDC('?');
ADDC(*ptr);