2
$Id: nwsys.inc,v 1.9 2003/03/25 18:17:54 armin Exp $
3
This file is part of the Free Pascal run time library.
4
Copyright (c) 1999-2000 by the Free Pascal development team
5
Copyright (c) 2001 Armin Diehl
7
Interface to netware clib
9
See the file COPYING.FPC, included in this distribution,
10
for details about the copyright.
12
This program is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16
**********************************************************************}
18
{ 2000/08/27 armin: first version
19
2001/03/08 armin: additional functions
20
2001/04/14 armin: additional functions for crt-unit
30
unsignedlong = LONGINT;
31
unsignedint = LONGINT;
35
NWStatBufT = PACKED RECORD
36
st_dev : dev_t; (* volume number *)
37
st_ino : ino_t; (* directory entry number of the st_name *)
38
st_mode : unsignedshort; (* emulated file mode *)
39
st_nlink : unsignedshort; (* count of hard links (always 1) *)
40
st_uid : unsignedlong; (* object id of owner *)
41
st_gid : unsignedshort; (* group-id (always 0) *)
42
st_rdev : dev_t; (* device type (always 0) *)
43
st_size : off_t; (* total file size--files only *)
44
st_atime : time_t; (* last access date--files only *)
45
st_mtime : time_t; (* last modify date and time *)
46
st_ctime : time_t; (* POSIX: last status change time... *)
47
(* ...NetWare: creation date/time *)
48
st_btime : time_t; (* last archived date and time *)
49
st_attr : unsignedlong; (* file attributes *)
50
st_archivedID : unsignedlong; (* user/object ID of last archive *)
51
st_updatedID : unsignedlong; (* user/object ID of last update *)
52
st_inheritedRightsMask
53
: unsignedshort; (* inherited rights mask *)
54
st_originatingNameSpace
55
: BYTE; (* namespace of creation *)
56
st_name : ARRAY [0..255] OF CHAR;
57
(* TARGET_NAMESPACE name *)
61
st_spare : ARRAY [0..3] OF LONGINT;
64
FUNCTION _stat (path : PCHAR; VAR buf : NWStatBufT) : LONGINT; CDECL; EXTERNAL Clib NAME 'stat_411';
65
FUNCTION _fstat (Fileno : LONGINT; VAR buf : NWStatBufT) : LONGINT; CDECL; EXTERNAL CLib NAME 'fstat_411';
67
PROCEDURE NWFree (P : POINTER); CDECL; EXTERNAL Clib NAME 'free';
69
PROCEDURE PressAnyKeyToContinue; CDecl; EXTERNAL; // Clib;
72
PROCEDURE ExitThread (action_code, termination_code : LONGINT); CDecl; EXTERNAL CLib;
73
FUNCTION _BeginThread (func, stack : pointer; Stacksize : LONGINT; arg : pointer) : LONGINT; Cdecl; EXTERNAL CLib NAME 'BeginThread';
74
FUNCTION _GetThreadDataAreaPtr : POINTER; CDecl; EXTERNAL CLib NAME 'GetThreadDataAreaPtr';
75
PROCEDURE _SaveThreadDataAreaPtr (P : POINTER); CDecl; EXTERNAL CLib NAME 'SaveThreadDataAreaPtr';
76
PROCEDURE _exit (ExitCode : LONGINT); CDecl; EXTERNAL CLib;
78
PROCEDURE ConsolePrintf (FormatStr : PCHAR; Param : LONGINT); CDecl; EXTERNAL CLib Name 'ConsolePrintf';
79
PROCEDURE ConsolePrintf3 (FormatStr : PCHAR; P1,P2,P3 : LONGINT); CDecl; EXTERNAL CLib Name 'ConsolePrintf';
80
PROCEDURE ConsolePrintf (FormatStr : PCHAR); CDecl; EXTERNAL CLib Name 'ConsolePrintf';
81
// this gives internal compiler error 1234124 ??
82
//PROCEDURE ConsolePrintf (FormatStr : PCHAR; Param : array of const); CDecl; EXTERNAL CLib;
84
PROCEDURE _printf (FormatStr : PCHAR; Param : LONGINT); CDecl; EXTERNAL CLib;
85
PROCEDURE _printf (FormatStr : PCHAR); CDecl; EXTERNAL CLib;
86
// this gives internet compiler error 1234124 ??
87
// PROCEDURE _printf (FormatStr : PCHAR; Param : array of const); CDecl; EXTERNAL CLib;
89
// values for __action_code used with ExitThread()
91
TSR_THREAD = -1; //-Terminate only the current thread.
92
EXIT_THREAD = 0; //-Terminate the current thread; if the current thread is
93
// also the last thread, terminate the NLM.
94
EXIT_NLM = 1; //-Terminate the entire NLM.
96
FUNCTION _GetStdIn : POINTER; CDECL; EXTERNAL Clib NAME '__get_stdin'; // result: **FILE
97
FUNCTION _GetStdOut : POINTER; CDECL; EXTERNAL Clib NAME '__get_stdout';
98
FUNCTION _GetStdErr : POINTER; CDECL; EXTERNAL Clib NAME '__get_stderr';
101
FUNCTION _open (FileName : PCHAR; access, mode : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'open';
102
FUNCTION _close (FileNo : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'close';
103
FUNCTION _lseek (FileNo,Pos,whence :LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'lseek';
104
FUNCTION _chsize (FileNo,Pos : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'chsize';
105
FUNCTION _tell (FileNo : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'tell';
106
FUNCTION _write (FileNo : LONGINT; BufP : POINTER; Len : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'write';
107
FUNCTION _read (FileNo : LONGINT; BufP : POINTER; Len : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'read';
108
FUNCTION _filelength (filedes : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'filelength';
114
MFileAttributes : LONGINT;
115
MFileAttributesMask : LONGINT;
119
MLastArchivedDate : WORD;
120
MLastArchivedTime : WORD;
121
MLastArchivedID : LONGINT;
122
MLastUpdatedDate : WORD;
123
MLastUpdatedTime : WORD;
124
MLastUpdatedID : LONGINT;
125
MLastAccessedDate : WORD;
126
MInheritanceGrantMask : WORD;
127
MInheritanceRevokeMask : WORD;
128
MMaximumSpace : LONGINT;
129
MLastUpdatedInSeconds : LONGINT
132
CONST MModifyNameBit = $0001;
133
MFileAtrributesBit = $0002;
134
MCreateDateBit = $0004;
135
MCreateTimeBit = $0008;
137
MLastArchivedDateBit = $0020;
138
MLastArchivedTimeBit = $0040;
139
MLastArchivedIDBit = $0080;
140
MLastUpdatedDateBit = $0100;
141
MLastUpdatedTimeBit = $0200;
142
MLastUpdatedIDBit = $0400;
143
MLastAccessedDateBit = $0800;
144
MInheritanceRestrictionMaskBit = $1000;
145
MMaximumSpaceBit = $2000;
146
MLastUpdatedInSecondsBit = $4000;
149
FUNCTION _chdir (path : PCHAR) : LONGINT; CDECL; EXTERNAL CLib NAME 'chdir';
150
FUNCTION _getcwd (path : PCHAR; pathlen : LONGINT) : PCHAR; CDECL; EXTERNAL CLib NAME 'getcwd';
151
FUNCTION _mkdir (path : PCHAR) : LONGINT; CDECL; EXTERNAL CLib NAME 'mkdir';
152
FUNCTION _rmdir (path : PCHAR) : LONGINT; CDECL; EXTERNAL CLib NAME 'rmdir';
153
FUNCTION _ChangeDirectoryEntry (PathName : PCHAR; VAR ModyStruct : NWModifyStructure; ModifyBits, AllowWildcard : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'ChangeDirectoryEntry';
155
// get fileno from stream
156
FUNCTION _fileno (Handle : LONGINT) : LONGINT; CDECL; EXTERNAL Clib NAME 'fileno';
157
FUNCTION _isatty (FileNo : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'isatty';
159
(* values for 'o_flag' in open()... *)
160
CONST O_RDONLY = $0000; (* open for read only *)
161
O_WRONLY = $0001; (* open for write only *)
162
O_RDWR = $0002; (* open for read and write *)
163
O_ACCMODE = $0003; (* AND with value to extract access flags *)
164
O_APPEND = $0010; (* writes done at end of file *)
165
O_CREAT = $0020; (* create new file *)
166
O_TRUNC = $0040; (* truncate existing file *)
167
O_EXCL = $0080; (* exclusive open *)
168
O_TEXT = $0100; (* text file--unsupported *)
169
O_BINARY = $0200; (* binary file *)
170
O_NDELAY = $0400; (* nonblocking flag *)
171
O_NOCTTY = $0800; (* currently unsupported *)
172
O_NONBLOCK = O_NDELAY;
176
FUNCTION _unlink (FileName : PCHAR) : LONGINT; CDECL; EXTERNAL CLib NAME 'unlink';
177
FUNCTION _rename (oldpath, newpath : PCHAR) : LONGINT; CDECL; EXTERNAL Clib NAME 'rename';
180
TYPE _PLONGINT = ^LONGINT;
181
FUNCTION __get_errno_ptr : _PLONGINT; CDECL; EXTERNAL Clib;
184
FUNCTION _malloc (size : LONGINT) : POINTER; CDECL; EXTERNAL CLib NAME 'malloc';
185
FUNCTION _realloc (p : POINTER; size : LONGINT) : POINTER; CDECL; EXTERNAL CLib NAME 'realloc';
186
PROCEDURE _free (what : POINTER); CDECL; EXTERNAL CLib NAME 'free';
187
FUNCTION _stackavail : LONGINT; CDECL; EXTERNAL CLib NAME 'stackavail';
190
PROCEDURE _EnterDebugger; CDECL; EXTERNAL Clib NAME 'EnterDebugger';
193
FUNCTION _strlen (P : PCHAR) : LONGINT; CDECL; EXTERNAL Clib NAME 'strlen';
197
tm_sec, tm_min, tm_hour,
198
tm_mday, tm_mon, tm_year,
199
tm_wday, tm_yday, tm_isdst : LONGINT;
202
FUNCTION _localtime (VAR time : time_t) : PNWTM; CDECL; EXTERNAL Clib NAME 'localtime';
203
FUNCTION _time (tloc : POINTER) : LONGINT; CDECL; EXTERNAL Clib NAME 'time';
204
PROCEDURE _ConvertTimeToDOS (time : time_t; VAR DosDate, DosTime : WORD); CDECL; EXTERNAL Clib NAME '_ConvertTimeToDOS';
205
PROCEDURE _tzset; CDECL; EXTERNAL Clib NAME 'tzset';
208
//-----------------------------------------------------------------------
210
CONST NWDEFCONN_HANDLE = 0;
212
TYPE NWCONN_HANDLE = LONGINT;
214
NWDateAndTime = PACKED RECORD
216
Hour,Minute,Second,DayOfWeek : BYTE;
219
PROCEDURE GetFileServerDateAndTime (VAR TimeBuf : NWDateAndTime); CDECL; EXTERNAL CLib NAME 'GetFileServerDateAndTime';
220
FUNCTION SetFileServerDateAndTime(year:WORD; month:WORD; day:WORD; hour:WORD; minute:WORD;
221
second:WORD):longint;cdecl; EXTERNAL CLib Name 'SetFileServerDateAndTime';
223
TYPE FILE_SERV_INFO = record
224
serverName : array[0..47] of char;
225
netwareVersion : BYTE;
226
netwareSubVersion : BYTE;
227
maxConnectionsSupported : WORD;
228
connectionsInUse : WORD;
229
maxVolumesSupported : WORD;
230
revisionLevel : BYTE;
233
peakConnectionsUsed : WORD;
234
accountingVersion : BYTE;
236
queingVersion : BYTE;
237
printServerVersion : BYTE;
238
virtualConsoleVersion : BYTE;
239
securityRestrictionLevel: BYTE;
240
internetBridgeSupport : BYTE;
241
reserved : array[0..59] of BYTE;
242
CLibMajorVersion : BYTE;
243
CLibMinorVersion : BYTE;
246
pFILE_SERV_INFO = ^FILE_SERV_INFO;
248
FUNCTION GetServerInformation(returnSize:longint; serverInfo:pFILE_SERV_INFO):longint;cdecl; EXTERNAL CLib NAME 'GetServerInformation';
254
d_time : WORD; {modification time}
255
d_date : WORD; {modification date}
256
d_size : LONGINT; {filesize}
257
d_ino : LONGINT; {serial number}
258
d_dev : LONGINT; {volume number}
259
d_cdatetime : time_t; {creation date and time}
260
d_adatetime : time_t; {last access - files only}
261
d_bdatetime : time_t; {last archive date and time}
262
d_uid : LONGINT; {owner id (object id) }
263
d_archivedID : LONGINT;
264
d_updatedID : LONGINT;
265
d_nameDOS : ARRAY [0..12] OF CHAR;
266
d_inheritedRightsMask : WORD;
267
d_originatingNameSpace: BYTE;
268
d_ddatetime : time_t; {deleted date time}
269
d_deletedID : LONGINT;
270
{---- new fields starting in v4.11 ----}
271
d_name : ARRAY [0..255] OF CHAR; { enty's namespace name }
273
PNWDirEnt = ^NWDirEnt;
275
FUNCTION _opendir (pathname : PCHAR) : PNWDirEnt; CDECL; EXTERNAL CLib NAME 'opendir_411';
276
FUNCTION _closedir (dirH : PNWDirEnt) : LONGINT; CDECL; EXTERNAL CLib NAME 'closedir';
277
FUNCTION _readdir (dirH : PNWDirEnt) : PNWDirEnt; CDECL; EXTERNAL CLib NAME 'readdir';
278
FUNCTION _SetReaddirAttribute (dirH : PNWDirEnt; Attribute : LONGINT) : LONGINT; EXTERNAL CLib NAME 'SetReaddirAttribute';
281
FUNCTION _getenv (name : PCHAR) : PCHAR; CDECL; EXTERNAL CLib NAME 'getenv';
284
FUNCTION _GetVolumeName (volumeNumber : LONGINT; volumeName : PCHAR) : LONGINT; CDECL; EXTERNAL CLib NAME 'GetVolumeName';
285
FUNCTION _GetVolumeNumber (volumeName : PCHAR; VAR volumeNumber : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'GetVolumeNumber';
286
FUNCTION _GetVolumeInfoWithNumber (VolumeNumber : BYTE;
288
VAR TotalBlocks : WORD;
289
VAR SectorsPerBlock : WORD;
290
VAR availableBlocks : WORD;
291
VAR totalDirectorySlots : WORD;
292
VAR availableDirSlots : WORD;
293
VAR volumeisRemovable : WORD) : LONGINT; CDECL; EXTERNAL CLib NAME 'GetVolumeInfoWithNumber';
294
FUNCTION _GetNumberOfVolumes : LONGINT; CDECL; EXTERNAL CLib NAME 'GetNumberOfVolumes';
297
PROCEDURE _CopyToScreenMemory (Height, Width : WORD; Data : POINTER; x, y : WORD); CDECL; EXTERNAL Clib NAME 'CopyToScreenMemory';
298
PROCEDURE _CopyFromScreenMemory (Height, Width : WORD; Data : POINTER; x, y : WORD); CDECL; EXTERNAL CLib NAME 'CopyFromScreenMemory';
299
FUNCTION _DisplayInputCursor : LONGINT; CDECL; EXTERNAL CLib NAME 'DisplayInputCursor';
300
FUNCTION _HideInputCursor : LONGINT; CDECL; EXTERNAL CLib NAME 'HideInputCursor';
301
FUNCTION _SetPositionOfInputCursor (row,col : WORD): LONGINT; CDECL; EXTERNAL Clib NAME 'SetPositionOfInputCursor';
302
PROCEDURE _GotoXY (col, row : WORD); CDECL; EXTERNAL Clib NAME 'gotoxy';
303
FUNCTION _GetSizeOfScreen (VAR height,width : WORD): LONGINT; CDECL; EXTERNAL CLib NAME 'GetSizeOfScreen';
304
FUNCTION _IsColorMonitor : LONGINT; CDECL; EXTERNAL CLib NAME 'IsColorMonitor';
305
PROCEDURE _RingTheBell; CDECL; EXTERNAL CLib NAME 'RingTheBell';
306
FUNCTION _SetCursorShape (startline,endline : BYTE) : WORD; CDECL; EXTERNAL CLib NAME 'SetCursorShape';
307
FUNCTION _GetCursorShape (VAR startline,endline : BYTE) : WORD; CDECL; EXTERNAL CLib NAME 'GetCursorShape';
308
FUNCTION _wherex : WORD; CDECL; EXTERNAL CLib NAME 'wherex';
309
FUNCTION _wherey : WORD; CDECL; EXTERNAL CLib NAME 'wherey';
310
PROCEDURE _clrscr; CDECL; EXTERNAL CLib NAME 'clrscr';
311
FUNCTION _kbhit : LONGINT; CDECL; EXTERNAL Clib NAME 'kbhit';
312
FUNCTION _getch : CHAR; CDECL; EXTERNAL CLib NAME 'getch';
313
PROCEDURE _delay (miliseconds : longint); CDECL; EXTERNAL Clib NAME 'delay';
314
FUNCTION _SetCtrlCharCheckMode (Enabled : BOOLEAN) : BOOLEAN; CDECL; EXTERNAL CLib NAME 'SetCtrlCharCheckMode';
315
FUNCTION _SetAutoScreenDestructionMode (Enabled : BOOLEAN) : BOOLEAN; CDECL; EXTERNAL CLib NAME 'SetAutoScreenDestructionMode';
318
FUNCTION _memcpy (Dest, Src : POINTER; Len : LONGINT) : POINTER; CDECL; EXTERNAL Clib NAME 'memcpy';
320
FUNCTION _OpenLocalSemaphore (InitialValue : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'OpenLocalSemaphore';
321
FUNCTION _WaitOnLocalSemaphore (semaphoreHandle : LONGINT) : LONGINT; CDECL; EXTERNAL Clib NAME 'WaitOnLocalSemaphore';
322
FUNCTION _SignalLocalSemaphore (semaphoreHandle : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'SignalLocalSemaphore';
323
FUNCTION _CloseLocalSemaphore (semaphoreHandle : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'CloseLocalSemaphore';
324
FUNCTION _EnterCritSec : LONGINT; CDecl; EXTERNAL CLib NAME 'EnterCritSec';
325
FUNCTION _ExitCritSec : LONGINT; CDecl; EXTERNAL CLib NAME 'ExitCritSec';
328
FUNCTION _SetThreadGroupID (id : longint) : longint; CDecl; EXTERNAL CLib NAME 'SetThreadGroupID';
329
FUNCTION _GetThreadGroupID : longint; CDecl; EXTERNAL CLib NAME 'GetThreadGroupID';
333
PROCEDURE _Signal (Sig : longint; SigFunc : pointer); CDECL; EXTERNAL Clib NAME 'signal';
338
Revision 1.9 2003/03/25 18:17:54 armin
339
* support for fcl, support for linking without debug info
340
* renamed winsock2 to winsock for win32 compatinility
341
* new sockets unit for netware
342
* changes for compiler warnings
344
Revision 1.8 2003/02/16 17:46:11 armin
347
Revision 1.7 2002/09/07 16:01:20 peter
348
* old logs removed and tabs fixed
350
Revision 1.6 2002/04/01 15:20:08 armin
351
+ unload module no longer shows: Module did not release...
352
+ check-function will no longer be removed when smartlink is on
354
Revision 1.5 2002/03/30 09:09:47 armin
355
+ support check-function for netware
357
Revision 1.4 2002/03/08 19:06:47 armin
358
* Additional routines needed for MT