Headers and library sources from all versions of Lightspeed C and THINK C
1
2/*
3 * FileMgr.h
4 *
5 * Copyright (c) 1986 THINK Technologies, Inc.
6 * These interfaces are based on information published in
7 * "Inside Macintosh" by Apple Computer, Addison-Wesley,
8 * Reading (Mass.), 1985-86.
9 *
10 */
11
12#ifndef _FileMgr_
13#define _FileMgr_
14
15#ifndef _MacTypes_
16#include "MacTypes.h"
17#endif
18
19
20/* finder constants */
21#define fHasBundle 8192
22#define fInvisible 16384
23#define fTrash (-3)
24#define fDeskTop (-2)
25#define fDisk 0
26#define fOnDesk 1
27
28
29/* ioPosMode values */
30enum {
31 fsAtMark,
32 fsFromStart,
33 fsFromLEOF,
34 fsFromMark
35};
36#define rdVerify 64
37
38
39/* ioPermssn values */
40enum {
41 fsCurPerm,
42 fsRdPerm,
43 fsWrPerm,
44 fsRdWrPerm,
45 fsRdWrShPerm
46};
47
48
49/* result codes */
50enum {
51 fsDSIntErr = -127,
52 wrgVolTypErr = -123,
53 badMovErr,
54 tmwdoErr,
55 dirNFErr,
56 wrPermErr = -61,
57 badMDBErr,
58 fsRnErr,
59 extFSErr,
60 noMacDskErr,
61 nsDrvErr,
62 volOnLinErr,
63 permErr,
64 volOffLinErr,
65 gfpErr,
66 rfNumErr,
67 paramErr,
68 opWrErr,
69 dupFNErr,
70 fBsyErr,
71 vLckdErr,
72 fLckdErr,
73 wPrErr,
74 fnfErr,
75 tmfoErr,
76 mFulErr,
77 posErr,
78 eofErr,
79 fnOpnErr,
80 bdNamErr,
81 ioErr,
82 nsvErr,
83 dskFulErr,
84 dirFulErr
85};
86
87
88/* standard header used in all PB records */
89#define STANDARD_PBHEADER \
90 struct QElem * qLink; \
91 int qType; \
92 int ioTrap; \
93 Ptr ioCmdAddr; \
94 ProcPtr ioCompletion; \
95 OsErr ioResult; \
96 StringPtr ioNamePtr; \
97 int ioVRefNum;
98
99
100typedef struct
101 {
102 OsType fdType;
103 OsType fdCreator;
104 int fdFlags;
105 Point fdLocation;
106 int fdFldr;
107 } FInfo ;
108
109
110typedef struct
111 {
112 STANDARD_PBHEADER
113 int ioRefNum;
114 SignedByte ioVersNum;
115 SignedByte ioPermssn;
116 Ptr ioMisc;
117 Ptr ioBuffer;
118 long ioReqCount;
119 long ioActCount;
120 int ioPosMode;
121 long ioPosOffset;
122 } ioParam, IOParam ;
123
124/* file parameter block */
125typedef struct
126 {
127 STANDARD_PBHEADER
128 int ioFRefNum;
129 SignedByte ioFVersNum;
130 SignedByte filler1;
131 int ioFDirIndex;
132 SignedByte ioFlAttrib;
133 SignedByte ioFlVersNum;
134 FInfo ioFlFndrInfo;
135 long ioFlNum;
136 int ioFlStBlk;
137 long ioFlLgLen;
138 long ioFlPyLen;
139 int ioFlRStBlk;
140 long ioFlRLgLen;
141 long ioFlRPyLen;
142 long ioFlCrDat;
143 long ioFlMdDat;
144 } fileParam, FileParam ;
145
146/* volume parameter block */
147typedef struct
148 {
149 STANDARD_PBHEADER
150 long filler2;
151 int ioVolIndex;
152 long ioVCrDate;
153 long ioVLsBkUp;
154 int ioVAtrb;
155 int ioVNmFls;
156 int ioVDirSt;
157 int ioVBlLn;
158 int ioVNmAlBlks;
159 long ioVAlBlkSiz;
160 long ioVClpSiz;
161 int ioAlBlSt;
162 long ioVNxtFNum;
163 int ioVFrBlk;
164 } volumeParam, VolumeParam ;
165
166
167typedef union {
168 ioParam ioParam;
169 fileParam fileParam;
170 volumeParam volumeParam;
171} ParamBlockRec, *ParmBlkPtr;
172
173
174/* volume control block */
175typedef struct
176 {
177 struct QElem *qLink;
178 int qType;
179 int vcbFlags;
180 int vcbSigWord;
181 long vcbCrDate;
182 long vcbLsBkUp;
183 int vcbAtrb;
184 int vcbNmFls;
185 int vcbDirSt;
186 int vcbBlLn;
187 int vcbNmBlks;
188 long vcbAlBlkSiz;
189 long vcbClpSiz;
190 int vcbAlBlSt;
191 long vcbNxtFNum;
192 int vcbFreeBks;
193 char vcbVN[28];
194 int vcbDrvNum;
195 int vcbDRefNum;
196 int vcbFSID;
197 int vcbVRefNum;
198 Ptr vcbMAdr;
199 Ptr vcbBufAdr;
200 int vcbMLen;
201 int vcbDirIndex;
202 int vcbDirBlk;
203 } VCB ;
204
205
206/* drive queue element */
207
208typedef struct
209 {
210/* long flags; */
211 struct QElem *qLink;
212 int qType;
213 int dQDrive;
214 int dQRefNum;
215 int dQFSID;
216 int dQDrvSize;
217 } DrvQEl,*DrvQElPtr ;
218
219
220/* functions returning non-integral values */
221pascal struct QHdr *GetFSQHdr();
222pascal struct QHdr *GetDrvQHdr();
223pascal struct QHdr *GetVCBQHdr();
224
225/* low-memory globals */
226extern int BootDrive : 0x210;
227extern struct QHdr DrvQHdr : 0x308;
228extern ProcPtr EjectNotify : 0x338;
229extern Ptr FCBSPtr : 0x34E;
230extern VCB *DefVCBPtr : 0x352;
231extern struct QHdr VCBQHdr : 0x356;
232extern struct QHdr FSQHdr : 0x360;
233
234
235#endif