version 1.122, 2021/02/18 00:30:17 |
version 1.123, 2021/03/16 06:15:43 |
|
|
status = SSH2_FX_FAILURE; |
status = SSH2_FX_FAILURE; |
else { |
else { |
if (!(handle_to_flags(handle) & O_APPEND) && |
if (!(handle_to_flags(handle) & O_APPEND) && |
lseek(fd, off, SEEK_SET) == -1) { |
lseek(fd, off, SEEK_SET) == -1) { |
status = errno_to_portable(errno); |
status = errno_to_portable(errno); |
error_f("seek failed"); |
error_f("seek \"%.100s\": %s", handle_to_name(handle), |
|
strerror(errno)); |
} else { |
} else { |
/* XXX ATOMICIO ? */ |
/* XXX ATOMICIO ? */ |
ret = write(fd, data, len); |
ret = write(fd, data, len); |
if (ret == -1) { |
if (ret == -1) { |
error_f("write: %s", strerror(errno)); |
|
status = errno_to_portable(errno); |
status = errno_to_portable(errno); |
|
error_f("write \"%.100s\": %s", |
|
handle_to_name(handle), strerror(errno)); |
} else if ((size_t)ret == len) { |
} else if ((size_t)ret == len) { |
status = SSH2_FX_OK; |
status = SSH2_FX_OK; |
handle_update_write(handle, ret); |
handle_update_write(handle, ret); |