#include "misc.h" /* FLTSTRM -- Filter an input stream. */ fltstrm (input, argc, argv) char input[]; int *argc; char *argv[]; { FILE *fd; int i, flag; char in[132]; char out[1000]; float min, max, value; if (strcmp (input, "STDIN") == 0) fd = getstdin; else if ((fd = fopen (input, "r")) == NULL) { printf ("FLTSTRM: Can't read file %s\n", input); return; } for (;;) { out[0] = '\0'; flag = 1; for (i = 0; i < *argc; ++i) { switch (argv[i][0]) { case 'r': sscanf (argv[++i], "%hf", &min); sscanf (argv[++i], "%hf", &max); fscanf (fd, "%s", in); if (feof (fd)) break; sscanf (in, "%hf", &value); if ((value >= min) && (value <= max)) { strcat (out, in); strcat (out, " "); } else flag = 0; break; case 'c': fscanf (fd, "%s", in); if (feof (fd)) break; strcat (out, in); strcat (out, " "); break; case 's': fscanf (fd, "%*s"); break; default: focaserr (1, "fltstrm: error in argument list", ""); } if (feof (fd)) break; } if (flag) { printf ("%s\n", out); fflush (stdout); } if (feof (fd)) break; } fclose (fd); }