コード例 #1
0
ファイル: cregen.cpp プロジェクト: kuailexs/symbiandump-os2
void CCreGenerator::CreateReposFromCreL(RFs& aFs,CHeapRepository& aRep, const TDesC& aFilePath
#ifdef SYMBIAN_CENTREP_SUPPORT_MULTIROFS
                                        ,TUint8& aCreVersion
#endif
                                       )
{
    RFile file;
    TInt err = file.Open(aFs,aFilePath,EFileRead|EFileShareReadersOnly);

    if (err != KErrNone)
    {
        if(err ==KErrNotFound || err==KErrPathNotFound)
            User::Leave(KErrNotFound);
        else
            User::Leave(err);
    }

    CleanupClosePushL(file);

    CDirectFileStore* store = CDirectFileStore::FromLC (file);
    if(store->Type()[0] != KDirectFileStoreLayoutUid)
    {
        User::Leave(KErrCorrupt);
    }

    // Get the root stream and attempt to read the index from it
    TStreamId rootStreamId = store->Root() ;
    RStoreReadStream rootStream ;
    rootStream.OpenLC(*store, rootStreamId);
    // Internalize the repository
    InternalizeCreL(aRep, rootStream
#ifdef SYMBIAN_CENTREP_SUPPORT_MULTIROFS
                    ,aCreVersion
#endif
                   );
    CleanupStack::PopAndDestroy(3, &file);
}