

{IncludeFrom=fs <p2c/fs.h>}


{*VarStrings=0} {*VarFiles=0} {*ExportSymbol=fs_%s} {*Export_Symbol=%s}


module fs;    {file support} 

import sysglobals, asm, misc;

export

type 
     closetype = (cnormal, lock, purge, ccrunch); 
     faccess = (readonly,writeonly,readwrite,writeappend,overwrite);
     vptr = record case integer of
              0: (j: integer);
              1: (i: ^shortint); 
              2: (s: ^string80);
              end;
           

procedure fstripname(s : fid; var pvname,ppath,pfname : string);
procedure fixname(var title: string; kind: filekind); 
procedure zapspaces(var s: string); 
function suffix(var ftitle: string): filekind; 
function scantitle (fname: fid; var fvid: vid; var ftitle: fid; 
                            var fsegs: integer; var fkind: filekind): boolean; 
function findvolume (var fvid: vid; verify: boolean): unitnum; 
procedure doprefix(var dirname:fid; var kvid:vid; var kunit:integer; 
                                                             findunit:boolean);

{WarnNames=1}
procedure finitb (var f: fib; window: windowp; recbytes: integer); 
procedure fhpopen(var f: fib; typ: faccess; var title, option: string255);
procedure fhpreset(var f: fib; typ: faccess);
procedure fcloseit(var f: fib; stype: string255);
procedure fclose (var f: fib; ftype: closetype); 
procedure fmaketype(anyvar f:fib; var title, option, typestring: string); 
procedure foverfile(anyvar f:fib; var title, option, typestring: string); 
procedure fanonfile(anyvar f:fib; var name:string; kind:filekind;size:integer);

procedure fseek(var f: fib; position: integer); 
function fposition(var f: fib): integer;
function fmaxpos(var f: fib): integer;

function fbufferref(var f: fib): windowp;
procedure fget (var f: fib); 
procedure fput (var f: fib); 
function feof (var f: fib): boolean; 
function feoln (var f: fib): boolean; 
procedure fwriteln (var f: fib); 

procedure fread(anyvar f: fib; anyvar buf: window); 
procedure fwrite(anyvar f: fib;  anyvar buf: window); 

{WarnNames}
procedure freadbytes(anyvar f: fib; anyvar buf: window; size: integer); 
procedure fwritebytes(anyvar f: fib;  anyvar buf: window; size: integer); 
{*WarnNames=1}

function fblockio (var f: fib; var buf: window;
                           nblocks,rblock: integer; doread: boolean): integer; 


procedure killchar (anyvar f: fib; var sinx: integer); 

procedure fpage (var t: text); 
procedure foverprint(var t: text); 
procedure fgotoxy(anyvar f: fib;      x, y:  integer); 
procedure fgetxy (anyvar f: fib;  var x, y:  integer); 

procedure freadln (var t:text); 
procedure fwritechar (var t: text; ch: char; rleng: shortint); 
procedure freadchar (var t:text; var ch: char);
procedure freadword (var t:text; var i: shortint);
procedure freadint (var t:text; var i: integer); 
procedure fwriteword (var t:text;i,rleng: shortint); 
procedure fwriteint (var t:text;i: integer; rleng: shortint); 
procedure fwritestr (var t:text;anyvar s: string80; rleng: shortint); 
procedure freadstr (var t:text; var s: string);
procedure fwritepaoc (var t: text; var a: window; aleng,rleng: shortint); 
procedure freadpaoc (var t: text; var a: window; aleng: shortint);
procedure freadenum (var t: text; var i: shortint; p: vptr);
procedure fwriteenum(var t: text; i: shortint; rleng: shortint; p: vptr);
procedure freadbool (var t: text; var b: boolean);
procedure fwritebool(var t: text; b: boolean; rleng: shortint);


procedure freadstrchar (var s: string255;var p2: integer; var ch: char);
procedure fwritestrchar (var s: string;
                                  var p2: integer; ch: char; rleng: shortint); 
procedure freadstrword (var s: string255;var p2: integer; var i: shortint);
{PROCEDURE FREADSTRINT (VAR S: STRING255;VAR P2,I: INTEGER);}
procedure fwritestrword (var s: string;var p2: integer; i,rleng: shortint); 
{PROCEDURE FWRITESTRINT(VAR T: STRING;
                               VAR P2: INTEGER; I: INTEGER; RLENG: SHORTINT); }
procedure freadstrstr (var t: string255;var p2: integer; var s: string);
procedure fwritestrstr (var s: string; var p2: integer;
                                        anyvar t: string255; rleng: shortint); 
procedure fwritestrpaoc (var s: string; var p2: integer;
                                        var a: window; aleng,rleng: shortint); 
procedure freadstrpaoc (var s: string255; var p2: integer;
                                              var a: window; aleng: shortint);
procedure freadstrenum (var s: string255;
                                    var p2: integer; var i: shortint; p: vptr);
procedure fwritestrenum(var s: string;
                                  var p2: integer; i,rleng: shortint; p: vptr);
procedure freadstrbool (var s: string255;var p2: integer; var b: boolean);
procedure fwritestrbool(var s: string;
                                 var p2: integer; b: boolean; rleng: shortint);


end.


