gzip: update to 1.10

Message ID 2217ac6a-ba2c-9e04-59fd-311fdd6c69cb@ipfire.org
State Accepted
Headers
Series gzip: update to 1.10 |

Commit Message

Peter Müller June 2, 2021, 5:53 p.m. UTC
  Relevant excerpt from Changelog as per
https://savannah.gnu.org/forum/forum.php?forum_id=9339:

NEWS

* Noteworthy changes in release 1.10 (2018-12-29) [stable]

** Changes in behavior

  Compressed gzip output no longer contains the current time as a
  timestamp when the input is not a regular file.  Instead, the output
  contains a null (zero) timestamp.  This makes gzip's behavior more
  reproducible when used as part of a pipeline.  (As a reminder, even
  regular files will use null timestamps after the year 2106, due to a
  limitation in the gzip format.)

** Bug fixes

  A use of uninitialized memory on some malformed inputs has been fixed.
  [bug present since the beginning]

  A few theoretical race conditions in signal handers have been fixed.
  These bugs most likely do not happen on practical platforms.
  [bugs present since the beginning]

In addition, gzip 1.10 comes with the GNU library patch applied, so
there is no need to carry this file around any more.

Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
---
 lfs/gzip                          |   7 +-
 src/patches/gzip-1.9-gnulib.patch | 189 ------------------------------
 2 files changed, 3 insertions(+), 193 deletions(-)
 delete mode 100644 src/patches/gzip-1.9-gnulib.patch
  

Comments

Adolf Belka June 3, 2021, 12:27 p.m. UTC | #1
Reviewed-by Adolf Belka <adolf.belka@ipfire.org>

