2003-02-18 Jie Zhang * app.c (do-scrub_chars): Put one '|' in one state to avoid dropping the second '|' when the first putting '|' fills full the output buffer. *** /tmp/app.c Wed Feb 19 10:22:06 2003 --- app.c Wed Feb 19 10:24:08 2003 *************** do_scrub_chars (get, tostart, tolen) *** 663,668 **** --- 663,682 ---- state = 0; PUT (ch); continue; + + #ifdef DOUBLEBAR_PARALLEL + case LEX_IS_DOUBLEBAR_1ST: + ch = GET (); + if (ch != '|') + { + as_bad (_("this character should be \'|\',not \'%c\'"), ch); + } + /* Reset back to state 1 and pretend that we are parsing a line from + just after the first white space. */ + state = 1; + PUT ('|'); + continue; + #endif } /* OK, we are somewhere in states 0 through 4 or 9 through 11 */ *************** do_scrub_chars (get, tostart, tolen) *** 1078,1092 **** #ifdef DOUBLEBAR_PARALLEL case LEX_IS_DOUBLEBAR_1ST: ch2 = GET (); if (ch2 != '|') { - UNGET (ch2); goto de_fault; } ! /* Reset back to state 1 and pretend that we are parsing a line from ! just after the first white space. */ ! state = 1; ! PUT ('|'); PUT ('|'); break; #endif --- 1092,1103 ---- #ifdef DOUBLEBAR_PARALLEL case LEX_IS_DOUBLEBAR_1ST: ch2 = GET (); + UNGET (ch2); if (ch2 != '|') { goto de_fault; } ! state = LEX_IS_DOUBLEBAR_1ST; PUT ('|'); break; #endif