home *** CD-ROM | disk | FTP | other *** search
- /*
- * 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 */
-