170 lines
5.5 KiB
Plaintext
170 lines
5.5 KiB
Plaintext
{$X+,B-,V-} {essential compiler directives}
|
|
|
|
program tstvol;
|
|
|
|
{ Example for the nwFile unit / NwTP 0.6 API. (c) 1993,1995, R.Spronk }
|
|
|
|
{ Tests the following volume related functions in nwFile and nwServ:
|
|
|
|
ClearObjectVolRestriction
|
|
GetDiskUtilization (nwServ)
|
|
GetObjectVolRestriction
|
|
GetVolumeName
|
|
GetVolumeNumber
|
|
GetVolumeUsage
|
|
IsVolumeRemovable
|
|
SetObjectVolRestriction
|
|
|
|
}
|
|
|
|
uses nwMisc,nwServ,nwFile;
|
|
|
|
|
|
Var volNbr :byte;
|
|
volName:string;
|
|
|
|
volUsage :TvolUsage;
|
|
isremovable:boolean;
|
|
|
|
MaxAllowedBlocks,
|
|
BlocksInUse:Longint;
|
|
|
|
VolumeNbr :byte;
|
|
sequenceNbr :LongInt;
|
|
NbrOfObjects:byte;
|
|
ResultBuffer:TobjVolRestr;
|
|
|
|
usedDirs,usedFiles,usedBlocks:word;
|
|
|
|
t:byte;
|
|
begin
|
|
writeln('Testing GetVolumeNumber');
|
|
IF GetVolumeNumber('XXXX',volNbr)
|
|
then writeln('--Err. GetVolumeNuber returned a volumenumber when it should have failed.');
|
|
IF GetVolumeNumber('VOL',volNbr)
|
|
then writeln(' VolNbr of ''VOL:'' equals ',volNbr)
|
|
else writeln(' Volume VOL appears not to exist.');
|
|
IF GetVolumeNumber('SYS',volNbr)
|
|
then writeln(' VolNbr of SYS: equals ',volNbr)
|
|
else begin
|
|
writeln('Error Using GetVolumeNumber, err#',nwFile.result);
|
|
writeln('Critical error. Test aborted.');
|
|
halt(1);
|
|
end;
|
|
|
|
writeln;
|
|
writeln('Testing GetVolumeName');
|
|
for volNbr:=0 to 31
|
|
do begin
|
|
IF GetVolumeName(volNbr,volName)
|
|
then writeln(' VolNbr ',volNbr,' is ''',volName,'''')
|
|
else if result<>$98 { no such volume }
|
|
then writeln('--Error testing GetVolumeName, err#',result);
|
|
end;
|
|
|
|
writeln;
|
|
writeln('Testing GetVolumeUsage.');
|
|
IF GetVolumeNumber('SYS:',volNbr) and GetVolumeUsage(volNbr,VolUsage)
|
|
then with VolUsage
|
|
do begin
|
|
writeln(' Volume Usage Information:');
|
|
writeln(' Total Blocks: ',totalBlocks,' Free: ',freeBlocks);
|
|
writeln(' Total Dir entries: ',totalDirEntries,' Free: ',availDirEntries);
|
|
writeln(' Volumename: ''',volumename,'''');
|
|
writeln(' Blocksize: ',SectorsPerBlock*512,' bytes.');
|
|
end;
|
|
|
|
|
|
writeln;
|
|
writeln('Testing IsVolumeRemovable');
|
|
IF IsVolumeRemovable(0,isremovable)
|
|
then writeln(' Removable: ',isremovable)
|
|
else writeln('--IsVolumeRemovable failed.');
|
|
|
|
|
|
{==================Testing the volume restriction calls====================}
|
|
|
|
GetVolumeNumber('SYS',volNbr);
|
|
|
|
writeln('Getting the volume restrictions for user supervisor on SYS volume..');
|
|
IF GetObjectVolRestriction(volNbr,1 {objectId of Supervisor},
|
|
MaxAllowedBlocks,BlocksInUse)
|
|
then begin
|
|
writeln(' GetObjectVolRestriction:');
|
|
writeln(' Supervisor on volume SYS');
|
|
write(' Restricted to:');
|
|
if MaxAllowedBlocks=$40000000
|
|
then write('(unlimited)')
|
|
else write(MaxAllowedBlocks);
|
|
writeln(' Blocks ,BlocksInUse: ',BlocksInUse);
|
|
end
|
|
else writeln('--Error returned by GetObjectVolRestriction, err#',nwFile.result);
|
|
|
|
writeln;
|
|
writeln('Testing GetDiskUtilization (nwServ) for user supervisor');
|
|
IF NOT nwServ.GetDiskUtilization(volNbr,1 {supervisor ObjId},usedDirs,usedFiles,usedBlocks)
|
|
then begin
|
|
writeln('--Error returned by nwServ.GetDiskUtilization, err#',nwServ.result);
|
|
if nwServ.result>=$89
|
|
then writeln('--( Object Search/Read rights are necessary.)');
|
|
end
|
|
else begin
|
|
writeln(' dirs in use :',usedDirs);
|
|
writeln(' files in use :',usedFiles);
|
|
writeln(' blocks in use:',usedBlocks);
|
|
{ note that blocksinuse is a word (Max ownership= 262 Mb.)
|
|
GetObjectVolRestriction returns the BlocksInUse value as a LongInt }
|
|
writeln(' (created/owned dirs/files/blocks)');
|
|
end;
|
|
|
|
writeln('Test of SetObjectVolRestriction:');
|
|
IF NOT SetObjectVolRestriction(volNbr,$1,BlocksInUse+100)
|
|
then begin
|
|
writeln('--Error returned by setObjectVolRestriction, err#',nwFile.result);
|
|
if nwFile.result=140
|
|
then writeln('--( Supervisor equivalent rights are necessary.)');
|
|
end
|
|
else writeln('--OK, volume restriction set.');
|
|
|
|
IF GetObjectVolRestriction(volNbr,$1 {objectId of Supervisor},
|
|
MaxAllowedBlocks,BlocksInUse)
|
|
then begin
|
|
if MaxAllowedBlocks=$40000000 { no restriction }
|
|
then writeln('--SetObjectVolRestriction failed.');
|
|
end;
|
|
|
|
writeln;
|
|
writeln('Testing ScanVolForRestrictions:');
|
|
sequenceNbr:=0;
|
|
While ScanVolForRestrictions(volNbr,sequenceNbr,NbrOfObjects,ResultBuffer)
|
|
do begin
|
|
for t:=1 to NbrOfObjects
|
|
do begin
|
|
write(' ObjectId:',HexStr(resultbuffer[t].objId,8));
|
|
writeln(' /Restriction: ',resultBuffer[t].MaxallowedBlocks,' Blocks');
|
|
end;
|
|
end;
|
|
IF nwFile.result=$FF { NO MORE DATA, normal iteration end }
|
|
then writeln('--No (more) volume restrictions.')
|
|
else writeln('--Error returned by ScanVolForRestrictions, err#',nwFile.result);
|
|
|
|
|
|
writeln;
|
|
writeln('Clearing SUPERVISOR restrictions using ClearObjectVolRestriction.');
|
|
IF NOT ClearObjectVolRestriction(VolNbr,$1)
|
|
then begin
|
|
writeln('--Error calling ClearObjectVolRestriction, err#',nwFile.result);
|
|
if nwFile.result=140
|
|
then writeln('--( Supervisor equivalent rights are necessary.)');
|
|
end;
|
|
|
|
|
|
IF GetObjectVolRestriction(volNbr,1 {objectId of Supervisor},
|
|
MaxAllowedBlocks,BlocksInUse)
|
|
then begin
|
|
if MaxAllowedBlocks=$40000000
|
|
then writeln('--OK, user now has no restriction.')
|
|
else writeln('--Error: ClearObjectVolRestriction Failed.');
|
|
end;
|
|
|
|
end. |