Util-Linux Archive on lore.kernel.org
 help / color / Atom feed
From: Patrick Steinhardt <ps@pks.im>
To: util-linux@vger.kernel.org
Cc: Patrick Steinhardt <ps@pks.im>
Subject: [PATCH 0/4] Fix closing of standard text streams for non-glibc system
Date: Wed, 14 Aug 2019 18:45:03 +0200
Message-ID: <cover.1565800625.git.ps@pks.im> (raw)

Hi,

since commit 52aa1a661 (include/closestream: avoid close more
than once, 2019-06-13), util-linux fails to build on musl libc
based systems. The culprit here is that it introduced assignments
to stderr and stdout, while the C89 standard explicitly notes
that treating stderr and stdout as valid lvalues is not a
requirement for any conforming C implementation. musl libc
implemented these streams as `extern FILE *const`, and as a
result assigning to these variables causes compiler errors.

Attached is a fix for this. Instead of assigning `NULL` to the
streams, util-linux now uses a static variable `streams_closed`.
Unfortunately, this fix necessitated some shifting around as
closestream was previously implemented as header, only, and
implementing static variables inside of a header is not going to
work due to them being static to the single compilation unit,
only. Thus I converted the code to move the implementation into
"lib/closestream.c".

Regards
Patrick

Patrick Steinhardt (4):
  term-utils/ttymsg: fix missing header for ARRAY_SIZE macro
  login-utils/islocal: fix missing header for err macro
  lib/closestream: move implementation into its own compilation unit
  lib/closestream: fix assignment to read-only standard streams

 disk-utils/Makemodule.am                   |  2 +
 include/closestream.h                      | 90 +++-------------------
 lib/Makemodule.am                          |  1 +
 include/closestream.h => lib/closestream.c | 27 ++++---
 login-utils/Makemodule.am                  |  4 +-
 login-utils/islocal.c                      |  1 +
 misc-utils/Makemodule.am                   | 10 ++-
 sys-utils/Makemodule.am                    |  9 ++-
 term-utils/ttymsg.c                        |  1 +
 text-utils/Makemodule.am                   |  6 +-
 10 files changed, 52 insertions(+), 99 deletions(-)
 copy include/closestream.h => lib/closestream.c (75%)

-- 
2.22.1


             reply index

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-14 16:45 Patrick Steinhardt [this message]
2019-08-14 16:45 ` [PATCH 1/4] term-utils/ttymsg: fix missing header for ARRAY_SIZE macro Patrick Steinhardt
2019-08-14 16:45 ` [PATCH 2/4] login-utils/islocal: fix missing header for err macro Patrick Steinhardt
2019-08-14 16:45 ` [PATCH 3/4] lib/closestream: move implementation into its own compilation unit Patrick Steinhardt
2019-08-14 16:45 ` [PATCH 4/4] lib/closestream: fix assignment to read-only standard streams Patrick Steinhardt
2019-08-19 13:36 ` [PATCH 0/4] Fix closing of standard text streams for non-glibc system Karel Zak
2019-08-20 13:17   ` Patrick Steinhardt
2019-08-20 15:04     ` Karel Zak
2019-08-20 15:11       ` Florian Weimer
2019-08-23 11:52       ` Karel Zak
2019-08-22  9:40 ` [PATCH v2] include/closestream: fix assignment to read-only standard streams Patrick Steinhardt
2019-08-23 12:00   ` Karel Zak
2019-09-02 10:01   ` Karel Zak

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cover.1565800625.git.ps@pks.im \
    --to=ps@pks.im \
    --cc=util-linux@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Util-Linux Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/util-linux/0 util-linux/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 util-linux util-linux/ https://lore.kernel.org/util-linux \
		util-linux@vger.kernel.org
	public-inbox-index util-linux

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.util-linux


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git