mirror of https://git.tukaani.org/xz.git
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
|
@ -442,7 +442,7 @@ io_open_src_real(file_pair *pair)
|
|||
|
||||
flags &= ~O_NONBLOCK;
|
||||
|
||||
if (fcntl(pair->src_fd, F_SETFL, flags))
|
||||
if (fcntl(pair->src_fd, F_SETFL, flags) == -1)
|
||||
goto error_msg;
|
||||
}
|
||||
#endif
|
||||
|
@ -658,7 +658,8 @@ io_open_dest_real(file_pair *pair)
|
|||
return false;
|
||||
|
||||
if (fcntl(STDOUT_FILENO, F_SETFL,
|
||||
stdout_flags & ~O_APPEND))
|
||||
stdout_flags & ~O_APPEND)
|
||||
== -1)
|
||||
return false;
|
||||
|
||||
// Disabling O_APPEND succeeded. Mark
|
||||
|
@ -708,10 +709,9 @@ io_close_dest(file_pair *pair, bool success)
|
|||
if (restore_stdout_flags) {
|
||||
assert(pair->dest_fd == STDOUT_FILENO);
|
||||
|
||||
const int fail = fcntl(STDOUT_FILENO, F_SETFL, stdout_flags);
|
||||
restore_stdout_flags = false;
|
||||
|
||||
if (fail) {
|
||||
if (fcntl(STDOUT_FILENO, F_SETFL, stdout_flags) == -1) {
|
||||
message_error(_("Error restoring the O_APPEND flag "
|
||||
"to standard output: %s"),
|
||||
strerror(errno));
|
||||
|
|
Loading…
Reference in New Issue