grep: -r didn't close files, producing "Too many open files"
authorDenis Vlasenko <vda.linux@googlemail.com>
Sun, 15 Oct 2006 18:38:01 +0000 (18:38 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Sun, 15 Oct 2006 18:38:01 +0000 (18:38 -0000)
findutils/grep.c

index 12cad34..04dd2b0 100644 (file)
@@ -301,6 +301,7 @@ static int file_action_grep(const char *filename, struct stat *statbuf, void* ma
        }
        cur_file = filename;
        *(int*)matched += grep_file(file);
+       fclose(file);
        return 1;
 }
 
@@ -446,13 +447,13 @@ int grep_main(int argc, char **argv)
                        }
                }
                matched += grep_file(file);
+               bb_fclose_nonstdin(file);
  grep_done:
                if (matched < 0) {
                        /* we found a match but were told to be quiet, stop here and
                        * return success */
                        break;
                }
-               bb_fclose_nonstdin(file);
        }
 
        /* destroy all the elments in the pattern list */