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