home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Otherware
/
Otherware_1_SB_Development.iso
/
amiga
/
utility
/
cli
/
strings.lha
/
strings.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-03-02
|
2KB
|
92 lines
/*
* Strings 1.0
*
* Public Domain 1992 Dan Zerkle
*
* See documentation file for usage.
*/
#include <stdio.h>
#define BUFSIZE 1024
static char *title0 = "\0Strings 1.0 February 1992";
static char *title1 = "\0This program Public Domain 1992 Dan Zerkle";
static char *title2 = "\0Please e-mail zerkle@cs.ucdavis.edu";
main (argc, argv)
int argc; char **argv;
{
int asccount=0;
int ccount=0;
int in;
int minlen=6;
char string[BUFSIZE];
int newline='1';
FILE *infile;
while ((argc>1) && (argv[1][0]=='-'))
{
if (argv[1][1]=='n')
newline=0;
else if ((argv[1][1]>='0') && (argv[1][1]<='9'))
minlen=(-atoi(argv[1]));
else
{
fprintf(stderr,"Unknown option %s\n",argv[1]);
fprintf(stderr,"USAGE: strings [-n] [-<minsize>] [<filename>]\n");
exit(1);
}
argc--;argv++;
} /* if */
if (minlen>=BUFSIZE)
minlen=BUFSIZE-1;
if (argc > 1)
{
if (!(infile=fopen(argv[1],"rb")))
{
fprintf(stderr,"Can't open file %s\n",argv[1]);
exit(1);
}
} /* if */
else
infile=stdin;
string[minlen-1]=0;
while((in=getc(infile))!=EOF)
{
ccount++;
if ((in < ' ') || (in > '~'))
{
if ((asccount>=minlen) && newline)
putchar('\n');
asccount=0;
} /* if */
else
{
if (++asccount <= minlen-1)
string[asccount-1]=in;
else if (asccount == minlen)
{
fputs(string,stdout);
putchar(in);
} /* else if */
else
putchar(in);
} /* else */
} /* while */
if (asccount && newline)
putchar('\n');
exit(0);
} /* main */