First public contribution.
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".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
19 #include <e32std_private.h>
21 #include <e32def_private.h>
25 GLDEF_D RTest test(_L("t_dctcbdiskadmin"));
26 GLDEF_D TTime gTimeNow;
27 LOCAL_D TInt gTheDriveNum;
29 const TInt KPathPosition = 2;
30 _LIT(KExpectedPrivatePath, "\\Private\\00000001\\");
31 _LIT(KResourcePath, "?:\\Resource\\");
32 _LIT(KSystemPath, "?:\\Sys\\");
33 _LIT(KPrivatePath, "?:\\Private\\");
34 _LIT(KPrivateFalseID, "?:\\Private\\FFFFFFFF\\");
35 _LIT(KDriveName, "Billy");
36 _LIT(KVolLable, "Benny");
37 _LIT(KFileSys, "systemfile.txt");
38 _LIT(KFileSys3, "sysfile.rna");
39 _LIT(KFilePri, "privatefile.txt");
40 _LIT(KFilePri2, "privatefile.tmp");
41 _LIT(KFilePri3, "prifile.rna");
42 _LIT(KFileRes, "resourcefile.txt");
43 _LIT(KFileRes3, "resfile.rna");
44 _LIT(KMkDirSub,"Subdir\\");
45 _LIT(KOldFile,"?:\\Anyold.txt");
46 _LIT(KWildPath, "Z:\\SYS\\");
50 TBuf<4> driveBuf=_L("?:\\");
63 TBuf<40> theprivatepath;
64 TBuf<40> pritestfalseidname;
70 TBuf<40> shortfilename;
71 TBuf<40> longfilename;
73 TRequestStatus aStat1;
74 TRequestStatus aStat2;
75 TRequestStatus aStat3;
76 TRequestStatus aStat4;
79 // TDriveInfo adriveInfo;
84 TBuf<40> systestfile1;
85 TBuf<40> pritestfile1;
86 TBuf<40> restestfile1;
96 LOCAL_C void privateFalseIDRFsTest()
103 //private and wrong UID
104 pritestfalseidname=KPrivateFalseID;
105 pritestfalseidname[0]=(TText)('A' + gTheDriveNum);
108 mkdirname.Append(pritestfalseidname);
109 mkdirname.Append(KMkDirSub);
111 r=TheFs.MkDirAll(mkdirname);
112 test(r==KErrPermissionDenied);
114 r=TheFs.RmDir(mkdirname);
115 test(r==KErrPermissionDenied);
117 r=TheFs.SetSubst(pritestfalseidname,EDriveO);
118 test(r==KErrPermissionDenied);
120 r=TheFs.RealName(_L("O:\\File.XXX"),realName);
123 r=TheFs.SetSessionPath(pritestfalseidname);
124 test(r==KErrPermissionDenied);
126 TheFs.NotifyChange(ENotifyAll,aStat2,pritestfalseidname);
127 test(aStat2==KErrPermissionDenied);
130 pritestfile=KPrivateFalseID;
131 pritestfile[0]=(TText)('A' + gTheDriveNum);
132 pritestfile1=pritestfile;
133 pritestfile.Append(KFilePri2);
134 pritestfile1.Append(KFilePri3);
137 oldName[0]=(TText)gDriveToTest;
139 r=TheFs.GetShortName(pritestfile, shortfilename);
140 test(r==KErrPermissionDenied || r==KErrNotSupported);
142 r=TheFs.GetLongName(pritestfile1, longfilename);
143 test(r==KErrPermissionDenied || r==KErrNotSupported);
145 r=file1.Create(TheFs,oldName,EFileWrite);
146 test(r==KErrNone || r==KErrAlreadyExists);
149 r=TheFs.Replace(oldName,pritestfile);
150 test(r==KErrPermissionDenied);
152 r=TheFs.Rename(pritestfile,pritestfile1);
153 test(r==KErrPermissionDenied);
155 r=TheFs.Entry(pritestfile1,entry);
156 test(r==KErrPermissionDenied);
158 r=TheFs.SetEntry(pritestfile1,testtime,KEntryAttNormal,KEntryAttReadOnly);
159 test(r==KErrPermissionDenied);
161 r=TheFs.Delete(pritestfile1);
162 test(r==KErrPermissionDenied);
164 r=TheFs.Delete(oldName);
169 LOCAL_C void systemRFsTest()
171 // RFs test on system Directory
176 systestname=KSystemPath;
177 systestname[0]=(TText)('A' + gTheDriveNum);
180 mkdirname.Append(systestname);
181 mkdirname.Append(KMkDirSub);
182 r=TheFs.MkDirAll(mkdirname);
185 TheFs.RmDir(mkdirname);
188 r=TheFs.SetSubst(systestname,EDriveO);
191 r=TheFs.RealName(_L("O:\\File.XXX"),realName);
192 test(r==KErrPermissionDenied);
194 r=TheFs.SetSubst(_L(""),EDriveO); //to unsubst
197 r=TheFs.SetSessionPath(systestname);
198 test(r==KErrPermissionDenied);
200 TheFs.NotifyChange(ENotifyAll,aStat1,systestname);
201 test(aStat1==KErrPermissionDenied);
203 systestfile=KSystemPath;
204 systestfile[0]=(TText)('A' + gTheDriveNum);
205 systestfile1=systestfile;
206 systestfile.Append(KFileSys);
207 systestfile1.Append(KFileSys3);
210 oldName[0]=(TText)gDriveToTest;
212 r=TheFs.GetShortName(systestfile, shortfilename);
213 test(r==KErrPermissionDenied || r==KErrNotSupported);
215 r=TheFs.GetLongName(systestfile1, longfilename);
216 test(r==KErrPermissionDenied || r==KErrNotSupported);
218 r=file1.Create(TheFs,oldName,EFileWrite);
219 test(r==KErrNone || r==KErrAlreadyExists);
222 r=TheFs.Replace(oldName,systestfile);
225 r=TheFs.Delete(systestfile1);
226 test(r==KErrNone || r==KErrNotFound);
228 r=TheFs.Rename(systestfile,systestfile1);
231 r=TheFs.Entry(systestfile1,entry);
232 test(r==KErrPermissionDenied);
234 r=TheFs.SetEntry(systestfile1,testtime,KEntryAttNormal,KEntryAttReadOnly);
237 r=TheFs.Delete(systestfile1);
243 LOCAL_C void ResourceRFsTest()
250 restestname=KResourcePath;
251 restestname[0]=(TText)('A' + gTheDriveNum);
254 mkdirname.Append(restestname);
255 mkdirname.Append(KMkDirSub);
256 r=TheFs.MkDirAll(mkdirname);
259 TheFs.RmDir(mkdirname);
262 r=TheFs.SetSubst(restestname,EDriveO);
265 r=TheFs.RealName(_L("O:\\File.XXX"),realName);
268 r=TheFs.SetSubst(_L(""),EDriveO); //to unsubst
271 r=TheFs.SetSessionPath(restestname);
274 TheFs.NotifyChange(ENotifyAll,aStat4,restestname);
275 test(aStat4==KRequestPending);
277 restestfile=KResourcePath;
278 restestfile[0]=(TText)('A' + gTheDriveNum);
279 restestfile1=restestfile;
280 restestfile.Append(KFileRes);
281 restestfile1.Append(KFileRes3);
284 oldName[0]=(TText)gDriveToTest;
286 r=TheFs.GetShortName(restestfile, shortfilename);
287 test(r==KErrNone || KErrNotFound || r==KErrNotSupported);
289 r=TheFs.GetLongName(restestfile1, longfilename);
290 test(r==KErrNone || KErrNotFound || r==KErrNotSupported);
292 r=file1.Create(TheFs,oldName,EFileWrite);
293 test(r==KErrNone || r==KErrAlreadyExists);
296 r=TheFs.Replace(oldName,restestfile);
299 r=TheFs.Delete(restestfile1);
300 test(r==KErrNone || r==KErrNotFound);
302 r=TheFs.Rename(restestfile,restestfile1);
305 r=TheFs.Entry(restestfile1,entry);
308 r=TheFs.SetEntry(restestfile1,testtime,KEntryAttNormal,KEntryAttReadOnly);
311 r=TheFs.Delete(restestfile1);
318 LOCAL_C void privateRFsTest()
326 pritestname=KPrivatePath;
327 pritestname[0]=(TText)('A' + gTheDriveNum);
330 mkdirname.Append(pritestname);
331 mkdirname.Append(KMkDirSub);
333 r=TheFs.MkDirAll(mkdirname);
334 test(r==KErrPermissionDenied);
336 r=TheFs.RmDir(mkdirname);
337 test(r==KErrPermissionDenied);
339 r=TheFs.SetSubst(pritestname,EDriveO);
340 test(r==KErrPermissionDenied);
342 r=TheFs.RealName(_L("O:\\File.XXX"),realName);
345 r=TheFs.SetSessionPath(pritestname);
346 test(r==KErrPermissionDenied);
348 TheFs.NotifyChange(ENotifyAll,aStat2,pritestname);
349 test(aStat2==KErrPermissionDenied);
352 pritestfile=KPrivatePath;
353 pritestfile[0]=(TText)('A' + gTheDriveNum);
354 pritestfile1=pritestfile;
355 pritestfile.Append(KFilePri2);
356 pritestfile1.Append(KFilePri3);
359 oldName[0]=(TText)gDriveToTest;
361 r=TheFs.GetShortName(pritestfile, shortfilename);
362 test(r==KErrPermissionDenied || r==KErrNotSupported);
364 r=TheFs.GetLongName(pritestfile1, longfilename);
365 test(r==KErrPermissionDenied || r==KErrNotSupported);
367 r=file1.Create(TheFs,oldName,EFileWrite);
368 test(r==KErrNone || r==KErrAlreadyExists);
371 r=TheFs.Replace(oldName,pritestfile);
372 test(r==KErrPermissionDenied);
374 r=TheFs.Rename(pritestfile,pritestfile1);
375 test(r==KErrPermissionDenied);
377 r=TheFs.Entry(pritestfile1,entry);
378 test(r==KErrPermissionDenied);
380 r=TheFs.SetEntry(pritestfile1,testtime,KEntryAttNormal,KEntryAttReadOnly);
381 test(r==KErrPermissionDenied);
383 r=TheFs.Delete(pritestfile1);
384 test(r==KErrPermissionDenied);
391 LOCAL_C void privateSIDRFstest()
395 theprivatepath[0]=(TText)gDriveToTest;
396 test.Printf(_L("the Private Path = %S"),&theprivatepath);
399 mkdirname.Append(theprivatepath);
400 mkdirname.Append(KMkDirSub);
401 r=TheFs.MkDirAll(mkdirname);
404 r=TheFs.RmDir(mkdirname);
407 r=TheFs.SetSubst(theprivatepath,EDriveO);
410 r=TheFs.RealName(_L("O:\\File.XXX"),realName);
413 r=TheFs.SetSubst(_L(""),EDriveO); //to unsubst
416 r=TheFs.SetSessionPath(theprivatepath);
419 TheFs.NotifyChange(ENotifyAll,aStat3,theprivatepath);
420 test(aStat3==KRequestPending);
422 pritestfile=theprivatepath;
423 pritestfile[0]=(TText)('A' + gTheDriveNum);
424 pritestfile1=pritestfile;
425 pritestfile.Append(KFilePri2);
426 pritestfile1.Append(KFilePri3);
429 oldName[0]=(TText)gDriveToTest;
431 r=TheFs.GetShortName(pritestfile, shortfilename);
432 test(r==KErrNone || r==KErrNotFound || r==KErrNotSupported);
434 r=TheFs.GetLongName(pritestfile1, longfilename);
435 test(r==KErrNone || r==KErrNotFound || r==KErrNotSupported);
437 r=file1.Create(TheFs,oldName,EFileWrite);
438 test(r==KErrNone || r==KErrAlreadyExists);
441 r=TheFs.Replace(oldName,pritestfile);
444 r=TheFs.Rename(pritestfile,pritestfile1);
445 test(r==KErrNone || r==KErrAlreadyExists);
447 r=TheFs.Entry(pritestfile1,entry);
450 r=TheFs.SetEntry(pritestfile1,testtime,KEntryAttNormal,KEntryAttReadOnly);
453 r=TheFs.Delete(pritestfile1);
460 LOCAL_C void systemRFiletest()
462 //RFile testing with session path set to //system//
467 r=TheFs.SetSessionPath(systestname);
468 test(r==KErrPermissionDenied);
470 r=file1.Temp(TheFs,systestname,fromTemp,EFileWrite);
474 systestfile=KSystemPath;
475 systestfile[0]=(TText)('A' + gTheDriveNum);
476 systestfile1=systestfile;
477 systestfile.Append(KFileSys);
478 systestfile1.Append(KFileSys3);
480 r=file1.Create(TheFs,systestfile,EFileWrite);
484 r=file1.Open(TheFs,systestfile,EFileWrite);
488 r=file1.Open(TheFs,systestfile,EFileRead);
489 test(r==KErrPermissionDenied);
492 r=file1.Replace(TheFs,systestfile,EFileWrite);
495 r=file1.Rename(systestfile1);
499 TFindFile finder(TheFs);
501 r=finder.FindWildByDir(KWildFile, KWildPath, dir);
502 if (!(r==KErrPermissionDenied))
503 test.Printf(_L("T_DCTCBDISKADMIN: test find wildcards r = %d (expected KErrPermissionDenied)\n"), r);
504 test(r==KErrPermissionDenied);
507 r=TheFs.Delete(fromTemp);
510 r=TheFs.Delete(systestfile1);
517 LOCAL_C void resourceRFiletest()
519 //RFile testing with session path set to //resource//
524 r=TheFs.SetSessionPath(restestname);
527 r=file1.Temp(TheFs,restestname,fromTemp,EFileWrite);
531 r=file1.Create(TheFs,KFileRes,EFileWrite);
535 r=file1.Open(TheFs,KFileRes,EFileWrite|EFileShareExclusive );
538 r=file1.Rename(KFileRes3);
542 r=file1.Open(TheFs,KFileRes3,EFileShareReadersOrWriters|EFileRead);
546 r=file1.Open(TheFs,KFileRes3,EFileShareReadersOrWriters|EFileWrite);
550 r=file1.Open(TheFs,KFileRes3,EFileShareReadersOnly);
553 r=file1.ChangeMode(EFileShareExclusive);
557 r=file1.Replace(TheFs,KFileRes,EFileWrite);
561 r=TheFs.Delete(KFileRes);
564 r=TheFs.Delete(KFileRes3);
567 r=TheFs.Delete(fromTemp);
574 LOCAL_C void privatefalseIDRFiletest()
576 //RFile testing with session path set to //Private//<false ID>//
581 r=TheFs.SetSessionPath(pritestfalseidname);
582 test(r==KErrPermissionDenied);
584 // Since can't set the session path to what is required, so use
586 pritestfile=pritestfalseidname;
587 pritestfile[0]=(TText)('A' + gTheDriveNum);
588 pritestfile.Append(KFilePri);
590 r=file1.Temp(TheFs,pritestfalseidname,fromTemp,EFileWrite);
591 test(r==KErrPermissionDenied);
594 r=file1.Create(TheFs,pritestfile,EFileWrite);
595 test(r==KErrPermissionDenied);
598 r=file1.Open(TheFs,pritestfile,EFileWrite);
599 test(r==KErrPermissionDenied);
602 r=file1.Replace(TheFs,pritestfile,EFileWrite);
603 test(r==KErrPermissionDenied);
605 // Can't perform this operation since file1 has not been created
606 /* r=file1.Rename(KFilePri3);
607 test(r==KErrPermissionDenied);
615 LOCAL_C void privateRFiletest()
617 //RFile testing with session path set to //Private//
622 r=TheFs.SetSessionPath(pritestname);
623 test(r==KErrPermissionDenied);
625 r=file1.Temp(TheFs,pritestname,fromTemp,EFileWrite);
626 test(r==KErrPermissionDenied);
629 // Since can't set session path create explicit path
630 pritestfile=KPrivatePath;
631 pritestfile[0]=(TText)('A' + gTheDriveNum);
632 pritestfile.Append(KFilePri);
634 r=file1.Create(TheFs,pritestfile,EFileWrite);
635 test(r==KErrPermissionDenied);
638 r=file1.Open(TheFs,pritestfile,EFileWrite);
639 test(r==KErrPermissionDenied);
642 r=file1.Open(TheFs,pritestfile,EFileRead);
643 test(r==KErrPermissionDenied);
646 r=file1.Replace(TheFs,pritestfile,EFileWrite);
647 test(r==KErrPermissionDenied);
649 // Can't rename nor delete since file1 not created
651 r=file1.Rename(KFilePri3);
652 test(r==KErrPermissionDenied);
655 r=TheFs.Delete(fromTemp);
664 LOCAL_C void privateSIDRFiletest()
666 //Rfile Testing with session path set to //Private//UID//
671 r=TheFs.SetSessionToPrivate(gTheDriveNum);
674 r=file1.Temp(TheFs,theprivatepath,fromTemp,EFileWrite);
678 r=file1.Create(TheFs,KFilePri,EFileWrite);
679 test(r==KErrNone || r==KErrAlreadyExists);
682 r=file1.Open(TheFs,KFilePri,EFileWrite);
686 r=file1.Open(TheFs,KFilePri,EFileRead);
690 r=file1.Replace(TheFs,KFilePri,EFileWrite);
693 r=file1.Rename(KFilePri3);
697 r=TheFs.Delete(KFilePri3);
700 r=TheFs.Delete(fromTemp);
706 LOCAL_C void RDirtest()
716 TBuf<30> dirNameBuf(KSystemPath);
717 dirNameBuf[0]=(TText)gDriveToTest;
718 r=dir.Open(TheFs,dirNameBuf,KEntryAttNormal);
719 test(r==KErrPermissionDenied);
721 r=TheFs.GetDir(dirNameBuf,KEntryAttMatchMask,ESortByName,dirEntries);
722 test(r==KErrPermissionDenied);
727 dirNameBuf=KPrivatePath;
728 dirNameBuf[0]=(TText)gDriveToTest;
729 r=dir.Open(TheFs,dirNameBuf,KEntryAttNormal);
730 test(r==KErrPermissionDenied);
732 r=TheFs.GetDir(dirNameBuf,KEntryAttMatchMask,ESortByName,dirEntries);
733 test(r==KErrPermissionDenied);
737 //Private//<wrong ID>//
738 dirNameBuf=KPrivateFalseID;
739 dirNameBuf[0]=(TText)gDriveToTest;
740 r=dir.Open(TheFs,dirNameBuf,KEntryAttNormal);
741 test(r==KErrPermissionDenied);
743 r=TheFs.GetDir(dirNameBuf,KEntryAttMatchMask,ESortByName,dirEntries);
744 test(r==KErrPermissionDenied);
749 TheFs.PrivatePath(dirNameBuf);
750 dirNameBuf.Insert(0,_L("?:"));
751 dirNameBuf[0]=(TText)gDriveToTest;
752 r=dir.Open(TheFs,dirNameBuf,KEntryAttNormal);
755 r=TheFs.GetDir(dirNameBuf,KEntryAttMatchMask,ESortByName,dirEntries);
761 dirNameBuf=KResourcePath;
762 dirNameBuf[0]=(TText)gDriveToTest;
763 r=dir.Open(TheFs,dirNameBuf,KEntryAttNormal);
765 r=TheFs.GetDir(dirNameBuf,KEntryAttMatchMask,ESortByName,dirEntries);
774 LOCAL_C void TestTcbDiskAdmin()
776 // Test with tcb capabilities
781 r=TheFs.FileSystemName(fsname,gTheDriveNum);
783 r = DismountFileSystem(TheFs, fsname, gTheDriveNum);
784 test(r==KErrNone || r==KErrNotFound);
785 // r=TheFs.RemoveFileSystem(fsname); //can not test due to bug else where fix exists
786 // test(r==KErrNone);
787 // r=TheFs.AddFileSystem(fsname);
788 // test(r==KErrNone);
789 r = MountFileSystem(TheFs, fsname, gTheDriveNum);
791 r=TheFs.SetDriveName(gTheDriveNum,KDriveName);
794 r=TheFs.SetVolumeLabel(KVolLable, gTheDriveNum);
802 privateFalseIDRFsTest();
807 privateSIDRFiletest();
808 privatefalseIDRFiletest();
810 //check notifier return values set in rfs testing
811 User::WaitForRequest(aStat1);
812 User::WaitForRequest(aStat2);
813 User::WaitForRequest(aStat3);
814 User::WaitForRequest(aStat4);
815 test(aStat1==KErrPermissionDenied);
816 test(aStat2==KErrPermissionDenied);
817 test(aStat3==KErrNone);
818 test(aStat4==KErrNone);
820 r=TheFs.SetSessionPath(systestname);
821 test(r==KErrPermissionDenied);
823 //Test RRawDisk class
824 r=rawdisk.Open(TheFs,gTheDriveNum);
831 if (User::UpperCase(driveBuf[0]) != 'C')
835 r=format.Open(TheFs,driveBuf,EHighDensity,count);
840 TInt r=format.Next(count);
846 driveBuf[0]=(TText)gDriveToTest;
847 r=TheFs.ScanDrive(driveBuf);
848 test(r==KErrNone || r==KErrNotSupported);
849 r=TheFs.CheckDisk(driveBuf);
850 test(r==KErrNone || r==KErrNotSupported);
855 LOCAL_C void TestCaps()
857 // test format etc that require certain capabilities
862 #ifndef __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
863 const char myDiagMsg[] = "Capability Check Failure";
864 #endif //!__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
865 r=RProcess().HasCapability(ECapabilityTCB,ECapabilityDiskAdmin, __PLATSEC_DIAGNOSTIC_STRING(myDiagMsg));
868 driveBuf[0]=(TText)gDriveToTest;
869 r=TheFs.SessionPath(temp);
872 test.Printf(_L("Session path: %S"),&temp);
874 r=TheFs.CreatePrivatePath(gTheDriveNum);
875 test(r==KErrNone || r== KErrAlreadyExists);
878 r=TheFs.PrivatePath(tempPri);
880 theprivatepath = _L("?:");
881 theprivatepath.Append(tempPri);
885 TFileName thesessionpath;
887 r=TheFs.SetSessionToPrivate(gTheDriveNum);
889 r=TheFs.SessionPath(thesessionpath);
892 test(thesessionpath == theprivatepath);
897 LOCAL_C void CleanupL()
902 test.Next(_L("Delete test directory"));
903 CFileMan* fMan=CFileMan::NewL(TheFs);
904 TInt r=fMan->RmDir(gSessionPath);
905 test(r==KErrNone || r==KErrPathNotFound);
908 delDir=KResourcePath;
909 delDir[0]=(TText)gDriveToTest;
910 r=fMan->RmDir(delDir);
911 test(r==KErrNone || r==KErrPathNotFound);
915 delDir[0]=(TText)gDriveToTest;
916 r=TheFs.RmDir(delDir);
917 test(r==KErrNone || r==KErrPathNotFound || r==KErrNotFound);
920 GLDEF_C void CallTestsL(/*TChar aDriveLetter*/)
925 if( !PlatSec::IsCapabilityEnforced(ECapabilityTCB) ||
926 !PlatSec::IsCapabilityEnforced(ECapabilityDiskAdmin))
928 test.Printf(_L("Insufficient capabilities enabled - leaving t_dctcbdiskadmin"));
929 test.Printf(_L("\n")); // Prevent overwrite by next print
935 TurnAllocFailureOff();
937 TheFs.CharToDrive(gDriveToTest,gTheDriveNum);
941 sesspath[0] = (TText)gDriveToTest;
943 TInt r= TheFs.SetSessionPath(sesspath);
946 //cleanup from previous run of this test
948 r=tp.Create(_L("clean_prepdc.exe"),sesspath);
955 User::WaitForRequest(ps);
958 //check double mode ie that Defpath still works
964 r=fs1.SessionPath(sesspath);
966 test.Printf(_L("session1 Path=%S"),&sesspath);
968 TBuf<30> privatepath;
969 r=fs1.SetSessionToPrivate(gTheDriveNum);
971 r=fs1.PrivatePath(privatepath);
973 r=privatepath.Compare(KExpectedPrivatePath());
975 r=fs1.SessionPath(sesspath);
977 r=privatepath.Compare(sesspath.Mid(KPathPosition));
979 r=fs1.CreatePrivatePath(gTheDriveNum);
985 r=fs2.SessionPath(sesspath);
987 test.Printf(_L("session2 Path=%S"),&sesspath);
994 test.Printf(_L("No of files open=%d"), TheFs.ResourceCount());