In musl stdout, stdin and stderr are read-only unlike in glibc. This patch changes std* = fopen(...) to freopen(..., std*). See: https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html and https://wiki.gentoo.org/wiki/User:Sam/Musl_porting_notes --- tools/lvmcmdline.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c index 1e12bed..19da1e5 100644 --- a/tools/lvmcmdline.c +++ b/tools/lvmcmdline.c @@ -3384,7 +3384,7 @@ static int _check_standard_fds(void) int err = is_valid_fd(STDERR_FILENO); if (!is_valid_fd(STDIN_FILENO) && - !(stdin = fopen(_PATH_DEVNULL, "r"))) { + !freopen(_PATH_DEVNULL, "r", stdin)) { if (err) perror("stdin stream open"); else @@ -3394,7 +3394,7 @@ static int _check_standard_fds(void) } if (!is_valid_fd(STDOUT_FILENO) && - !(stdout = fopen(_PATH_DEVNULL, "w"))) { + !freopen(_PATH_DEVNULL, "w", stdout)) { if (err) perror("stdout stream open"); /* else no stdout */ @@ -3402,7 +3402,7 @@ static int _check_standard_fds(void) } if (!is_valid_fd(STDERR_FILENO) && - !(stderr = fopen(_PATH_DEVNULL, "w"))) { + !freopen(_PATH_DEVNULL, "w", stderr)) { printf("stderr stream open: %s\n", strerror(errno)); return 0; -- 2.35.1