/* ED9.C */

#include ed0.c
#include ed1.ccc
toupper(c) int c;
{
	if ((c<'a')|(c>'z')) {
		return(c);
	}
	else {
		return(c-32);
	}
}
tolower(c) int c;
{
	if ((c<'A')|(c>'Z')) {
		return(c);
	}
	else {
		return(c+32);
	}
}
number(args,val) char *args; int *val;
{
char c;
	c= *args++;
	if ((c<'0')|(c>'9')) {
		return(NO);
	}
	*val=c-'0';
	while (c= *args++) {
		if ((c<'0')|(c>'9')) {
			break;
		}
		*val=(*val*10)+c-'0';
	}
	return(YES);
}
ctoi(buf,index) char *buf; int index;
{
int k;
	while ((buf[index]==' ')|
		(buf[index]==TAB)){
		index++;
	}
	k=0;
	while ((buf[index]>='0')&(buf[index]<='9')) {
		k=(k*10)+buf[index]-'0';
		index++;
	}
	return(k);
}
max(m,n) int m,n;
{
	if (m>=n) {
		return(m);
	}
	else {
		return(n);
	}
}
min(m,n) int m,n;
{
	if (m<=n) {
		return(m);
	}
	else {
		return(n);
	}
}
putdec(n,w) int n,w;
{
char chars[10];
int i,nd;
	nd=itoc(n,chars,10);
	i=0;
	while (i<nd) {
		syscout(chars[i++]);
	}
	i=nd;
	while (i++<w) {
		syscout(' ');
	}
}
itoc(n,str,size) int n; char *str; int size;
{
int absval;
int len;
int i,j,k;
	absval=abs(n);
	str[0]=0;
	i=1;
	while (i<size) {
		str[i++]=(absval%10)+'0';
		absval=absval/10;
		if (absval==0) {
			break;
		}
	}
	if ((i<size)&(n<0)) {
		str[i++]='-';
	}
	len=i-1;
	i--;
	j=0 ;
	while (j<i) {
		k=str[i];
		str[i]=str[j];
		str[j]=k;
		i--;
		j++;
	}
	return(len);
}
abs(n) int n;
{
	if (n<0) {
		return(-n);
	}
	else {
		return(n);
	}
}
syserr(s) char *s;
{
	pmtmess("system error: ",s);
}
error(s) char *s;
{
	pmtmess("error: ",s);
}
diskerr(s) char *s;
{
	pmtmess("disk error: ",s);
}
readline(file,p,n) int file; char *p; int n;
{
int c;
int k;
	k=0;
	while (1) {
		c=sysrdch(file);
		if (c==ERR) {
			return(ERR);
		}
		if (c==EOF) {
			return(EOF);
		}
		if (c==CR) {
			return(k);
		}
		if (k<n) {
			*p++=c;
		}
		k++;
	}
}
pushline(file,p,n) int file; char *p; int n;
{
	while((n--)>0) {
		if (syspshch(*p++,file)==ERR) {
			return(ERR);
		}
	}
	return(syspshch(CR,file));
}
popline(file,p,n) int file; char *p; int n;
{
int c;
int k, kmax, t;
	c=syspopch(file);
	if (c==EOF) {
		return(EOF);
	}
	if (c==CR) {
		*p++ =CR;
		k=1;
	}
	else {
		syserr("popline:  missing CR");
		return(ERR);
	}
	while (1) {
		c=syspopch(file);
		if (c==ERR) {
			return(ERR);
		}
		if (c==EOF) {
			break;
		}
		if (c==CR) {
			if (syspshch(CR,file)==ERR) {
				return(ERR);
			}
			break;
		}
		if (k<n) {
			*p++ =c;
		}
		k++;
	}
	kmax=k;
	k=min(k,n-1);
	t=0;
	while (k>t) {
		c=p[k];
		p[k]=p[t];
		p[t]=c;
		k--;
		t++;
	}
	return(kmax);
}

