-- FT.mesa -- Interface to the File Transfer component of the -- Mike Schroeder September 7, 1982 11:16 am DIRECTORY Rope: TYPE USING [ROPE], File: TYPE USING [Capability], LSD: TYPE USING [Entry]; FT: DEFINITIONS = { -- Exceptional conditions are reported with CIFS.Error OpenFile: TYPE = REF FileObject; FileObject: TYPE = RECORD [ fc: File.Capability, entry: LSD.Entry, mode: Mode, name: Rope.ROPE, oldFile: BOOLEAN ]; Mode: TYPE = CARDINAL; read: Mode = 1; write: Mode = 2; create: Mode = 4; replace: Mode = 8; dontCheck: Mode = 16; -- file open and close Open: PROC[name: Rope.ROPE, mode: Mode] RETURNS[fh: OpenFile]; -- Open a file -- name is a full path name of the form "/host/dir1/.../dirn/entryname" -- A capability for the file can be found in fh.fc -- Sets locks according to mode. Close: PROC [fh: OpenFile]; -- Close a file. -- utilities Connect: PROC[name: Rope.ROPE, password: Rope.ROPE]; -- Set credentials Delete: PROC[name: Rope.ROPE]; -- Delete a file GetBaseFreeSpace: PROC RETURNS[pages: INT]; -- Gets the number of free pages that should be maintained -- on the local disk Login: PROC[name: Rope.ROPE, password: Rope.ROPE]; -- Set credentials Rename: PROC[from: Rope.ROPE, to: Rope.ROPE]; -- Rename file Reset: PROC[name: Rope.ROPE]; -- Reset a file from its backing store -- Accomplished by invalidating local copy. SetBaseFreeSpace: PROC[pages: INT ← 0]; -- Sets the number of free pages that should be maintained -- on the local disk -- If pages is omitted, FT will just ensure that there are -- enough free pages according to the current setting Swap: PROC[filea: Rope.ROPE, fileb: Rope.ROPE]; -- Swap the contents of filea and fileb ExplicitBackup: PROC[name: Rope.ROPE] RETURNS[version: INT]; -- Store a file and return its version number -- 0 is returned if the file on the server is current -- than the server, and no store is done }..