Index: file.c =================================================================== --- file.c (revision 210862) +++ file.c (working copy) @@ -74,7 +74,7 @@ switch (filebehave) { case FILE_STDIO: - return (fgetc(f->f)); + return (getc_unlocked(f->f)); case FILE_GZIP: return (gzgetc(f->gzf)); case FILE_BZIP: @@ -189,6 +189,7 @@ f = grep_malloc(sizeof *f); if ((f->f = fdopen(STDIN_FILENO, "r")) != NULL) { + flockfile(f->f); f->stdin = true; return (f); } @@ -238,6 +239,7 @@ switch (filebehave) { case FILE_STDIO: + funlockfile(f->f); fclose(f->f); break; case FILE_GZIP: