|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T s
Length: 6954 (0x1b2a)
Types: TextFile
Names: »subs.c«
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12
└─⟦c319c2751⟧ »unix3.0/TeX3.0.tar.Z«
└─⟦036c765ac⟧
└─⟦this⟧ »TeX3.0/TeXcontrib/kamal/subs.c«
└─⟦060c9c824⟧ Bits:30007080 DKUUG TeX 2/12/89
└─⟦this⟧ »./tex82/TeXcontrib/kamal/subs.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
└─⟦this⟧ »EUUGD11/euug-87hel/sec1/vn/subs.c«
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12
└─⟦63303ae94⟧ »unix3.14/TeX3.14.tar.Z«
└─⟦c58930e5c⟧
└─⟦this⟧ »TeX3.14/TeXcontrib/kamal/subs.c«
/* 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);
}