cleanup copy codes

This commit is contained in:
Ryo Nakamura
2022-10-23 19:11:07 +09:00
parent 0213b316c5
commit e6339bf464
4 changed files with 99 additions and 65 deletions

View File

@@ -243,3 +243,40 @@ void ssh_sftp_close(sftp_session sftp)
ssh_disconnect(ssh);
ssh_free(ssh);
}
/* from libssh/src/channels.c:
*
* All implementations MUST be able to process packets with an
* uncompressed payload length of 32768 bytes or less and a total packet
* size of 35000 bytes or less.
*/
#define CHANNEL_MAX_PACKET 32768
int sftp_write2(sftp_file sf, const void *buf, size_t len)
{
int n, ret, nbytes;
for (nbytes = 0; nbytes < len;) {
ret = sftp_write(sf, buf + nbytes,
min(len - nbytes, CHANNEL_MAX_PACKET));
if (ret < 0)
return ret;
nbytes += ret;
}
return nbytes;
}
int sftp_read2(sftp_file sf, void *buf, size_t len)
{
int n, ret, nbytes;
for (nbytes = 0; nbytes < len;) {
ret = sftp_read(sf, buf + nbytes,
min(len - nbytes, CHANNEL_MAX_PACKET));
if (ret < 0)
return ret;
nbytes += ret;
}
return nbytes;
}