[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: sftp_read receives EOF on second call for a 24kb file
[Thread Prev] | [Thread Next]
- Subject: Re: sftp_read receives EOF on second call for a 24kb file
- From: Aris Adamantiadis <aris@xxxxxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Wed, 23 Oct 2013 13:46:57 +0200
- To: libssh@xxxxxxxxxx
Hi Andreas,
I think Kevin complained that sftp_read returned an EOF condition when
the file was not fully read, and if it does it's a bug in libssh.
Aris
Le 23/10/13 09:53, Andreas Schneider a écrit :
> On Tuesday 22 October 2013 18:58:17 Darren wrote:
>> Hi Kevin,
>>
>> Assuming remote to local transfer:
>>
>> You read the first chunk of data, and use sftp_seek to move the file pointer
>>
>
> There is absolutely no need to call sftp_seek() you only need it if you resume
> a transfer. The API works the same way as the POSIX API. Files should be
> transferred in small chunks.
>
> #define MAX_XFER_BUF_SIZE 16384
>
> char buf[MAX_XFER_BUF_SIZE];
>
> file = sftp_open(sftp, path, O_RDONLY, 0);
>
> for (;;) {
> bytesread = sftp_read(file, buf, MAX_XFER_BUF_SIZE);
> if (bytesread == 0) {
> break; /* EOF */
> } else if (bytesread < 0) {
> /* ERROR HANDLING */
> }
>
> byteswritten = write(fd, buf, MAX_XFER_BUF_SIZE)
> if (byteswritten != bytesread) {
> /* ERROR */
> }
> }
>
> This way I can transfer files which are several gigabyte of size.
>
>
> -- andreas
>
| RE: sftp_read receives EOF on second call for a 24kb file | "Kevin Lambert" <klambert@xxxxxxxxx> |
| Re: sftp_read receives EOF on second call for a 24kb file | Andreas Schneider <asn@xxxxxxxxxxxxxx> |
| Re: sftp_read receives EOF on second call for a 24kb file | Darren <d.tomlin@xxxxxxxxxxxx> |
| Re: sftp_read receives EOF on second call for a 24kb file | Andreas Schneider <asn@xxxxxxxxxxxxxx> |