DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T s

⟦89e4a1405⟧ TextFile

    Length: 6954 (0x1b2a)
    Types: TextFile
    Names: »subs.c«

Derivation

└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
    └─ ⟦this⟧ »EUUGD11/euug-87hel/sec1/vn/subs.c« 

TextFile

/* COPYRIGHT (C) 1987 Kamal Al-Yahya */

/* subroutines used programs in the package */
#include    "setups.h"

int
begin_to_end(buffer,environment)
char *buffer;
char *environment;
{
int c,len,i;
char w[MAXWORD];

buffer++;	len = 1;
while ((c = *buffer++) != NULL)
	{
	len++;
	if (c == '\\')
		{
		i = get_buf_word(buffer,w);
		buffer += i;	len += i;
		if (strcmp(w,"end") == 0)
			{
			buffer++;	len++;
			i = get_buf_word(buffer,w);
			buffer += i+1;	len += i+1;
			if (strcmp(w,environment) == 0)
				break;
			}
		}
	}
return(len);
}

int
command(inbuf,w)
char *inbuf;
char *w;
{
int c,i,j;
int left_br=0, right_br=0;

for (i=0; (c = *inbuf++) != NULL && i < MAXLINE; i++)
	{
	w[i] = (char)c;
	if (c == '{')	left_br++;
	if (c == '}')	right_br++;
	if (left_br == right_br && left_br != 0)	break;
	}
left_br = 0;	right_br = 0;
for (j=i+1; (c = *inbuf++) != NULL && j < MAXLINE; j++)
	{
	w[j] = (char)c;
	if (c == '{')	left_br++;
	if (c == '}')	right_br++;
	if (left_br == right_br && left_br != 0)	break;
	}
w[++j] = NULL;
return(j);
}

int
comm_file(fp,line,match)
FILE *fp;
int *line,match;
{
int i=0,lbrl=0;
int c;
int left_br=0, right_br=0;

while ((c = getc(fp)) != EOF)
	{
	i++;
	if (c == '\n')	(*line)++;
	if (c == '{')
		{
		left_br++;
		if (lbrl == 0)	lbrl = *line;
		}
	if (c == '}')	right_br++;
	if (right_br > left_br)		break;
	}
if (match == 1 && c == EOF && left_br > right_br)
	{
	fprintf(stderr,"file ends: %d unclosed left braces while reading \\newcommand, first opened at line %d\n",left_br-right_br,lbrl,lbrl);
	return(i);
	}
left_br = 0;	right_br = 0;	lbrl = 0;
while ((c = getc(fp)) != EOF)
	{
	i++;
	if (c == '\n')	(*line)++;
	if (c == '{')
		{
		left_br++;
		if (lbrl == 0)	lbrl = *line;
		}
	if (c == '}')	right_br++;
	if (left_br == right_br && left_br != 0)	break;
	}
if (match == 1 && c == EOF && left_br > right_br)
	fprintf(stderr,"file ends: %d unclosed left braces while reading \\newcommand, first opened at line %d\n",left_br-right_br,lbrl,lbrl);
return(i);
}

int
comment(buffer)			/* commented text is ignored */
char *buffer;
{
int c,len=0;

while((c = *buffer++) != NULL)
	{
	if (c == '\n')		break;
	len++;
	}
return(len);
}

int
def(inbuf,w)
char *inbuf, *w;
{
int c,i;
int left_br=0, right_br=0;

for (i=0; (c = *inbuf++) != NULL && i < MAXLINE; i++)
	{
	w[i] = (char)c;
	if (c == '{')	left_br++;
	if (c == '}')	right_br++;
	if (left_br == right_br && left_br != 0)	break;
	}
w[++i] = NULL;
return(i);
}

int
def_file(fp,line,match)
FILE *fp;
int *line,match;
{
int i=0, lbrl=0;
int c;
int left_br=0, right_br=0;

while ((c = getc(fp)) != EOF)
	{
	i++;
	if (c == '\n')	(*line)++;
	if (c == '{')
		{
		left_br++;
		if (lbrl == 0)	lbrl = *line;
		}
	if (c == '}')	right_br++;
	if (left_br == right_br && left_br != 0)	break;
	}
if (match == 1 && c == EOF && left_br > right_br)
	fprintf(stderr,"file ends: %d unclosed left braces while reading \\def, first opened at line %d\n",left_br-right_br,lbrl);
return(i);
}

int
display(buffer)
char *buffer;
{
int c,len=1;

while((c = *buffer++) != NULL)
	{
	len++;
	if(c == '\\')
		{
		len++;
		if ((c = *buffer++) == ']')
			break;
		}
	}
return(len);			
}

int
dollar(buffer,out_file)
char *buffer;
FILE *out_file;
{
int c,len;

c=' ' ;		/* "erase" the dollar sign */
putc (c,out_file);
c = *buffer++;
if(c == '$')		len=two_dollars(buffer,out_file)+1;
else			len=one_dollar(buffer);
return(len);
}

