Index: src/diff.c =================================================================== RCS file: /sources/diffutils/diffutils/src/diff.c,v retrieving revision 1.47 diff -u -r1.47 diff.c --- src/diff.c 5 Dec 2007 07:24:14 -0000 1.47 +++ src/diff.c 11 Apr 2009 11:56:31 -0000 @@ -1081,7 +1081,13 @@ { cmp.file[f].desc = STDIN_FILENO; if (binary && ! isatty (STDIN_FILENO)) - freopen (NULL, "rb", stdin); + { + /* Try to change stdin to binary mode */ + if (!freopen (NULL, "rb", stdin)) + cmp.file[f].desc = ERRNO_ENCODE (errno); + } + if (0 > ERRNO_DECODE (cmp.file[f].desc)) + { if (fstat (STDIN_FILENO, &cmp.file[f].stat) != 0) cmp.file[f].desc = ERRNO_ENCODE (errno); else @@ -1101,6 +1107,7 @@ set_mtime_to_now (&cmp.file[f].stat); } } + } else if (stat (cmp.file[f].name, &cmp.file[f].stat) != 0) cmp.file[f].desc = ERRNO_ENCODE (errno); }