+ if ( ! read_whole_file(curp, &blk, &with_mmap))
+ return;
+
+ if (NULL == curp->roff)
+ curp->roff = roff_init(curp);
+ if (NULL == (roff = curp->roff))
+ goto bailout;
+
+ for (i = 0, lnn = 1; i < (int)blk.sz;) {
+ pos = 0;
+ lnn_start = lnn;
+ while (i < (int)blk.sz) {
+ if ('\n' == blk.buf[i]) {
+ ++i;
+ ++lnn;
+ break;
+ }
+ /* Trailing backslash is like a plain character. */
+ if ('\\' != blk.buf[i] || i + 1 == (int)blk.sz) {
+ if (pos >= (int)ln.sz)
+ if (! resize_buf(&ln, 256))
+ goto bailout;
+ ln.buf[pos++] = blk.buf[i++];
+ continue;
+ }
+ /* Found an escape and at least one other character. */
+ if ('\n' == blk.buf[i + 1]) {
+ /* Escaped newlines are skipped over */
+ i += 2;
+ ++lnn;
+ continue;
+ }
+ if ('"' == blk.buf[i + 1]) {
+ i += 2;
+ /* Comment, skip to end of line */
+ for (; i < (int)blk.sz; ++i) {
+ if ('\n' == blk.buf[i]) {
+ ++i;
+ ++lnn;
+ break;
+ }