On 02/06/2021 19:53, Peter Müller wrote:
> Relevant excerpt from Changelog as per
> https://savannah.gnu.org/forum/forum.php?forum_id=9339:
>
> NEWS
>
> * Noteworthy changes in release 1.10 (2018-12-29) [stable]
>
> ** Changes in behavior
>
>    Compressed gzip output no longer contains the current time as a
>    timestamp when the input is not a regular file.  Instead, the output
>    contains a null (zero) timestamp.  This makes gzip's behavior more
>    reproducible when used as part of a pipeline.  (As a reminder, even
>    regular files will use null timestamps after the year 2106, due to a
>    limitation in the gzip format.)
>
> ** Bug fixes
>
>    A use of uninitialized memory on some malformed inputs has been fixed.
>    [bug present since the beginning]
>
>    A few theoretical race conditions in signal handers have been fixed.
>    These bugs most likely do not happen on practical platforms.
>    [bugs present since the beginning]
>
> In addition, gzip 1.10 comes with the GNU library patch applied, so
> there is no need to carry this file around any more.
>
> Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
> ---
>   lfs/gzip                          |   7 +-
>   src/patches/gzip-1.9-gnulib.patch | 189 ------------------------------
>   2 files changed, 3 insertions(+), 193 deletions(-)
>   delete mode 100644 src/patches/gzip-1.9-gnulib.patch
>
> diff --git a/lfs/gzip b/lfs/gzip
> index eeea99dbe..ae8bee05f 100644
> --- a/lfs/gzip
> +++ b/lfs/gzip
> @@ -1,7 +1,7 @@
>   ###############################################################################
>   #                                                                             #
>   # IPFire.org - A linux based firewall                                         #
> -# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
> +# Copyright (C) 2007-2021  IPFire Team  <info@ipfire.org>                     #
>   #                                                                             #
>   # 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        #
> @@ -24,7 +24,7 @@
>   
>   include Config
>   
> -VER        = 1.9
> +VER        = 1.10
>   
>   THISAPP    = gzip-$(VER)
>   DL_FILE    = $(THISAPP).tar.xz
> @@ -54,7 +54,7 @@ objects = $(DL_FILE)
>   
>   $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
>   
> -$(DL_FILE)_MD5 = 9492c6ccb2239ff679a5475a7bb543ed
> +$(DL_FILE)_MD5 = 691b1221694c3394f1c537df4eee39d3
>   
>   install : $(TARGET)
>   
> @@ -84,7 +84,6 @@ $(subst %,%_MD5,$(objects)) :
>   $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
>   	@$(PREBUILD)
>   	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
> -	cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/gzip-1.9-gnulib.patch
>   	cd $(DIR_APP) && ./configure $(EXTRA_CONFIG)
>   	cd $(DIR_APP) && make $(MAKETUNING)
>   	cd $(DIR_APP) && make install
> diff --git a/src/patches/gzip-1.9-gnulib.patch b/src/patches/gzip-1.9-gnulib.patch
> deleted file mode 100644
> index 68e8d518a..000000000
> --- a/src/patches/gzip-1.9-gnulib.patch
> +++ /dev/null
> @@ -1,189 +0,0 @@
> -From 1831628c0630ae96a43586b2a25ca51cbdba3e53 Mon Sep 17 00:00:00 2001
> -From: Paul Eggert <address@hidden>
> -Date: Mon, 5 Mar 2018 10:56:29 -0800
> -Subject: [PATCH] fflush: adjust to glibc 2.28 libio.h removal
> -MIME-Version: 1.0
> -Content-Type: text/plain; charset=UTF-8
> -Content-Transfer-Encoding: 8bit
> -
> -Problem reported by Daniel P. Berrangé in:
> -https://lists.gnu.org/r/bug-gnulib/2018-03/msg00000.html
> -* lib/fbufmode.c (fbufmode):
> -* lib/fflush.c (clear_ungetc_buffer_preserving_position)
> -(disable_seek_optimization, rpl_fflush):
> -* lib/fpending.c (__fpending):
> -* lib/fpurge.c (fpurge):
> -* lib/freadable.c (freadable):
> -* lib/freadahead.c (freadahead):
> -* lib/freading.c (freading):
> -* lib/freadptr.c (freadptr):
> -* lib/freadseek.c (freadptrinc):
> -* lib/fseeko.c (fseeko):
> -* lib/fseterr.c (fseterr):
> -* lib/fwritable.c (fwritable):
> -* lib/fwriting.c (fwriting):
> -Check _IO_EOF_SEEN instead of _IO_ftrylockfile.
> -* lib/stdio-impl.h (_IO_IN_BACKUP) [_IO_EOF_SEEN]:
> -Define if not already defined.
> ----
> - ChangeLog        | 23 +++++++++++++++++++++++
> - lib/fbufmode.c   |  2 +-
> - lib/fflush.c     |  6 +++---
> - lib/fpending.c   |  2 +-
> - lib/fpurge.c     |  2 +-
> - lib/freadable.c  |  2 +-
> - lib/freadahead.c |  2 +-
> - lib/freading.c   |  2 +-
> - lib/freadptr.c   |  2 +-
> - lib/freadseek.c  |  2 +-
> - lib/fseeko.c     |  4 ++--
> - lib/fseterr.c    |  2 +-
> - lib/fwritable.c  |  2 +-
> - lib/fwriting.c   |  2 +-
> - lib/stdio-impl.h |  6 ++++++
> - 15 files changed, 45 insertions(+), 16 deletions(-)
> -
> -diff --git a/ChangeLog b/ChangeLog
> -index 667f91663..beb835670 100644
> ---- a/ChangeLog
> -+++ b/ChangeLog
> -@@ -1,3 +1,26 @@
> -+2018-03-05  Paul Eggert  <address@hidden>
> -+
> -+	fflush: adjust to glibc 2.28 libio.h removal
> -+	Problem reported by Daniel P. Berrangé in:
> -+	https://lists.gnu.org/r/bug-gnulib/2018-03/msg00000.html
> -+	* lib/fbufmode.c (fbufmode):
> -+	* lib/fflush.c (clear_ungetc_buffer_preserving_position)
> -+	(disable_seek_optimization, rpl_fflush):
> -+	* lib/fpending.c (__fpending):
> -+	* lib/fpurge.c (fpurge):
> -+	* lib/freadable.c (freadable):
> -+	* lib/freadahead.c (freadahead):
> -+	* lib/freading.c (freading):
> -+	* lib/freadptr.c (freadptr):
> -+	* lib/freadseek.c (freadptrinc):
> -+	* lib/fseeko.c (fseeko):
> -+	* lib/fseterr.c (fseterr):
> -+	* lib/fwritable.c (fwritable):
> -+	* lib/fwriting.c (fwriting):
> -+	Check _IO_EOF_SEEN instead of _IO_ftrylockfile.
> -+	* lib/stdio-impl.h (_IO_IN_BACKUP) [_IO_EOF_SEEN]:
> -+	Define if not already defined.
> -+
> - 2018-01-07  Jim Meyering  <meyering@fb.com>
> -
> - 	version 1.9
> - 	* NEWS: Record release date.
> -diff --git a/lib/fflush.c b/lib/fflush.c
> -index 983ade0ff..a6edfa105 100644
> ---- a/lib/fflush.c
> -+++ b/lib/fflush.c
> -@@ -33,7 +33,7 @@
> - #undef fflush
> -
> -
> --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
> -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
> -
> - /* Clear the stream's ungetc buffer, preserving the value of ftello (fp).  */
> - static void
> -@@ -72,7 +72,7 @@ clear_ungetc_buffer (FILE *fp)
> -
> - #endif
> -
> --#if ! (defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */)
> -+#if ! (defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */)
> -
> - # if (defined __sferror || defined __DragonFly__ || defined __ANDROID__) && defined __SNPT
> - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */
> -@@ -148,7 +148,7 @@ rpl_fflush (FILE *stream)
> -   if (stream == NULL || ! freading (stream))
> -     return fflush (stream);
> -
> --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
> -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
> -
> -   clear_ungetc_buffer_preserving_position (stream);
> -
> -diff --git a/lib/fpurge.c b/lib/fpurge.c
> -index b1d417c7a..3aedcc373 100644
> ---- a/lib/fpurge.c
> -+++ b/lib/fpurge.c
> -@@ -62,7 +62,7 @@ fpurge (FILE *fp)
> -   /* Most systems provide FILE as a struct and the necessary bitmask in
> -      <stdio.h>, because they need it for implementing getc() and putc() as
> -      fast macros.  */
> --# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
> -+# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
> -   fp->_IO_read_end = fp->_IO_read_ptr;
> -   fp->_IO_write_ptr = fp->_IO_write_base;
> -   /* Avoid memory leak when there is an active ungetc buffer.  */
> -diff --git a/lib/freading.c b/lib/freading.c
> -index 73c28acdd..c24d0c88a 100644
> ---- a/lib/freading.c
> -+++ b/lib/freading.c
> -@@ -31,7 +31,7 @@ freading (FILE *fp)
> -   /* Most systems provide FILE as a struct and the necessary bitmask in
> -      <stdio.h>, because they need it for implementing getc() and putc() as
> -      fast macros.  */
> --# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
> -+# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
> -   return ((fp->_flags & _IO_NO_WRITES) != 0
> -           || ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0
> -               && fp->_IO_read_base != NULL));
> -diff --git a/lib/fseeko.c b/lib/fseeko.c
> -index 0101ab55f..193f4e8ce 100644
> ---- a/lib/fseeko.c
> -+++ b/lib/fseeko.c
> -@@ -47,7 +47,7 @@ fseeko (FILE *fp, off_t offset, int whence)
> - #endif
> -
> -   /* These tests are based on fpurge.c.  */
> --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
> -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
> -   if (fp->_IO_read_end == fp->_IO_read_ptr
> -       && fp->_IO_write_ptr == fp->_IO_write_base
> -       && fp->_IO_save_base == NULL)
> -@@ -123,7 +123,7 @@ fseeko (FILE *fp, off_t offset, int whence)
> -           return -1;
> -         }
> -
> --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
> -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
> -       fp->_flags &= ~_IO_EOF_SEEN;
> -       fp->_offset = pos;
> - #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
> -diff --git a/lib/fseterr.c b/lib/fseterr.c
> -index 82649c3ac..adb637256 100644
> ---- a/lib/fseterr.c
> -+++ b/lib/fseterr.c
> -@@ -29,7 +29,7 @@ fseterr (FILE *fp)
> -   /* Most systems provide FILE as a struct and the necessary bitmask in
> -      <stdio.h>, because they need it for implementing getc() and putc() as
> -      fast macros.  */
> --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
> -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
> -   fp->_flags |= _IO_ERR_SEEN;
> - #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
> -   /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */
> -diff --git a/lib/stdio-impl.h b/lib/stdio-impl.h
> -index 78d896e9f..05c5752a2 100644
> ---- a/lib/stdio-impl.h
> -+++ b/lib/stdio-impl.h
> -@@ -18,6 +18,12 @@
> -    the same implementation of stdio extension API, except that some fields
> -    have different naming conventions, or their access requires some casts.  */
> -
> -+/* Glibc 2.28 made _IO_IN_BACKUP private.  For now, work around this
> -+   problem by defining it ourselves.  FIXME: Do not rely on glibc
> -+   internals.  */
> -+#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN
> -+# define _IO_IN_BACKUP 0x100
> -+#endif
> -
> - /* BSD stdio derived implementations.  */
> -
> ---
> -2.14.3
> -
  

