예제 #1
0
VError XLinuxFile::Open(const FileAccess inFileAccess, FileOpenOptions inOptions, VFileDesc** outFileDesc) const
{
	if(outFileDesc==NULL)
		return VE_INVALID_PARAMETER;

	OpenHelper opnHlp;
	FileDescSystemRef fd=-1;
	VError verr=opnHlp.SetFileAccess(inFileAccess).SetFileOpenOpts(inOptions).Open(fPath, &fd);
	
	if(verr!=VE_OK)
		return verr;

	*outFileDesc=new VFileDesc(fOwner, fd, inFileAccess);

	if(outFileDesc==NULL)
		return VE_MEMORY_FULL;

	return verr;
}
예제 #2
0
VError CopyHelper::DoInit(const PathBuffer& inSrc, const PathBuffer& inDst)
{
    OpenHelper srcOpnHlp;

    VError verr=srcOpnHlp.SetFileAccess(FA_READ).Open(inSrc, &fSrcFd);

    if(verr!=VE_OK)
        return verr;

    StatHelper srcStats;

    verr=srcStats.Stat(fSrcFd);

    if(verr!=VE_OK)
        return verr;

    fSrcSize=srcStats.GetSize();

    OpenHelper dstOpnHlp;

    verr=dstOpnHlp.SetFileAccess(FA_READ_WRITE).SetFileOpenOpts(FO_CreateIfNotFound).Open(inDst, &fDstFd);

    return verr;
}