version 1.133, 2019/01/24 16:52:17 |
version 1.134, 2019/07/12 03:56:21 |
|
|
struct sshbuf *msg; |
struct sshbuf *msg; |
u_char *handle; |
u_char *handle; |
int local_fd = -1, write_error; |
int local_fd = -1, write_error; |
int read_error, write_errno, reordered = 0, r; |
int read_error, write_errno, lmodified = 0, reordered = 0, r; |
u_int64_t offset = 0, size, highwater; |
u_int64_t offset = 0, size, highwater; |
u_int mode, id, buflen, num_req, max_req, status = SSH2_FX_OK; |
u_int mode, id, buflen, num_req, max_req, status = SSH2_FX_OK; |
off_t progress_counter; |
off_t progress_counter; |
|
|
if (len > req->len) |
if (len > req->len) |
fatal("Received more data than asked for " |
fatal("Received more data than asked for " |
"%zu > %zu", len, req->len); |
"%zu > %zu", len, req->len); |
|
lmodified = 1; |
if ((lseek(local_fd, req->offset, SEEK_SET) == -1 || |
if ((lseek(local_fd, req->offset, SEEK_SET) == -1 || |
atomicio(vwrite, local_fd, data, len) != len) && |
atomicio(vwrite, local_fd, data, len) != len) && |
!write_error) { |
!write_error) { |
|
|
error("Can't set times on \"%s\": %s", |
error("Can't set times on \"%s\": %s", |
local_path, strerror(errno)); |
local_path, strerror(errno)); |
} |
} |
if (fsync_flag) { |
if (resume_flag && !lmodified) |
|
logit("File \"%s\" was not modified", local_path); |
|
else if (fsync_flag) { |
debug("syncing \"%s\"", local_path); |
debug("syncing \"%s\"", local_path); |
if (fsync(local_fd) == -1) |
if (fsync(local_fd) == -1) |
error("Couldn't sync file \"%s\": %s", |
error("Couldn't sync file \"%s\": %s", |