diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2005-07-11 18:25:23 +0000 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2005-07-11 18:25:23 +0000 |
commit | ed0dda33d553bfd17338d4bd9ccd6a8bd61489bd (patch) | |
tree | f3a23bbaed7f39870d0e6cae0fced9b9d31b82a2 /src | |
parent | b2b2956e017305410b463ee04d73aa069f1d0836 (diff) | |
download | coreutils-ed0dda33d553bfd17338d4bd9ccd6a8bd61489bd.tar.xz |
(bsd_sum_file, sysv_sym_file):
Avoid setmode; use POSIX-specified routines instead.
Diffstat (limited to 'src')
-rw-r--r-- | src/sum.c | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -97,18 +97,18 @@ bsd_sum_file (const char *file, int print_name) { fp = stdin; have_read_stdin = true; + if (O_BINARY && ! isatty (STDIN_FILENO)) + freopen (NULL, "rb", stdin); } else { - fp = fopen (file, "r"); + fp = fopen (file, (O_BINARY ? "rb" : "r")); if (fp == NULL) { error (0, errno, "%s", file); return false; } } - /* Need binary I/O, or else byte counts and checksums are incorrect. */ - SET_BINARY (fileno(fp)); while ((ch = getc (fp)) != EOF) { @@ -165,18 +165,18 @@ sysv_sum_file (const char *file, int print_name) { fd = STDIN_FILENO; have_read_stdin = true; + if (O_BINARY && ! isatty (STDIN_FILENO)) + freopen (NULL, "rb", stdin); } else { - fd = open (file, O_RDONLY); + fd = open (file, O_RDONLY | O_BINARY); if (fd == -1) { error (0, errno, "%s", file); return false; } } - /* Need binary I/O, or else byte counts and checksums are incorrect. */ - SET_BINARY (fd); while (1) { |