tchar popinlev(void) { tchar c = 0; if (--ninlev < 0) { ninlev = 0; return c; } if (dpenal != inlevp[ninlev]._dpenal) c = mkxfunc(DPENAL, inlevp[ninlev]._dpenal); apts = inlevp[ninlev]._apts; apts1 = inlevp[ninlev]._apts1; pts = inlevp[ninlev]._pts; pts1 = inlevp[ninlev]._pts1; font = inlevp[ninlev]._font; font1 = inlevp[ninlev]._font1; cc = inlevp[ninlev]._cc; c2 = inlevp[ninlev]._c2; ohc = inlevp[ninlev]._ohc; hyf = inlevp[ninlev]._hyf; tabc = inlevp[ninlev]._tabc; dotc = inlevp[ninlev]._dotc; dpenal = inlevp[ninlev]._dpenal; mchbits(); if (ninlev == 0) { free(inlevp); inlevp = NULL; ainlev = 0; } return c; }
ckul(){ if(ul && (--ul == 0)){ cu = 0; font = sfont; mchbits(); } if(it && (--it == 0) && itmac)control(itmac,0); }
void init2(void) { int i; char buf[100]; for (i = NTRTAB; --i; ) trtab[i] = i; trtab[UNPAD] = ' '; iflg = 0; obufp = obuf; if (TROFF) t_ptinit(); else n_ptinit(); mchbits(); cvtime(); numtabp[PID].val = getpid(); numtabp[HP].val = init = 0; numtabp[NL].val = -1; nfo = 0; copyf = raw = 0; sprintf(buf, ".ds .T %s\n", devname); cpushback(buf); sprintf(buf, ".ds .P %s\n", DWBhomedir); cpushback(buf); numtabp[CD].val = -1; /* compensation */ nx = mflg; frame = stk = (Stack *)setbrk(STACKSIZE); dip = &d[0]; nxf = frame + 1; for (i = 1; i < NEV; i++) /* propagate the environment */ envcopy(&env[i], &env[0]); for (i = 0; i < NEV; i++) { if ((env[i]._word._bufp = (Tchar *)calloc(WDSIZE, sizeof(Tchar))) == NULL) { ERROR "not enough room for word buffers" WARN; done2(1); } env[i]._word._size = WDSIZE; if ((env[i]._line._bufp = (Tchar *)calloc(LNSIZE, sizeof(Tchar))) == NULL) { ERROR "not enough room for line buffers" WARN; done2(1); } env[i]._line._size = LNSIZE; } if ((oline = (Tchar *)calloc(OLNSIZE, sizeof(Tchar))) == NULL) { ERROR "not enough room for line buffers" WARN; done2(1); } olinep = oline; olnsize = OLNSIZE; blockinit(); }
void n_setwd(void) { int base, wid; Tchar i; int delim, emsz, k; int savhp, savapts, savapts1, savfont, savfont1, savpts, savpts1; base = numtabp[ST].val = wid = numtabp[CT].val = 0; if (ismot(i = getch())) return; delim = cbits(i); savhp = numtabp[HP].val; numtabp[HP].val = 0; savapts = apts; savapts1 = apts1; savfont = font; savfont1 = font1; savpts = pts; savpts1 = pts1; setwdf++; while (cbits(i = getch()) != delim && !nlflg) { k = width(i); wid += k; numtabp[HP].val += k; if (!ismot(i)) { emsz = (INCH * pts + 36) / 72; } else if (isvmot(i)) { k = absmot(i); if (isnmot(i)) k = -k; base -= k; emsz = 0; } else continue; if (base < numtabp[SB].val) numtabp[SB].val = base; if ((k = base + emsz) > numtabp[ST].val) numtabp[ST].val = k; } setn1(wid, 0, (Tchar) 0); numtabp[HP].val = savhp; apts = savapts; apts1 = savapts1; font = savfont; font1 = savfont1; pts = savpts; pts1 = savpts1; mchbits(); setwdf = 0; }
void n_setfont(int a) { int i, j; if (a) i = getrq(); else i = getsn(); if (!i || i == 'P') { j = font1; goto s0; } if (/* i == 'S' || */ i == '0') return; if ((j = findft(i)) == -1) return; s0: font1 = font; font = j; mchbits(); }
void caseul(void) { register int i; noscale++; if (skip(0)) i = 1; else i = atoi(); if (ul && (i == 0)) { font = sfont; ul = cu = 0; } if (i) { if (!ul) { sfont = font; font = ulfont; } ul = i; } noscale = 0; mchbits(); }
int cmpstr(tchar c) { register int j, delim; register tchar i; register int val; int savapts, savapts1, savfont, savfont1, savpts, savpts1; tchar string[1280]; register tchar *sp; if (ismot(c)) return(0); delim = cbits(c); savapts = apts; savapts1 = apts1; savfont = font; savfont1 = font1; savpts = pts; savpts1 = pts1; sp = string; while ((j = cbits(i = getch()))!=delim && j!='\n' && sp<&string[1280-1]) *sp++ = i; if (j != delim) nodelim(delim); if (sp >= string + 1280) { errprint("too-long string compare."); edone(0100); } if (nlflg) { val = sp==string; goto rtn; } *sp++ = 0; apts = savapts; apts1 = savapts1; font = savfont; font1 = savfont1; pts = savpts; pts1 = savpts1; mchbits(); val = 1; sp = string; while ((j = cbits(i = getch())) != delim && j != '\n') { if (*sp != i) { eat(delim); val = 0; goto rtn; } sp++; } if (j != delim) nodelim(delim); if (*sp) val = 0; rtn: apts = savapts; apts1 = savapts1; font = savfont; font1 = savfont1; pts = savpts; pts1 = savpts1; mchbits(); return(val); }