33,311
社区成员
发帖
与我相关
我的任务
分享
case OP_READ:
fprintf(stderr, "A read operation is scheduled.\n");
s_con_arg->con_mode = DATA_SRC;
s_con_arg->src_addr.pathlen = s_op_head->len - OP_HEAD_SIZE;
s_con_arg->src_addr.ppath = new char [s_con_arg->src_addr.pathlen];
memcpy(s_con_arg->src_addr.ppath, ppayload, s_con_arg->src_addr.pathlen);
s_con_arg->src_addr.ppath[s_con_arg->src_addr.pathlen] = 0;
s_con_arg->fp = fopen(s_con_arg->src_addr.ppath, "r+b");
if (NULL == s_con_arg->fp)
{
fprintf(stderr, "File %s can't be opened for read.\n", s_con_arg->src_addr.ppath);
s_op_head->ret_val = OP_SRCFILEOPEN;
ret = -1;
}
else
{
fprintf(stderr, "File %s opened for read.\n", s_con_arg->src_addr.ppath);
s_con_arg->fd = open(s_con_arg->src_addr.ppath, O_RDONLY);
if (s_con_arg->fd > 0)
{
fstat(s_con_arg->fd, &(s_con_arg->fstat));
s_op_head->filelen = s_con_arg->fstat.st_size;
}
}
break;