diff --git a/src/main.c b/src/main.c
index 3376fa4..1ee0448 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1244,10 +1244,12 @@ grepfile (char const *file, struct stats *stats)
     }
 
   if ((directories == SKIP_DIRECTORIES && S_ISDIR (stats->stat.st_mode))
-      || (devices == SKIP_DEVICES && (S_ISCHR (stats->stat.st_mode)
-                                      || S_ISBLK (stats->stat.st_mode)
-                                      || S_ISSOCK (stats->stat.st_mode)
-                                      || S_ISFIFO (stats->stat.st_mode))))
+      || (devices == SKIP_DEVICES
+          && desc != STDIN_FILENO
+          && (S_ISCHR (stats->stat.st_mode)
+              || S_ISBLK (stats->stat.st_mode)
+              || S_ISSOCK (stats->stat.st_mode)
+              || S_ISFIFO (stats->stat.st_mode))))
     {
       if (file)
         close (desc);
