|
|
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 d
Length: 3361 (0xd21)
Types: TextFile
Names: »detex1.c«
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12
└─⟦c319c2751⟧ »unix3.0/TeX3.0.tar.Z«
└─⟦036c765ac⟧
└─⟦this⟧ »TeX3.0/TeXcontrib/kamal/detex1.c«
└─⟦060c9c824⟧ Bits:30007080 DKUUG TeX 2/12/89
└─⟦this⟧ »./tex82/TeXcontrib/kamal/detex1.c«
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12
└─⟦63303ae94⟧ »unix3.14/TeX3.14.tar.Z«
└─⟦c58930e5c⟧
└─⟦this⟧ »TeX3.14/TeXcontrib/kamal/detex1.c«
/* COPYRIGHT (C) 1987 Kamal Al-Yahya */
/* detex: strips TeX's and LaTeX's commands */
char *documentation[] = {
" SYNTAX",
" detex [-i] file1 [file2 .....]",
" or detex [-i] < file1 [file2 ....]",
"",
"See the manual page for more details.",
"",
" Flag:",
" -i: ignores TeX's and LaTeX's \input and \include commands",
" -w: matching is not checked",
"",
};
/* Author: Kamal Al-Yahya, Stanford University, 11/1/83 */
/* Last modified: 1/25/87 */
int doclength = { sizeof documentation/sizeof documentation[0] };
#include "setups.h"
#ifdef tops20
#define TEMPFILE "texXXXXXX"
#else
#define TEMPFILE "/tmp/texXXXXXX"
#endif
#ifdef MSC
#else
struct sgttyb ttystat;
#endif
extern char *mktemp();
char scratch_file[MAXWORD];
int wflag;
int xargc;
char **xargv;
main(argc,argv)
int argc;
char *argv[];
{
char *buf;
FILE *temp,*scr;
register char *cptr;
int piped_in;
int iflag,i;
if (((buf = (char *)malloc(MAXLEN*sizeof(char))) == (char *)NULL))
{
fprintf(stderr,"detex: Cannot malloc() internal buffer space\n\
Need an array of %d characters\n",MAXLEN);
exit(-1);
}
/* If no arguments, and not in a pipeline, self document */
#ifdef MSC /* MS-DOS cannot distinguish piped input from no input */
piped_in = (argc == 1);
#else
piped_in = ioctl ((fileno (stdin)), TIOCGETP, &ttystat);
#endif
if (argc == 1 && !piped_in)
{
for( i=0; i<doclength; i++)
printf("%s\n",documentation[i]);
exit (0);
}
/* process option flags */
xargc = argc;
xargv = argv;
for (xargc--,xargv++; xargc; xargc--,xargv++)
{
cptr = *xargv;
if( *cptr=='-' )
{
while( *(++cptr))
{
switch( *cptr )
{
case 'i':
iflag=1;
break;
case 'w':
wflag=1;
break;
default:
fprintf(stderr,
"detex: unknown flag -%c\n",*cptr);
break;
}
}
}
}
/* first process pipe input */
if(piped_in)
{
/* need to buffer; can't seek in pipes */
/* make a temporary and volatile file in /tmp */
strcpy(scratch_file,TEMPFILE);
mktemp(scratch_file);
if ((scr=fopen(scratch_file,"w")) == (FILE *)NULL)
{
fprintf(stderr,
"detex: Cannot open scratch file [%s]\n",scratch_file);
exit(-1);
}
scrbuf(stdin,scr);
fclose(scr);
scr=fopen(scratch_file,"r");
unlink(scratch_file);
if (wflag != 1)
{
fprintf(stderr,"Checking matching...\n");
Match(scr);
fseek(scr,0,0);
}
/* either expand or buffer */
if (iflag != 1)
{ Expand(scr,buf); fclose(scr); }
else
{ tmpbuf(scr,buf); fclose(scr); }
if (wflag != 1)
fprintf(stderr,"Checking matching done\n\n");
DeTeX(buf,stdout);
fclose(scr);
}
/* then process input line for arguments and assume they are input files */
xargc = argc;
xargv = argv;
for (xargc--,xargv++; xargc; xargc--,xargv++)
{
cptr = *xargv;
if( *cptr=='-' ) continue; /* this is a flag */
if((temp=fopen(cptr,"r")) != (FILE *)NULL)
{
if (wflag != 1)
{
fprintf(stderr,"Checking matching...\n");
fprintf(stderr,"%s:\n",cptr);
Match(temp);
fprintf(stderr,"\n");
fseek(temp,0,0);
}
/* either expand or buffer */
if (iflag != 1)
{ Expand(temp,buf); fclose(temp); }
else
{ tmpbuf(temp,buf); fclose(temp); }
if (wflag != 1)
fprintf(stderr,"Checking matching done\n\n");
DeTeX(buf,stdout);
fclose(temp);
}
else
fprintf(stderr,"detex: Cannot open %s\n",cptr);
}
}