Patch

diff --git a/lfs/gzip b/lfs/gzip
index eeea99dbe..ae8bee05f 100644
--- a/lfs/gzip
+++ b/lfs/gzip
@@ -1,7 +1,7 @@ 
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2021  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # 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        #
@@ -24,7 +24,7 @@ 
 
 include Config
 
-VER        = 1.9
+VER        = 1.10
 
 THISAPP    = gzip-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -54,7 +54,7 @@  objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 9492c6ccb2239ff679a5475a7bb543ed
+$(DL_FILE)_MD5 = 691b1221694c3394f1c537df4eee39d3
 
 install : $(TARGET)
 
@@ -84,7 +84,6 @@  $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 	@$(PREBUILD)
 	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
-	cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/gzip-1.9-gnulib.patch
 	cd $(DIR_APP) && ./configure $(EXTRA_CONFIG)
 	cd $(DIR_APP) && make $(MAKETUNING)
 	cd $(DIR_APP) && make install
diff --git a/src/patches/gzip-1.9-gnulib.patch b/src/patches/gzip-1.9-gnulib.patch
deleted file mode 100644
index 68e8d518a..000000000
--- a/src/patches/gzip-1.9-gnulib.patch
+++ /dev/null
@@ -1,189 +0,0 @@ 
-From 1831628c0630ae96a43586b2a25ca51cbdba3e53 Mon Sep 17 00:00:00 2001
-From: Paul Eggert <address@hidden>
-Date: Mon, 5 Mar 2018 10:56:29 -0800
-Subject: [PATCH] fflush: adjust to glibc 2.28 libio.h removal
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Problem reported by Daniel P. Berrangé in:
-https://lists.gnu.org/r/bug-gnulib/2018-03/msg00000.html
-* lib/fbufmode.c (fbufmode):
-* lib/fflush.c (clear_ungetc_buffer_preserving_position)
-(disable_seek_optimization, rpl_fflush):
-* lib/fpending.c (__fpending):
-* lib/fpurge.c (fpurge):
-* lib/freadable.c (freadable):
-* lib/freadahead.c (freadahead):
-* lib/freading.c (freading):
-* lib/freadptr.c (freadptr):
-* lib/freadseek.c (freadptrinc):
-* lib/fseeko.c (fseeko):
-* lib/fseterr.c (fseterr):
-* lib/fwritable.c (fwritable):
-* lib/fwriting.c (fwriting):
-Check _IO_EOF_SEEN instead of _IO_ftrylockfile.
-* lib/stdio-impl.h (_IO_IN_BACKUP) [_IO_EOF_SEEN]:
-Define if not already defined.
----
- ChangeLog        | 23 +++++++++++++++++++++++
- lib/fbufmode.c   |  2 +-
- lib/fflush.c     |  6 +++---
- lib/fpending.c   |  2 +-
- lib/fpurge.c     |  2 +-
- lib/freadable.c  |  2 +-
- lib/freadahead.c |  2 +-
- lib/freading.c   |  2 +-
- lib/freadptr.c   |  2 +-
- lib/freadseek.c  |  2 +-
- lib/fseeko.c     |  4 ++--
- lib/fseterr.c    |  2 +-
- lib/fwritable.c  |  2 +-
- lib/fwriting.c   |  2 +-
- lib/stdio-impl.h |  6 ++++++
- 15 files changed, 45 insertions(+), 16 deletions(-)
-
-diff --git a/ChangeLog b/ChangeLog
-index 667f91663..beb835670 100644
---- a/ChangeLog
-+++ b/ChangeLog
-@@ -1,3 +1,26 @@
-+2018-03-05  Paul Eggert  <address@hidden>
-+
-+	fflush: adjust to glibc 2.28 libio.h removal
-+	Problem reported by Daniel P. Berrangé in:
-+	https://lists.gnu.org/r/bug-gnulib/2018-03/msg00000.html
-+	* lib/fbufmode.c (fbufmode):
-+	* lib/fflush.c (clear_ungetc_buffer_preserving_position)
-+	(disable_seek_optimization, rpl_fflush):
-+	* lib/fpending.c (__fpending):
-+	* lib/fpurge.c (fpurge):
-+	* lib/freadable.c (freadable):
-+	* lib/freadahead.c (freadahead):
-+	* lib/freading.c (freading):
-+	* lib/freadptr.c (freadptr):
-+	* lib/freadseek.c (freadptrinc):
-+	* lib/fseeko.c (fseeko):
-+	* lib/fseterr.c (fseterr):
-+	* lib/fwritable.c (fwritable):
-+	* lib/fwriting.c (fwriting):
-+	Check _IO_EOF_SEEN instead of _IO_ftrylockfile.
-+	* lib/stdio-impl.h (_IO_IN_BACKUP) [_IO_EOF_SEEN]:
-+	Define if not already defined.
-+
- 2018-01-07  Jim Meyering  <meyering@fb.com>
- 
- 	version 1.9
- 	* NEWS: Record release date.
-diff --git a/lib/fflush.c b/lib/fflush.c
-index 983ade0ff..a6edfa105 100644
---- a/lib/fflush.c
-+++ b/lib/fflush.c
-@@ -33,7 +33,7 @@
- #undef fflush
- 
- 
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
- 
- /* Clear the stream's ungetc buffer, preserving the value of ftello (fp).  */
- static void
-@@ -72,7 +72,7 @@ clear_ungetc_buffer (FILE *fp)
- 
- #endif
- 
--#if ! (defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */)
-+#if ! (defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */)
- 
- # if (defined __sferror || defined __DragonFly__ || defined __ANDROID__) && defined __SNPT
- /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */
-@@ -148,7 +148,7 @@ rpl_fflush (FILE *stream)
-   if (stream == NULL || ! freading (stream))
-     return fflush (stream);
- 
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
- 
-   clear_ungetc_buffer_preserving_position (stream);
- 
-diff --git a/lib/fpurge.c b/lib/fpurge.c
-index b1d417c7a..3aedcc373 100644
---- a/lib/fpurge.c
-+++ b/lib/fpurge.c
-@@ -62,7 +62,7 @@ fpurge (FILE *fp)
-   /* Most systems provide FILE as a struct and the necessary bitmask in
-      <stdio.h>, because they need it for implementing getc() and putc() as
-      fast macros.  */
--# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-   fp->_IO_read_end = fp->_IO_read_ptr;
-   fp->_IO_write_ptr = fp->_IO_write_base;
-   /* Avoid memory leak when there is an active ungetc buffer.  */
-diff --git a/lib/freading.c b/lib/freading.c
-index 73c28acdd..c24d0c88a 100644
---- a/lib/freading.c
-+++ b/lib/freading.c
-@@ -31,7 +31,7 @@ freading (FILE *fp)
-   /* Most systems provide FILE as a struct and the necessary bitmask in
-      <stdio.h>, because they need it for implementing getc() and putc() as
-      fast macros.  */
--# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-   return ((fp->_flags & _IO_NO_WRITES) != 0
-           || ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0
-               && fp->_IO_read_base != NULL));
-diff --git a/lib/fseeko.c b/lib/fseeko.c
-index 0101ab55f..193f4e8ce 100644
---- a/lib/fseeko.c
-+++ b/lib/fseeko.c
-@@ -47,7 +47,7 @@ fseeko (FILE *fp, off_t offset, int whence)
- #endif
- 
-   /* These tests are based on fpurge.c.  */
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-   if (fp->_IO_read_end == fp->_IO_read_ptr
-       && fp->_IO_write_ptr == fp->_IO_write_base
-       && fp->_IO_save_base == NULL)
-@@ -123,7 +123,7 @@ fseeko (FILE *fp, off_t offset, int whence)
-           return -1;
-         }
- 
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-       fp->_flags &= ~_IO_EOF_SEEN;
-       fp->_offset = pos;
- #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
-diff --git a/lib/fseterr.c b/lib/fseterr.c
-index 82649c3ac..adb637256 100644
---- a/lib/fseterr.c
-+++ b/lib/fseterr.c
-@@ -29,7 +29,7 @@ fseterr (FILE *fp)
-   /* Most systems provide FILE as a struct and the necessary bitmask in
-      <stdio.h>, because they need it for implementing getc() and putc() as
-      fast macros.  */
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-   fp->_flags |= _IO_ERR_SEEN;
- #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
-   /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */
-diff --git a/lib/stdio-impl.h b/lib/stdio-impl.h
-index 78d896e9f..05c5752a2 100644
---- a/lib/stdio-impl.h
-+++ b/lib/stdio-impl.h
-@@ -18,6 +18,12 @@
-    the same implementation of stdio extension API, except that some fields
-    have different naming conventions, or their access requires some casts.  */
- 
-+/* Glibc 2.28 made _IO_IN_BACKUP private.  For now, work around this
-+   problem by defining it ourselves.  FIXME: Do not rely on glibc
-+   internals.  */
-+#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN
-+# define _IO_IN_BACKUP 0x100
-+#endif
- 
- /* BSD stdio derived implementations.  */
- 
--- 
-2.14.3
-