]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
(tail_lines, tail_bytes) [O_BINARY]: Use binary I/O when appropriate.
authorJim Meyering <jim@meyering.net>
Fri, 1 Jan 1999 22:48:03 +0000 (22:48 +0000)
committerJim Meyering <jim@meyering.net>
Fri, 1 Jan 1999 22:48:03 +0000 (22:48 +0000)
src/tail.c

index e5e4e852d51cd38e281b484482565499a396701b..d6dac195cd5def1aebb4433931873e95c8f0af68 100644 (file)
@@ -1,5 +1,5 @@
 /* tail -- output the last part of file(s)
-   Copyright (C) 89, 90, 91, 95, 96, 1997, 1998, 1999 Free Software Foundation, Inc.
+   Copyright (C) 89, 90, 91, 1995-1998, 1999 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -838,6 +838,10 @@ tail_bytes (const char *pretty_filename, int fd, off_t n_bytes)
 {
   struct stat stats;
 
+  /* We need binary input, since `tail' relies on `lseek' and byte counts,
+     while binary output will preserve the style (Unix/DOS) of text file.  */
+  SET_BINARY2 (fd, STDOUT_FILENO);
+
   /* FIXME: resolve this like in dd.c.  */
   /* Use fstat instead of checking for errno == ESPIPE because
      lseek doesn't work on some special files but doesn't return an
@@ -915,6 +919,10 @@ tail_lines (const char *pretty_filename, int fd, long int n_lines)
   struct stat stats;
   off_t length;
 
+  /* We need binary input, since `tail' relies on `lseek' and byte counts,
+     while binary output will preserve the style (Unix/DOS) of text file.  */
+  SET_BINARY2 (fd, STDOUT_FILENO);
+
   if (fstat (fd, &stats))
     {
       error (0, errno, "%s", pretty_filename);