From: Paul Eggert Date: Mon, 11 Jul 2005 18:25:23 +0000 (+0000) Subject: (bsd_sum_file, sysv_sym_file): X-Git-Tag: CPPI-1_12~268 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ed0dda33d553bfd17338d4bd9ccd6a8bd61489bd;p=thirdparty%2Fcoreutils.git (bsd_sum_file, sysv_sym_file): Avoid setmode; use POSIX-specified routines instead. --- diff --git a/src/sum.c b/src/sum.c index 65170aa4c9..92e4126881 100644 --- a/src/sum.c +++ b/src/sum.c @@ -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) {