From: Jim Meyering Date: Fri, 14 May 2004 07:34:09 +0000 (+0000) Subject: Improve performance of `sort -m' on large files, at the cost of X-Git-Tag: v5.3.0~1558 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8e0b4648a613daa8a4f01a058a2a7ffb982eafcd;p=thirdparty%2Fcoreutils.git Improve performance of `sort -m' on large files, at the cost of making some contrived examples unsafe. POSIX allows this optimization. Performance problem reported by Jonathan Baker in . (first_same_file): Do not treat input pipes differently from other files. --- diff --git a/src/sort.c b/src/sort.c index a259ae9746..6fcfc69d7d 100644 --- a/src/sort.c +++ b/src/sort.c @@ -1878,9 +1878,7 @@ sortlines_temp (struct line *lines, size_t nlines, struct line *temp) } /* Return the index of the first of NFILES FILES that is the same file - as OUTFILE. If none can be the same, return NFILES. Consider an - input pipe to be the same as OUTFILE, since the pipe might be the - output of a command like "cat OUTFILE". */ + as OUTFILE. If none can be the same, return NFILES. */ static int first_same_file (char * const *files, int nfiles, char const *outfile) @@ -1910,7 +1908,7 @@ first_same_file (char * const *files, int nfiles, char const *outfile) ? fstat (STDIN_FILENO, &instat) : stat (files[i], &instat)) == 0) - && (S_ISFIFO (instat.st_mode) || SAME_INODE (instat, outstat))) + && SAME_INODE (instat, outstat)) return i; }