1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
include <mach.h>
include <config.h>
include <fio.h>
include "ki.h"
# KFIOTX -- Text file driver.
procedure kopntx (osfn, mode, chan)
char osfn[ARB] # packed os filename
int mode # access mode
int chan # receives channel code
int server
int ki_connect(), ki_getchan()
include "kii.com"
begin
server = ki_connect (osfn)
if (server == NULL) {
call strpak (p_sbuf[p_arg[1]], p_sbuf, SZ_SBUF)
call zopntx (p_sbuf, mode, chan)
if (chan != ERR)
chan = ki_getchan (server, chan)
} else
call kt_zopn (KI_ZFIOTX, osfn, mode, chan)
end
procedure kclstx (chan, status)
int chan
int status
include "kichan.com"
begin
# Possible if an abort occurs during the open.
if (chan <= 0) {
status = OK
return
}
if (k_node[chan] == NULL) {
call zclstx (k_oschan[chan], status)
call ki_freechan (chan)
} else
call kt_zcls (KI_ZFIOTX, chan, status)
end
procedure kgettx (chan, text, maxch, status)
int chan
char text[maxch]
int maxch, status
include "kichan.com"
begin
if (k_node[chan] == NULL)
call zgettx (k_oschan[chan], text, maxch, status)
else
call kt_zget (KI_ZFIOTX, chan, text, maxch, status)
end
procedure kputtx (chan, text, nchars, status)
int chan
char text[nchars]
int nchars, status
include "kichan.com"
begin
if (k_node[chan] == NULL)
call zputtx (k_oschan[chan], text, nchars, status)
else
call kt_zput (KI_ZFIOTX, chan, text, nchars, status)
end
procedure kflstx (chan, status)
int chan
int status
include "kichan.com"
begin
if (k_node[chan] == NULL)
call zflstx (k_oschan[chan], status)
else
call kt_zfls (KI_ZFIOTX, chan, status)
end
procedure ksektx (chan, loffset, status)
int chan
long loffset
int status
include "kichan.com"
begin
if (k_node[chan] == NULL)
call zsektx (k_oschan[chan], loffset, status)
else
call kt_zsek (KI_ZFIOTX, chan, loffset, status)
end
procedure knottx (chan, loffset)
int chan
long loffset
include "kichan.com"
begin
if (k_node[chan] == NULL)
call znottx (k_oschan[chan], loffset)
else
call kt_znot (KI_ZFIOTX, chan, loffset)
end
procedure kstttx (chan, what, lvalue)
int chan
int what
long lvalue
include "kichan.com"
begin
if (k_node[chan] == NULL)
call zstttx (k_oschan[chan], what, lvalue)
else {
# Querying the text file status parameters is slow over the net,
# and they are essentially constants anyhow, so just return the
# expected values.
#
# call kt_zstt (KI_ZFIOTX, chan, what, lvalue)
switch (what) {
case FSTT_BLKSIZE:
lvalue = 1
case FSTT_FILSIZE:
lvalue = 1
case FSTT_OPTBUFSIZE:
lvalue = SZ_LINE
case FSTT_MAXBUFSIZE:
lvalue = 0
default:
lvalue = ERR
}
}
end
|