+ (bold ? 7 : 3) * quote_count + 1,
char);
+#undef COPY_SEEN
+#define COPY_SEEN \
+ do \
+ { \
+ memcpy (r, start, p - start); \
+ r += p - start; \
+ start = p; \
+ } \
+ while (0)
+
for (p = start; p <= end; p++)
{
switch (*p)
}
else
{
- /* Copy the preceding string to R. */
- memcpy (r, start, p - start);
- r += p - start;
- start = p;
+ COPY_SEEN;
state = true;
}
break;
if (state)
{
if (*start == '`')
- {
- memcpy (r, start, p - start);
- r += p - start;
- start = p;
- }
+ COPY_SEEN;
}
else
{
- /* Copy the preceding string to R. */
- memcpy (r, start, p - start);
- r += p - start;
- start = p;
+ COPY_SEEN;
state = true;
}
break;
start = p + 1;
}
else
- {
- /* Copy the preceding string to R. */
- memcpy (r, start, p - start);
- r += p - start;
- start = p;
- }
+ COPY_SEEN;
state = false;
}
else if (p == input || *(p - 1) == '\n' || *(p - 1) == ' ')
{
- /* Copy the preceding string to R. */
- memcpy (r, start, p - start);
- r += p - start;
- start = p;
+ COPY_SEEN;
state = true;
}
break;
}
}
+#undef COPY_SEEN
+
/* Copy the rest to R. */
if (p > start)
{