コード例 #1
0
ファイル: ftpdataio.c プロジェクト: Einheri/wl500g
static struct vsf_transfer_ret
do_file_send_sendfile(struct vsf_session* p_sess, int net_fd, int file_fd,
                      filesize_t curr_file_offset, filesize_t bytes_to_send)
{
  int retval;
  unsigned int chunk_size = 0;
  struct vsf_transfer_ret ret_struct = { 0, 0 };
  filesize_t init_file_offset = curr_file_offset;
  filesize_t bytes_sent;
  if (p_sess->bw_rate_max)
  {
    chunk_size = get_chunk_size();
  }
  /* Just because I can ;-) */
  retval = vsf_sysutil_sendfile(net_fd, file_fd, &curr_file_offset,
                                bytes_to_send, chunk_size);
  bytes_sent = curr_file_offset - init_file_offset;
  ret_struct.transferred = bytes_sent;
  if (vsf_sysutil_retval_is_error(retval))
  {
    ret_struct.retval = -2;
    return ret_struct;
  }
  else if (bytes_sent != bytes_to_send)
  {
    ret_struct.retval = -2;
    return ret_struct;
  }
  return ret_struct; 
}
コード例 #2
0
static struct vsf_transfer_ret
do_file_send_sendfile(struct vsf_session* p_sess, int net_fd, int file_fd,
                      filesize_t curr_file_offset, filesize_t bytes_to_send)
{
    int retval;
    unsigned int chunk_size = 0;
    struct vsf_transfer_ret ret_struct = { 0, 0 };
    filesize_t init_file_offset = curr_file_offset;
    filesize_t bytes_sent;
    if (p_sess->bw_rate_max)
    {
        chunk_size = get_chunk_size();
    }
    /* Just because I can ;-) */
    retval = vsf_sysutil_sendfile(net_fd, file_fd, &curr_file_offset,
                                  bytes_to_send, chunk_size);
    bytes_sent = curr_file_offset - init_file_offset;
    ret_struct.transferred = bytes_sent;
    if (vsf_sysutil_retval_is_error(retval))
    {
        vsf_cmdio_write(p_sess, FTP_BADSENDNET, "Failure writing network stream.");
        ret_struct.retval = -1;
        return ret_struct;
    }
    else if (bytes_sent != bytes_to_send)
    {
        vsf_cmdio_write(p_sess, FTP_BADSENDFILE,
                        "Failure writing network stream.");
        ret_struct.retval = -1;
        return ret_struct;
    }
    vsf_cmdio_write(p_sess, FTP_TRANSFEROK, "File send OK.");
    return ret_struct;
}