int
formula(buffer)
char *buffer;
{
int c,len=1;

while((c = *buffer++) != NULL)
	{
	len++;
	if (c == '\\')
		{
		if ((c = *buffer++) == ')')
			break;
		}
	}
return(len);			
}

int
get_buf_word(inbuf,w)
char *inbuf;
char *w;
{
int c,i;

for (i=0; (c = *inbuf++) != NULL && c != ' ' && c != '\n' && c != '\t'
	&& c != '$' && c != '{' && c != '}' && c != '%'
	&& c != '\\' && c != '#' && c != '(' && c != ')' && c != '['
	&& c != ']' && i < MAXWORD; i++)
		w[i] = (char)c;
if ((c == ' ' || c == '\n' || c == '\t' || c == '$' || c == '{' || c == '}' ||
	c == '%' || c == '\\' && c != '#' || c == '(' || c == ')' || c =='['
	|| c == ']') && i == 0)
		w[i++] = (char)c;
w[i] = NULL;
return(i);
}

int
getenv_file(fp,line,match)
FILE *fp;
int *line,match;
{
int i=0,lbrl=0;
int c;
int left_br=0, right_br=0;

while ((c = getc(fp)) != EOF)
	{
	i++;
	if (c == '\n')	(*line)++;
	if (c == '{')
		{
		left_br++;
		if (lbrl == 0)	lbrl = *line;
		}
	if (c == '}')	right_br++;
	if (right_br > left_br)		break;
	}
if (match == 1 && c == EOF && left_br > right_br)
	{
	fprintf(stderr,"file ends: %d unclosed left braces while reading \\newenvironment, first opened at line %d\n",left_br-right_br,lbrl);
	return(i);
	}
left_br = 0;	right_br = 0;	lbrl = 0;
while ((c = getc(fp)) != EOF)
	{
	i++;
	if (c == '\n')	(*line)++;
	if (c == '{')
		{
		left_br++;
		if (lbrl == 0)	lbrl = *line;
		}
	if (c == '}')	right_br++;
	if (left_br == right_br && left_br != 0)	break;
	}
if (match == 1 && c == EOF && left_br > right_br)
	{
	fprintf(stderr,"file ends: %d unclosed left braces while reading \\newenvironment, first opened at line %d\n",left_br-right_br,lbrl);
	return(i);
	}
left_br = 0;	right_br = 0;	lbrl = 0;
while ((c = getc(fp)) != EOF)
	{
	i++;
	if (c == '\n')	(*line)++;
	if (c == '{')
		{
		left_br++;
		if (lbrl == 0)	lbrl = *line;
		}
	if (c == '}')	right_br++;
	if (left_br == right_br && left_br != 0)	break;
	}
if (match == 1 && c == EOF && left_br > right_br)
	fprintf(stderr,"file ends: %d unclosed left braces while reading \\newenvironment, first opened at line %d\n",left_br-right_br,lbrl);
return(i);
}

int
get_file_word(fp,w,line,c)
FILE *fp;
char *w;
int *line, *c;
{
int i;

for (i=0; (*c = getc(fp)) != NULL && *c != ' ' && *c != '\n' && *c != '\t'
	&& *c != '$' && *c != '{' && *c != '}' && *c != '\\' && *c != '#'
	&& *c != '(' && *c != ')' && *c != '[' && *c != ']' && *c != '%'
	&& i < MAXWORD; i++)
		w[i] = (char)*c;
if (i == 0 && *c == '\n') (*line)++;
w[i] = NULL;
return(i);
}

int
is_new_env(w,env_count)
char *w;
int env_count;
{
int i;

for (i=0; i < env_count; i++)
	{
	if (strcmp(env[i].env_name,w) == 0)
		return(i);
	}
return(-1);
}

int
one_dollar(buffer)
char *buffer;
/* an in-line equation with one dollar signs as delimeters */
{

int c,len=0;

while((c = *buffer++) != NULL)
	{
	len++;
	if(c == '$')	break;
	}
return(len+1);
}

void
scrbuf(in,out)			/* copy input to output */
FILE *in,*out;
{
int c;
while ((c =getc(in)) != EOF)	putc(c,out);
}

void
tmpbuf(in,buffer)
/* copy input to buffer, buffer holds only MAXLEN characters */
FILE *in;
char *buffer;
{
int c;
unsigned int l=0;

while (l++ < MAXLEN && (c = getc(in)) != EOF)
	*buffer++ = (char)c;
if (l >= MAXLEN)
	{
	fprintf(stderr,"Sorry: document is too large\n");
	exit(-1);
	}
*buffer = NULL;
}

int
two_dollars(buffer,out_file)
char *buffer;
FILE *out_file;
/* displayed equation with two-dollar sign delimeters */
{
int c,len=0;

while((c = *buffer++) != NULL)
	{
	len++;
	if(c == '$')
		{
		c = *buffer++;		len++;
		if (c != '$')	putc(c,out_file);
		break;
		}
	}
return(len);
}