[comp.unix.xenix] tok

honzo@4gl.UUCP (04/18/87)

#	I should have made this a long time before.
#
#	tok - a tool for the poor souls that have to live with
#	c compilers that do not understand long-names.
#
#	Usage:	1. ensure that all you .c and .h files are sitting
#		   in one directory.
#		2. type tok
#
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/[k]sh to create the files:
#	Makefile
#	tok
#	tok1.l
#	tok2.c
# This archive created: Fri Apr 17 23:16:49 1987
# By:	honzo 
export PATH; PATH=/bin:$PATH
if test -f 'Makefile'
then
	echo shar: will not over-write existing file "'Makefile'"
else
cat > 'Makefile' << \S!H!A!R
# tok - the sound that a chicken makes
#

all:	tok1	tok2

tok1:	lex.yy.c
	cc lex.yy.c -o tok1 -ll

tok2:	tok2.c
	cc tok2.c -o tok2

lex.yy.c:	tok1.l
		lex tok1.l
S!H!A!R
fi # end of overwriting check
if test -f 'tok'
then
	echo shar: will not over-write existing file "'tok'"
else
cat > 'tok' << \S!H!A!R
echo "Making sed script ..."
cat *.[ch] | tok1 | sort -u | tok2 >sed.script

for FILE in *.[ch]
do
	echo "Sediting file $FILE"
	mv $FILE tok.$$
	sed -f sed.script tok.$$ > $FILE
done
rm tok.$$
S!H!A!R
chmod +x 'tok'
fi # end of overwriting check
if test -f 'tok1.l'
then
	echo shar: will not over-write existing file "'tok1.l'"
else
cat > 'tok1.l' << \S!H!A!R
%%

[_A-Za-z][_A-Za-z0-9]*	printf("%s\n", yytext);
[0-9][0-9x\\]*	;
\"	while(input() != '"');
"/*"	{	loop:
		while(input() != '*');
		switch(input()) {
			case '/': break;
			case '*': unput('*');
			default: goto loop;
		}
	}

" "	|
"\t"	|
"\r"	|
"\n"	|
"\b"	|
"!"	|
"#"	|
"$"	|
"%"	|
"&"	|
"'"	|
"("	|
")"	|
"*"	|
"+"	|
","	|
"-"	|
"."	|
"/"	|
":"	|
";"	|
"<"	|
"="	|
">"	|
"?"	|
"@"	|
"["	|
"\\"	|
"]"	|
"^"	|
"_"	|
"`"	|
"{"	|
"|"	|
"}"	|
"~"	;
S!H!A!R
fi # end of overwriting check
if test -f 'tok2.c'
then
	echo shar: will not over-write existing file "'tok2.c'"
else
cat > 'tok2.c' << \S!H!A!R
#include	<stdio.h>

main()
{
	char buffer[2][80];
	int	i = 0, count = 0;

	while(!feof(stdin)) {
		i = (i == 1) ? 0 : 1;
		gets(buffer[i]);
		if (strncmp(buffer[0], buffer[1], 7) == 0)
			printf("/%s/s//F%d_%s/g\n",buffer[i],count++,buffer[i]);
	}
}
S!H!A!R
fi # end of overwriting check
#	End of shell archive
echo "What... "
sleep 2
echo "     ...no Copyright notice ???"
exit 0
-- 
I_I(           _                        	UUCP: ..mcvax!honzo@4gl
I I ) Honzo Svasek @ 4GL Consultants b.v.	FIDO:  Honzo Svasek @ 500/333