VError XLinuxFileDesc::SetSize(sLONG8 inSize) const
{
	if(!IsValid())
		return VE_INVALID_PARAMETER;

	//Shall fail if fFd is not in write-mode. Although we could check that, I prefer to report the system error.
	ResizeHelper rszHlp;
	
	return rszHlp.Resize(fFd, inSize);
}
Example #2
0
VError CopyHelper::DoCopy()
{
    ResizeHelper dstRszHlp;

    VError verr=dstRszHlp.Resize(fDstFd, fSrcSize);

    if(verr!=VE_OK)
        return verr;

    MapHelper srcMapHlp;

    verr=srcMapHlp.Map(fSrcFd, fSrcSize);

    if(verr!=VE_OK)
        return verr;

    void* srcAddr=srcMapHlp.GetAddr();

    MapHelper dstMapHlp;

    verr=dstMapHlp.SetProtection(MapHelper::WRITE).Map(fDstFd, fSrcSize);

    if(verr!=VE_OK)
    {
        srcMapHlp.UnMap();
        return verr;
    }

    void* dstAddr=dstMapHlp.GetAddr();

    memcpy(dstAddr, srcAddr, fSrcSize);

    srcMapHlp.UnMap();
    dstMapHlp.UnMap();

    return verr;
}