kerneltest/f32test/server/t_dcallfiles.cpp
changeset 0 a41df078684a
child 109 b3a1d9898418
child 256 c1f20ce4abcf
equal deleted inserted replaced
-1:000000000000 0:a41df078684a
       
     1 // Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of the License "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 #include <f32file.h>
       
    17 #include <e32test.h>
       
    18 #include <e32std.h>
       
    19 #include <e32std_private.h>
       
    20 #include <e32def.h>
       
    21 #include <e32def_private.h>
       
    22 #include <e32svr.h>
       
    23 #include "t_server.h"
       
    24 
       
    25 GLDEF_D RTest test(_L("t_dcallfiles"));
       
    26 GLDEF_D TTime gTimeNow;
       
    27 LOCAL_D TInt gTheDriveNum;
       
    28 
       
    29 //_LIT(KDefPath, "\\Default\\");
       
    30 
       
    31 const TInt KPathPosition = 2;
       
    32 _LIT(KExpectedPrivatePath, "\\Private\\00000001\\");
       
    33 
       
    34 _LIT(KResourcePath, "?:\\Resource\\");
       
    35 _LIT(KSystemPath,	"?:\\Sys\\");
       
    36 _LIT(KPrivatePath,	"?:\\Private\\");
       
    37 _LIT(KPrivateFalseID,	"?:\\Private\\FFFFFFFF\\");
       
    38 _LIT(KDriveName,	"Billy");
       
    39 //_LIT(KVolLable,		"Benny");
       
    40 
       
    41 _LIT(KFileSys,	"systemfile.txt");
       
    42 //_LIT(KFileSys2,	"systemfile.tmp");
       
    43 _LIT(KFileSys3, "sysfile.rna");
       
    44 
       
    45 _LIT(KFilePri,	"privatefile.txt");
       
    46 _LIT(KFilePri2,	"privatefile.tmp");
       
    47 _LIT(KFilePri3,	"prifile.rna");
       
    48 
       
    49 _LIT(KFileRes,	"resourcefile.txt");
       
    50 //_LIT(KFileRes2,	"resourcefile.tmp");
       
    51 _LIT(KFileRes3,	"resfile.rna");
       
    52 
       
    53 _LIT(KMkDirSub,"Subdir\\");
       
    54 _LIT(KOldFile,"?:\\Anyold.txt");
       
    55 //_LIT(KNullPath, "");
       
    56 //_LIT(KLFFSName, "Lffs");
       
    57 
       
    58 _LIT(KWildPath, "Z:\\SYS\\");
       
    59 _LIT(KWildFile, "*");
       
    60 _LIT(KSysBinFile, "z:\\sys\\bin\\t_findcaptestfile.txt");
       
    61 
       
    62 TInt theDrive=0;
       
    63 TCapability TheCaps;
       
    64 TBuf<4> driveBuf=_L("?:\\");
       
    65 RFormat format;
       
    66 TInt count;
       
    67 RRawDisk rawdisk;
       
    68 RFile file1;
       
    69 RFile file2;
       
    70 RDir	dir;
       
    71 CDir*	dirEntries;
       
    72 TInt r;
       
    73 TBuf<40> fsname;
       
    74 TBuf<40> systestname;
       
    75 TBuf<40> pritestname;
       
    76 TBuf<40> restestname;
       
    77 TBuf<40> theprivatepath;
       
    78 TBuf<40> pritestfalseidname;
       
    79 TBuf<40> mkdirname;
       
    80 TFileName fromTemp;
       
    81 
       
    82 TBuf<40> shortfilename;
       
    83 TBuf<40> longfilename;
       
    84 TBuf<30> dirNameBuf;
       
    85 
       
    86 TRequestStatus aStat1;
       
    87 TRequestStatus aStat2;
       
    88 TRequestStatus aStat3;
       
    89 TRequestStatus aStat4;
       
    90 
       
    91 TVolumeInfo aVolInfo;
       
    92 //	TDriveInfo adriveInfo;
       
    93 
       
    94 TBuf<40> systestfile;
       
    95 TBuf<40> pritestfile;
       
    96 TBuf<40> restestfile;
       
    97 TBuf<40> systestfile1;
       
    98 TBuf<40> pritestfile1;
       
    99 TBuf<40> restestfile1;
       
   100 TBuf<30> realName;
       
   101 TTime testtime;
       
   102 TBuf<20> oldName;
       
   103 
       
   104 TBuf<25> temp;
       
   105 
       
   106 TEntry entry;
       
   107 
       
   108 
       
   109 LOCAL_C void TestPathCheck()
       
   110 //
       
   111 // This test case is brought in by INC054580
       
   112 // (NTT Renaming sys ¨Cfolder on C -drive on H2 allows user to access sys -files)
       
   113 //
       
   114     {
       
   115     TInt r = TheFs.Rename(_L("\\sys"), _L("\\sysbad"));
       
   116     test(r == KErrPermissionDenied);
       
   117     r = TheFs.Rename(_L("\\resource"), _L("\\resourcebad"));
       
   118     test(r == KErrPermissionDenied);
       
   119     r = TheFs.Rename(_L("\\private"), _L("\\privatebad"));
       
   120     test(r == KErrNone);
       
   121     r = TheFs.Rename(_L("\\privatebad"), _L("\\private"));
       
   122     test(r == KErrNone);
       
   123     }
       
   124 
       
   125 LOCAL_C void systemRFstest()
       
   126 //
       
   127 //
       
   128 //
       
   129 	{
       
   130 //system		
       
   131 	systestname=KSystemPath;
       
   132 	systestname[0]=(TText)('A' + gTheDriveNum);
       
   133 	
       
   134 	mkdirname.Zero();
       
   135 	mkdirname.Append(systestname);
       
   136 	mkdirname.Append(KMkDirSub);
       
   137 	r=TheFs.MkDirAll(mkdirname);	
       
   138 	test(r==KErrPermissionDenied);
       
   139 
       
   140 	r=TheFs.RmDir(mkdirname);	
       
   141 	test(r==KErrPermissionDenied);
       
   142 
       
   143 	r=TheFs.SetSubst(systestname,EDriveO);
       
   144 	test(r==KErrPermissionDenied);
       
   145 	
       
   146 	r=TheFs.SetSessionPath(systestname);
       
   147 	test(r==KErrNone);
       
   148 
       
   149 	TheFs.NotifyChange(ENotifyAll,aStat1,systestname);
       
   150 	test(aStat1==KRequestPending);		
       
   151 
       
   152 	systestfile=KSystemPath;
       
   153 	systestfile[0]=(TText)('A' + gTheDriveNum);
       
   154 	systestfile1=systestfile;
       
   155 	systestfile.Append(KFileSys);
       
   156 	systestfile1.Append(KFileSys3);
       
   157 	
       
   158 	oldName=KOldFile;
       
   159 	oldName[0]=(TText)gDriveToTest;
       
   160 
       
   161 	r=TheFs.GetShortName(systestfile, shortfilename);
       
   162 	test(r==KErrNone || r==KErrNotFound || r==KErrNotSupported);
       
   163 
       
   164 	r=TheFs.GetLongName(systestfile1, longfilename);
       
   165 	test(r==KErrNone || r==KErrNotFound || r==KErrNotSupported);
       
   166 
       
   167 	r=file1.Create(TheFs,oldName,EFileWrite);
       
   168 	test(r==KErrNone || r==KErrAlreadyExists);
       
   169 	file1.Close();
       
   170 
       
   171 	r=TheFs.Replace(oldName,systestfile);
       
   172 	test(r==KErrPermissionDenied);
       
   173 	
       
   174 	r=TheFs.Rename(systestfile,systestfile1);
       
   175 	test(r==KErrPermissionDenied);
       
   176 	
       
   177 	r=TheFs.Entry(systestfile1,entry);
       
   178 	test(r==KErrNone || r==KErrNotFound);	
       
   179 
       
   180 	r=TheFs.SetEntry(systestfile1,testtime,KEntryAttNormal,KEntryAttReadOnly);
       
   181 	test(r==KErrPermissionDenied);
       
   182 
       
   183 	r=TheFs.Delete(systestfile1);
       
   184 	test(r==KErrPermissionDenied);
       
   185 
       
   186 	}
       
   187 
       
   188 
       
   189 LOCAL_C void resourceRFstest()
       
   190 //
       
   191 //
       
   192 //
       
   193 	{
       
   194 //resource		
       
   195 	restestname=KResourcePath;
       
   196 	restestname[0]=(TText)('A' + gTheDriveNum);
       
   197 	
       
   198 	mkdirname.Zero();
       
   199 	mkdirname.Append(restestname);
       
   200 	mkdirname.Append(KMkDirSub);
       
   201 	r=TheFs.MkDirAll(mkdirname);	
       
   202 	test(r==KErrPermissionDenied);
       
   203 
       
   204 	TheFs.RmDir(mkdirname);
       
   205 	test(r==KErrPermissionDenied);
       
   206 
       
   207 
       
   208 	r=TheFs.SetSubst(restestname,EDriveO);
       
   209 	test(r==KErrPermissionDenied);
       
   210 	
       
   211 	r=TheFs.RealName(_L("O:\\File.XXX"),realName);
       
   212 	test(r==KErrNone);
       
   213 
       
   214 	r=TheFs.SetSessionPath(restestname);
       
   215 	test(r==KErrNone);
       
   216 	
       
   217 	TheFs.NotifyChange(ENotifyAll,aStat4,restestname);
       
   218 	test(aStat4==KRequestPending);
       
   219 
       
   220 
       
   221 	restestfile=KResourcePath;
       
   222 	restestfile[0]=(TText)('A' + gTheDriveNum);
       
   223 	restestfile1=restestfile;
       
   224 	restestfile.Append(KFileRes);
       
   225 	restestfile1.Append(KFileRes3);
       
   226 	
       
   227 	oldName=KOldFile;
       
   228 	oldName[0]=(TText)gDriveToTest;
       
   229 
       
   230 	r=TheFs.GetShortName(restestfile, shortfilename);
       
   231 	test(r==KErrNone || r==KErrNotFound || r==KErrNotSupported);
       
   232 
       
   233 	r=TheFs.GetLongName(restestfile1, longfilename);
       
   234 	test(r==KErrNone || r==KErrNotFound || r==KErrNotSupported);
       
   235 
       
   236 	r=file1.Create(TheFs,oldName,EFileWrite);
       
   237 	test(r==KErrNone || r==KErrAlreadyExists);
       
   238 	file1.Close();
       
   239 
       
   240 	r=TheFs.Replace(oldName,restestfile);
       
   241 	test(r==KErrPermissionDenied);
       
   242 	
       
   243 	r=TheFs.Rename(restestfile,restestfile1);
       
   244 	test(r==KErrPermissionDenied);
       
   245 	
       
   246 	r=TheFs.Entry(restestfile1,entry);
       
   247 	test(r==KErrNone || r==KErrNotFound);
       
   248 
       
   249 	r=TheFs.SetEntry(restestfile1,testtime,KEntryAttNormal,KEntryAttReadOnly);
       
   250 	test(r==KErrPermissionDenied);
       
   251 
       
   252 	r=TheFs.Delete(restestfile1);
       
   253 	test(r==KErrPermissionDenied);
       
   254 
       
   255 	}
       
   256 
       
   257 
       
   258 LOCAL_C void privatefalseIDRFstest()
       
   259 //
       
   260 //
       
   261 //
       
   262 	{
       
   263 //private//false ID
       
   264 	pritestfalseidname=KPrivateFalseID;
       
   265 	pritestfalseidname[0]=(TText)('A' + gTheDriveNum);
       
   266 
       
   267 	mkdirname.Zero();
       
   268 	mkdirname.Append(pritestfalseidname);
       
   269 	mkdirname.Append(KMkDirSub);
       
   270 
       
   271 	r=TheFs.MkDirAll(mkdirname);	
       
   272 	test(r==KErrNone );
       
   273 
       
   274 	r=TheFs.RmDir(mkdirname);	
       
   275 	test(r==KErrNone );
       
   276 
       
   277 	r=TheFs.SetSubst(pritestfalseidname,EDriveO);
       
   278 	test(r==KErrPermissionDenied); 
       
   279 
       
   280 	r=TheFs.RealName(_L("O:\\File.XXX"),realName);
       
   281 	test(r==KErrNone);
       
   282 
       
   283 	r=TheFs.SetSessionPath(pritestfalseidname);
       
   284 	test(r==KErrNone);
       
   285 
       
   286 	TheFs.NotifyChange(ENotifyAll,aStat2,pritestfalseidname);
       
   287 	test(aStat2==KRequestPending);
       
   288 
       
   289 	pritestfile=KPrivateFalseID;
       
   290 	pritestfile[0]=(TText)('A' + gTheDriveNum);
       
   291 	pritestfile1=pritestfile;
       
   292 	pritestfile.Append(KFilePri2);
       
   293 	pritestfile1.Append(KFilePri3);
       
   294 	
       
   295 	oldName=KOldFile;
       
   296 	oldName[0]=(TText)gDriveToTest;
       
   297 
       
   298 	r=TheFs.GetShortName(pritestfile, shortfilename);
       
   299 	test(r==KErrNone || r==KErrNotFound || r==KErrNotSupported);
       
   300 
       
   301 	r=TheFs.GetLongName(pritestfile1, longfilename);
       
   302 	test(r==KErrNone || r==KErrNotFound || r==KErrNotSupported);
       
   303 
       
   304 	r=file1.Create(TheFs,oldName,EFileWrite);
       
   305 	test(r==KErrNone || r==KErrAlreadyExists);
       
   306 	file1.Close();
       
   307 
       
   308 	r=TheFs.Replace(oldName,pritestfile);
       
   309 	test(r==KErrNone);
       
   310 	
       
   311 	r=TheFs.Rename(pritestfile,pritestfile1);
       
   312 	test(r==KErrNone || r==KErrAlreadyExists);
       
   313 	
       
   314 	r=TheFs.Entry(pritestfile1,entry);
       
   315 	test(r==KErrNone);
       
   316 
       
   317 	r=TheFs.SetEntry(pritestfile1,testtime,KEntryAttNormal,KEntryAttReadOnly);
       
   318 	test(r==KErrNone);
       
   319 
       
   320 	r=TheFs.Delete(pritestfile1);
       
   321 	test(r==KErrNone);
       
   322 
       
   323 	}
       
   324 
       
   325 
       
   326 LOCAL_C void privateRFstest()
       
   327 //
       
   328 //
       
   329 //
       
   330 	{
       
   331 //private
       
   332 	pritestname=KPrivatePath;
       
   333 	pritestname[0]=(TText)('A' + gTheDriveNum);
       
   334 
       
   335 	mkdirname.Zero();
       
   336 	mkdirname.Append(pritestname);
       
   337 	mkdirname.Append(KMkDirSub);
       
   338 
       
   339 	r=TheFs.MkDirAll(mkdirname);	
       
   340 	test(r==KErrNone );
       
   341 
       
   342 	r=TheFs.RmDir(mkdirname);	
       
   343 	test(r==KErrNone );
       
   344 
       
   345 	r=TheFs.SetSubst(pritestname,EDriveO);
       
   346 	test(r==KErrPermissionDenied); 
       
   347 
       
   348 	r=TheFs.RealName(_L("O:\\File.XXX"),realName);
       
   349 	test(r==KErrNone);
       
   350 
       
   351 	r=TheFs.SetSessionPath(pritestname);
       
   352 	test(r==KErrNone);
       
   353 
       
   354 	TheFs.NotifyChange(ENotifyAll,aStat2,pritestname);
       
   355 	test(aStat2==KRequestPending);
       
   356 
       
   357 	pritestfile=KPrivatePath;
       
   358 	pritestfile[0]=(TText)('A' + gTheDriveNum);
       
   359 	pritestfile1=pritestfile;
       
   360 	pritestfile.Append(KFilePri2);
       
   361 	pritestfile1.Append(KFilePri3);
       
   362 	
       
   363 	oldName=KOldFile;
       
   364 	oldName[0]=(TText)gDriveToTest;
       
   365 
       
   366 	r=TheFs.GetShortName(pritestfile, shortfilename);
       
   367 	test(r==KErrNone || r==KErrNotFound || r==KErrNotSupported);
       
   368 
       
   369 	r=TheFs.GetLongName(pritestfile1, longfilename);
       
   370 	test(r==KErrNone || r==KErrNotFound || r==KErrNotSupported);
       
   371 
       
   372 	r=file1.Create(TheFs,oldName,EFileWrite);
       
   373 	test(r==KErrNone || r==KErrAlreadyExists);
       
   374 	file1.Close();
       
   375 
       
   376 	r=TheFs.Replace(oldName,pritestfile);
       
   377 	test(r==KErrNone);
       
   378 	
       
   379 	r=TheFs.Rename(pritestfile,pritestfile1);
       
   380 	test(r==KErrNone || r==KErrAlreadyExists);
       
   381 	
       
   382 	r=TheFs.Entry(pritestfile1,entry);
       
   383 	test(r==KErrNone);
       
   384 
       
   385 	r=TheFs.SetEntry(pritestfile1,testtime,KEntryAttNormal,KEntryAttReadOnly);
       
   386 	test(r==KErrNone);
       
   387 
       
   388 	r=TheFs.Delete(pritestfile1);
       
   389 	test(r==KErrNone);
       
   390 
       
   391 	}
       
   392 
       
   393 
       
   394 LOCAL_C void privateSIDRFstest()
       
   395 //
       
   396 //
       
   397 //
       
   398 	{
       
   399 //private/UID
       
   400 
       
   401 	theprivatepath[0]=(TText)gDriveToTest;	
       
   402 	test.Printf(_L("the Private Path = %S"),&theprivatepath);
       
   403 
       
   404 	mkdirname.Zero();
       
   405 	mkdirname.Append(theprivatepath);
       
   406 	mkdirname.Append(KMkDirSub);
       
   407 	r=TheFs.MkDirAll(mkdirname);	
       
   408 	test(r==KErrNone);
       
   409 
       
   410 	r=TheFs.RmDir(mkdirname);	
       
   411 	test(r==KErrNone);
       
   412 
       
   413 	r=TheFs.SetSubst(theprivatepath,EDriveO);	
       
   414 	test(r==KErrPermissionDenied);
       
   415 
       
   416 	r=TheFs.RealName(_L("O:\\File.XXX"),realName);
       
   417 	test(r==KErrNone);
       
   418 
       
   419 	r=TheFs.SetSessionPath(theprivatepath);
       
   420 	test(r==KErrNone);
       
   421 
       
   422 	TheFs.NotifyChange(ENotifyAll,aStat3,theprivatepath);
       
   423 	test(aStat3==KRequestPending);
       
   424 
       
   425 	pritestfile=theprivatepath;
       
   426 	pritestfile[0]=(TText)('A' + gTheDriveNum);
       
   427 	pritestfile1=pritestfile;
       
   428 	pritestfile.Append(KFilePri2);
       
   429 	pritestfile1.Append(KFilePri3);
       
   430 	
       
   431 	oldName=KOldFile;
       
   432 	oldName[0]=(TText)gDriveToTest;
       
   433 
       
   434 	r=TheFs.GetShortName(pritestfile, shortfilename);
       
   435 	test(r==KErrNone || r==KErrNotFound || r==KErrNotSupported);
       
   436 
       
   437 	r=TheFs.GetLongName(pritestfile1, longfilename);
       
   438 	test(r==KErrNone || r==KErrNotFound || r==KErrNotSupported);
       
   439 
       
   440 	r=file1.Create(TheFs,oldName,EFileWrite);
       
   441 	test(r==KErrNone || r==KErrAlreadyExists);
       
   442 	file1.Close();
       
   443 
       
   444 	r=TheFs.Replace(oldName,pritestfile);
       
   445 	test(r==KErrNone);
       
   446 	
       
   447 	r=TheFs.Rename(pritestfile,pritestfile1);
       
   448 	test(r==KErrNone || r==KErrAlreadyExists);
       
   449 	
       
   450 	r=TheFs.Entry(pritestfile1,entry);
       
   451 	test(r==KErrNone);
       
   452 
       
   453 	r=TheFs.SetEntry(pritestfile1,testtime,KEntryAttNormal,KEntryAttReadOnly);
       
   454 	test(r==KErrNone);
       
   455 
       
   456 	r=TheFs.Delete(pritestfile1);
       
   457 	test(r==KErrNone);
       
   458 
       
   459 	}
       
   460 
       
   461 
       
   462 LOCAL_C void systemRFiletest()
       
   463 //
       
   464 //RFile testing with session path set to //system//
       
   465 //
       
   466 	{
       
   467 
       
   468 
       
   469 	r=TheFs.SetSessionPath(systestname);
       
   470 	test(r==KErrNone);
       
   471 
       
   472 	r=file1.Temp(TheFs,systestname,fromTemp,EFileWrite);
       
   473 	test(r==KErrPermissionDenied);
       
   474 
       
   475 
       
   476 	TBuf<25> sysfilename;
       
   477 	sysfilename.Append(systestname);
       
   478 	sysfilename.Append(KFileSys);
       
   479 
       
   480 	r=file1.Create(TheFs,sysfilename,EFileWrite);
       
   481 	test(r==KErrPermissionDenied);
       
   482 
       
   483 	r=file1.Open(TheFs,sysfilename,EFileWrite);
       
   484 	test(r==KErrPermissionDenied);
       
   485 
       
   486 	// DEF113117
       
   487 	r=file1.Open(TheFs, KSysBinFile, EFileShareReadersOnly | EFileRead | EFileReadBuffered);
       
   488 	test(r==KErrNone);
       
   489 	file1.Close();
       
   490 
       
   491 	r=file1.Open(TheFs, KSysBinFile, EFileStreamText | EFileReadBuffered | EFileReadAheadOn);
       
   492 	test(r==KErrNone);
       
   493 	file1.Close();
       
   494 
       
   495 	r=file1.Open(TheFs, KSysBinFile, EFileStreamText | EFileShareReadersOnly);
       
   496 	test(r==KErrNone);
       
   497 	file1.Close();
       
   498 
       
   499 	r=file1.Open(TheFs,sysfilename,EFileRead);
       
   500 	test(r==KErrNone || r==KErrNotFound);
       
   501 
       
   502 	r=file1.Replace(TheFs,sysfilename,EFileWrite);
       
   503 	test(r==KErrPermissionDenied);
       
   504 
       
   505     TFindFile finder(TheFs);
       
   506     CDir* dir = NULL;
       
   507     r=finder.FindWildByDir(KWildFile, KWildPath, dir);
       
   508 	if (!(r==KErrNone))
       
   509         test.Printf(_L("T_DCALLFILES: test find wildcards r = %d (expected KErrNone)\n"), r);
       
   510 	test(r==KErrNone || r==KErrNotFound);
       
   511 	delete dir;
       
   512 	}
       
   513 
       
   514 
       
   515 LOCAL_C void resourceRFiletest()
       
   516 //
       
   517 //RFile testing with session path set to //resource//
       
   518 //
       
   519 	{
       
   520 
       
   521 	r=TheFs.SetSessionPath(restestname);
       
   522 	test(r==KErrNone);
       
   523 
       
   524 	r=file1.Temp(TheFs,restestname,fromTemp,EFileWrite);
       
   525 	test(r==KErrPermissionDenied);
       
   526 	file1.Close();
       
   527 
       
   528 	r=file1.Create(TheFs,KFileRes,EFileWrite);
       
   529 	test(r==KErrPermissionDenied);
       
   530 	file1.Close();
       
   531 
       
   532 	r=file1.Open(TheFs,KFileRes,EFileWrite);
       
   533 	test(r==KErrPermissionDenied);
       
   534 	file1.Close();
       
   535 
       
   536 	r=file1.Open(TheFs,KFileRes,EFileRead|EFileShareReadersOnly);
       
   537 	test(r==KErrNone || r==KErrNotFound);
       
   538 	file1.Close();
       
   539 
       
   540 	r=file1.Open(TheFs,KFileRes,EFileShareReadersOrWriters|EFileRead);
       
   541 	test(r==KErrNone || r==KErrNotFound);
       
   542 	file1.Close();
       
   543 
       
   544 	r=file1.Open(TheFs,KFileRes,EFileShareReadersOrWriters|EFileWrite);
       
   545 	test(r==KErrPermissionDenied);
       
   546 	file1.Close();
       
   547 
       
   548 	r=file1.Open(TheFs,KFileRes,EFileShareReadersOnly);
       
   549 	test(r==KErrNone || r==KErrNotFound);
       
   550 
       
   551 	r=file1.ChangeMode(EFileShareExclusive);	//this is not illegal though will prevent shared access to resource which is nit my fault but may be desirable to prevent
       
   552 	test(r==KErrNone);
       
   553 
       
   554 	//this operation is prevented as you can not open a file for write access in the resource directory
       
   555 	r=file1.Rename(KFileRes3);
       
   556 	test(r==KErrPermissionDenied);
       
   557 	file1.Close();
       
   558 
       
   559 	r=file1.Replace(TheFs,KFileRes,EFileWrite);
       
   560 	test(r==KErrPermissionDenied);
       
   561 	file1.Close();	
       
   562 
       
   563 	}
       
   564 
       
   565 
       
   566 LOCAL_C void privateFalseIDRFiletest()
       
   567 //
       
   568 //RFile testing with session path set to //Private//FalseID
       
   569 //
       
   570 	{
       
   571 
       
   572 	r=TheFs.SetSessionPath(pritestfalseidname);
       
   573 	test(r==KErrNone);
       
   574 
       
   575 	r=file1.Temp(TheFs,pritestfalseidname,fromTemp,EFileWrite);
       
   576 	test(r==KErrNone);
       
   577 	file1.Close();
       
   578 
       
   579 	r=file1.Create(TheFs,KFilePri,EFileWrite);
       
   580 	test(r==KErrNone);
       
   581 	file1.Close();
       
   582 
       
   583 	r=file1.Open(TheFs,KFilePri,EFileWrite);
       
   584 	test(r==KErrNone);
       
   585 	file1.Close();
       
   586 	
       
   587 	r=file1.Open(TheFs,KFilePri,EFileRead);
       
   588 	test(r==KErrNone);
       
   589 	file1.Close();
       
   590 		
       
   591 	r=file1.Replace(TheFs,KFilePri,EFileWrite);
       
   592 	test(r==KErrNone);
       
   593 	
       
   594 	r=file1.Rename(KFilePri3);
       
   595 	test(r==KErrNone || r== KErrAlreadyExists);
       
   596 	file1.Close();
       
   597 	}
       
   598 
       
   599 
       
   600 
       
   601 LOCAL_C void privateRFiletest()
       
   602 //
       
   603 //RFile testing with session path set to //Private//
       
   604 //
       
   605 	{
       
   606 
       
   607 	r=TheFs.SetSessionPath(pritestname);
       
   608 	test(r==KErrNone);
       
   609 
       
   610 	r=file1.Temp(TheFs,pritestname,fromTemp,EFileWrite);
       
   611 	test(r==KErrNone);
       
   612 	file1.Close();
       
   613 
       
   614 	r=file1.Create(TheFs,KFilePri,EFileWrite);
       
   615 	test(r==KErrNone);
       
   616 	file1.Close();
       
   617 
       
   618 	r=file1.Open(TheFs,KFilePri,EFileWrite);
       
   619 	test(r==KErrNone);
       
   620 	file1.Close();
       
   621 	
       
   622 	r=file1.Open(TheFs,KFilePri,EFileRead);
       
   623 	test(r==KErrNone);
       
   624 	file1.Close();
       
   625 
       
   626 	r=file1.Replace(TheFs,KFilePri,EFileWrite);
       
   627 	test(r==KErrNone);
       
   628 	
       
   629 	r=file1.Rename(KFilePri3);
       
   630 	test(r==KErrNone || r== KErrAlreadyExists);
       
   631 	file1.Close();
       
   632 	}
       
   633 
       
   634 
       
   635 LOCAL_C void privateSIDRFiletest()
       
   636 //
       
   637 //
       
   638 //
       
   639 	{
       
   640 //Rfile Testing with session path set to //Private//UID//
       
   641 
       
   642 	r=TheFs.SetSessionToPrivate(gTheDriveNum);
       
   643 	test(r==KErrNone);
       
   644 		
       
   645 	r=file1.Temp(TheFs,theprivatepath,fromTemp,EFileWrite);
       
   646 	test(r==KErrNone);
       
   647 	file1.Close();
       
   648 
       
   649 	r=file1.Create(TheFs,KFilePri,EFileWrite);
       
   650 	test(r==KErrNone);
       
   651 	file1.Close();
       
   652 
       
   653 	r=file1.Open(TheFs,KFilePri,EFileWrite);
       
   654 	test(r==KErrNone);
       
   655 	file1.Close();
       
   656 	
       
   657 	r=file1.Open(TheFs,KFilePri,EFileRead);
       
   658 	test(r==KErrNone);
       
   659 	file1.Close();
       
   660 		
       
   661 	r=file1.Replace(TheFs,KFilePri,EFileWrite);
       
   662 	test(r==KErrNone);
       
   663 	
       
   664 	r=file1.Rename(KFilePri3);
       
   665 	test(r==KErrNone || r==KErrAlreadyExists);
       
   666 	file1.Close();
       
   667 
       
   668 	}
       
   669 
       
   670 
       
   671 LOCAL_C void RDirtest()
       
   672 //
       
   673 //
       
   674 //
       
   675 	{
       
   676 	//system
       
   677 	dirNameBuf.Zero();
       
   678 	dirNameBuf = KSystemPath;
       
   679 	dirNameBuf[0]=(TText)gDriveToTest;
       
   680 	r=dir.Open(TheFs,dirNameBuf,KEntryAttNormal);
       
   681 	test(r==KErrNone || r==KErrNotFound);
       
   682 	dir.Close();
       
   683 
       
   684 	r=TheFs.GetDir(dirNameBuf,KEntryAttMatchMask,ESortByName,dirEntries);
       
   685 	test(r==KErrNone);
       
   686 	delete dirEntries;
       
   687 
       
   688 	dirNameBuf.Zero();
       
   689 	//Private//falseID
       
   690 	dirNameBuf=KPrivateFalseID;
       
   691 	dirNameBuf[0]=(TText)gDriveToTest;
       
   692 	r=dir.Open(TheFs,dirNameBuf,KEntryAttNormal);
       
   693 	test(r==KErrNone);
       
   694 	dir.Close();
       
   695 	r=TheFs.GetDir(dirNameBuf,KEntryAttMatchMask,ESortByName,dirEntries);
       
   696 	test(r==KErrNone);
       
   697 	dirNameBuf.Zero();
       
   698 	delete dirEntries;
       
   699 	//Private
       
   700 	dirNameBuf=KPrivatePath;
       
   701 	dirNameBuf[0]=(TText)gDriveToTest;
       
   702 	r=dir.Open(TheFs,dirNameBuf,KEntryAttNormal);
       
   703 	test(r==KErrNone);
       
   704 	dir.Close();
       
   705 	r=TheFs.GetDir(dirNameBuf,KEntryAttMatchMask,ESortByName,dirEntries);
       
   706 	test(r==KErrNone);
       
   707 	dirNameBuf.Zero();
       
   708 	delete dirEntries;
       
   709 	//Private/uid
       
   710 	TheFs.PrivatePath(dirNameBuf);
       
   711 	dirNameBuf.Insert(0,_L("?:"));
       
   712 	dirNameBuf[0]=(TText)gDriveToTest;
       
   713 	r=dir.Open(TheFs,dirNameBuf,KEntryAttNormal);
       
   714 	test(r==KErrNone);
       
   715 	dir.Close();
       
   716 	r=TheFs.GetDir(dirNameBuf,KEntryAttMatchMask,ESortByName,dirEntries);
       
   717 	test(r==KErrNone);
       
   718 	dirNameBuf.Zero();
       
   719 	delete dirEntries;
       
   720 	//Resource
       
   721 	dirNameBuf=KResourcePath;
       
   722 	dirNameBuf[0]=(TText)gDriveToTest;
       
   723 	r=dir.Open(TheFs,dirNameBuf,KEntryAttNormal);
       
   724 	test(r==KErrNone || r==KErrNotFound);
       
   725 
       
   726 	r=TheFs.GetDir(dirNameBuf,KEntryAttMatchMask,ESortByName,dirEntries);
       
   727 	test(r==KErrNone);
       
   728 	delete dirEntries;
       
   729 	dir.Close();
       
   730 	}
       
   731 
       
   732 
       
   733 
       
   734 
       
   735 
       
   736 LOCAL_C void testAllFiles()
       
   737 //
       
   738 //	Test with only AllFiles Capability
       
   739 //
       
   740 	{
       
   741 	r=TheFs.FileSystemName(fsname,gTheDriveNum);
       
   742 	test(r==KErrNone);
       
   743 	r=TheFs.DismountFileSystem(fsname,gTheDriveNum);
       
   744 	test(r==KErrPermissionDenied);
       
   745 //	r=TheFs.RemoveFileSystem(fsname);	//can not test due to bug else where fix exists
       
   746 //	test(r==KErrPermissionDenied);
       
   747 //	r=TheFs.AddFileSystem(fsname);
       
   748 //	test(r==KErrPermissionDenied);
       
   749 	r=TheFs.MountFileSystem(fsname,gTheDriveNum);
       
   750 	test(r==KErrPermissionDenied);
       
   751 	r=TheFs.SetDriveName(gTheDriveNum,KDriveName);
       
   752 	test(r==KErrPermissionDenied);
       
   753 //	r=TheFs.SetVolumeLabel(KVolLable, gTheDriveNum);
       
   754 //	test(r==KErrNone);
       
   755 
       
   756 	systemRFstest();
       
   757 	resourceRFstest();
       
   758 	privateRFstest();
       
   759 	privateSIDRFstest();
       
   760 	privatefalseIDRFstest();
       
   761 
       
   762 	systemRFiletest();
       
   763 	resourceRFiletest();
       
   764 	privateRFiletest();
       
   765 	privateSIDRFiletest();
       
   766 	privateFalseIDRFiletest();
       
   767 
       
   768 	test(aStat1 == KRequestPending);
       
   769 	TheFs.NotifyChangeCancel(aStat1);
       
   770 	test(aStat1==KErrCancel);
       
   771 	
       
   772 	test(aStat4 == KRequestPending);
       
   773 	TheFs.NotifyChangeCancel(aStat4);
       
   774 	test(aStat4==KErrCancel);
       
   775 	
       
   776 	User::WaitForRequest(aStat2);
       
   777 	User::WaitForRequest(aStat3);
       
   778 	
       
   779 	test(aStat2==KErrNone);
       
   780 	test(aStat3==KErrNone);
       
   781 	
       
   782 
       
   783 	r=TheFs.SetSessionPath(systestname);
       
   784 	test(r==KErrNone);
       
   785 	
       
   786 //Test RRawDisk class
       
   787 	r=rawdisk.Open(TheFs,gTheDriveNum);
       
   788 	test(r==KErrPermissionDenied);
       
   789 
       
   790 	r=format.Open(TheFs,driveBuf,EHighDensity,count);
       
   791 	test(r==KErrPermissionDenied);
       
   792 
       
   793 	RDirtest();
       
   794 
       
   795 	driveBuf[0]=(TText)gDriveToTest;
       
   796 	r=TheFs.ScanDrive(driveBuf);
       
   797 	test(r==KErrPermissionDenied);
       
   798 	r=TheFs.CheckDisk(driveBuf);
       
   799 	test(r==KErrPermissionDenied);
       
   800 	}
       
   801 
       
   802 LOCAL_C void TestCaps()
       
   803 //
       
   804 //	test format etc that require certain capabilities
       
   805 //
       
   806 	{
       
   807 #ifndef __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
       
   808 	const char myDiagMsg[] = "Capability Check Failure";
       
   809 #endif //!__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
       
   810 	r=RProcess().HasCapability(ECapabilityAllFiles, __PLATSEC_DIAGNOSTIC_STRING(myDiagMsg));
       
   811 	test(r);
       
   812 
       
   813 	driveBuf[0]=(TText)gDriveToTest;
       
   814 	r=TheFs.SessionPath(temp);
       
   815 	test(r==KErrNone);
       
   816 
       
   817 	test.Printf(_L("Session path: %S"),&temp);
       
   818 
       
   819 	r=TheFs.CreatePrivatePath(gTheDriveNum);
       
   820 	test(r==KErrNone || r== KErrAlreadyExists);
       
   821 
       
   822 	TBuf<18> tempPri;
       
   823 	r=TheFs.PrivatePath(tempPri);
       
   824 	test(r==KErrNone);
       
   825 	theprivatepath = _L("?:");
       
   826 	theprivatepath.Append(tempPri);
       
   827 
       
   828 	testAllFiles();
       
   829 
       
   830 	TFileName thesessionpath;
       
   831 	r=TheFs.SetSessionToPrivate(gTheDriveNum);
       
   832 	test(r==KErrNone);
       
   833 	r=TheFs.SessionPath(thesessionpath);
       
   834 	test(r==KErrNone);
       
   835 	test(thesessionpath == theprivatepath);
       
   836 	}
       
   837 
       
   838 TFileName dirName;
       
   839 
       
   840 LOCAL_C void ScanDir(const TDesC& aName, CDirScan::TScanDirection aDirection, TInt aError)
       
   841 	{
       
   842 	CDirScan* scanner = NULL;
       
   843 	TRAP(r, scanner = CDirScan::NewL(TheFs));
       
   844 	test(r == KErrNone && scanner);
       
   845 
       
   846 	TRAP(r, scanner->SetScanDataL(aName,KEntryAttDir,ESortByName|EAscending,aDirection));
       
   847 	test(r == KErrNone);
       
   848 	
       
   849 	CDir *entryList=NULL;
       
   850 	for (;;)
       
   851 		{
       
   852 		TRAP(r, scanner->NextL(entryList));
       
   853 		test(r == aError);
       
   854 		if (entryList==NULL)
       
   855 			break;
       
   856 		TInt count=entryList->Count();
       
   857 		while (count--)
       
   858 			{
       
   859 			TEntry data=(*entryList)[count];
       
   860 			TBuf<KMaxFileName> path=scanner->AbbreviatedPath();
       
   861 			dirName = path;
       
   862 			dirName.Append(data.iName);
       
   863 			test.Printf(_L("    %S\n"),&dirName);
       
   864 			}
       
   865 		delete entryList;
       
   866 		entryList=NULL;
       
   867 		}
       
   868 	delete scanner;
       
   869 
       
   870 	}
       
   871 
       
   872 /**
       
   873 The following test, tests CFileMan and CDirScan API on folders private and sys
       
   874 to confirm that any operation on these folders for any app with incorrect capability
       
   875 returns KErrPermissionDenied. This test step was added as a result of DEF051428
       
   876 ("PlatSec: Incorrect errors returned by f32")
       
   877 */
       
   878 LOCAL_C void TestCaging()
       
   879 	{
       
   880 	CFileMan* fMan=CFileMan::NewL(TheFs);
       
   881 	TInt r;
       
   882 	if(fMan!=NULL)
       
   883 		{		
       
   884 		
       
   885 		// Checking the private path
       
   886 		TBuf<30> privatepath;
       
   887 		r=TheFs.PrivatePath(privatepath);
       
   888 		test.Printf(_L("Private Path is=%S"),&privatepath);
       
   889 		
       
   890 		r = TheFs.MkDir(_L("\\Caged\\"));
       
   891 		test(r==KErrNone || r==KErrAlreadyExists);
       
   892 		
       
   893 		CDir* entryCount=NULL;
       
   894 		r=TheFs.GetDir(_L("\\*.*"),KEntryAttNormal,ESortNone,entryCount);
       
   895 		test(r==KErrNone);
       
   896 		TInt rootCount= entryCount->Count();
       
   897 		
       
   898 		delete entryCount;
       
   899 		entryCount=NULL;
       
   900 
       
   901 
       
   902 		//Testing Copy
       
   903 		CDir* entryCount2=NULL;
       
   904 		r=fMan->Copy(_L("\\sys\\"),_L("\\Caged\\"));
       
   905 		test(r == KErrNotFound);
       
   906 		r=fMan->Copy(_L("\\*"),_L("\\Caged\\"));
       
   907 		test(r == KErrNone);
       
   908 		
       
   909 		r=TheFs.GetDir(_L("\\Caged\\*.*"),KEntryAttNormal,ESortNone,entryCount2);
       
   910 		test(r==KErrNone);
       
   911 		TInt cagedCount= entryCount2->Count();
       
   912 		
       
   913 		test(cagedCount==rootCount);
       
   914 		
       
   915 		delete entryCount2;
       
   916 		entryCount2=NULL;
       
   917 
       
   918 	
       
   919 		r=fMan->Copy(_L("\\private\\two\\moo"),_L("\\private\\two\\mew")); 
       
   920 		test(r == KErrPathNotFound);
       
   921 	
       
   922 		// Create a test file
       
   923 		RFile testFile;
       
   924 		r = testFile.Replace(TheFs, _L("\\capTest"),EFileWrite);
       
   925 		test(r==KErrNone || r==KErrAlreadyExists);
       
   926 		testFile.Close();
       
   927 		
       
   928 		TFileName name;
       
   929 		name = privatepath;
       
   930 		name.Append(_L("privateFile.tst"));
       
   931 		RFile privateFile;
       
   932 		r = privateFile.Replace(TheFs, name,EFileWrite);
       
   933 		test(r==KErrNone || r==KErrAlreadyExists);
       
   934 		privateFile.Close();
       
   935 
       
   936 	
       
   937 		r=fMan->Copy(_L("\\capTest"),_L("\\private\\to\\moo")); 
       
   938 		test(r == KErrPathNotFound);
       
   939 		r=fMan->Copy(_L("\\capTest"),_L("\\sys\\bin\\moo")); 
       
   940 		test(r == KErrPermissionDenied); 
       
   941 		r=fMan->Copy(_L("\\sys\\bin\\capTest"),_L("\\sys\\bin\\moo"));
       
   942 		test(r == KErrPathNotFound); 
       
   943 		r=fMan->Copy(_L("\\sys\\*"),_L("\\"));
       
   944 		test (r==KErrNone || r==KErrNotFound);
       
   945 		r=fMan->Copy(name,_L("\\sys\\"));
       
   946 		test(r==KErrPermissionDenied);
       
   947 		
       
   948 		// Testing Move
       
   949 		r=fMan->Move(_L("\\capTest"),_L("\\private\\wst\\moo"), CFileMan::ERecurse); // Recurse flag needed as destination path does not exist.
       
   950 		test(r == KErrNone);
       
   951 		r=fMan->Move(_L("\\sys\\bin\\capTest"),_L("\\sys\\bin\\moo"));
       
   952 		test(r == KErrPathNotFound); 
       
   953 		r=fMan->Move(_L("\\sys\\*"),_L("\\"));
       
   954 		test (r==KErrNone || r==KErrNotFound);
       
   955 		r=fMan->Move(name,_L("\\sys\\"));
       
   956 		test(r==KErrPermissionDenied);
       
   957 		r=fMan->Move(_L("\\private\\two\\moo"),_L("\\private\\one\\moo"));
       
   958 		test(r == KErrPathNotFound);
       
   959 		r=fMan->Move(_L("\\private\\two\\moo.."),_L("\\private\\one\\moo"));
       
   960 		test(r == KErrPathNotFound);
       
   961 		r=fMan->Move(_L("\\private\\two\\moo"),_L("\\private\\one\\moo.."));
       
   962 		test(r == KErrPathNotFound);
       
   963 		r=fMan->Move(name,_L("\\privateFile.tst"));
       
   964 		test(r == KErrNone);
       
   965 		r=fMan->Move(_L("\\privateFile.tst"),name);
       
   966 		test(r == KErrNone);
       
   967 
       
   968 		
       
   969 		// Testing Attribs
       
   970 		r=fMan->Attribs(_L("\\private\\two\\moo"),KEntryAttReadOnly,0,TTime(0)); 
       
   971 		test(r == KErrPathNotFound);
       
   972 		r=fMan->Attribs(_L("\\private\\moo"),KEntryAttReadOnly,0,TTime(0)); 
       
   973 		test(r == KErrNotFound);
       
   974 		r=fMan->Attribs(name,KEntryAttReadOnly,0,TTime(0));
       
   975 		test(r == KErrNone);
       
   976 		r=fMan->Attribs(name,0,KEntryAttReadOnly,TTime(0));
       
   977 		test(r == KErrNone);		
       
   978 
       
   979 		// Testing RmDir
       
   980 		r=fMan->RmDir(_L("\\private\\"));
       
   981 		test(r == KErrNone);
       
   982 		// put it back where it was
       
   983 		r = TheFs.MkDirAll(_L("\\private\\00000001\\"));
       
   984 		test(r == KErrNone);
       
   985 		r=fMan->RmDir(_L("\\private\\two\\"));
       
   986 		test(r == KErrPathNotFound);
       
   987 		r=fMan->RmDir(_L("\\private\\tw?\\"));
       
   988 		test(r == KErrBadName);
       
   989 		r=fMan->RmDir(_L("\\sys\\"));
       
   990 		test(r == KErrPermissionDenied);
       
   991 		
       
   992 		// Testing Rename
       
   993 		r=fMan->Rename(_L("\\private\\two\\moo"),_L("\\private\\two\\mew")); 
       
   994 		test(r == KErrPathNotFound);
       
   995 		
       
   996 		// Testing Delete
       
   997 		r=fMan->Delete(_L("\\private\\two\\test")); 
       
   998 		test(r == KErrPathNotFound);
       
   999 		r=fMan->Delete(_L("\\private\\moo")); 
       
  1000 		test(r == KErrNotFound);
       
  1001 		
       
  1002 		//Something that actually exists in Private
       
  1003 		r=fMan->Rename(name,_L("\\private\\00000001\\moo")); 
       
  1004 		test(r == KErrNotFound); //deleted the file previously
       
  1005 		r=fMan->Rename(_L("\\private\\00000001\\moo"),name); 
       
  1006 		test(r == KErrNotFound);
       
  1007 		r=fMan->Copy(name,_L("\\private\\00000001\\moo")); 
       
  1008 		test(r == KErrNotFound);
       
  1009 		r=fMan->Delete(_L("\\private\\00000001\\moo")); 
       
  1010 		test(r == KErrNotFound);
       
  1011 
       
  1012 		// Clean up the test data
       
  1013 		r=fMan->RmDir(_L("\\Caged\\")); 
       
  1014 		test(r == KErrNone);
       
  1015 		r=fMan->Delete(_L("\\capTest")); 
       
  1016 		test(r == KErrNone || KErrNotFound);
       
  1017 		delete(fMan);
       
  1018 		}
       
  1019 	
       
  1020 	// CDirScan tests
       
  1021 	ScanDir(_L("\\"), CDirScan::EScanUpTree, KErrNone);
       
  1022 	ScanDir(_L("\\"), CDirScan::EScanDownTree, KErrNone);
       
  1023 	ScanDir(_L("\\private\\"), CDirScan::EScanDownTree, KErrNone);
       
  1024 	ScanDir(_L("\\private\\"), CDirScan::EScanUpTree, KErrNone);
       
  1025 	ScanDir(_L("\\sys\\"), CDirScan::EScanDownTree, KErrNone);
       
  1026 	ScanDir(_L("\\sys\\"), CDirScan::EScanUpTree,KErrNone);
       
  1027 	
       
  1028 	}
       
  1029 LOCAL_C void CleanupL()
       
  1030 //
       
  1031 // Clean up tests
       
  1032 //
       
  1033 	{
       
  1034 	test.Next(_L("Delete test directory"));
       
  1035 	CFileMan* fMan=CFileMan::NewL(TheFs);
       
  1036 	TInt r=fMan->RmDir(gSessionPath);
       
  1037 	test(r==KErrNone);
       
  1038 	delete fMan;
       
  1039 	}
       
  1040 
       
  1041 GLDEF_C void CallTestsL(/*TChar aDriveLetter*/)
       
  1042 //
       
  1043 // Do all tests
       
  1044 //
       
  1045 	{
       
  1046 	if(!PlatSec::IsCapabilityEnforced(ECapabilityAllFiles))
       
  1047 		{
       
  1048 		test.Printf(_L("Capability ECapabilityAllFiles not enabled - leaving t_dcallfiles"));
       
  1049 		test.Printf(_L("\n")); // Prevent overwrite by next print
       
  1050 		return;
       
  1051 		}
       
  1052 
       
  1053 	TurnAllocFailureOff();
       
  1054 	TheFs.CharToDrive(gDriveToTest,gTheDriveNum);
       
  1055 	
       
  1056 	TBuf<30> sesspath;
       
  1057 	sesspath=_L("?:\\");
       
  1058 	sesspath[0] = (TText)gDriveToTest;
       
  1059 
       
  1060 	TInt r= TheFs.SetSessionPath(sesspath);
       
  1061 	test(r==KErrNone);
       
  1062 
       
  1063 	TBuf<2> cmd;
       
  1064 	cmd.SetLength(1);
       
  1065 	cmd[0] = (TText)gDriveToTest;
       
  1066 	RProcess tp;
       
  1067 	r=tp.Create(_L("clean_prepdc.exe"),sesspath);
       
  1068 	test(r==KErrNone);
       
  1069 	{
       
  1070 	TRequestStatus ps;
       
  1071 	tp.Logon(ps);
       
  1072 	tp.Resume();
       
  1073 	tp.Close();
       
  1074 	User::WaitForRequest(ps);
       
  1075 	}
       
  1076 
       
  1077 	//check double mode ie that Defpath still works	
       
  1078 	RFs fs1;
       
  1079 	RFs fs2;
       
  1080 	
       
  1081 	r=fs1.Connect();
       
  1082 	test(r==KErrNone);
       
  1083 	r=fs1.SessionPath(sesspath);
       
  1084 	test(r==KErrNone);
       
  1085 	test.Printf(_L("session1 Path=%S"),&sesspath);
       
  1086 
       
  1087 	TBuf<30> privatepath;
       
  1088 	r=fs1.SetSessionToPrivate(gTheDriveNum);
       
  1089 	test(r==KErrNone);
       
  1090 	r=fs1.PrivatePath(privatepath);
       
  1091 	test(r==KErrNone);
       
  1092 	r=privatepath.Compare(KExpectedPrivatePath());
       
  1093 	test(r==0);
       
  1094 	r=fs1.SessionPath(sesspath);
       
  1095 	test(r==KErrNone);
       
  1096 	r=privatepath.Compare(sesspath.Mid(KPathPosition));
       
  1097 	test(r==0);
       
  1098 	r=fs1.CreatePrivatePath(gTheDriveNum);
       
  1099 	test(r==KErrNone);
       
  1100 	fs1.Close();
       
  1101 
       
  1102 	r=fs2.Connect();
       
  1103 	test(r==KErrNone);
       
  1104 	r=fs2.SessionPath(sesspath);
       
  1105 	test(r==KErrNone);
       
  1106 	test.Printf(_L("session2 Path=%S"),&sesspath);
       
  1107 	fs2.Close();
       
  1108 
       
  1109 	TestCaps();
       
  1110 	TestCaging();
       
  1111     TestPathCheck();
       
  1112 
       
  1113 	test.Printf(_L("No of files open=%d"), TheFs.ResourceCount());
       
  1114 
       
  1115 	CleanupL();
       
  1116 	}