text(){ register i; static int spcnt; nflush++; if((dip == d) && (v.nl == -1)){newline(1); return;} setnel(); if(ce || !fi){ nofill(); return; } if(pendw)goto t4; if(pendt)if(spcnt)goto t2; else goto t3; pendt++; if(spcnt)goto t2; while(((i = GETCH()) & CMASK) == ' ')spcnt++; if(nlflg){ t1: nflush = pendt = ch = spcnt = 0; callsp(); return; } ch = i; if(spcnt){ t2: tbreak(); if(nc || wch)goto rtn; un += spcnt*sps; spcnt = 0; setnel(); if(trap)goto rtn; if(nlflg)goto t1; } t3: if(spread)goto t5; if(pendw || !wch) t4: if(getword(0))goto t6; if(!movword())goto t3; t5: if(nlflg)pendt = 0; adsp = adrem = 0; if(ad){ /* jfr */ if (nwd==1) adsp=nel; else adsp=nel/(nwd-1); #ifdef NROFF adsp = (adsp/t.Adj)*t.Adj; #endif adrem = nel - adsp*(nwd-1); } brflg = 1; tbreak(); spread = 0; if(!trap)goto t3; if(!nlflg)goto rtn; t6: pendt = 0; ckul(); rtn: nflush = 0; }
void caseti(void) { register int i; if (skip(1)) return; if ((pa || padj) && pglines == 0 && pgchars) tbreak(); i = max(hnumb(&in), 0); tbreak(); un1 = i; chkin(i, ll, "temporary "); setnel(); }
void casell(void) { register int i; if (skip(0)) i = ll1; else i = max(hnumb(&ll), INCH / 10); ll1 = ll; ll = i; chkin(in, ll, ""); setnel(); if (pgwords) { pgflags[pgwords] |= PG_NEWLL; pgwdll[pgwords] = ll; } }
void casein(void) { register int i; if ((pa || padj) && pglines == 0 && pgchars) tbreak(); if (skip(0)) i = in1; else i = max(hnumb(&in), 0); tbreak(); in1 = in; in = i; chkin(in, ll, ""); if (!nc && !pgwords) { un = in; setnel(); } else if (pgwords) { pgflags[pgwords] |= PG_NEWIN; pgwdin[pgwords] = in; } }
getword(int x) { int j, k; Tchar i, *wp; int noword; int obits; j = noword = 0; if (x) if (pendw) { *pendw = 0; goto rtn; } if (wordp = pendw) goto g1; hyp = hyptr; wordp = word; over = wne = wch = 0; hyoff = 0; obits = chbits; while (1) { /* picks up 1st char of word */ j = cbits(i = GETCH()); if (j == '\n') { wne = wch = 0; noword = 1; goto rtn; } if (j == ohc) { hyoff = 1; /* 1 => don't hyphenate */ continue; } if (j == ' ') { numtabp[HP].val += sps; widthp = sps; storeword(i, sps); continue; } break; } storeword(' ' | obits, sps); if (spflg) { storeword(' ' | obits, sps); spflg = 0; } g0: if (j == CONT) { pendw = wordp; nflush = 0; flushi(); return(1); } if (hyoff != 1) { if (j == ohc) { hyoff = 2; *hyp++ = wordp; if (hyp > hyptr + NHYP - 1) hyp = hyptr + NHYP - 1; goto g1; } if (((j == '-' || j == EMDASH)) && !(i & ZBIT)) /* zbit avoids \X */ if (wordp > word + 1) { hyoff = 2; *hyp++ = wordp + 1; if (hyp > hyptr + NHYP - 1) hyp = hyptr + NHYP - 1; } } j = width(i); numtabp[HP].val += j; storeword(i, j); g1: j = cbits(i = GETCH()); if (j != ' ') { static char *sentchar = ".?!"; /* sentence terminators */ if (j != '\n') goto g0; wp = wordp-1; /* handle extra space at end of sentence */ while (wp >= word) { j = cbits(*wp--); if (j=='"' || j=='\'' || j==')' || j==']' || j=='*' || j==DAGGER) continue; for (k = 0; sentchar[k]; k++) if (j == sentchar[k]) { spflg++; break; } break; } } *wordp = 0; numtabp[HP].val += sps; rtn: for (wp = word; *wp; wp++) { if (ismot(j)) break; /* drechsler */ j = cbits(*wp); if (j == ' ') continue; if (!(isascii(j) && isdigit(j)) && j != '-') break; } if (*wp == 0) /* all numbers, so don't hyphenate */ hyoff = 1; wdstart = 0; wordp = word; pendw = 0; *hyp++ = 0; setnel(); return(noword); }
void tbreak(void) { int pad, k; Tchar *i, j; int resol; int un0 = un; trap = 0; if (nb) return; if (dip == d && numtabp[NL].val == -1) { newline(1); return; } if (!nc) { setnel(); if (!wch) return; if (pendw) getword(1); movword(); } else if (pendw && !brflg) { getword(1); movword(); } *linep = dip->nls = 0; if (NROFF && dip == d) horiz(po); if (lnmod) donum(); lastl = ne; if (brflg != 1) { totout = 0; } else if (ad) { if ((lastl = ll - un) < ne) lastl = ne; } if (admod && ad && (brflg != 2)) { lastl = ne; adsp = adrem = 0; if (admod == 1) un += quant(nel / 2, HOR); else if (admod == 2) un += nel; } totout++; brflg = 0; if (lastl + un > dip->maxl) dip->maxl = lastl + un; horiz(un); if (NROFF) { if (adrem % t.Adj) resol = t.Hor; else resol = t.Adj; } else resol = HOR; lastl = ne + (nwd-1) * adsp + adrem; for (i = line; nc > 0; ) { if ((cbits(j = *i++)) == ' ') { pad = 0; do { pad += width(j); nc--; } while ((cbits(j = *i++)) == ' '); i--; pad += adsp; --nwd; if (adrem) { if (adrem < 0) { pad -= resol; adrem += resol; } else if ((totout & 01) || adrem / resol >= nwd) { pad += resol; adrem -= resol; } } pchar((Tchar) WORDSP); horiz(pad); } else { pchar(j); nc--; } } if (ic) { if ((k = ll - un0 - lastl + ics) > 0) horiz(k); pchar(ic); } if (icf) icf++; else ic = 0; ne = nwd = 0; un = in; setnel(); newline(0); if (dip != d) { if (dip->dnl > dip->hnl) dip->hnl = dip->dnl; } else { if (numtabp[NL].val > dip->hnl) dip->hnl = numtabp[NL].val; } for (k = ls - 1; k > 0 && !trap; k--) newline(0); spread = 0; }
void text(void) { Tchar i; static int spcnt; nflush++; numtabp[HP].val = 0; if ((dip == d) && (numtabp[NL].val == -1)) { newline(1); return; } setnel(); if (ce || !fi) { nofill(); return; } if (pendw) goto t4; if (pendt) if (spcnt) goto t2; else goto t3; pendt++; if (spcnt) goto t2; while ((cbits(i = GETCH())) == ' ') { spcnt++; numtabp[HP].val += sps; widthp = sps; } if (nlflg) { t1: nflush = pendt = ch = spcnt = 0; callsp(); return; } ch = i; if (spcnt) { t2: tbreak(); if (nc || wch) goto rtn; un += spcnt * sps; spcnt = 0; setnel(); if (trap) goto rtn; if (nlflg) goto t1; } t3: if (spread) goto t5; if (pendw || !wch) t4: if (getword(0)) goto t6; if (!movword()) goto t3; t5: if (nlflg) pendt = 0; adsp = adrem = 0; if (ad) { if (nwd == 1) adsp = nel; else adsp = nel / (nwd - 1); adsp = (adsp / HOR) * HOR; adrem = nel - adsp*(nwd-1); } brflg = 1; tbreak(); spread = 0; if (!trap) goto t3; if (!nlflg) goto rtn; t6: pendt = 0; ckul(); rtn: nflush = 0; }
void evc(struct env *dp, struct env *sp) { char *name; if (dp != sp) { name = dp->_evname; memcpy(dp, sp, sizeof *dp); if (sp->_hcode) { dp->_hcode = malloc(dp->_nhcode * sizeof *dp->_hcode); memcpy(dp->_hcode, sp->_hcode, dp->_nhcode * sizeof *dp->_hcode); } if (sp->_lpfx) { dp->_lpfx = malloc(dp->_nlpfx * sizeof *dp->_lpfx); memcpy(dp->_lpfx, sp->_lpfx, dp->_nlpfx * sizeof *dp->_lpfx); dp->_evname = name; } } dp->_pendnf = 0; dp->_pendw = 0; dp->_pendt = 0; dp->_wch = 0; dp->_wne = 0; dp->_wsp = 0; dp->_wdstart = 0; dp->_wdend = 0; dp->_lnsize = 0; dp->_line = NULL; dp->_linep = NULL; dp->_wdsize = 0; dp->_word = 0; dp->_wdpenal = 0; dp->_wordp = 0; dp->_spflg = 0; dp->_seflg = 0; dp->_ce = 0; dp->_rj = 0; dp->_pgsize = 0; dp->_pgcsize = 0; dp->_pgssize = 0; dp->_pglines = 0; dp->_pgwords = 0; dp->_pgchars = 0; dp->_pgspacs = 0; dp->_para = NULL; dp->_parsp = NULL; dp->_pgwordp = NULL; dp->_pgspacp = NULL; dp->_pgwordw = NULL; dp->_pghyphw = NULL; dp->_pgadspc = NULL; dp->_pglsphc = NULL; dp->_pgopt = NULL; dp->_pgspacw = NULL; dp->_pgspacp = NULL; dp->_pglgsc = NULL; dp->_pglgec = NULL; dp->_pglgsw = NULL; dp->_pglgew = NULL; dp->_pglgsh = NULL; dp->_pglgeh = NULL; dp->_pgin = NULL; dp->_pgll = NULL; dp->_pgwdin = NULL; dp->_pgwdll = NULL; dp->_pgflags = NULL; dp->_pglno = NULL; dp->_pgpenal = NULL; dp->_inlevp = NULL; if (dp->_brnl < INT_MAX) dp->_brnl = 0; if (dp->_brpnl < INT_MAX) dp->_brpnl = 0; dp->_nn = 0; dp->_ndf = 0; dp->_nms = 0; dp->_ni = 0; dp->_ul = 0; dp->_cu = 0; dp->_it = 0; dp->_itc = 0; dp->_itmac = 0; dp->_pendnf = 0; dp->_nc = 0; dp->_un = 0; dp->_un1 = -1; dp->_nwd = 0; dp->_hyoff = 0; dp->_nb = 0; dp->_spread = 0; dp->_lnmod = 0; dp->_hlc = 0; dp->_cht = 0; dp->_cdp = 0; dp->_maxcht = 0; dp->_maxcdp = 0; setnel(); }
tbreak(){ register *i, j, pad; int res; trap = 0; if(nb)return; if((dip == d) && (v.nl == -1)){ newline(1); return; } if(!nc){ setnel(); if(!wch)return; if(pendw)getword(1); movword(); }else if(pendw && !brflg){ getword(1); movword(); } *linep = dip->nls = 0; #ifdef NROFF if(dip == d)horiz(po); #endif if(lnmod)donum(); lastl = ne; if(brflg != 1){ totout = 0; }else if(ad){ if((lastl = (ll - un)) < ne)lastl = ne; } if(admod && ad && (brflg != 2)){ lastl = ne; adsp = adrem = 0; #ifdef NROFF if(admod == 1)un += quant(nel/2,t.Adj); #endif #ifndef NROFF if(admod == 1)un += nel/2; #endif else if(admod ==2)un += nel; } totout++; brflg = 0; if((lastl+un) > dip->maxl)dip->maxl = (lastl+un); horiz(un); #ifdef NROFF if(adrem%t.Adj)res = t.Hor; else res = t.Adj; #endif for(i = line;nc > 0;){ if(((j = *i++) & CMASK) == ' '){ pad = 0; do{ pad += width(j); nc--; }while(((j = *i++) & CMASK) == ' '); i--; pad += adsp; --nwd; if(adrem){ if(adrem < 0){ #ifdef NROFF pad -= res; adrem += res; }else if((totout&01) || ((adrem/res)>=(nwd))){ pad += res; adrem -= res; #endif #ifndef NROFF pad--; adrem++; }else{ pad++; adrem--; #endif } } horiz(pad); }else{ pchar(j); nc--; } } if(ic){ if((j = ll - un - lastl + ics) > 0)horiz(j); pchar(ic); } if(icf)icf++; else ic = 0; ne = nwd = 0; un = in; setnel(); newline(0); if(dip != d){if(dip->dnl > dip->hnl)dip->hnl = dip->dnl;} else{if(v.nl > dip->hnl)dip->hnl = v.nl;} for(j=ls-1; (j >0) && !trap; j--)newline(0); spread = 0; }
int tbreak() { int pad, k; tchar *i, j; int resol = 0; #ifdef EUC #ifdef NROFF tchar l; #endif /* NROFF */ #endif /* EUC */ trap = 0; if (nb) return (0); if (dip == d && numtab[NL].val == -1) { newline(1); return (0); } if (!nc) { setnel(); if (!wch) return (0); if (pendw) getword(1); movword(); } else if (pendw && !brflg) { getword(1); movword(); } *linep = dip->nls = 0; #ifdef NROFF if (dip == d) horiz(po); #endif if (lnmod) donum(); lastl = ne; if (brflg != 1) { totout = 0; } else if (ad) { if ((lastl = ll - un) < ne) lastl = ne; } if (admod && ad && (brflg != 2)) { lastl = ne; adsp = adrem = 0; if (admod == 1) un += quant(nel / 2, HOR); else if (admod == 2) un += nel; } totout++; brflg = 0; if (lastl + un > dip->maxl) dip->maxl = lastl + un; horiz(un); #ifdef NROFF if (adrem % t.Adj) resol = t.Hor; else resol = t.Adj; #else resol = HOR; #endif adrem = (adrem / resol) * resol; for (i = line; nc > 0; ) { #ifndef EUC if ((cbits(j = *i++)) == ' ') { #else #ifndef NROFF if ((cbits(j = *i++)) == ' ') { #else if ((cbits(j = *i++) & ~MBMASK) == ' ') { #endif /* NROFF */ #endif /* EUC */ pad = 0; do { pad += width(j); nc--; #ifndef EUC } while ((cbits(j = *i++)) == ' '); #else #ifndef NROFF } while ((cbits(j = *i++)) == ' '); #else } while ((cbits(j = *i++) & ~MBMASK) == ' '); #endif /* NROFF */ #endif /* EUC */ i--; pad += adsp; --nwd; if (adrem) { if (adrem < 0) { pad -= resol; adrem += resol; } else if ((totout & 01) || adrem / resol >= nwd) { pad += resol; adrem -= resol; } } pchar((tchar) WORDSP); horiz(pad); } else { pchar(j); nc--; } } if (ic) { if ((k = ll - un - lastl + ics) > 0) horiz(k); pchar(ic); } if (icf) icf++; else ic = 0; ne = nwd = 0; un = in; setnel(); newline(0); if (dip != d) { if (dip->dnl > dip->hnl) dip->hnl = dip->dnl; } else { if (numtab[NL].val > dip->hnl) dip->hnl = numtab[NL].val; } for (k = ls - 1; k > 0 && !trap; k--) newline(0); spread = 0; return (0); }