kerneltest/f32test/plugins/version_2/src/modifier_plugin.cpp
changeset 36 538db54a451d
parent 0 a41df078684a
equal deleted inserted replaced
34:f497542af8e4 36:538db54a451d
    92 	User::LeaveIfError(RegisterIntercept(EFsEntry,				EPreIntercept));
    92 	User::LeaveIfError(RegisterIntercept(EFsEntry,				EPreIntercept));
    93 	User::LeaveIfError(RegisterIntercept(EFsSetEntry,			EPreIntercept));
    93 	User::LeaveIfError(RegisterIntercept(EFsSetEntry,			EPreIntercept));
    94 	User::LeaveIfError(RegisterIntercept(EFsFileSeek,			EPreIntercept));
    94 	User::LeaveIfError(RegisterIntercept(EFsFileSeek,			EPreIntercept));
    95 	User::LeaveIfError(RegisterIntercept(EFsPluginDoControl,	EPreIntercept));
    95 	User::LeaveIfError(RegisterIntercept(EFsPluginDoControl,	EPreIntercept));
    96 	User::LeaveIfError(RegisterIntercept(EFsPluginDoRequest,	EPreIntercept));
    96 	User::LeaveIfError(RegisterIntercept(EFsPluginDoRequest,	EPreIntercept));
       
    97 	User::LeaveIfError(RegisterIntercept(EFsVolume,				EPreIntercept));
    97 
    98 
    98 
    99 
    99     _LOG(_L("Modifier Plugin: Enabled intercepts."));
   100     _LOG(_L("Modifier Plugin: Enabled intercepts."));
   100 
   101 
   101     iInterceptsEnabled = ETrue;
   102     iInterceptsEnabled = ETrue;
   129 	User::LeaveIfError(UnregisterIntercept(EFsReplace,			EPreIntercept));
   130 	User::LeaveIfError(UnregisterIntercept(EFsReplace,			EPreIntercept));
   130 	User::LeaveIfError(UnregisterIntercept(EFsRename,			EPreIntercept));
   131 	User::LeaveIfError(UnregisterIntercept(EFsRename,			EPreIntercept));
   131 	User::LeaveIfError(UnregisterIntercept(EFsEntry,			EPreIntercept));
   132 	User::LeaveIfError(UnregisterIntercept(EFsEntry,			EPreIntercept));
   132 	User::LeaveIfError(UnregisterIntercept(EFsSetEntry,			EPreIntercept));
   133 	User::LeaveIfError(UnregisterIntercept(EFsSetEntry,			EPreIntercept));
   133 	User::LeaveIfError(UnregisterIntercept(EFsFileSeek,			EPreIntercept));
   134 	User::LeaveIfError(UnregisterIntercept(EFsFileSeek,			EPreIntercept));
       
   135 	User::LeaveIfError(UnregisterIntercept(EFsVolume,			EPreIntercept));
   134 
   136 
   135     _LOG(_L("Modifier Plugin: Disabled intercepts."));
   137     _LOG(_L("Modifier Plugin: Disabled intercepts."));
   136 
   138 
   137     iInterceptsEnabled = EFalse;
   139     iInterceptsEnabled = EFalse;
   138 	}
   140 	}
   150 
   152 
   151 	TInt function = aRequest.Function();
   153 	TInt function = aRequest.Function();
   152 	
   154 	
   153 	if(aRequest.IsPostOperation())
   155 	if(aRequest.IsPostOperation())
   154 		{
   156 		{
   155 		_LOG2(_L("Modifier Plugin::DoRequestL for Function %d in Post-Interception"),function);
   157 		_LOG2(_L("CModifierPlugin::DoRequestL for Function %d in Post-Interception"),function);
   156 		}
   158 		}
   157 	else
   159 	else
   158 		{
   160 		{
   159 		_LOG2(_L("Modifier Plugin::DoRequestL for Function %d in Pre-Interception"),function);
   161 		_LOG2(_L("CModifierPlugin::DoRequestL for Function %d in Pre-Interception"),function);
   160 		}
   162 		}
   161 	 
   163 	
   162 	switch(function)
   164 	switch(function)
   163 		{
   165 		{
   164 		case EFsFileRead:
   166 		case EFsFileRead:
   165 			TRAP(err, FsFileReadL(aRequest));
   167 			TRAP(err, FsFileReadL(aRequest));
   166 			break;
   168 			break;
   245 			TRAP(err, FsEntryL(aRequest));
   247 			TRAP(err, FsEntryL(aRequest));
   246 			break;
   248 			break;
   247 
   249 
   248 		case EFsSetEntry:
   250 		case EFsSetEntry:
   249 			TRAP(err, FsSetEntryL(aRequest));
   251 			TRAP(err, FsSetEntryL(aRequest));
       
   252 			break;
       
   253 
       
   254 		case EFsVolume:
       
   255 			TRAP(err, FsVolumeL(aRequest));
   250 			break;
   256 			break;
   251 
   257 
   252 		default:
   258 		default:
   253 			break;
   259 			break;
   254 		}
   260 		}
   421 			iLineNumber = __LINE__;
   427 			iLineNumber = __LINE__;
   422 			if(err!=KErrNone)
   428 			if(err!=KErrNone)
   423 				User::Leave(err); //trapped in DoRequestL
   429 				User::Leave(err); //trapped in DoRequestL
   424 
   430 
   425 			fileplugin.Close();
   431 			fileplugin.Close();
   426 			
   432 
   427 			User::Leave(KErrCompletion);
   433 			User::Leave(KErrCompletion);
   428 			}
   434 			}
   429 		}
   435 		}
   430 	}
   436 	}
   431 
   437 
   523 	else
   529 	else
   524 		{
   530 		{
   525 		_LOG(_L("CModifierPlugin::FsFileSizeL, pre intercept"));
   531 		_LOG(_L("CModifierPlugin::FsFileSizeL, pre intercept"));
   526 		if(extension.CompareF(_L(".size")) == 0)
   532 		if(extension.CompareF(_L(".size")) == 0)
   527 			{
   533 			{
   528 			_LOG(_L("ModifierPlugin::FsFileSizeL"));
   534 			_LOG(_L("CModifierPlugin::FsFileSizeL"));
   529 
   535 
   530 			RFilePlugin fileplugin(aRequest);
   536 			RFilePlugin fileplugin(aRequest);
   531 			TInt err = fileplugin.AdoptFromClient();
   537 			TInt err = fileplugin.AdoptFromClient();
   532 			iLastError = err;
   538 			iLastError = err;
   533 			iLineNumber = __LINE__;
   539 			iLineNumber = __LINE__;
   701 			iLineNumber = __LINE__;
   707 			iLineNumber = __LINE__;
   702 			if(err!=KErrNone)
   708 			if(err!=KErrNone)
   703 				User::Leave(err); //trapped in DoRequestL
   709 				User::Leave(err); //trapped in DoRequestL
   704 
   710 
   705 			err = fsplugin.ReadFileSection(filename, pos, tempBufPtr, length);
   711 			err = fsplugin.ReadFileSection(filename, pos, tempBufPtr, length);
   706 			_LOG2(_L("CModifierPlugin::FsReadFileSectionL, FileRead returned %d"), err);
   712 			_LOG2(_L("CModifierPlugin::FileRead, FileRead returned %d"), err);
   707 			iLastError = err;
   713 			iLastError = err;
   708 			iLineNumber = __LINE__;
   714 			iLineNumber = __LINE__;
   709 			if(err!=KErrNone)
   715 			if(err!=KErrNone)
   710 				User::Leave(err); //trapped in DoRequestL
   716 				User::Leave(err); //trapped in DoRequestL
   711 
   717 
   712 
   718 
   713 			err = aRequest.Write(TFsPluginRequest::EData, tempBufPtr);
   719 			err = aRequest.Write(TFsPluginRequest::EData, tempBufPtr);
   714 			_LOG2(_L("CModifierPlugin::FsReadFileSectionL, ClientWrite returned %d"), err);
   720 			_LOG2(_L("CModifierPlugin::FileRead, ClientWrite returned %d"), err);
   715 			iLastError = err;
   721 			iLastError = err;
   716 			iLineNumber = __LINE__;
   722 			iLineNumber = __LINE__;
   717 			if(err!=KErrNone)
   723 			if(err!=KErrNone)
   718 				User::Leave(err); //trapped in DoRequestL
   724 				User::Leave(err); //trapped in DoRequestL
   719 
   725 
   839 			RFilePlugin fileplugin2(aRequest);
   845 			RFilePlugin fileplugin2(aRequest);
   840 
   846 
   841 			//open a second file
   847 			//open a second file
   842 
   848 
   843 			err = fileplugin2.Open(testfilename1, EFileWrite);
   849 			err = fileplugin2.Open(testfilename1, EFileWrite);
   844 			_LOG3(_L("RFilePlugin::Open for %S returned %d"), &testfilename1, err);
   850 			_LOG3(_L("CModifierPlugin::FsFileWriteL, RFilePlugin::Open for %S returned %d"), &testfilename1, err);
   845 			iLastError = err;
   851 			iLastError = err;
   846 			iLineNumber = __LINE__;
   852 			iLineNumber = __LINE__;
   847 			if(err!=KErrNone)
   853 			if(err!=KErrNone)
   848 				User::Leave(err); //trapped in DoRequestL
   854 				User::Leave(err); //trapped in DoRequestL
   849 
   855 
   893 			err = fileplugin.Create(testfilename2, EFileWrite);
   899 			err = fileplugin.Create(testfilename2, EFileWrite);
   894 			iLastError = err;
   900 			iLastError = err;
   895 			iLineNumber = __LINE__;
   901 			iLineNumber = __LINE__;
   896 			if(err!=KErrNone)
   902 			if(err!=KErrNone)
   897 				User::Leave(err); //trapped in DoRequestL
   903 				User::Leave(err); //trapped in DoRequestL
   898 			_LOG2(_L("RFilePlugin::Create returned %d"), err);
   904 			_LOG2(_L("CModifierPlugin::FsFileWriteL, RFilePlugin::Create returned %d"), err);
   899 
   905 
   900 			//write to the newly created file
   906 			//write to the newly created file
   901 			err = fileplugin.Write(pos, tempBufPtr2);
   907 			err = fileplugin.Write(pos, tempBufPtr2);
   902 			_LOG2(_L("CModifierPlugin::FsFileWriteL, RFilePlugin::Write to the newly created file returned %d"), err);
   908 			_LOG2(_L("CModifierPlugin::FsFileWriteL, RFilePlugin::Write to the newly created file returned %d"), err);
   903 			iLastError = err;
   909 			iLastError = err;
  1069 
  1075 
  1070 		RFilePlugin fileplugin(aRequest);
  1076 		RFilePlugin fileplugin(aRequest);
  1071 
  1077 
  1072 		TInt err = fileplugin.Create(filename, mode);
  1078 		TInt err = fileplugin.Create(filename, mode);
  1073 
  1079 
  1074 		_LOG2(_L("RFilePlugin::Create returned %d"), err);
  1080 		_LOG2(_L("CModifierPlugin::FsFileCreateL, RFilePlugin::Create returned %d"), err);
  1075 		iLastError = err;
  1081 		iLastError = err;
  1076 		iLineNumber = __LINE__;
  1082 		iLineNumber = __LINE__;
  1077 		if(err!=KErrNone)
  1083 		if(err!=KErrNone)
  1078 			User::Leave(err); //trapped in DoRequestL
  1084 			User::Leave(err); //trapped in DoRequestL
  1079 
  1085 
  1176 		{
  1182 		{
  1177 		_LOG(_L("CModifierPlugin::FsFileOpenL, pre intercept"));
  1183 		_LOG(_L("CModifierPlugin::FsFileOpenL, pre intercept"));
  1178 
  1184 
  1179 		RFilePlugin fileplugin(aRequest);
  1185 		RFilePlugin fileplugin(aRequest);
  1180 		err = fileplugin.Open(filename, mode);
  1186 		err = fileplugin.Open(filename, mode);
  1181 		_LOG3(_L("RFilePlugin::Open for %S returned %d"), &filename, err);
  1187 		_LOG3(_L("CModifierPlugin::FsFileOpenL, RFilePlugin::Open for %S returned %d"), &filename, err);
  1182 		iLastError = err;
  1188 		iLastError = err;
  1183 		iLineNumber = __LINE__;
  1189 		iLineNumber = __LINE__;
  1184 		if(err!=KErrNone)
  1190 		if(err!=KErrNone)
  1185 			User::Leave(err); //trapped in DoRequestL
  1191 			User::Leave(err); //trapped in DoRequestL
  1186 
  1192 
  1257 			User::Leave(err); //trapped in DoRequestL
  1263 			User::Leave(err); //trapped in DoRequestL
  1258 
  1264 
  1259 		TFileName fn;
  1265 		TFileName fn;
  1260 		RFilePlugin fileplugin(aRequest);
  1266 		RFilePlugin fileplugin(aRequest);
  1261 		err = fileplugin.Temp(testfilename1, fn, mode);
  1267 		err = fileplugin.Temp(testfilename1, fn, mode);
  1262 		_LOG2(_L("RFilePlugin::Temp returned %d"), err);
  1268 		_LOG2(_L("CModifierPlugin::FsFileTempL, RFilePlugin::Temp returned %d"), err);
  1263 		iLastError = err;
  1269 		iLastError = err;
  1264 		iLineNumber = __LINE__;
  1270 		iLineNumber = __LINE__;
  1265 		if(err!=KErrNone)
  1271 		if(err!=KErrNone)
  1266 			User::Leave(err); //trapped in DoRequestL
  1272 			User::Leave(err); //trapped in DoRequestL
  1267 
  1273 
  1268 		err = aRequest.Write(TFsPluginRequest::ENewName, fn);
  1274 		err = aRequest.Write(TFsPluginRequest::ENewName, fn);
  1269 		_LOG2(_L("CModifierPlugin::FsFileReadL, ClientWrite returned %d"), err);
  1275 		_LOG2(_L("CModifierPlugin::FsFileTempL, ClientWrite returned %d"), err);
  1270 		iLastError = err;
  1276 		iLastError = err;
  1271 		iLineNumber = __LINE__;
  1277 		iLineNumber = __LINE__;
  1272 		if(err!=KErrNone)
  1278 		if(err!=KErrNone)
  1273 			User::Leave(err); //trapped in DoRequestL
  1279 			User::Leave(err); //trapped in DoRequestL
  1274 
  1280 
  1350 	else
  1356 	else
  1351 		{
  1357 		{
  1352 		RFilePlugin fileplugin(aRequest);
  1358 		RFilePlugin fileplugin(aRequest);
  1353 
  1359 
  1354 		TInt err = fileplugin.Replace(filename, mode);
  1360 		TInt err = fileplugin.Replace(filename, mode);
  1355 		_LOG2(_L("RFilePlugin::Replace returned %d"), err);
  1361 		_LOG2(_L("CModifierPlugin::FsFileReplaceL, RFilePlugin::Replace returned %d"), err);
  1356 		iLastError = err;
  1362 		iLastError = err;
  1357 		iLineNumber = __LINE__;
  1363 		iLineNumber = __LINE__;
  1358 		if(err!=KErrNone)
  1364 		if(err!=KErrNone)
  1359 			User::Leave(err); //trapped in DoRequestL
  1365 			User::Leave(err); //trapped in DoRequestL
  1360 
  1366 
  1450 			iLastError = err;
  1456 			iLastError = err;
  1451 			iLineNumber = __LINE__;
  1457 			iLineNumber = __LINE__;
  1452 			if(err!=KErrNone)
  1458 			if(err!=KErrNone)
  1453 				User::Leave(err); //trapped in DoRequestL
  1459 				User::Leave(err); //trapped in DoRequestL
  1454 			fsplugin.Close();
  1460 			fsplugin.Close();
  1455 			
  1461 
  1456 			TBuf<26> temp_wide;
  1462 			TBuf<26> temp_wide;
  1457 			temp_wide.Copy(temp);
  1463 			temp_wide.Copy(temp);
  1458 			
  1464 
  1459 			iLogging = ETrue;
  1465 			iLogging = ETrue;
  1460 			_LOG2(_L("CModifierPlugin::FsReadFileSectionL - wanted to read length = %d\n"),length);
  1466 			_LOG2(_L("CModifierPlugin::FsReadFileSectionL - wanted to read length = %d\n"),length);
  1461 			_LOG2(_L("CModifierPlugin::FsReadFileSectionL - data read length = %d\n"),temp.Length());
  1467 			_LOG2(_L("CModifierPlugin::FsReadFileSectionL - data read length = %d\n"),temp.Length());
  1462 			_LOG2(_L("CModifierPlugin::FsReadFileSectionL - data read = %S\n"),&temp_wide);
  1468 			_LOG2(_L("CModifierPlugin::FsReadFileSectionL - data read = %S\n"),&temp_wide);
  1463 			iLogging = EFalse;
  1469 			iLogging = EFalse;
  1464 			
  1470 
  1465 
  1471 
  1466 			err = aRequest.Write(TFsPluginRequest::EData, temp);
  1472 			err = aRequest.Write(TFsPluginRequest::EData, temp);
  1467 			_LOG3(_L("CModifierPlugin::FsReadFileSectionL - RFilePlugin::Write for %S returned %d"), &testfilename1, err);
  1473 			_LOG3(_L("CModifierPlugin::FsReadFileSectionL - RFilePlugin::Write for %S returned %d"), &testfilename1, err);
  1468 			iLastError = err;
  1474 			iLastError = err;
  1469 			iLineNumber = __LINE__;
  1475 			iLineNumber = __LINE__;
  1496 		_LOG(_L("CModifierPlugin::FsDeleteL, post intercept"));
  1502 		_LOG(_L("CModifierPlugin::FsDeleteL, post intercept"));
  1497 
  1503 
  1498 		RFilePlugin fileplugin2(aRequest);
  1504 		RFilePlugin fileplugin2(aRequest);
  1499 		//open a second file
  1505 		//open a second file
  1500 		err = fileplugin2.Open(testfilename1, EFileWrite);
  1506 		err = fileplugin2.Open(testfilename1, EFileWrite);
  1501 		_LOG3(_L("RFilePlugin::Open for %S returned %d"), &testfilename1, err);
  1507 		_LOG3(_L("CModifierPlugin::FsDeleteL, RFilePlugin::Open for %S returned %d"), &testfilename1, err);
  1502 		iLastError = err;
  1508 		iLastError = err;
  1503 		iLineNumber = __LINE__;
  1509 		iLineNumber = __LINE__;
  1504 		if(err!=KErrNone)
  1510 		if(err!=KErrNone)
  1505 			User::Leave(err); //trapped in DoRequestL
  1511 			User::Leave(err); //trapped in DoRequestL
  1506 
  1512 
  1511 		if(err!=KErrNone)
  1517 		if(err!=KErrNone)
  1512 			User::Leave(err); //trapped in DoRequestL
  1518 			User::Leave(err); //trapped in DoRequestL
  1513 
  1519 
  1514 		//close the second file
  1520 		//close the second file
  1515 		fileplugin2.Close();
  1521 		fileplugin2.Close();
  1516 		_LOG2(_L("CModifierPlugin::FsFileWriteL, RFilePlugin::Close to the second file returned %d"), err);
  1522 		_LOG2(_L("CModifierPlugin::FsDeleteL, RFilePlugin::Close to the second file returned %d"), err);
  1517 		}
  1523 		}
  1518 	else
  1524 	else
  1519 		{
  1525 		{
  1520 		_LOG(_L("CModifierPlugin::FsDeleteL, pre intercept"));
  1526 		_LOG(_L("CModifierPlugin::FsDeleteL, pre intercept"));
  1521 
  1527 
  1522 		_LOG(_L("CModifierPlugin::FsDeleteL, calling RFsPlugin::Delete"));
  1528 		_LOG(_L("CModifierPlugin::FsDeleteL, calling RFsPlugin::Delete"));
  1523 		RFilePlugin fileplugin2(aRequest);
  1529 		RFilePlugin fileplugin2(aRequest);
  1524 		//open a second file
  1530 		//open a second file
  1525 		err = fileplugin2.Open(testfilename1, EFileWrite);
  1531 		err = fileplugin2.Open(testfilename1, EFileWrite);
  1526 		_LOG3(_L("RFilePlugin::Open for %S returned %d"), &testfilename1, err);
  1532 		_LOG3(_L("CModifierPlugin::FsDeleteL, RFilePlugin::Open for %S returned %d"), &testfilename1, err);
  1527 		iLastError = err;
  1533 		iLastError = err;
  1528 		iLineNumber = __LINE__;
  1534 		iLineNumber = __LINE__;
  1529 		if(err!=KErrNone)
  1535 		if(err!=KErrNone)
  1530 			User::Leave(err); //trapped in DoRequestL
  1536 			User::Leave(err); //trapped in DoRequestL
  1531 
  1537 
  1536 		if(err!=KErrNone)
  1542 		if(err!=KErrNone)
  1537 			User::Leave(err); //trapped in DoRequestL
  1543 			User::Leave(err); //trapped in DoRequestL
  1538 
  1544 
  1539 		//close the second file
  1545 		//close the second file
  1540 		fileplugin2.Close();
  1546 		fileplugin2.Close();
  1541 		_LOG2(_L("CModifierPlugin::FsFileWriteL, RFilePlugin::Close to the second file returned %d"), err);
  1547 		_LOG2(_L("CModifierPlugin::FsDeleteL, RFilePlugin::Close to the second file returned %d"), err);
  1542 
  1548 
  1543 		RFsPlugin fsplugin(aRequest);
  1549 		RFsPlugin fsplugin(aRequest);
  1544 		err = fsplugin.Connect();
  1550 		err = fsplugin.Connect();
  1545 		iLastError = err;
  1551 		iLastError = err;
  1546 		iLineNumber = __LINE__;
  1552 		iLineNumber = __LINE__;
  1603 		file.Close();
  1609 		file.Close();
  1604 
  1610 
  1605 		RFilePlugin fileplugin2(aRequest);
  1611 		RFilePlugin fileplugin2(aRequest);
  1606 		//open a second file
  1612 		//open a second file
  1607 		err = fileplugin2.Open(testfilename1, EFileWrite);
  1613 		err = fileplugin2.Open(testfilename1, EFileWrite);
  1608 		_LOG3(_L("RFilePlugin::Open for %S returned %d"), &testfilename1, err);
  1614 		_LOG3(_L("CModifierPlugin::FsReplaceL, RFilePlugin::Open for %S returned %d"), &testfilename1, err);
  1609 		iLastError = err;
  1615 		iLastError = err;
  1610 		iLineNumber = __LINE__;
  1616 		iLineNumber = __LINE__;
  1611 		if(err!=KErrNone)
  1617 		if(err!=KErrNone)
  1612 			User::Leave(err); //trapped in DoRequestL
  1618 			User::Leave(err); //trapped in DoRequestL
  1613 
  1619 
  1618 		if(err!=KErrNone)
  1624 		if(err!=KErrNone)
  1619 			User::Leave(err); //trapped in DoRequestL
  1625 			User::Leave(err); //trapped in DoRequestL
  1620 
  1626 
  1621 		//close the second file
  1627 		//close the second file
  1622 		fileplugin2.Close();
  1628 		fileplugin2.Close();
  1623 		_LOG2(_L("CModifierPlugin::FsFileWriteL, RFilePlugin::Close to the second file returned %d"), err);
  1629 		_LOG2(_L("CModifierPlugin::FsReplaceL, RFilePlugin::Close to the second file returned %d"), err);
  1624 		}
  1630 		}
  1625 	else
  1631 	else
  1626 		{
  1632 		{
  1627 		_LOG(_L("CModifierPlugin::FsReplaceL, pre intercept"));
  1633 		_LOG(_L("CModifierPlugin::FsReplaceL, pre intercept"));
  1628 		RFilePlugin fileplugin2(aRequest);
  1634 		RFilePlugin fileplugin2(aRequest);
  1629 		//open a second file
  1635 		//open a second file
  1630 		err = fileplugin2.Open(testfilename1, EFileWrite);
  1636 		err = fileplugin2.Open(testfilename1, EFileWrite);
  1631 		_LOG3(_L("RFilePlugin::Open for %S returned %d"), &testfilename1, err);
  1637 		_LOG3(_L("CModifierPlugin::FsReplaceL, RFilePlugin::Open for %S returned %d"), &testfilename1, err);
  1632 		iLastError = err;
  1638 		iLastError = err;
  1633 		iLineNumber = __LINE__;
  1639 		iLineNumber = __LINE__;
  1634 		if(err!=KErrNone)
  1640 		if(err!=KErrNone)
  1635 			User::Leave(err); //trapped in DoRequestL
  1641 			User::Leave(err); //trapped in DoRequestL
  1636 
  1642 
  1641 		if(err!=KErrNone)
  1647 		if(err!=KErrNone)
  1642 			User::Leave(err); //trapped in DoRequestL
  1648 			User::Leave(err); //trapped in DoRequestL
  1643 
  1649 
  1644 		//close the second file
  1650 		//close the second file
  1645 		fileplugin2.Close();
  1651 		fileplugin2.Close();
  1646 		_LOG2(_L("CModifierPlugin::FsFileWriteL, RFilePlugin::Close to the second file returned %d"), err);
  1652 		_LOG2(_L("CModifierPlugin::FsReplaceL, FilePlugin::Close to the second file returned %d"), err);
  1647 
  1653 
  1648 		_LOG(_L("CModifierPlugin::FsReplaceL, calling RFsPlugin::Replace"));
  1654 		_LOG(_L("CModifierPlugin::FsReplaceL, calling RFsPlugin::Replace"));
  1649 		RFsPlugin fsplugin(aRequest);
  1655 		RFsPlugin fsplugin(aRequest);
  1650 		err = fsplugin.Connect();
  1656 		err = fsplugin.Connect();
  1651 		iLastError = err;
  1657 		iLastError = err;
  1702 		if(err!=KErrNone)
  1708 		if(err!=KErrNone)
  1703 			User::Leave(err); //trapped in DoRequestL
  1709 			User::Leave(err); //trapped in DoRequestL
  1704 
  1710 
  1705 		//close the second file
  1711 		//close the second file
  1706 		fileplugin2.Close();
  1712 		fileplugin2.Close();
  1707 		_LOG2(_L("CModifierPlugin::FsFileWriteL, RFilePlugin::Close to the second file returned %d"), err);
  1713 		_LOG2(_L("CModifierPlugin::FsRenameL, RFilePlugin::Close to the second file returned %d"), err);
  1708 		}
  1714 		}
  1709 	else
  1715 	else
  1710 		{
  1716 		{
  1711 		_LOG(_L("CModifierPlugin::FsRenameL, pre intercept"));
  1717 		_LOG(_L("CModifierPlugin::FsRenameL, pre intercept"));
  1712 		RFilePlugin fileplugin2(aRequest);
  1718 		RFilePlugin fileplugin2(aRequest);
  1713 		//open a second file
  1719 		//open a second file
  1714 		fileplugin2.Open(testfilename1, EFileWrite);
  1720 		fileplugin2.Open(testfilename1, EFileWrite);
  1715 		_LOG3(_L("RFilePlugin::Open for %S returned %d"), &testfilename1, err);
  1721 		_LOG3(_L("CModifierPlugin::FsRenameL, RFilePlugin::Open for %S returned %d"), &testfilename1, err);
  1716 		iLastError = err;
  1722 		iLastError = err;
  1717 		iLineNumber = __LINE__;
  1723 		iLineNumber = __LINE__;
  1718 		if(err!=KErrNone)
  1724 		if(err!=KErrNone)
  1719 			User::Leave(err); //trapped in DoRequestL
  1725 			User::Leave(err); //trapped in DoRequestL
  1720 
  1726 
  1725 		if(err!=KErrNone)
  1731 		if(err!=KErrNone)
  1726 			User::Leave(err); //trapped in DoRequestL
  1732 			User::Leave(err); //trapped in DoRequestL
  1727 
  1733 
  1728 		//close the second file
  1734 		//close the second file
  1729 		fileplugin2.Close();
  1735 		fileplugin2.Close();
  1730 		_LOG2(_L("CModifierPlugin::FsFileWriteL, RFilePlugin::Close to the second file returned %d"), err);
  1736 		_LOG2(_L("CModifierPlugin::FsRenameL, RFilePlugin::Close to the second file returned %d"), err);
  1731 
  1737 
  1732 		_LOG(_L("CModifierPlugin::FsRenameL, calling RFsPlugin::Rename"));
  1738 		_LOG(_L("CModifierPlugin::FsRenameL, calling RFsPlugin::Rename"));
  1733 		RFsPlugin fsplugin(aRequest);
  1739 		RFsPlugin fsplugin(aRequest);
  1734 		err = fsplugin.Connect();
  1740 		err = fsplugin.Connect();
  1735 		iLastError = err;
  1741 		iLastError = err;
  1769 		{
  1775 		{
  1770 		_LOG(_L("CModifierPlugin::FsEntryL, post intercept"));
  1776 		_LOG(_L("CModifierPlugin::FsEntryL, post intercept"));
  1771 		RFilePlugin fileplugin2(aRequest);
  1777 		RFilePlugin fileplugin2(aRequest);
  1772 		//open a second file
  1778 		//open a second file
  1773 		err = fileplugin2.Open(testfilename1, EFileWrite);
  1779 		err = fileplugin2.Open(testfilename1, EFileWrite);
  1774 		_LOG3(_L("RFilePlugin::Open for %S returned %d"), &testfilename1, err);
  1780 		_LOG3(_L("CModifierPlugin::FsEntryL, RFilePlugin::Open for %S returned %d"), &testfilename1, err);
  1775 		iLastError = err;
  1781 		iLastError = err;
  1776 		iLineNumber = __LINE__;
  1782 		iLineNumber = __LINE__;
  1777 		if(err!=KErrNone)
  1783 		if(err!=KErrNone)
  1778 			User::Leave(err); //trapped in DoRequestL
  1784 			User::Leave(err); //trapped in DoRequestL
  1779 
  1785 
  1784 		if(err!=KErrNone)
  1790 		if(err!=KErrNone)
  1785 			User::Leave(err); //trapped in DoRequestL
  1791 			User::Leave(err); //trapped in DoRequestL
  1786 
  1792 
  1787 		//close the second file
  1793 		//close the second file
  1788 		fileplugin2.Close();
  1794 		fileplugin2.Close();
  1789 		_LOG2(_L("CModifierPlugin::FsFileWriteL, RFilePlugin::Close to the second file returned %d"), err);
  1795 		_LOG2(_L("CModifierPlugin::FsEntryL, RFilePlugin::Close to the second file returned %d"), err);
  1790 		}
  1796 		}
  1791 	else
  1797 	else
  1792 		{
  1798 		{
  1793 		_LOG(_L("CModifierPlugin::FsEntryL, pre intercept"));
  1799 		_LOG(_L("CModifierPlugin::FsEntryL, pre intercept"));
  1794 		RFilePlugin fileplugin2(aRequest);
  1800 		RFilePlugin fileplugin2(aRequest);
  1795 		//open a second file
  1801 		//open a second file
  1796 		err = fileplugin2.Open(testfilename1, EFileWrite);
  1802 		err = fileplugin2.Open(testfilename1, EFileWrite);
  1797 		_LOG3(_L("RFilePlugin::Open for %S returned %d"), &testfilename1, err);
  1803 		_LOG3(_L("CModifierPlugin::FsEntryL, RFilePlugin::Open for %S returned %d"), &testfilename1, err);
  1798 		iLastError = err;
  1804 		iLastError = err;
  1799 		iLineNumber = __LINE__;
  1805 		iLineNumber = __LINE__;
  1800 		if(err!=KErrNone)
  1806 		if(err!=KErrNone)
  1801 			User::Leave(err); //trapped in DoRequestL
  1807 			User::Leave(err); //trapped in DoRequestL
  1802 
  1808 
  1807 		if(err!=KErrNone)
  1813 		if(err!=KErrNone)
  1808 			User::Leave(err); //trapped in DoRequestL
  1814 			User::Leave(err); //trapped in DoRequestL
  1809 
  1815 
  1810 		//close the second file
  1816 		//close the second file
  1811 		fileplugin2.Close();
  1817 		fileplugin2.Close();
  1812 		_LOG2(_L("CModifierPlugin::FsFileWriteL, RFilePlugin::Close to the second file returned %d"), err);
  1818 		_LOG2(_L("CModifierPlugin::FsEntryL, RFilePlugin::Close to the second file returned %d"), err);
  1813 
  1819 
  1814 		_LOG(_L("CModifierPlugin::FsEntryL, calling RFsPlugin::Entry"));
  1820 		_LOG(_L("CModifierPlugin::FsEntryL, calling RFsPlugin::Entry"));
  1815 		RFsPlugin fsplugin(aRequest);
  1821 		RFsPlugin fsplugin(aRequest);
  1816 		err = fsplugin.Connect();
  1822 		err = fsplugin.Connect();
  1817 		iLastError = err;
  1823 		iLastError = err;
  1840 		User::Leave(KErrCompletion);
  1846 		User::Leave(KErrCompletion);
  1841 		}
  1847 		}
  1842 	}
  1848 	}
  1843 
  1849 
  1844 
  1850 
  1845 
       
  1846 void CModifierPlugin::FsSetEntryL(TFsPluginRequest& aRequest)
  1851 void CModifierPlugin::FsSetEntryL(TFsPluginRequest& aRequest)
  1847 	{
  1852 	{
  1848 	TInt err = KErrNone;
  1853 	TInt err = KErrNone;
  1849 	TFileName filename;
  1854 	TFileName filename;
  1850 
  1855 
  1854 	testfilename1.Append(iDriveToTest);
  1859 	testfilename1.Append(iDriveToTest);
  1855 	testfilename1.Append(_L(":\\Data\\test.txt"));
  1860 	testfilename1.Append(_L(":\\Data\\test.txt"));
  1856 
  1861 
  1857 	if (aRequest.IsPostOperation())
  1862 	if (aRequest.IsPostOperation())
  1858 		{
  1863 		{
  1859 		_LOG(_L("CModifierPlugin::FsRenameL, post intercept"));
  1864 		_LOG(_L("CModifierPlugin::FsSetEntryL, post intercept"));
  1860 		RFilePlugin fileplugin2(aRequest);
  1865 		RFilePlugin fileplugin2(aRequest);
  1861 		//open a second file
  1866 		//open a second file
  1862 		err = fileplugin2.Open(testfilename1, EFileWrite);
  1867 		err = fileplugin2.Open(testfilename1, EFileWrite);
  1863 		_LOG3(_L("RFilePlugin::Open for %S returned %d"), &testfilename1, err);
  1868 		_LOG3(_L("CModifierPlugin::FsSetEntryL, RFilePlugin::Open for %S returned %d"), &testfilename1, err);
  1864 		iLastError = err;
  1869 		iLastError = err;
  1865 		iLineNumber = __LINE__;
  1870 		iLineNumber = __LINE__;
  1866 		if(err!=KErrNone)
  1871 		if(err!=KErrNone)
  1867 			User::Leave(err); //trapped in DoRequestL
  1872 			User::Leave(err); //trapped in DoRequestL
  1868 
  1873 
  1873 		if(err!=KErrNone)
  1878 		if(err!=KErrNone)
  1874 			User::Leave(err); //trapped in DoRequestL
  1879 			User::Leave(err); //trapped in DoRequestL
  1875 
  1880 
  1876 		//close the second file
  1881 		//close the second file
  1877 		fileplugin2.Close();
  1882 		fileplugin2.Close();
  1878 		_LOG2(_L("CModifierPlugin::FsFileWriteL, RFilePlugin::Close to the second file returned %d"), err);
  1883 		_LOG2(_L("CModifierPlugin::FsSetEntryL, RFilePlugin::Close to the second file returned %d"), err);
  1879 		}
  1884 		}
  1880 	else
  1885 	else
  1881 		{
  1886 		{
  1882 		_LOG(_L("CModifierPlugin::FsSetEntryL, pre intercept"));
  1887 		_LOG(_L("CModifierPlugin::FsSetEntryL, pre intercept"));
  1883 		RFilePlugin fileplugin2(aRequest);
  1888 		RFilePlugin fileplugin2(aRequest);
  1884 		//open a second file
  1889 		//open a second file
  1885 		err = fileplugin2.Open(testfilename1, EFileWrite);
  1890 		err = fileplugin2.Open(testfilename1, EFileWrite);
  1886 		_LOG3(_L("RFilePlugin::Open for %S returned %d"), &testfilename1, err);
  1891 		_LOG3(_L("CModifierPlugin::FsSetEntryL, RFilePlugin::Open for %S returned %d"), &testfilename1, err);
  1887 		iLastError = err;
  1892 		iLastError = err;
  1888 		iLineNumber = __LINE__;
  1893 		iLineNumber = __LINE__;
  1889 		if(err!=KErrNone)
  1894 		if(err!=KErrNone)
  1890 			User::Leave(err); //trapped in DoRequestL
  1895 			User::Leave(err); //trapped in DoRequestL
  1891 
  1896 
  1896 		if(err!=KErrNone)
  1901 		if(err!=KErrNone)
  1897 			User::Leave(err); //trapped in DoRequestL
  1902 			User::Leave(err); //trapped in DoRequestL
  1898 
  1903 
  1899 		//close the second file
  1904 		//close the second file
  1900 		fileplugin2.Close();
  1905 		fileplugin2.Close();
  1901 		_LOG2(_L("CModifierPlugin::FsFileWriteL, RFilePlugin::Close to the second file returned %d"), err);
  1906 		_LOG2(_L("CModifierPlugin::FsSetEntryL, FilePlugin::Close to the second file returned %d"), err);
  1902 
       
  1903 		_LOG(_L("CModifierPlugin::FsSetEntryL, calling RFsPlugin::SetEntry"));
       
  1904 
  1907 
  1905 		TTime time;
  1908 		TTime time;
  1906 		TPtr8 t((TUint8*)&time,sizeof(TTime));
  1909 		TPtr8 t((TUint8*)&time,sizeof(TTime));
  1907 		err = aRequest.Read(TFsPluginRequest::ETime, t);
  1910 		err = aRequest.Read(TFsPluginRequest::ETime, t);
  1908 		iLastError = err;
  1911 		iLastError = err;
  1939 		if(err!=KErrNone)
  1942 		if(err!=KErrNone)
  1940 			User::Leave(err); //trapped in DoRequestL
  1943 			User::Leave(err); //trapped in DoRequestL
  1941 		fsplugin.Close();
  1944 		fsplugin.Close();
  1942 
  1945 
  1943 		// request processed by plug-in
  1946 		// request processed by plug-in
       
  1947 		User::Leave(KErrCompletion);
       
  1948 		}
       
  1949 	}
       
  1950 
       
  1951 /**
       
  1952 @see TestVolume()
       
  1953 */
       
  1954 void CModifierPlugin::FsVolumeL(TFsPluginRequest& aRequest)
       
  1955 	{
       
  1956 	if (aRequest.IsPostOperation())
       
  1957 		{
       
  1958 		_LOG(_L("CModifierPlugin::FsVolumeL, post intercept"));
       
  1959 		}
       
  1960 	else
       
  1961 		{
       
  1962 		_LOG(_L("CModifierPlugin::FsVolumeL, pre intercept"));
       
  1963 		RFsPlugin fsplugin(aRequest);
       
  1964 		CleanupClosePushL(fsplugin);
       
  1965 
       
  1966 		TInt err = fsplugin.Connect();
       
  1967 		iLastError = err;
       
  1968 		iLineNumber = __LINE__;
       
  1969 		if(err!=KErrNone)
       
  1970 			User::Leave(err); // Trapped in DoRequestL
       
  1971 
       
  1972 		TVolumeInfo volInfo;
       
  1973 		TInt drive = (TInt)(iDriveToTest - (TChar)'A');
       
  1974 		err = fsplugin.Volume(volInfo,drive);
       
  1975 		_LOG3(_L("CModifierPlugin::FsVolumeL, RFsPlugin::Volume(drive %d) returned %d"), drive, err);
       
  1976 		iLastError = err;
       
  1977 		iLineNumber = __LINE__;
       
  1978 		if(err!=KErrNone)
       
  1979 			User::Leave(err); // Trapped in DoRequestL
       
  1980 
       
  1981 		// Check that the volume label is the same as what was set in t_plugin_v2
       
  1982 		_LIT(KVolumeLabel,"1Volume");
       
  1983 		err = volInfo.iName.Compare(KVolumeLabel);
       
  1984 		_LOG2(_L("CModifierPlugin::FsVolumeL, Compare volume label returned %d"), err);
       
  1985 		iLastError = err;
       
  1986 		iLineNumber = __LINE__;
       
  1987 		if(err!=KErrNone)
       
  1988 			User::Leave(err); // Trapped in DoRequestL
       
  1989 
       
  1990 		// Modify volume name
       
  1991 		_LOG2(_L("CModifierPlugin::FsVolumeL, Old volume name = %S"), &volInfo.iName);
       
  1992 		TBuf<7> newVolumeName = volInfo.iName;
       
  1993 		newVolumeName[0] = '2';
       
  1994 		volInfo.iName = newVolumeName;
       
  1995 		_LOG2(_L("CModifierPlugin::FsVolumeL, New volume name = %S"), &volInfo.iName);
       
  1996 
       
  1997 		// Send back volume info
       
  1998 		TPckgC<TVolumeInfo> volInfoPckg(volInfo);
       
  1999 		err = aRequest.Write(TFsPluginRequest::EVolumeInfo, volInfoPckg);
       
  2000 		iLastError = err;
       
  2001 		iLineNumber = __LINE__;
       
  2002 		if(err!=KErrNone)
       
  2003 			User::Leave(err); // Trapped in DoRequestL
       
  2004 
       
  2005 		CleanupStack::PopAndDestroy();
       
  2006 
       
  2007 		// Request processed by plug-in
  1944 		User::Leave(KErrCompletion);
  2008 		User::Leave(KErrCompletion);
  1945 		}
  2009 		}
  1946 	}
  2010 	}
  1947 
  2011 
  1948 
  2012 
  1973 	TInt err = aRequest.FileName(testtemp);
  2037 	TInt err = aRequest.FileName(testtemp);
  1974 	iLastError = err;
  2038 	iLastError = err;
  1975 	iLineNumber = __LINE__;
  2039 	iLineNumber = __LINE__;
  1976 	if(err!=KErrNone)
  2040 	if(err!=KErrNone)
  1977 		User::Leave(err); //trapped in DoRequestL
  2041 		User::Leave(err); //trapped in DoRequestL
  1978 	
  2042 
  1979 	//setting up test files
  2043 	//setting up test files
  1980 	testfilename1.Append(iDriveToTest);
  2044 	testfilename1.Append(iDriveToTest);
  1981 	testfilename1.Append(_L(":\\Data2\\"));
  2045 	testfilename1.Append(_L(":\\Data2\\"));
  1982 
  2046 
  1983 	if (aRequest.IsPostOperation())
  2047 	if (aRequest.IsPostOperation())
  2184 			TRAP(err,aRequest.WriteParam1L(interceptStatusDes));
  2248 			TRAP(err,aRequest.WriteParam1L(interceptStatusDes));
  2185 			break;
  2249 			break;
  2186 			}
  2250 			}
  2187 		case KPluginSetDirFullName:
  2251 		case KPluginSetDirFullName:
  2188 			{
  2252 			{
  2189 			//This is necessary as at present we have nwo way of getting the name of
  2253 			//This is necessary as at present we have no way of getting the name of
  2190 			//a directory!
  2254 			//a directory!
  2191 			TRAP(err,aRequest.ReadParam1L(dirnamePckg));
  2255 			TRAP(err,aRequest.ReadParam1L(dirnamePckg));
  2192 			break;
  2256 			break;
  2193 			}
  2257 			}
  2194 		default:
  2258 		default: