#endif
;
-static const int GROWBY = 80; /* how large we will grow strings by */
-
/* options */
static int ignore_case = 0;
static int print_filename = 0;
static char *cur_file = NULL; /* the current file we are reading */
-/* This returns a malloc'ed char * which must be stored and free'ed */
-/* XXX: This function should probably go in a 'common'/'util'/'misc' file
- * somewhere so it can be used by other folks. */
-static char *get_line_from_file(FILE *file)
-{
- int ch;
- int idx = 0;
- char *linebuf = NULL;
- int linebufsz = 0;
-
- while (1) {
- ch = fgetc(file);
- if (ch == EOF)
- break;
- /* grow the line buffer as necessary */
- if (idx > linebufsz-1)
- linebuf = realloc(linebuf, linebufsz += GROWBY);
- linebuf[idx++] = (char)ch;
- if ((char)ch == '\n')
- break;
- }
-
- if (idx == 0)
- return NULL;
-
- linebuf[idx] = 0;
- return linebuf;
-}
-
static void print_matched_line(char *line, int linenum)
{
if (print_filename)
if ((argc-1) - (optind+1) > 0)
print_filename++;
- /* If no files were specified, take input from stdin. Otherwise, we grep
- * through all the files specified. */
- if (argv[optind+1] == NULL) {
+ /* If no files were specified, or '-' was specified, take input from
+ * stdin. Otherwise, we grep through all the files specified. */
+ if (argv[optind+1] == NULL || (strcmp(argv[optind+1], "-") == 0)) {
grep_file(stdin);
} else {
int i;