userlibandfileserver/fileserver/sfile/sf_file.cpp
changeset 300 1d28c8722707
parent 286 48e57fb1237e
equal deleted inserted replaced
293:0659d0e1a03c 300:1d28c8722707
   288 //
   288 //
   289 	{
   289 	{
   290 	TInt r=ParseNoWildSubstCheckPtr0(aRequest,aRequest->Src());
   290 	TInt r=ParseNoWildSubstCheckPtr0(aRequest,aRequest->Src());
   291  	if (r!=KErrNone)
   291  	if (r!=KErrNone)
   292 		return(r);
   292 		return(r);
   293 	r=PathCheck(aRequest,aRequest->Src().FullName().Mid(2),&KCapFsSysFileCreate,&KCapFsPriFileCreate,&KCapFsROFileCreate, __PLATSEC_DIAGNOSTIC_STRING("Create File")); 
   293 	r=PathCheck(aRequest->Message(),aRequest->Src().FullName().Mid(2),&KCapFsSysFileCreate,&KCapFsPriFileCreate,&KCapFsROFileCreate, __PLATSEC_DIAGNOSTIC_STRING("Create File")); 
   294 	if (r!=KErrNone)
   294 	if (r!=KErrNone)
   295 		return(r);
   295 		return(r);
   296 	if (OpenOnDriveZOnly)
   296 	if (OpenOnDriveZOnly)
   297 		{
   297 		{
   298 		aRequest->SetDrive(&TheDrives[EDriveZ]);
   298 		aRequest->SetDrive(&TheDrives[EDriveZ]);
   318 //
   318 //
   319 	{
   319 	{
   320 	TInt r=ParseNoWildSubstCheckPtr0(aRequest,aRequest->Src());
   320 	TInt r=ParseNoWildSubstCheckPtr0(aRequest,aRequest->Src());
   321  	if (r!=KErrNone)
   321  	if (r!=KErrNone)
   322 		return(r);
   322 		return(r);
   323 	r=PathCheck(aRequest,aRequest->Src().FullName().Mid(2),&KCapFsSysFileReplace,&KCapFsPriFileReplace,&KCapFsROFileReplace, __PLATSEC_DIAGNOSTIC_STRING("Replace File")); 
   323 	r=PathCheck(aRequest->Message(),aRequest->Src().FullName().Mid(2),&KCapFsSysFileReplace,&KCapFsPriFileReplace,&KCapFsROFileReplace, __PLATSEC_DIAGNOSTIC_STRING("Replace File")); 
   324 	if (r!=KErrNone)
   324 	if (r!=KErrNone)
   325 		return(r);
   325 		return(r);
   326 
   326 
   327 	if (OpenOnDriveZOnly)	// Yuck! yet another global
   327 	if (OpenOnDriveZOnly)	// Yuck! yet another global
   328 		{
   328 		{
   417 		return KErrNone;
   417 		return KErrNone;
   418 		}
   418 		}
   419 
   419 
   420 	if(ComparePrivate(thisPath))
   420 	if(ComparePrivate(thisPath))
   421 		{
   421 		{
   422 		if(! SIDCheck(aRequest,thisPath))
   422 		if(! SIDCheck(aRequest->Message(),thisPath))
   423 			{
   423 			{
   424 			if(!KCapFsPriFileOpen.CheckPolicy(aRequest->Message(), __PLATSEC_DIAGNOSTIC_MESSAGE("File Open in private path")))
   424 			if(!KCapFsPriFileOpen.CheckPolicy(aRequest->Message(), __PLATSEC_DIAGNOSTIC_MESSAGE("File Open in private path")))
   425 				return KErrPermissionDenied;
   425 				return KErrPermissionDenied;
   426 			}
   426 			}
   427 		}
   427 		}
   490 //
   490 //
   491 	{
   491 	{
   492 	TInt r=ParseNoWildSubstCheckPtr0(aRequest,aRequest->Src());
   492 	TInt r=ParseNoWildSubstCheckPtr0(aRequest,aRequest->Src());
   493 	if (r!=KErrNone)
   493 	if (r!=KErrNone)
   494 		return(r);
   494 		return(r);
   495 	r=PathCheck(aRequest,aRequest->Src().FullName().Mid(2),&KCapFsSysIsFileOpen,&KCapFsPriIsFileOpen, __PLATSEC_DIAGNOSTIC_STRING("Is File Open")); 
   495 	r=PathCheck(aRequest->Message(),aRequest->Src().FullName().Mid(2),&KCapFsSysIsFileOpen,&KCapFsPriIsFileOpen, __PLATSEC_DIAGNOSTIC_STRING("Is File Open")); 
   496 	return(r);
   496 	return(r);
   497 	}
   497 	}
   498 
   498 
   499 
   499 
   500 TInt TFsListOpenFiles::DoRequestL(CFsRequest* aRequest)
   500 TInt TFsListOpenFiles::DoRequestL(CFsRequest* aRequest)
   626 //
   626 //
   627 	{
   627 	{
   628 	TInt r=ParseNoWildSubstPtr0(aRequest,aRequest->Src());
   628 	TInt r=ParseNoWildSubstPtr0(aRequest,aRequest->Src());
   629 	if (r!=KErrNone)
   629 	if (r!=KErrNone)
   630 		return(r);
   630 		return(r);
   631 	r=PathCheck(aRequest,aRequest->Src().FullName().Mid(2),&KCapFsSysFileTemp,&KCapFsPriFileTemp,&KCapFsROFileTemp, __PLATSEC_DIAGNOSTIC_STRING("Temp File")); 
   631 	r=PathCheck(aRequest->Message(),aRequest->Src().FullName().Mid(2),&KCapFsSysFileTemp,&KCapFsPriFileTemp,&KCapFsROFileTemp, __PLATSEC_DIAGNOSTIC_STRING("Temp File")); 
   632 	if (r!=KErrNone)
   632 	if (r!=KErrNone)
   633 		return(r);
   633 		return(r);
   634 	if (aRequest->Src().NameOrExtPresent())
   634 	if (aRequest->Src().NameOrExtPresent())
   635 		return(KErrBadName);
   635 		return(KErrBadName);
   636 	return(r);
   636 	return(r);
  1494 	// flush the write cache
  1494 	// flush the write cache
  1495 	TInt r;
  1495 	TInt r;
  1496 	CFileCache* fileCache = share->File().FileCache();
  1496 	CFileCache* fileCache = share->File().FileCache();
  1497 	if (fileCache && (r = fileCache->FlushDirty(aRequest)) != CFsRequest::EReqActionComplete)
  1497 	if (fileCache && (r = fileCache->FlushDirty(aRequest)) != CFsRequest::EReqActionComplete)
  1498 	    {
  1498 	    {
  1499 		//To be used in notification framework
       
  1500 	    //CFsMessageRequest& msgRequest = (CFsMessageRequest&)*aRequest;
       
  1501 	    //msgRequest.iUID = msgRequest.Message().Identity();
       
  1502 		return r;
  1499 		return r;
  1503 	    }
  1500 	    }
  1504 
  1501 
  1505 	if ((share->File().Att()&KEntryAttModified)==0)
  1502 	if ((share->File().Att()&KEntryAttModified)==0)
  1506 		return(KErrNone);
  1503 		return(KErrNone);
  1948 	TDriveUnit newDrive(aRequest->Dest().Drive());
  1945 	TDriveUnit newDrive(aRequest->Dest().Drive());
  1949 	if (newDrive!=currentDrive)
  1946 	if (newDrive!=currentDrive)
  1950 		return(KErrBadName);
  1947 		return(KErrBadName);
  1951 	if (IsIllegalFullName(aRequest->Dest().FullName().Mid(2)))
  1948 	if (IsIllegalFullName(aRequest->Dest().FullName().Mid(2)))
  1952 		return(KErrBadName);
  1949 		return(KErrBadName);
  1953 	r=PathCheck(aRequest,aRequest->Dest().FullName().Mid(2),&KCapFsSysFileRename,&KCapFsPriFileRename,&KCapFsROFileRename, __PLATSEC_DIAGNOSTIC_STRING("File Rename"));
  1950 	r=PathCheck(aRequest->Message(),aRequest->Dest().FullName().Mid(2),&KCapFsSysFileRename,&KCapFsPriFileRename,&KCapFsROFileRename, __PLATSEC_DIAGNOSTIC_STRING("File Rename"));
  1954 	return(r);
  1951 	return(r);
  1955 	}
  1952 	}
  1956 
  1953 
  1957 
  1954 
  1958 TInt TFsFileDrive::DoRequestL(CFsRequest* aRequest)
  1955 TInt TFsFileDrive::DoRequestL(CFsRequest* aRequest)