mirror of
https://git.tukaani.org/xz.git
synced 2024-04-04 12:36:23 +02:00
xz: Fix error detection of fcntl(fd, F_SETFL, flags) calls.
POSIX says that fcntl(fd, F_SETFL, flags) returns -1 on error and "other than -1" on success. This is how it is documented e.g. on OpenBSD too. On Linux, success with F_SETFL is always 0 (at least accorinding to fcntl(2) from man-pages 3.51).
This commit is contained in:
parent
91750dff8f
commit
78c2f8db90
1 changed files with 4 additions and 4 deletions
|
@ -442,7 +442,7 @@ io_open_src_real(file_pair *pair)
|
||||||
|
|
||||||
flags &= ~O_NONBLOCK;
|
flags &= ~O_NONBLOCK;
|
||||||
|
|
||||||
if (fcntl(pair->src_fd, F_SETFL, flags))
|
if (fcntl(pair->src_fd, F_SETFL, flags) == -1)
|
||||||
goto error_msg;
|
goto error_msg;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -658,7 +658,8 @@ io_open_dest_real(file_pair *pair)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (fcntl(STDOUT_FILENO, F_SETFL,
|
if (fcntl(STDOUT_FILENO, F_SETFL,
|
||||||
stdout_flags & ~O_APPEND))
|
stdout_flags & ~O_APPEND)
|
||||||
|
== -1)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Disabling O_APPEND succeeded. Mark
|
// Disabling O_APPEND succeeded. Mark
|
||||||
|
@ -708,10 +709,9 @@ io_close_dest(file_pair *pair, bool success)
|
||||||
if (restore_stdout_flags) {
|
if (restore_stdout_flags) {
|
||||||
assert(pair->dest_fd == STDOUT_FILENO);
|
assert(pair->dest_fd == STDOUT_FILENO);
|
||||||
|
|
||||||
const int fail = fcntl(STDOUT_FILENO, F_SETFL, stdout_flags);
|
|
||||||
restore_stdout_flags = false;
|
restore_stdout_flags = false;
|
||||||
|
|
||||||
if (fail) {
|
if (fcntl(STDOUT_FILENO, F_SETFL, stdout_flags) == -1) {
|
||||||
message_error(_("Error restoring the O_APPEND flag "
|
message_error(_("Error restoring the O_APPEND flag "
|
||||||
"to standard output: %s"),
|
"to standard output: %s"),
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
|
|
Loading…
Reference in a new issue