home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-05-29 | 3.0 KB | 114 lines | [TEXT/CWIE] |
- unit MyServerControl;
-
- interface
-
- uses
- Files, ServerControlIntf;
-
- function MySCServerVersion (var ServerType: integer; var ServerVersion: integer):OSErr;
- function MySCGetSetupInfo (var MaxVolumes: integer; var MaxExpFolders: integer): OSErr;
- function MySCGetIndexedSharePoint(index: integer; var vrn: integer; var dirID: longint): OSErr;
- { index should range be between -MaxVolumes and MaxExpFolders }
-
- implementation
-
- uses
- Errors,
- MyUtils;
-
- function MySCServerVersion (var ServerType: integer; var ServerVersion: integer):OSErr;
- var
- err: OSErr;
- scPB: SCParamBlockRec;
- begin
- err := unimpErr;
- if MyTrapAvailable(ServerDispatch) then begin
- scPB.versionPB.scCode := SCServerVersion;
- scPB.versionPB.scExtNamePtr := nil;
- err := SyncServerDispatch(@scPB);
- ServerType := scPB.versionPB.scServerType;
- ServerVersion := scPB.versionPB.scServerVersion;
- end;
- MySCServerVersion := err;
- end;
-
- function MySCGetSetupInfo (var MaxVolumes: integer; var MaxExpFolders: integer): OSErr;
- var
- err: OSErr;
- scPB: SCParamBlockRec;
- sir: SetupInfoRec;
- ServerType: integer;
- ServerVersion: integer;
- begin
- err := MySCServerVersion(ServerType, ServerVersion);
- if err = noErr then begin
- if ServerType = MFSType then begin
- MaxVolumes := 10;
- MaxExpFolders := 10;
- end else begin
- scPB.setupPB.scCode := SCGetSetupInfo;
- scPB.setupPB.scSetupPtr := @sir;
- err := SyncServerDispatch(@scPB);
- MaxVolumes := scPB.setupPB.scMaxVolumes;
- MaxExpFolders := scPB.setupPB.scMaxExpFolders;
- end;
- end;
- MySCGetSetupInfo := err;
- end;
-
- function MySCGetIndexedSharePoint(index: integer; var vrn: integer; var dirID: longint): OSErr;
- var
- err: OSErr;
- scPB: SCParamBlockRec;
- ServerType: integer;
- ServerVersion: integer;
- begin
- if index = 0 then begin
- err := fnfErr;
- end else begin
- err := MySCServerVersion(ServerType, ServerVersion);
- if err = noErr then begin
- scPB.standardPB.scCode := SCGetExpFldr;
- scPB.standardPB.scVRefNum := 0;
- scPB.standardPB.scNamePtr := nil;
- scPB.standardPB.scIndex := index;
- err := SyncServerDispatch(@scPB);
- if (err = noErr) & (ServerType = MFSType) & (scPB.standardPB.scVRefNum = 0) then begin
- err := fnfErr;
- end;
- vrn := scPB.standardPB.scVRefNum;
- dirID := scPB.standardPB.scDirID;
- end;
- end;
- MySCGetIndexedSharePoint := err;
- end;
-
- end.
-
- procedure EnumerateSharedFolders;
- var
- err: OSErr;
- index: integer;
- spec: FSSpec;
- MaxVolumes: integer;
- MaxExpFolders: integer;
- begin
- err := MySCGetSetupInfo (MaxVolumes, MaxExpFolders);
- writeln(err);
- if err = noErr then begin
- for index := -MaxVolumes to MaxExpFolders do begin
- if index <> 0 then begin
- err := MySCGetIndexedSharePoint(index, spec.vrefnum, spec.parID);
- writeln(index, ' ', err);
- if err = noErr then begin
- writeln(spec.vRefNum, ' ', spec.parID);
- spec.name := 'xxx';
- err:=FSMakeFSSpec(spec.vRefNum,spec.parID,'',spec);
- writeln(err, ' ', spec.name);
- end;
- end;
- end;
- end;
- end;
-
-