home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
unix
/
volume4
/
shortc2
< prev
next >
Wrap
Text File
|
1986-11-30
|
4KB
|
170 lines
Newsgroups: mod.sources
Subject: shortc: sed output, and standard input
Approved: jpn@panda.UUCP
Mod.sources: Volume 4, Issue 50
Submitted by: convex!smu!s100ms!marquez
I have put some hacks into the shortc program recently posted to mod.sources.
First, shortc can now take input from a pipe, as in:
cat *.h *.c | shortc -p > global.h
of course the same effect is gained by "shortc *.h *.c > global.h", but
this allows for special applications. I also added a -s option so that
a sed command file can be created instead of an include file. Remember,
if the -s option is needed, then the -p option will probably be required
too.
This submission is in the form of a context diff, suitable for "patch"ing
the original.
manlio d marquez
convex!smu!s100ms!marquez
------- start of diffs -------------
*** shortc.orig Fri Apr 4 09:15:15 1986
--- shortc.c Fri Apr 4 09:15:35 1986
***************
*** 14,17
they will cause (innocuous) redefinition messages.
*/
#include <ctype.h>
--- 14,20 -----
they will cause (innocuous) redefinition messages.
*/
+ /*
+ hacked by m.d. marquez to allow pipe into stdin and add -s (sed) option
+ */
#include <ctype.h>
***************
*** 45,48
int symlen = SYMLEN;
char parsepp; /* if set, parse preprocessor lines */
symbol *lookup();
--- 48,53 -----
int symlen = SYMLEN;
char parsepp; /* if set, parse preprocessor lines */
+ int sedout = 0; /* want sed output */
+ int read_file = 0; /* flag if read file arguments */
symbol *lookup();
***************
*** 58,61
doarg(*++argv);
dump();
exit(0);
--- 63,69 -----
doarg(*++argv);
+ if( !read_file )
+ process();
+
dump();
exit(0);
***************
*** 64,70
doarg (arg) char *arg; /*: process one file or flag arg */
{
- register char *s;
- register symbol *y;
-
if( *arg == '-' )
{ arg++;
--- 72,75 -----
doarg (arg) char *arg; /*: process one file or flag arg */
{
if( *arg == '-' )
{ arg++;
***************
*** 73,76
else if( *arg == 'p' )
parsepp = 1;
else fputs(Usage, stderr);
return;
--- 78,83 -----
else if( *arg == 'p' )
parsepp = 1;
+ else if( *arg == 's' )
+ sedout = 1;
else fputs(Usage, stderr);
return;
***************
*** 82,85
}
while( s = token() )
if( (y = lookup(s))->flag < SEEN )
--- 89,102 -----
}
+ process();
+
+ read_file++;
+ }
+
+ process()
+ {
+ register char *s;
+ register symbol *y;
+
while( s = token() )
if( (y = lookup(s))->flag < SEEN )
***************
*** 177,180
break;
}
if( strcmp(y->inname, s) == 0 )
break;
--- 194,198 -----
break;
}
+
if( strcmp(y->inname, s) == 0 )
break;
***************
*** 191,196
for( n = HASHSIZ; --n >= 0; )
for( y = symtab[n]; y; y = y->link )
! if( y->flag > SEEN )
! printf("#define %s %s%s\n", y->inname,
y->prefix, y->inname);
}
--- 209,215 -----
for( n = HASHSIZ; --n >= 0; )
for( y = symtab[n]; y; y = y->link )
! if( y->flag > SEEN ) {
! if( sedout )
! printf("/%s/s//%s%s/g\n", y->inname,
y->prefix, y->inname);
else
***************
*** 194,197
printf("#define %s %s%s\n", y->inname,
y->prefix, y->inname);
}
--- 213,220 -----
printf("/%s/s//%s%s/g\n", y->inname,
y->prefix, y->inname);
+ else
+ printf("#define %s %s%s\n", y->inname,
+ y->prefix, y->inname);
+ }
}
----------- end of diffs -------------------