Exemplo n.º 1
0
tchar 
eat(tchar c)
{
	register tchar i;

	while (i = getch(), !issame(i, c) &&  (cbits(i) != '\n'))
		;
	if (cbits(c) != ' ' && !issame(i, c))
		nodelim(c);
	return(i);
}
Exemplo n.º 2
0
void
setov(void)
{
	register int j = 0, k;
	tchar i, delim, o[NOV];
	int w[NOV];

	if (ismot(i = getch()))
		return;
	delim = i;
	for (k = 0; (k < NOV) && (j = cbits(i = getch()), !issame(i, delim)) &&  (j != '\n'); k++) {
		o[k] = i;
		w[k] = width(i);
	}
	if (!issame(j, delim))
		nodelim(delim);
	o[k] = w[k] = 0;
	if (o[0])
		for (j = 1; j; ) {
			j = 0;
			for (k = 1; o[k] ; k++) {
				if (w[k-1] < w[k]) {
					j++;
					i = w[k];
					w[k] = w[k-1];
					w[k-1] = i;
					i = o[k];
					o[k] = o[k-1];
					o[k-1] = i;
				}
			}
		}
	else 
		return;
	pbbuf[pbp++] = makem(w[0] / 2);
	for (k = 0; o[k]; k++)
		;
	while (k>0) {
		k--;
		if (pbp >= pbsize-4)
			if (growpbbuf() == NULL) {
				errprint("no space for .ov");
				done(2);
			}
		pbbuf[pbp++] = makem(-((w[k] + w[k+1]) / 2));
		pbbuf[pbp++] = o[k];
	}
}
Exemplo n.º 3
0
static int
getpenalty(int *valp)
{
	tchar	c, delim;

	if (ismot(delim = getch()))
		return 0;
	if (readpenalty(valp) == 0)
		return 0;
	c = getch();
	if (!issame(c, delim)) {
		nodelim(delim);
		return 0;
	}
	return 1;
}
Exemplo n.º 4
0
void
setbra(void)
{
	register int k;
	tchar i, *j, dwn, delim;
	int	cnt;
	tchar brabuf[NC];

	if (ismot(i = getch()))
		return;
	delim = i;
	j = brabuf + 1;
	cnt = 0;
#ifdef NROFF
	dwn = sabsmot(2 * t.Halfline) | MOT | VMOT;
#endif
#ifndef NROFF
	dwn = sabsmot((int)EM) | MOT | VMOT;
#endif
	while ((k = cbits(i = getch()), !issame(delim, i)) && (k != '\n') &&  (j <= (brabuf + NC - 4))) {
		*j++ = i | ZBIT;
		*j++ = dwn;
		cnt++;
	}
	if (!issame(i, delim))
		nodelim(delim);
	if (--cnt < 0)
		return;
	else if (!cnt) {
		ch = *(j - 2);
		return;
	}
	*j = 0;
#ifdef NROFF
	*--j = *brabuf = sabsmot(cnt * t.Halfline) | MOT | NMOT | VMOT;
#endif
#ifndef NROFF
	*--j = *brabuf = sabsmot((cnt * (int)EM) / 2) | MOT | NMOT | VMOT;
#endif
	*--j &= ~ZBIT;
	pushback(brabuf);
}
Exemplo n.º 5
0
Arquivo: n5.c Projeto: aksr/heirloom
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);
}
Exemplo n.º 6
0
void
setvline(void)
{
	register int i;
	tchar c, _d, delim, rem, ver, neg;
	int	cnt, v;
	tchar vlbuf[NC];
	register tchar *vlp;

	if (ismot(c = getch()))
		return;
	delim = c;
	dfact = lss;
	vflag++;
	i = quant(hatoi(), VERT);
	dfact = 1;
	if (!i) {
		eat(delim);
		vflag = 0;
		return;
	}
	if (c = getch(), issame(c, delim)) {
		c = BOXRULE | chbits;	/*default box rule*/
	} else {
		_d = getch();
		if (!issame(_d, delim))
			nodelim(delim);
	}
	c |= ZBIT;
	neg = 0;
	if (i < 0) {
		i = -i;
		neg = NMOT;
	}
#ifdef NROFF
	v = 2 * t.Halfline;
#endif
#ifndef NROFF
	v = EM;
#endif
	cnt = i / v;
	rem = makem(i % v) | neg;
	ver = makem(v) | neg;
	vlp = vlbuf;
	if (!neg)
		*vlp++ = ver;
	if (absmot(rem) != 0) {
		*vlp++ = c;
		*vlp++ = rem;
	}
	while ((vlp < (vlbuf + NC - 3)) && cnt--) {
		*vlp++ = c;
		*vlp++ = ver;
	}
	*(vlp - 2) &= ~ZBIT;
	if (!neg)
		vlp--;
	*vlp++ = 0;
	pushback(vlbuf);
	vflag = 0;
}