// ============================================================================ // Get the property descriptiont by finding entry for name. // // @param aPropName The name of the prop: <prop>propName</prop> // @since 5.0 // @return prop type. // ============================================================================ // TInt CWidgetBackupRegistryXml::GetPropertyId( const TDesC& aPropName ) { TInt i = 0; for (; i < iProperties.Count(); ++i ) { // use case insensitive match for property names if ( 0 == aPropName.CompareF( iProperties[i].name ) ) { return iProperties[i].id; } } TUint16* name = NULL; name = new TUint16 [aPropName.Length()]; if (name) { TPtr namePtr(name, aPropName.Length()); namePtr.Copy(aPropName); TWidgetProperty property; property.id = iProperties.Count(); property.name.Set( namePtr ); property.type = EWidgetPropTypeUnknown; TInt err = iProperties.Append(property); if (err == KErrNone) { return iProperties.Count() - 1; } delete name; } return EWidgetPropertyIdInvalid; }
/** Private Setter, used by the constructor and the assignment operator @param aNameRecord TNameRecord to create extended inquiry response from */ EXPORT_C void TExtendedInquiryResponseDataCodec::Set(TNameRecord& aNameRecord) { LOG_FUNC TUint8* name = (TUint8*)(aNameRecord.iName.Ptr()); TPtr8 namePtr(name, aNameRecord.iName.Size(), aNameRecord.iName.MaxSize()); iNameRecord = &aNameRecord; Set(namePtr); }
TSymbianFileEntry* CreateSymbianFileEntry(const char* name, const char* mode) { TSymbianFileEntry* fileEntry = new TSymbianFileEntry; fileEntry->_inputPos = KErrNotFound; fileEntry->_lastError = 0; fileEntry->_eofReached = EFalse; if (fileEntry != NULL) { TInt modeLen = strlen(mode); TPtrC8 namePtr((unsigned char*) name, strlen(name)); TFileName tempFileName; tempFileName.Copy(namePtr); TInt fileMode = EFileRead; if (mode[0] == 'a') fileMode = EFileWrite; if (!((modeLen > 1 && mode[1] == 'b') || (modeLen > 2 && mode[2] == 'b'))) { fileMode |= EFileStreamText; } if ((modeLen > 1 && mode[1] == '+') || (modeLen > 2 && mode[2] == '+')) { fileMode = fileMode| EFileWrite; } fileMode = fileMode| EFileShareAny; switch (mode[0]) { case 'a': if (fileEntry->_fileHandle.Open(static_cast<OSystem_SDL_Symbian *>(g_system)->FsSession(), tempFileName, fileMode) != KErrNone) { if (fileEntry->_fileHandle.Create(static_cast<OSystem_SDL_Symbian *>(g_system)->FsSession(), tempFileName, fileMode) != KErrNone) { delete fileEntry; fileEntry = NULL; } } break; case 'r': if (fileEntry->_fileHandle.Open(static_cast<OSystem_SDL_Symbian *>(g_system)->FsSession(), tempFileName, fileMode) != KErrNone) { delete fileEntry; fileEntry = NULL; } break; case 'w': if (fileEntry->_fileHandle.Replace(static_cast<OSystem_SDL_Symbian *>(g_system)->FsSession(), tempFileName, fileMode) != KErrNone) { delete fileEntry; fileEntry = NULL; } break; } } return fileEntry; }
void UPPayHttpConnection::setRequestProperty(const char *property, const char *value) { TInt len = User::StringLength((const TUint8*) property); if (!len) return; TPtr8 namePtr((TUint8 *) property, len, len); len = User::StringLength((const TUint8*) value); if (!len) return; TPtr8 valuePtr((TUint8 *) value, len, len); //CommonUtils::WriteLogL(namePtr, valuePtr); RStringF val; val = stringPool.OpenFStringL(namePtr); headers.SetRawFieldL(val, valuePtr, _L8(";")); val.Close(); }
// --------------------------------------------------------------------------- // CAppMngr2FileRecognizer::RecognizeNextFileL() // --------------------------------------------------------------------------- // void CAppMngr2FileRecognizer::RecognizeNextFileL() { if( iIndex < iDirEntries->Count() ) { // recognize the file which index is iIndex const TEntry& file = ( *iDirEntries )[ iIndex ]; HBufC* fullName = HBufC::NewLC( iDirPath->Length() + file.iName.Length() ); TPtr namePtr( fullName->Des() ); namePtr.Copy( *iDirPath ); namePtr.Append( file.iName ); ContentAccess::CContent* content = ContentAccess::CContent::NewLC( *fullName, ContentAccess::EContentShareReadWrite ); HBufC* mimeType = HBufC::NewLC( KMaxDataTypeLength ); TPtr mimePtr( mimeType->Des() ); User::LeaveIfError( content->GetStringAttribute( ContentAccess::EMimeType, mimePtr ) ); CAppMngr2RecognizedFile* recFile = CAppMngr2RecognizedFile::NewL( fullName, mimeType ); CleanupStack::Pop( mimeType ); // CAppMngr2RecognizedFile takes ownership CleanupStack::PopAndDestroy( content ); CleanupStack::Pop( fullName ); CleanupStack::PushL( recFile ); iResultArray.AppendL( recFile ); CleanupStack::Pop( recFile ); // and then recognize the next file iIndex++; SetActive(); TRequestStatus* fileStatus = &iStatus; User::RequestComplete( fileStatus, KErrNone ); } else { // all done, directory has been processed User::RequestComplete( iDirStatus, KErrNone ); iDirStatus = NULL; } }
void CTe_LbsIniFileReader::ReadExecutableNameL(TDes& aExecutableName) { TUint16* buffer = new (ELeave) TUint16[KPositionModuleMaxNameLength]; CleanupStack::PushL(buffer); TPtrC16 namePtr(reinterpret_cast<const TUint16*>(buffer),KPositionModuleMaxNameLength); TBool success = FindVar(KExecutableNameStr, namePtr); TBuf<KPositionModuleMaxNameLength> executableName; if(success) { aExecutableName.Copy(namePtr); } else { aExecutableName.Copy(KNullDesC); } CleanupStack::PopAndDestroy(buffer); }
void FileStream::open(const char* filename, bool write, bool append, bool exist) { mOpenResult = mFs.Connect(); if(mOpenResult != KErrNone) return; TPtrC8 namePtr(CBP filename); mFilename = HBufC8::New(namePtr.Length() + 1); if(!mFilename) { mOpenResult = KErrNoMemory; return; } mFilename->Des().Copy(namePtr); mFilename->Des().PtrZ(); //set the zero terminator, for getFilename(). TCleaner<HBufC16> unicodeName(CreateHBufC16FromDesC8LC(namePtr)); if(write) { if(append || exist) { LOG("AFO %s\n", filename); TSNR(mOpenResult = mFile.Open(mFs, *unicodeName, EFileShareExclusive | EFileWrite)); if(IS_SYMBIAN_ERROR(mOpenResult)) return; TInt offset = 0; if(append) { // TODO: set a flag so that every write goes to the end of the file, // even if you seek to another position. TSNR(mOpenResult = mFile.Seek(ESeekEnd, offset)); } } else { LOG("WFO %s\n", filename); TSNR(mOpenResult = mFile.Replace(mFs, *unicodeName, EFileShareExclusive | EFileWrite)); } } else { LOG("RFO %s\n", filename); TSNR(mOpenResult = mFile.Open(mFs, *unicodeName, EFileShareReadersOnly)); } }
TVerdict CAppFwkStartSafeTestStepProcStartMon::doTestStepL( void ) { CStartSafe* startSafe = CStartSafe::NewL(); CleanupStack::PushL( startSafe ); CStartupProperties* prop = CStartupProperties::NewL(); CleanupStack::PushL( prop ); RProcess proc; CleanupClosePushL( proc ); // KLaunchServerCommandLineOption makes the process listen for remote control connections prop->SetFileParamsL( KTestProcGood, KLaunchServerCommandLineOption ); prop->SetStartupType( EStartProcess ); prop->SetStartMethod( EWaitForStart ); // EFireAndForget is disallowed prop->SetMonitored( ETrue ); // the process death will be monitored prop->SetNoOfRetries( 1 ); // Must be non-zero in order to invoke a restart INFO_PRINTF1( _L("Starting the Test-process") ); TInt tried = 0; TRAPD( err, startSafe->StartAndMonitorL( *prop, proc, tried) ); User::After( KPoliteInterval ); // Produce the process-name search-term TPtrC namePtr( KTestProcGood() ); namePtr.Set( namePtr.Ptr(), namePtr.Find(_L(".")) ); // See if StartSafe thinks it's been successful _and that the process can be found. (if, line 73) // Then check to see that it has been restarted after being Kill()ed (if, line 85) if( (KErrNone == err) && ProcessExists(namePtr) ) { INFO_PRINTF2( _L("Process \"%S\" started"), &namePtr ); proc.Kill( KStartSafeTestKillCode ); proc.Close(); // Process should be restarted here User::After( KThrottleTime ); if( ProcessExists( namePtr, proc ) ) { INFO_PRINTF2( _L("Process \"%S\" REstarted successfully"), &namePtr ); // RTestProcGoodSession is used to remotely control the process, allowing this process to cancel the monitoring of the target process, // otherwise it keeps being restarted RTestProcGoodSession testProc; testProc.Connect(); testProc.CancelMonitor(); testProc.Close(); proc.Kill( KStartSafeTestFinalKillCode ); SetTestStepResult( EPass ); } else { ERR_PRINTF1( _L("Process was _not restarted") ); SetTestStepResult( EFail ); } } else { ERR_PRINTF2( _L("StartAndMonitorL left with"), err ); SetTestStepResult( EFail ); } CleanupStack::PopAndDestroy( 3, startSafe ); // proc, prop, startSafe return TestStepResult(); }
// ============================================================================ // CWidgetEntry::InternalizeXmlL() // read from persistent storage(file) // // @since 5.0 // ============================================================================ // void CWidgetEntry::InternalizeXmlL( RFs& aFileSession, xmlDocPtr aDoc, xmlNode* n, CWidgetRegistryXml* aXmlProcessor ) { // <prop>name<val>value<type>typename</type></val></prop> // // prop subtree traversal assumes strict adherence to the // prototype structure, otherwise code leaves with corrupt code for ( ; n; ) { // permit some non element stuff (comment, whitespace...) before <prop> while ( n && ( n->type != XML_ELEMENT_NODE ) ) { n = n->next; } if ( NULL == n ) { for (TInt i = iPropertyValues.Count(); i < EWidgetPropertyIdCount; i++) { CWidgetPropertyValue* val = CWidgetPropertyValue::NewL(); CleanupStack::PushL(val); iPropertyValues.AppendL( val ); CleanupStack::Pop(); // val } return; } TPtrC8 propTag( n->name ); if ( 0 != propTag.Compare( KXmlPropTag() ) ) { // TODO unrecognized subtree? return; } // TODO validate n->children != NULL and type XML_TEXT_NODE HBufC* name; aXmlProcessor->GetContentL( aFileSession, aDoc, n->children, &name ); // get value array index (TWidgetPropertyId) for name TPtr namePtr( name->Des() ); TInt propId = aXmlProcessor->GetPropertyId( namePtr ); delete name; name = NULL; if ( EWidgetPropertyIdInvalid == propId ) { User::Leave( KErrNoMemory ); } for (TInt i = iPropertyValues.Count(); i <= propId; i++) { CWidgetPropertyValue* val = CWidgetPropertyValue::NewL(); CleanupStack::PushL(val); iPropertyValues.AppendL( val ); CleanupStack::Pop(); // val } n = n->children->next; // down to val if ( NULL == n ) { User::Leave( KErrCorrupt ); } TPtrC8 valTag( n->name ); if ( 0 != valTag.Compare( KXmlValTag() ) ) { User::Leave( KErrCorrupt ); } if (propId >= EWidgetPropertyIdCount) // unsupported property { HBufC* value = NULL; if (n->children) { aXmlProcessor->GetTextContentAsStringL( aFileSession, aDoc, n->children, &value ); } else { value = KNullDesC().AllocL(); } (*this)[propId].iValue.s = value; (*this)[propId].iType = EWidgetPropTypeBlob; n = (n->parent)->next; // up two and next sibling continue; } // TODO validate n->children != NULL and type XML_TEXT_NODE HBufC* value; aXmlProcessor->GetContentL( aFileSession, aDoc, n->children, &value ); CleanupStack::PushL( value ); n = n->children->next; // down to type if ( NULL == n ) { User::Leave( KErrCorrupt ); } TPtrC8 typeTag( n->name ); if ( 0 != typeTag.Compare( KXmlTypeTag() ) ) { User::Leave( KErrCorrupt ); } // TODO validate n->children != NULL and type XML_TEXT_NODE HBufC* type; aXmlProcessor->GetContentL( aFileSession, aDoc, n->children, &type ); CleanupStack::PushL( type ); // now have: name, value, type // convert type string to TWidgetPropertyType // // assume void/unknown is not put in XML format so anything // not recognized should be handled like other unrecognized // subtree TWidgetPropertyType typeEnum = EWidgetPropTypeUnknown; if ( 0 == type->Des().Compare( KXmlDataTypeBool() ) ) { typeEnum = EWidgetPropTypeBool; } else if ( 0 == type->Des().Compare( KXmlDataTypeInt() ) ) { typeEnum = EWidgetPropTypeInt; } else if ( 0 == type->Des().Compare( KXmlDataTypeString() ) ) { typeEnum = EWidgetPropTypeString; } else if ( 0 == type->Des().Compare( KXmlDataTypeUid() ) ) { typeEnum = EWidgetPropTypeUid; } CleanupStack::PopAndDestroy( type ); // TODO handle unknown type due to future extensions: add prop // subtree to list of unrecognized subtrees // set prop according to type switch ( typeEnum ) { case EWidgetPropTypeBool: if ( 0 == value->Des().Compare( _L("0") ) ) { (*this)[propId].iValue.i = 0; } else { (*this)[propId].iValue.i = 1; } break; case EWidgetPropTypeInt: { TLex toInt( value->Des() ); TInt k; if ( KErrNone != toInt.Val( k ) ) { User::Leave( KErrCorrupt ); } (*this)[propId].iValue.i = k; } break; case EWidgetPropTypeString: (*this)[propId].iValue.s = value; break; case EWidgetPropTypeUid: { TLex toUid( value->Des() ); TInt u; if ( KErrNone != toUid.Val( u ) ) { User::Leave( KErrCorrupt ); } (*this)[propId].iValue.uid = TUid::Uid( u ); } break; }; (*this)[propId].iType = typeEnum; CleanupStack::Pop( value ); if ( EWidgetPropTypeString != typeEnum ) { delete value; } n = ((n->parent)->parent)->next; // up two and next sibling } }