LOCAL_C void GetDriveLetters() { // Assign the first drive that matches the required criteria test.Next(_L("T_DENYCLAMP - GetDriveLetters()")); TDriveList driveList; TDriveInfo driveInfo; TInt r=TheFs.DriveList(driveList); test(r==KErrNone); TInt drvNum; TBool drivesFound = EFalse; for(drvNum=0; (drvNum<KMaxDrives) && !drivesFound; drvNum++) { TChar drvLetter='?'; TFileName fileSystem; if(!driveList[drvNum]) continue; test(TheFs.Drive(driveInfo, drvNum) == KErrNone); test(TheFs.DriveToChar(drvNum,drvLetter) == KErrNone); r=TheFs.FileSystemName(fileSystem,drvNum); fileSystem.UpperCase(); test((r==KErrNone)||(r==KErrNotFound)); // Check for FAT on NAND if(NandFatDrv=='?') { if((driveInfo.iType==EMediaNANDFlash) && (fileSystem.Compare(KFATName)==0)) NandFatDrv=drvLetter; } // Check for ROFS if(RofsDrv=='?') { if((driveInfo.iType==EMediaNANDFlash) && (fileSystem.Compare(KROFSName)==0)) RofsDrv=drvLetter; } // Check for LFFS if(LffsDrv=='?') { if((driveInfo.iType==EMediaFlash) && (fileSystem.Compare(KLFFSName)==0)) LffsDrv=drvLetter; } // Check for CompFSys if(CompDrv=='?') { if((driveInfo.iType==EMediaRom) && ((fileSystem.Compare(KROMName)==0)||(fileSystem.Compare(KCOMPName)==0))) CompDrv=drvLetter; } drivesFound=((NandFatDrv!='?')&&(RofsDrv!='?')&&(LffsDrv!='?')&&(CompDrv!='?')); } if(NandFatDrv!='?') test((NandFatDrv!=RofsDrv)&&(NandFatDrv!=LffsDrv)&&(NandFatDrv!=CompDrv)); if(RofsDrv!='?') test((RofsDrv!=LffsDrv)&&(RofsDrv!=CompDrv)); if(LffsDrv!='?') test(LffsDrv!=CompDrv); RDebug::Printf("T_DENYCLAMP: FAT drive=%C, ROFS drive=%C, LFFS drive=%C, ROM-COMP drive=%C \n",(TText)NandFatDrv,(TText)RofsDrv,(TText)LffsDrv,(TText)CompDrv); return; }
// ----------------------------------------------------------------------------- // CPosLmLocalDatabaseManager::DatabaseExistsL // // (other items were commented in a header). // ----------------------------------------------------------------------------- // TBool CPosLmLocalDatabaseManager::DatabaseExistsL(const TDesC& aDatabaseUri) { // validate URI HBufC* uri = PosLmDatabaseUtility::CreateDatabaseUriL(aDatabaseUri); CleanupStack::PushL(uri); TPtrC ptr(uri->Des()); PosLmDatabaseUtility::RemoveProtocolFromUriL(ptr); TParse parse; User::LeaveIfError(parse.Set(ptr, NULL, NULL)); TFileName searchUri = parse.NameAndExt(); searchUri.UpperCase(); TInt drive; User::LeaveIfError(RFs::CharToDrive(parse.Drive()[0], drive)); RDbs dbSession; CleanupClosePushL(dbSession); User::LeaveIfError(dbSession.Connect()); CDbDatabaseNames* names = dbSession.DatabaseNamesL( static_cast<TDriveNumber>(drive), KPosLmDbSecureUid); CleanupStack::PushL(names); TBool exists(EFalse); for (TInt i = 0; i < names->Count() && !exists; i++) { HBufC* databaseName = (*names)[i].AllocLC(); databaseName->Des().UpperCase(); if (searchUri == *databaseName) { exists = ETrue; } CleanupStack::PopAndDestroy(databaseName); } CleanupStack::PopAndDestroy(3, uri); //dbSession return exists; }