- case '\n':
- unary_delim = last_u_d;
- last_nl = true; /* remember that we just had a newline */
- code = (had_eof ? 0 : newline);
- /* if data has been exausted, the newline is a dummy, and we should
- return code to stop */
- break;
-
- case '\'': /* start of quoted character */
- qchar = '\''; /* remember final delimiter */
- goto copy_lit; /* and go to common literal code */
-
- case '"': /* start of string */
- qchar = '"';
-
- copy_lit:
- do { /* copy the string */
- while (1) { /* move one character or [/<char>]<char> */
- if (*buf_ptr == '\n') {
- /* check for unterminated literal */
- printf ("%d: Unterminated literal\n", line_no);
- goto stop_lit;
- /* Don't copy any more */
+ case '\n':
+ unary_delim = ps.last_u_d;
+ ps.last_nl = true; /* remember that we just had a newline */
+ code = (had_eof ? 0 : newline);
+
+ /*
+ * if data has been exausted, the newline is a dummy, and we should
+ * return code to stop
+ */
+ break;
+
+ case '\'': /* start of quoted character */
+ case '"': /* start of string */
+ qchar = *token;
+ if (troff) {
+ e_token[-1] = '`';
+ if (qchar == '"')
+ *e_token++ = '`';
+ e_token = chfont(&bodyf, &stringf, e_token);
+ }
+ do { /* copy the string */
+ while (1) { /* move one character or [/<char>]<char> */
+ if (*buf_ptr == '\n') {
+ printf("%d: Unterminated literal\n", line_no);
+ goto stop_lit;
+ }
+ check_size(token); /* Only have to do this once in this loop,
+ * since check_size guarantees that there
+ * are at least 5 entries left */
+ *e_token = *buf_ptr++;
+ if (buf_ptr >= buf_end)
+ fill_buffer();
+ if (*e_token == BACKSLASH) { /* if escape, copy extra char */
+ if (*buf_ptr == '\n') /* check for escaped newline */
+ ++line_no;
+ if (troff) {
+ *++e_token = BACKSLASH;
+ if (*buf_ptr == BACKSLASH)
+ *++e_token = BACKSLASH;