xref: /original-bsd/usr.bin/pascal/libpc/unixio.i (revision 2301fdfb)
1 (* Copyright (c) 1979 Regents of the University of California *)
2 
3 const
4 sccsid = '@(#)unixio.i 1.1 06/17/81';
5 
6 type
7 fileptr = record
8 	cnt :integer
9 	end;
10 
11 function TELL(
12 var	fptr :text)
13 {returns} :fileptr;
14 
15 var
16 filesize, headsize, tailsize :integer;
17 result :fileptr;
18 
19 begin
20 tailsize := 0;
21 while not eof(fptr) do begin
22 	get(fptr);
23 	tailsize := tailsize + 1
24 	end;
25 filesize := 0;
26 reset(fptr);
27 while not eof(fptr) do begin
28 	get(fptr);
29 	filesize := filesize + 1
30 	end;
31 reset(fptr);
32 for headsize := 1 to filesize - tailsize do
33 	get(fptr);
34 result.cnt := headsize;
35 TELL := result
36 end;
37 
38 procedure SEEK(
39  var	fptr :text;
40  var	cnt :fileptr);
41 
42 var
43 i :integer;
44 
45 begin
46 reset(fptr);
47 for i := 1 to cnt.cnt do
48 	get(fptr)
49 end;
50 
51 procedure APPEND(
52  var	fptr :text);
53 
54 var
55 tmp :text;
56 
57 begin
58 rewrite(tmp);
59 reset(fptr);
60 while not eof(fptr) do begin
61 	if eoln(fptr) then
62 		writeln(tmp)
63 	else
64 		write(tmp, fptr^);
65 	get(fptr)
66 	end;
67 reset(tmp);
68 rewrite(fptr);
69 while not eof(tmp) do begin
70 	if eoln(tmp) then
71 		writeln(fptr)
72 	else
73 		write(fptr, tmp^);
74 	get(tmp)
75 	end
76 end;
77