(main): Don't die when dev/ino of input and output are
authorJim Meyering <jim@meyering.net>
Sat, 11 Nov 1995 14:21:15 +0000 (14:21 +0000)
committerJim Meyering <jim@meyering.net>
Sat, 11 Nov 1995 14:21:15 +0000 (14:21 +0000)
the same and the file descriptors correspond to stdin and stdout.
This is necessary on at least Digital UNIX (aka OSF1) 3.2C.
Otherwise, running `cat << X > $$' would fail with `cat: -: input
file is output file'.  From Jarkko Hietaniemi <jhi@epsilon.hut.fi>.

src/cat.c

index 77dec0e..0038c19 100644 (file)
--- a/src/cat.c
+++ b/src/cat.c
@@ -654,7 +654,8 @@ main (int argc, char **argv)
         files cannot be redirected to themselves.  */
 
       if (check_redirection
-         && stat_buf.st_dev == out_dev && stat_buf.st_ino == out_ino)
+         && stat_buf.st_dev == out_dev && stat_buf.st_ino == out_ino
+         && (input_desc != fileno (stdin) || output_desc != fileno (stdout)))
        {
          error (0, 0, _("%s: input file is output file"), infile);
          exit_stat = 1;