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 [thread overview]
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
next reply other threads:[~2019-08-14 16:45 UTC|newest]
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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox