diff options
Diffstat (limited to 'toys/posix')
-rw-r--r-- | toys/posix/sort.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/toys/posix/sort.c b/toys/posix/sort.c index 6f5467e1..9433aef2 100644 --- a/toys/posix/sort.c +++ b/toys/posix/sort.c @@ -304,9 +304,6 @@ void sort_main(void) { int idx, fd = 1; - // Open output file if necessary. - if (TT.o) fd = xcreate(TT.o, O_CREAT|O_TRUNC|O_WRONLY, 0666); - // Parse -k sort keys. if (TT.k) { struct arg_list *arg; @@ -384,6 +381,10 @@ void sort_main(void) if (TT.linecount) TT.linecount = jdx+1; } + // Open output file if necessary. We can't do this until we've finished + // reading in case the output file is one of the input files. + if (TT.o) fd = xcreate(TT.o, O_CREAT|O_TRUNC|O_WRONLY, 0666); + // Output result for (idx = 0; idx<TT.linecount; idx++) { char *s = TT.lines[idx]; |