4.[123]bsd dev/lp hoards final form feed (with fix)
Chris Torek
chris at umcp-cs.UUCP
Thu Feb 27 05:36:16 AEST 1986
A perhaps better fix is to eliminate sc_lpchar completely. Here
are the changes I installed back when we were using one of these
(this is for 4.3 beta, but probably fits in 4.1 and 4.2 too).
RCS file: RCS/lp.c,v
retrieving revision 1.1.1.3
retrieving revision 1.2
diff -c2 -r1.1.1.3 -r1.2
*** /tmp/,RCSt1000977 Wed Feb 26 14:31:33 1986
--- /tmp/,RCSt2000977 Wed Feb 26 14:31:36 1986
***************
*** 55,59 ****
char sc_flags;
short sc_maxcol;
- int sc_lpchar;
struct buf *sc_inbuf;
} lp_softc[NLP];
--- 55,58 ----
***************
*** 80,84 ****
sc = &lp_softc[ui->ui_unit];
- sc->sc_lpchar = -1;
if (ui->ui_flags)
sc->sc_maxcol = ui->ui_flags;
--- 79,82 ----
***************
*** 285,289 ****
int lp11;
{
! register int n;
register struct lp_softc *sc = &lp_softc[lp11];
register struct uba_device *ui = lpinfo[lp11];
--- 283,287 ----
int lp11;
{
! register int n, c;
register struct lp_softc *sc = &lp_softc[lp11];
register struct uba_device *ui = lpinfo[lp11];
***************
*** 292,300 ****
lpaddr->lpsr &= ~IENABLE;
n = sc->sc_outq.c_cc;
! if (sc->sc_lpchar < 0)
! sc->sc_lpchar = getc(&sc->sc_outq);
! while ((lpaddr->lpsr&DONE) && sc->sc_lpchar >= 0) {
! lpaddr->lpbuf = sc->sc_lpchar;
! sc->sc_lpchar = getc(&sc->sc_outq);
}
sc->sc_state |= MOD;
--- 290,304 ----
lpaddr->lpsr &= ~IENABLE;
n = sc->sc_outq.c_cc;
! for (;;) {
! /* a weird sort of busy wait */
! if ((lpaddr->lpsr&DONE) == 0 && (lpaddr->lpsr&DONE) == 0 &&
! (lpaddr->lpsr&DONE) == 0 && (lpaddr->lpsr&DONE) == 0 &&
! (lpaddr->lpsr&DONE) == 0 && (lpaddr->lpsr&DONE) == 0 &&
! (lpaddr->lpsr&DONE) == 0 && (lpaddr->lpsr&DONE) == 0 &&
! (lpaddr->lpsr&DONE) == 0 && (lpaddr->lpsr&DONE) == 0)
! break;
! if ((c = getc(&sc->sc_outq)) < 0)
! break;
! lpaddr->lpbuf = c;
}
sc->sc_state |= MOD;
--
In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 1415)
UUCP: seismo!umcp-cs!chris
CSNet: chris at umcp-cs ARPA: chris at mimsy.umd.edu
More information about the Comp.bugs.4bsd.ucb-fixes
mailing list