瀏覽代碼

* removed nwstdio and nwthread
* added nwnit.pp and nwserv.pp containing nearly all netware server structures/function definitions available in the c sdk

armin 22 年之前
父節點
當前提交
5c0479975e
共有 8 個文件被更改,包括 8023 次插入342 次删除
  1. 1 1
      rtl/netware/Makefile
  2. 1 1
      rtl/netware/Makefile.fpc
  3. 14 0
      rtl/netware/npackoff.inc
  4. 13 0
      rtl/netware/npackon.inc
  5. 0 141
      rtl/netware/nwconio.pp
  6. 3166 0
      rtl/netware/nwnit.pp
  7. 4828 0
      rtl/netware/nwserv.pp
  8. 0 199
      rtl/netware/nwthread.pp

+ 1 - 1
rtl/netware/Makefile

@@ -211,7 +211,7 @@ override FPCOPT+=-Ur
 override FPCOPT+=-dMT
 CREATESMART=1
 OBJPASDIR=$(RTL)/objpas
-override TARGET_UNITS+=$(SYSTEMUNIT) systhrds objpas strings netware winsock2 dos crt objects sysutils typinfo math cpu mmx getopts heaptrc lineinfo sockets aio varutils video mouse keyboard types nwsnut nwthread nwconio
+override TARGET_UNITS+=$(SYSTEMUNIT) systhrds objpas strings netware winsock2 dos crt objects sysutils typinfo math cpu mmx getopts heaptrc lineinfo sockets aio varutils video mouse keyboard types nwsnut nwserv nwnit
 override TARGET_LOADERS+=nwpre prelude
 override TARGET_RSTS+=math typinfo varutils
 override INSTALL_FPCPACKAGE=y

+ 1 - 1
rtl/netware/Makefile.fpc

@@ -14,7 +14,7 @@ units=$(SYSTEMUNIT) systhrds objpas strings \
       cpu mmx getopts heaptrc lineinfo \
       sockets aio varutils \
       video mouse keyboard types \
-      nwsnut nwthread nwconio
+      nwsnut nwserv nwnit 
 rsts=math typinfo varutils
 
 [require]

+ 14 - 0
rtl/netware/npackoff.inc

@@ -0,0 +1,14 @@
+(* this header sets packing back to default *)
+
+{$PACKRECORDS DEFAULT}
+
+// pragma pack()
+
+{
+  $Log$
+  Revision 1.1  2003-02-22 18:23:26  armin
+  * removed nwstdio and nwthread
+  * added nwnit.pp and nwserv.pp containing nearly all netware server structures/function definitions available in the c sdk
+
+}
+

+ 13 - 0
rtl/netware/npackon.inc

@@ -0,0 +1,13 @@
+(* this header sets packing to 1 *)
+
+{$PACKRECORDS 1}
+
+// pragma pack(1)
+
+{
+  $Log$
+  Revision 1.1  2003-02-22 18:23:26  armin
+  * removed nwstdio and nwthread
+  * added nwnit.pp and nwserv.pp containing nearly all netware server structures/function definitions available in the c sdk
+
+}

+ 0 - 141
rtl/netware/nwconio.pp

@@ -1,141 +0,0 @@
-{
-    $Id$
-    This file is part of the Free Pascal run time library
-    for Netware.
-    Copyright (c) 1999-2003 by the Free Pascal development team.
-
-    See the file COPYING.FPC, included in this distribution,
-    for details about the copyright.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-					    
-**********************************************************************}
-
-unit nwconio;
-interface
-
-{$mode objfpc}
-
-  const
-    ClibNlm    = 'clib';
-    ThreadsNlm = 'threads';
-
-
-{$PACKRECORDS C}
-
-
-  const
-     DONT_AUTO_ACTIVATE              = 1;
-     DONT_SWITCH_SCREEN              = 2;
-     DONT_CHECK_CTRL_CHARS           = $10;
-     AUTO_DESTROY_SCREEN             = $20;
-     POP_UP_SCREEN                   = $40;
-     UNCOUPLED_CURSORS               = $80;
-     HAS_A_CLIB_HANDLE               = $100;
-     _KEYBOARD_INPUT_ACTIVE          = $00010000;
-     _PROCESS_BLOCKED_ON_KEYBOARD    = $00020000;
-     _PROCESS_BLOCKED_ON_SCREEN      = $00040000;
-     _INPUT_CURSOR_DISABLED          = $00080000;
-     _SCREEN_HAS_TITLE_BAR           = $00400000;
-     _NON_SWITCHABLE_SCREEN          = $01000000;
-
-  function getch :longint;                                cdecl;external ThreadsNlm name 'getch';
-  function getche:longint;                                cdecl;external ThreadsNlm name 'getche';
-  function kbhit :longint;                                cdecl;external ThreadsNlm name 'kbhit';
-  function putch(c:longint):longint;                      cdecl;external ThreadsNlm name 'putch';
-  function ungetch(c:longint):longint;                    cdecl;external ThreadsNlm name 'ungetch';
-  function cgets(buf:Pchar):Pchar;                        cdecl;external ThreadsNlm name 'cgets';
-  function CheckIfScreenDisplayed(screenHandle:longint; waitFlag:longint):longint;
-                                                          cdecl;external ThreadsNlm name 'CheckIfScreenDisplayed';
-  procedure clrscr;                                       cdecl;external ThreadsNlm name 'clrscr';
-
-  procedure ConsolePrintf(format:Pchar; args:array of const);
-                                                          cdecl;external ClibNlm name 'ConsolePrintf';
-  procedure ConsolePrintf(format:Pchar);                  cdecl;external ClibNlm name 'ConsolePrintf';
-
-  procedure CopyToScreenMemory(height,width:word; Rect:PBYTE; begx,begy:word);cdecl;external ThreadsNlm name 'CopyToScreenMemory';
-  procedure CopyToScreenMemory(height,width:word; var Rect:byte; begx,begy:word);cdecl;external ThreadsNlm name 'CopyToScreenMemory';
-
-  procedure CopyFromScreenMemory(height, width:word; Rect:PBYTE; begx,begy:word);cdecl;external ThreadsNlm name 'CopyFromScreenMemory';
-  procedure CopyFromScreenMemory(height, width:word; var Rect:byte; begx,begy:word);cdecl;external ThreadsNlm name 'CopyFromScreenMemory';
-
-  { function CoupleInputOutputCursors:longint;cdecl;external ClibNlm name 'CoupleInputOutputCursors'; }
-
-  function cputs(buf:Pchar):longint;                      cdecl;external ThreadsNlm name 'cputs';
-  function cprintf(fmt:Pchar; args:array of const):longint;
-                                                          cdecl;external ClibNlm name 'cprintf';
-  function cprintf(fmt:Pchar):longint;                    cdecl;external ClibNlm name 'cprintf';
-
-  function CreateScreen(screenName:Pchar; attr:byte):longint;
-                                                          cdecl;external ThreadsNlm name 'CreateScreen';
-
-  function cscanf(fmt:Pchar; args:array of const):longint;cdecl;external ClibNlm name 'cscanf';
-  function cscanf(fmt:Pchar):longint;                     cdecl;external ClibNlm name 'cscanf';
-
-  { function DecoupleInputOutputCursors:longint;cdecl;external External_library name 'DecoupleInputOutputCursors'; }
-
-  function DestroyScreen(screenHandle:longint):longint;   cdecl;external ThreadsNlm name 'DestroyScreen';
-  function DisplayInputCursor:longint;                    cdecl;external ThreadsNlm name 'DisplayInputCursor';
-  function DisplayScreen(screenHandle:longint):longint;   cdecl;external ThreadsNlm name 'DisplayScreen';
-  function DropPopUpScreen(screenHandle:longint):longint; cdecl;external ThreadsNlm name 'DropPopUpScreen';
-  function GetCurrentScreen:longint;                      cdecl;external ThreadsNlm name 'GetCurrentScreen';
-  function GetCursorCouplingMode:byte;                    cdecl;external ThreadsNlm name 'GetCursorCouplingMode';
-  function GetCursorShape(startline,endline:byte):word;   cdecl;external ThreadsNlm name 'GetCursorShape';
-  function GetCursorSize(var firstline,lastl:byte):word;  cdecl;external ThreadsNlm name 'GetCursorSize';
-
-  function GetPositionOfOutputCursor(var row,columnP:word):longint;
-                                                          cdecl;external ThreadsNlm name 'GetPositionOfOutputCursor';
-
-  function __GetScreenID(screenHandle:longint):longint;   cdecl;external ThreadsNlm name '__GetScreenID';
-  function GetScreenInfo(handle:longint; name:Pchar; var attr:longint):longint;
-                                                          cdecl;external ThreadsNlm name 'GetScreenInfo';
-
-  function GetSizeOfScreen(var height,width:word):longint;cdecl;external ThreadsNlm name 'GetSizeOfScreen';
-  procedure gotoxy(x,y:word);                             cdecl;external ThreadsNlm name 'gotoxy';
-  function HideInputCursor:longint;                       cdecl;external ThreadsNlm name 'HideInputCursor';
-  function IsColorMonitor:longint;                        cdecl;external ThreadsNlm name 'IsColorMonitor';
-  function PressAnyKeyToContinue:longint;                 cdecl;external ThreadsNlm name 'PressAnyKeyToContinue';
-  function PressEscapeToQuit:longint;                     cdecl;external ThreadsNlm name 'PressEscapeToQuit';
-  procedure RingTheBell;                                  cdecl;external ThreadsNlm name 'RingTheBell';
-
-  function ScanScreens(LastScreenID:longint; name:Pchar; var attr:longint):longint;
-                                                          cdecl;external ThreadsNlm name 'ScanScreens';
-
-  function ScrollScreenRegionDown(firstLine,lines:longint):longint;cdecl;external ThreadsNlm name 'ScrollScreenRegionDown';
-  function ScrollScreenRegionUp(firstLine,lines:longint):longint;cdecl;external ThreadsNlm name 'ScrollScreenRegionUp';
-  function SetAutoScreenDestructionMode(newMode:byte):byte;cdecl;external ThreadsNlm name 'SetAutoScreenDestructionMode';
-  function SetCtrlCharCheckMode(newMode:byte):byte;        cdecl;external ThreadsNlm name 'SetCtrlCharCheckMode';
-  function SetCursorCouplingMode(newMode:byte):byte;       cdecl;external ThreadsNlm name 'SetCursorCouplingMode';
-  function SetCursorShape(startline,endline:byte):word;    cdecl;external ThreadsNlm name 'SetCursorShape';
-  function SetCurrentScreen(screenHandle:longint):longint; cdecl;external ThreadsNlm name 'SetCurrentScreen';
-  function SetInputAtOutputCursorPosition:longint;         cdecl;external ThreadsNlm name 'SetInputAtOutputCursorPosition';
-  function SetOutputAtInputCursorPosition:longint;         cdecl;external ThreadsNlm name 'SetOutputAtInputCursorPosition';
-  function SetPositionOfInputCursor(row,col:word):longint; cdecl;external ThreadsNlm name 'SetPositionOfInputCursor';
-
-  function SetScreenAreaAttribute(line,column,numLines,numColumns,attr:longint):longint;
-                                                           cdecl;external ThreadsNlm name 'SetScreenAreaAttribute';
-  {function SetScreenAttributes(mask,attr:longint):longint; cdecl;external ClibNlm name 'SetScreenAttributes';}
-
-  function SetScreenCharacterAttribute(line,column,attr:longint):longint;
-                                                           cdecl;external ThreadsNlm name 'SetScreenCharacterAttribute';
-
-  function SetScreenRegionAttribute(firstLine,lines:longint; attr:byte):longint;
-                                                           cdecl;external ThreadsNlm name 'SetScreenRegionAttribute';
-  function wherex:word;                                    cdecl;external ThreadsNlm name 'wherex';
-  function wherey:word;                                    cdecl;external ThreadsNlm name 'wherey';
-
-
-implementation
-
-
-end.
-
-{
-  $Log$
-  Revision 1.1  2003-02-16 17:45:08  armin
-  * added nwsnut, nwconio and nwthreads for netware
-
- 
-}

+ 3166 - 0
rtl/netware/nwnit.pp

@@ -0,0 +1,3166 @@
+{ $Id$
+
+  Netware Server Imports for FreePascal, contains definition from the
+  following ndk header files:
+
+  nit/nwaccntg.h nit/nwafp.h nit/nwbindry.h nit/nwdatamg.h nit/nwdir.h
+  nit/nwenvrn.h nit/nwenvrn1.h nit/nwextatt.h nit/nwmsg.h nit/nwnit.h
+  nit/nwqueue.h nit/nwserial.h nit/nwservst.h nit/nwsync.h nit/nwtts.h
+
+  Initial Version 2002/02/22 Armin ([email protected] or [email protected])
+
+  The C-NDK and Documentation can be found here:
+    http://developer.novell.com
+
+  This program is distributed in the hope that it will be useful,but WITHOUT 
+  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
+  FITNESS FOR A PARTICULAR PURPOSE.
+
+  Do not blame Novell if there are errors in this file, instead
+  contact me and i will se what i can do.
+
+}
+
+unit nwnit;
+
+interface
+
+{$mode objfpc}
+{$packrecords C}
+
+const
+  Clib='clib';
+
+function AccountingInstalled (fileServerID:word):longint;cdecl;external Clib name 'AccountingInstalled';
+function GetAccountStatus    (binderyObjectType:word;
+                              binderyObjectName:Pchar;
+                              balance,limits,holds:Plongint):longint;cdecl;external Clib name 'GetAccountStatus';
+function GetAccountStatus    (binderyObjectType:word;
+                              binderyObjectName:Pchar;
+                          var balance,limits,holds:longint):longint;cdecl;external Clib name 'GetAccountStatus';
+
+function SubmitAccountCharge(binderyObjectType:word;
+                             binderyObjectName:Pchar;
+                             serviceType:word;
+                             chargeAmount:longint;
+                             cancelHoldAmount:longint;
+                             commentType:word;
+                             comment:Pchar):longint;cdecl;external Clib name 'SubmitAccountCharge';
+function SubmitAccountChargeWithLength(
+                             binderyObjectType:word;
+                             binderyObjectName:Pchar;
+                             serviceType:word;
+                             chargeAmount:longint;
+                             cancelHoldAmount:longint;
+                             commentType:word;
+                             commentData:pointer;
+                             commentLength:word):longint;cdecl;external Clib name 'SubmitAccountChargeWithLength';
+function SubmitAccountHold  (binderyObjectType:word;
+                             binderyObjectName:Pchar;
+                             reserveAmount:longint):longint;cdecl;external Clib name 'SubmitAccountHold';
+function SubmitAccountNote  (binderyObjectType:word;
+                             binderyObjectName:Pchar;
+                             serviceType:word;
+                             commentType:word;
+                             comment:Pchar):longint;cdecl;external Clib name 'SubmitAccountNote';
+
+{------------------------------------------------------------------------------}
+
+{$include npackon.inc}
+
+type
+   PAFPFILEINFO = ^TAFPFILEINFO;
+   TAFPFILEINFO = record
+        entryID            : longint;
+        parentID           : longint;
+        attributes         : word;
+        dataForkLength     : longint;
+        resourceForkLength : longint;
+        numOffspring       : word;
+        creationDate       : word;
+        accessDate         : word;
+        modifyDate         : word;
+        modifyTime         : word;
+        backupDate         : word;
+        backupTime         : word;
+        finderInfo         : array[0..31] of byte;
+        longName           : array[0..32] of char;
+        pad1               : char;
+        ownerID            : longint;
+        shortName          : array[0..12] of char;
+        pad2               : char;
+        accessPrivileges   : word;
+        proDosInfo         : array[0..5] of byte;
+     end;
+
+   PAFPSETINFO = ^TAFPSETINFO;
+   TAFPSETINFO = record
+        attributes   : word;
+        creationDate : word;
+        accessDate   : word;
+        modifyDate   : word;
+        modifyTime   : word;
+        backupDate   : word;
+        backupTime   : word;
+        finderInfo   : array[0..31] of byte;
+        proDosInfo   : array[0..5] of byte;
+     end;
+{$include npackoff.inc}
+
+function AFPAllocTemporaryDirHandle (connectionID:word;
+                                     volumeNum:byte;
+                                     AFPEntryID:longint;
+                                     AFPPathString:Pchar;
+                                     NetWareDirectoryHandle:PBYTE;
+                                     AccessRights:PBYTE):longint;  cdecl;external Clib name 'AFPAllocTemporaryDirHandle';
+
+function AFPCreateDirectory (connectionID:word;
+                             volumeNum:byte;
+                             AFPEntryID:longint;
+                             finderInfo:PBYTE;
+                             AFPPathString:Pchar;
+                             newAFPEntryID:Plongint):longint;cdecl;external Clib name 'AFPCreateDirectory';
+
+function AFPCreateFile (connectionID:word;
+                        volumeNum:byte;
+                        AFPEntryID:longint;
+                        deleteExistingFile:byte;
+                        finderInfo:PBYTE;
+                        AFPPathString:Pchar;
+                        newAFPEntryID:Plongint):longint;  cdecl;external Clib name 'AFPCreateFile';
+
+function AFPDelete (connectionID:word;
+                    volumeNum:byte;
+                    AFPEntryID:longint;
+                    AFPPathString:Pchar):longint;  cdecl;external Clib name 'AFPDelete';
+
+function AFPDirectoryEntry (connectionID:word;
+                            directoryHandle:byte;
+                            pathName:Pchar):longint;  cdecl;external Clib name 'AFPDirectoryEntry';
+
+function AFPGetEntryIDFromName (connectionID:word;
+                                volumeNum:byte;
+                                AFPEntryID:longint;
+                                AFPPathString:Pchar;
+                                newAFPEntryID:Plongint):longint;          cdecl;external Clib name 'AFPGetEntryIDFromName';
+
+function AFPGetEntryIDFromNetWareHandle (connectionID:word;
+                                         NetWareHandle:PBYTE;
+                                         volumeID:PBYTE;
+                                         AFPEntryID:Plongint;
+                                         forkIndicator:PBYTE):longint;    cdecl;external Clib name 'AFPGetEntryIDFromNetWareHandle';
+
+function AFPGetEntryIDFromNetWareHandle (connectionID:word;
+                                         var NetWareHandle:byte;
+                                         var volumeID:byte;
+                                         var AFPEntryID:longint;
+                                         var forkIndicator:byte):longint; cdecl;external Clib name 'AFPGetEntryIDFromNetWareHandle';
+
+function AFPGetEntryIDFromPathName (connectionID:word;
+                                    directoryHandle:byte;
+                                    pathName:Pchar;
+                                    AFPEntryID:Plongint):longint;         cdecl;external Clib name 'AFPGetEntryIDFromPathName';
+
+function AFPGetFileInformation     (connectionID:word;
+                                    volumeNum:byte;
+                                    AFPEntryID:longint;
+                                    requestBitMap:word;
+                                    AFPPathString:Pchar;
+                                    strucSize:word;
+                                    AFPFileInfo:PAFPFILEINFO):longint;    cdecl;external Clib name 'AFPGetFileInformation';
+
+function AFPGetFileInformation     (connectionID:word;
+                                    volumeNum:byte;
+                                    AFPEntryID:longint;
+                                    requestBitMap:word;
+                                    AFPPathString:Pchar;
+                                    strucSize:word;
+                                var AFPFileInfo:TAFPFILEINFO):longint;    cdecl;external Clib name 'AFPGetFileInformation';
+
+function AFPOpenFileFork           (connectionID:word;
+                                    volumeNum:byte;
+                                    AFPEntryID:longint;
+                                    forkIndicator:byte;
+                                    accessMode:byte;
+                                    AFPPathString:Pchar;
+                                    fileID:Plongint;
+                                    forkLength:Plongint;
+                                    NetWareHandle:PBYTE;
+                                    fileHandle:Plongint):longint;         cdecl;external Clib name 'AFPOpenFileFork';
+
+function AFPOpenFileFork           (connectionID:word;
+                                    volumeNum:byte;
+                                    AFPEntryID:longint;
+                                    forkIndicator:byte;
+                                    accessMode:byte;
+                                    AFPPathString:Pchar;
+                                    var fileID:longint;
+                                    var forkLength:longint;
+                                    var NetWareHandle:byte;
+                                    var fileHandle:longint):longint;         cdecl;external Clib name 'AFPOpenFileFork';
+
+
+function AFPRename                 (connectionID:word;
+                                    volumeNum:byte;
+                                    AFPSourceEntryID:longint;
+                                    AFPDestEntryID:longint;
+                                    AFPSourcePath:Pchar;
+                                    AFPDestPath:Pchar):longint;              cdecl;external Clib name 'AFPRename';
+
+function AFPScanFileInformation    (connectionID:word;
+                                    volumeNum:byte;
+                                    AFPEntryID:longint;
+                                    AFPLastSeenID:Plongint;
+                                    searchBitMap:word;
+                                    requestBitMap:word;
+                                    AFPPathString:Pchar;
+                                    strucSize:word;
+                                    AFPScanFileInfo:PAFPFILEINFO):longint;    cdecl;external Clib name 'AFPScanFileInformation';
+function AFPScanFileInformation    (connectionID:word;
+                                    volumeNum:byte;
+                                    AFPEntryID:longint;
+                                    AFPLastSeenID:Plongint;
+                                    searchBitMap:word;
+                                    requestBitMap:word;
+                                    AFPPathString:Pchar;
+                                    strucSize:word;
+                                var AFPScanFileInfo:TAFPFILEINFO):longint;    cdecl;external Clib name 'AFPScanFileInformation';
+
+function AFPSetFileInformation     (connectionID:word;
+                                    volumeNum:byte;
+                                    AFPEntryID:longint;
+                                    requestBitMap:word;
+                                    AFPPathString:Pchar;
+                                    strucSize:word;
+                                    AFPSetInfo:PAFPSETINFO):longint;          cdecl;external Clib name 'AFPSetFileInformation';
+
+function AFPSetFileInformation     (connectionID:word;
+                                    volumeNum:byte;
+                                    AFPEntryID:longint;
+                                    requestBitMap:word;
+                                    AFPPathString:Pchar;
+                                    strucSize:word;
+                                var AFPSetInfo:TAFPSETINFO):longint;          cdecl;external Clib name 'AFPSetFileInformation';
+
+function AFPSupported              (connectionID:word):longint;               cdecl;external Clib name 'AFPSupported';
+
+
+{------------------------------------------------------------------------------}
+const
+   BS_ANY_READ        = $0000;
+   BS_ANY_WRITE       = $0000;    // Writeable by anyone
+   BS_LOGGED_READ     = $0001;    // Must be logged in to read
+   BS_OBJECT_READ     = $0002;    // Readable by same object or super
+   BS_SUPER_READ      = $0003;    // Readable by supervisor only
+   BS_BINDERY_READ    = $0004;    // Readable only by the bindery
+   BS_LOGGED_WRITE    = $0010;    // Must be logged in to write
+   BS_OBJECT_WRITE    = $0020;    // Writeable by same object or super
+   BS_SUPER_WRITE     = $0030;    // Writeable only by the supervisor
+   BS_BINDERY_WRITE   = $0040;    // Writeable by the bindery only
+
+   // Bindery object type definitions
+   OT_WILD = -(1);
+
+   OT_UNKNOWN                     = $0000;
+   OT_USER                        = $0001;
+   OT_USER_GROUP                  = $0002;
+   OT_GROUP                       = $0002;
+   OT_PRINT_QUEUE                 = $0003;
+
+   OT_FILE_SERVER                 = $0004;
+   OT_JOB_SERVER                  = $0005;
+   OT_GATEWAY                     = $0006;
+   OT_PRINT_SERVER                = $0007;
+   OT_ARCHIVE_QUEUE               = $0008;
+
+   OT_ARCHIVE_SERVER              = $0009;
+   OT_JOB_QUEUE                   = $000A;
+   OT_ADMINISTRATION              = $000B;
+   OT_NAS_SNA_GATEWAY             = $0021;
+   OT_REMOTE_BRIDGE_SERVER        = $0024;
+   OT_TCPIP_GATEWAY               = $0027;
+   OT_TIME_SYNCHRONIZATION_SERVER = $002D;
+   OT_ARCHIVE_SERVER_DYNAMIC_SAP  = $002E;
+   OT_ADVERTISING_PRINT_SERVER    = $0047;
+   OT_BTRIEVE_VAP                 = $004B;
+   OT_NWSQL_VAP                   = $004C;
+   OT_PRINT_QUEUE_USER            = $0053;
+
+   // Attributes of objects and properties in the bindery
+   BF_STATIC                      = $0000;
+   BF_DYNAMIC                     = $0001;
+   BF_ITEM                        = $0000;
+   BF_SET                         = $0002;
+
+   BL_OBJECT                      = 48;     // Maximum lengths of object, properties, (includes terminating null)
+   BL_PROPERTY                    = 16;
+   BL_PASSWORD                    = 128;
+
+function AddBinderyObjectToSet (objectName   : Pchar;
+                                objectType   : word;
+                                propertyName : Pchar;
+                                memberName   : Pchar;
+                                memberType   : word):longint;  cdecl;external Clib name 'AddBinderyObjectToSet';
+
+function ChangeBinderyObjectPassword (objectName  : Pchar;
+                                      objectType  : word;
+                                      oldPassword : Pchar;
+                                      newPassword : Pchar):longint;  cdecl;external Clib name 'ChangeBinderyObjectPassword';
+
+function ChangeBinderyObjectSecurity (objectName  : Pchar;
+                                      objectType  : word;
+                                      newObjectSecurity : byte):longint;  cdecl;external Clib name 'ChangeBinderyObjectSecurity';
+
+
+function ChangePropertySecurity (objectName         : Pchar;
+                                 objectType         : word;
+                                 propertyName       : Pchar;
+                                 newPropertySecurity: byte):longint;  cdecl;external Clib name 'ChangePropertySecurity';
+
+function CloseBindery:longint;  cdecl;external Clib name 'CloseBindery';
+function CreateBinderyObject    (objectName         : Pchar;
+                                 objectType         : word;
+                                 objectFlag         : byte;
+                                 objectSecurity     : byte):longint;       cdecl;external Clib name 'CreateBinderyObject';
+function CreateProperty         (objectName         : Pchar;
+                                 objectType         : word;
+                                 propertyName       : Pchar;
+                                 propertyFlags      : byte;
+                                 propertySecurity   : byte):longint;     cdecl;external Clib name 'CreateProperty';
+
+function DeleteBinderyObject    (objectName         : Pchar;
+                                 objectType         : word):longint;           cdecl;external Clib name 'DeleteBinderyObject';
+
+function DeleteBinderyObjectFromSet (objectName:Pchar;
+                                     objectType:word;
+                                     propertyName:Pchar;
+                                     memberName:Pchar;
+                                     memberType:word):longint;       cdecl;external Clib name 'DeleteBinderyObjectFromSet';
+
+function DeleteProperty             (objectName:Pchar;
+                                     objectType:word;
+                                     propertyName:Pchar):longint;    cdecl;external Clib name 'DeleteProperty';
+function GetBinderyAccessLevel      (accessLevel:PBYTE;
+                                     objectID:Plongint):longint;     cdecl;external Clib name 'GetBinderyAccessLevel';
+function GetBinderyAccessLevel      (var accessLevel:byte;
+                                     var objectID:longint):longint;  cdecl;external Clib name 'GetBinderyAccessLevel';
+
+function GetBinderyObjectID         (objectName:Pchar;
+                                     objectType:word;
+                                     objectID:Plongint):longint;     cdecl;external Clib name 'GetBinderyObjectID';
+function GetBinderyObjectID         (objectName:Pchar;
+                                     objectType:word;
+                                 var objectID:longint):longint;      cdecl;external Clib name 'GetBinderyObjectID';
+function GetBinderyObjectName       (objectID:longint;
+                                     objectName:Pchar;
+                                     objectType:PWORD):longint;      cdecl;external Clib name 'GetBinderyObjectName';
+function GetBinderyObjectName       (objectID:longint;
+                                     objectName:Pchar;
+                                 var objectType:word):longint;       cdecl;external Clib name 'GetBinderyObjectName';
+
+function IsBinderyObjectInSet       (objectName:Pchar;
+                                     objectType:word;
+                                     propertyName:Pchar;
+                                     memberName:Pchar;
+                                     memberType:word):longint;       cdecl;external Clib name 'IsBinderyObjectInSet';
+function OpenBindery:longint;                                        cdecl;external Clib name 'OpenBindery';
+function ReadPropertyValue          (objectName   : Pchar;
+                                     objectType   : word;
+                                     propertyName : Pchar;
+                                     segmentNumber: longint;
+                                     propertyValue: PBYTE;
+                                     moreSegments : PBYTE;
+                                     propertyFlags: PBYTE):longint;   cdecl;external Clib name 'ReadPropertyValue';
+function ReadPropertyValue          (objectName   : Pchar;
+                                     objectType   : word;
+                                     propertyName : Pchar;
+                                     segmentNumber: longint;
+                                 var propertyValue: byte;
+                                 var moreSegments : byte;
+                                 var propertyFlags: byte):longint;   cdecl;external Clib name 'ReadPropertyValue';
+
+function RenameBinderyObject        (objectName   : Pchar;
+                                     newObjectName: Pchar;
+                                     objectType   : word):longint;   cdecl;external Clib name 'RenameBinderyObject';
+
+function ScanBinderyObject          (searchObjectName:Pchar;
+                                     searchObjectType:word;
+                                     objectID:Plongint;
+                                     objectName:Pchar;
+                                     objectType:PWORD;
+                                     objectHasProperties:Pchar;
+                                     objectFlag:Pchar;
+                                     objectSecurity:Pchar):longint;   cdecl;external Clib name 'ScanBinderyObject';
+function ScanBinderyObject          (searchObjectName:Pchar;
+                                     searchObjectType:word;
+                                 var objectID:longint;
+                                     objectName:Pchar;
+                                 var objectType:word;
+                                     objectHasProperties:Pchar;
+                                     objectFlag:Pchar;
+                                     objectSecurity:Pchar):longint;   cdecl;external Clib name 'ScanBinderyObject';
+
+function ScanProperty               (objectName:Pchar;
+                                     objectType:word;
+                                     searchPropertyName:Pchar;
+                                     sequenceNumber:Plongint;
+                                     propertyName:Pchar;
+                                     propertyFlags:Pchar;
+                                     propertySecurity:Pchar;
+                                     propertyHasValue:Pchar;
+                                     moreProperties:Pbyte):longint;   cdecl;external Clib name 'ScanProperty';
+function ScanProperty               (objectName:Pchar;
+                                     objectType:word;
+                                     searchPropertyName:Pchar;
+                                 var sequenceNumber:longint;
+                                     propertyName:Pchar;
+                                     propertyFlags:Pchar;
+                                     propertySecurity:Pchar;
+                                     propertyHasValue:Pchar;
+                                 var moreProperties:byte):longint;   cdecl;external Clib name 'ScanProperty';
+
+
+function VerifyBinderyObjectPassword (objectName : Pchar;
+                                      objectType : word;
+                                      password   : Pchar):longint;       cdecl;external Clib name 'VerifyBinderyObjectPassword';
+
+function WritePropertyValue          (objectName    : Pchar;
+                                      objectType    : word;
+                                      propertyName  : Pchar;
+                                      segmentNumber : longint;
+                                      propertyValue : PBYTE;
+                                      moreSegments  : byte):longint;        cdecl;external Clib name 'WritePropertyValue';
+function WritePropertyValue          (objectName    : Pchar;
+                                      objectType    : word;
+                                      propertyName  : Pchar;
+                                      segmentNumber : longint;
+                                  var propertyValue : byte;
+                                      moreSegments  : byte):longint;        cdecl;external Clib name 'WritePropertyValue';
+
+
+{------------------------------------------------------------------------------}
+const
+   ERR_INVALID_SUPPORT_MODULE_ID         = 240;
+   ERR_SUPPORT_MODULE_ALREADY_REGISTERED = 241;
+   ERR_SUPPORT_MODULE_CREATE_FAILED      = 242;
+   ERR_SUPPORT_MODULE_CLOSE_FAILED       = 243;
+   ERR_SM_WRITE_NO_SPACE                 = 244;
+   ERR_SM_WRITE_IO_ERROR                 = 245;
+   ERR_SM_READ_IO_ERROR                  = 246;
+   ERR_SUPPORT_MODULE_OPEN_FAILED        = 247;
+   ERR_SUPPORT_MODULE_DELETE_FAILED      = 248;
+   MaximumNumberOfDataStreams            = 3;
+{$include npackon.inc}
+(*
+TInfo0Rep = record
+   rIOStatus : longint;
+   rInfoBlockSize: longint;
+   rAvailSpace: longint;
+   rUsedSpace: longint;
+   rSMString: byte;
+end;
+
+TInfo1Rep = record
+   rSMRegs : longint;
+end;
+
+TInfo2Rep = record
+   NameLength : byte;
+end;
+*)
+
+type
+   PSUPPORT_MODULE_INFO = ^TSUPPORT_MODULE_INFO;
+   TSUPPORT_MODULE_INFO = record
+        IOStatus      : longint;
+        InfoBlockSize : longint;
+        AvailSpace    : longint;
+        UsedSpace     : longint;
+        SMString      : char; // 128 length limit, Info block follows string
+     end;
+
+{$include npackoff.inc}
+
+
+function NWDeRegisterDMSupportModule    (SupportModuleID:longint;
+                                         SupportModuleName:PChar;
+                                         SlotNumber:longint):longint;  cdecl;external Clib name 'NWDeRegisterDMSupportModule';
+function NWDeRegisterRTDataMigrationNLM (Station:longint;
+                                         DMTAG:PBYTE;
+                                         ForceFlag:longint):longint;   cdecl;external Clib name 'NWDeRegisterRTDataMigrationNLM';
+function NWDeRegisterRTDataMigrationNLM (Station:longint;
+                                     var DMTAG:byte;
+                                         ForceFlag:longint):longint;   cdecl;external Clib name 'NWDeRegisterRTDataMigrationNLM';
+{ Local and Remote Call  }
+procedure NWGetDataMigratorInfo         (DMPresentFlag:PLongint;
+                                         majorVersion:PLongint;
+                                         minorVersion:PLongint;
+                                         numberOfSupportModules:PLongint); cdecl;external Clib name 'NWGetDataMigratorInfo';
+procedure NWGetDataMigratorInfo         (var DMPresentFlag:longint;
+                                         var majorVersion:longint;
+                                         var minorVersion:longint;
+                                         var numberOfSupportModules:longint); cdecl;external Clib name 'NWGetDataMigratorInfo';
+{ Local and Remote call  }
+function NWGetDefaultSupportModule      (defaultSupportModuleID:PLongint):longint; cdecl;external Clib name 'NWGetDefaultSupportModule';
+function NWGetDefaultSupportModule      (var defaultSupportModuleID:longint):longint; cdecl;external Clib name 'NWGetDefaultSupportModule';
+
+{ Local and Remote call  }
+function NWGetDMFileInfo (path:Pchar;
+                          nameSpace:longint;
+                          supportModuleID:PLongint;
+                          validDataStreams:PLongint;
+                          estRetrievalTime:PLongint;
+                          info:PLongint):longint;cdecl;external Clib name 'NWGetDMFileInfo';
+function NWGetDMFileInfo (path:Pchar;
+                          nameSpace:longint;
+                          var supportModuleID:longint;
+                          var validDataStreams:longint;
+                          var estRetrievalTime:longint;
+                          var info:longint):longint;cdecl;external Clib name 'NWGetDMFileInfo';
+
+{ Local and Remote call  }
+function NWGetDMVolumeInfo (volume:longint;
+                            supportModuleID:longint;
+                            numberOfFilesMigrated:PLongint;
+                            totalMigratedSize:PLongint;
+                            spaceUsed:PLongint;
+                            limboUsed:PLongint;
+                            spaceMigrated:PLongint;
+                            filesLimbo:PLongint):longint; cdecl;external Clib name 'NWGetDMVolumeInfo';
+function NWGetDMVolumeInfo (volume:longint;
+                            supportModuleID:longint;
+                            var numberOfFilesMigrated:longint;
+                            var totalMigratedSize:longint;
+                            var spaceUsed:longint;
+                            var limboUsed:longint;
+                            var spaceMigrated:longint;
+                            var filesLimbo:longint):longint; cdecl;external Clib name 'NWGetDMVolumeInfo';
+{ Local and Remote call  }
+function NWGetSupportModuleInfo (informationLevel:longint;
+                                 supportModuleID:longint;
+                                 returnInfo:pointer;
+                                 returnInfoLen:PLongint):longint;cdecl;external Clib name 'NWGetSupportModuleInfo';
+function NWGetSupportModuleInfo (informationLevel:longint;
+                                 supportModuleID:longint;
+                                 returnInfo:pointer;
+                                 var returnInfoLen:longint):longint;cdecl;external Clib name 'NWGetSupportModuleInfo';
+
+function NWIsDataMigrationAllowed (Volume:longint):longint; cdecl;external Clib name 'NWIsDataMigrationAllowed';
+{ Local and Remote call  }
+function NWMoveFileFromDM         (path:Pchar;
+                                   nameSpace:longint):longint; cdecl;external Clib name 'NWMoveFileFromDM';
+{ Local and Remote call  }
+function NWMoveFileToDM           (path:Pchar;
+                                   nameSpace:longint;
+                                   SupportModuleID:longint;
+                                   flags:longint):longint; cdecl;external Clib name 'NWMoveFileToDM';
+
+function NWPeekFileData           (path:Pchar;
+                                   nameSpace:longint;
+                                   noWaitFlag:longint;
+                                   startingSector:longint;
+                                   sectorsToRead:longint;
+                                   buffer:PBYTE;
+                                   sectorsRead:PLongint;
+                                   bytesRead:PLongint;
+                                   NoWaitReason:PLongint):longint; cdecl;external Clib name 'NWPeekFileData';
+function NWPeekFileData           (path:Pchar;
+                                   nameSpace:longint;
+                                   noWaitFlag:longint;
+                                   startingSector:longint;
+                                   sectorsToRead:longint;
+                                   var buffer;
+                                   var sectorsRead:longint;
+                                   var bytesRead:longint;
+                                   var NoWaitReason:longint):longint; cdecl;external Clib name 'NWPeekFileData';
+type TFunction = function : longint; cdecl;
+
+function NWRegisterDMSupportModule (ioFlag:longint;
+                                    addr:array of TFunction;
+                                    SupportModuleName:PBYTE;
+                                    SupportModuleID:longint;
+                                    MaxSectorsXF:longint;
+                                    SlotNumber:PLongint):longint; cdecl;external Clib name 'NWRegisterDMSupportModule';
+
+function NWRegisterRTDataMigrationNLM (Station:longint;
+                                       addr:array of TFunction;
+                                       DMTAG:PBYTE; majorVersion:longint;
+                                       minorVersion:longint):longint; cdecl;external Clib name 'NWRegisterRTDataMigrationNLM';
+{ Local and Remote call  }
+function NWSetDefaultSupportModule    (newSupportModuleID:longint;
+                                       currentSupportModuleID:PLongint):longint; cdecl;external Clib name 'NWSetDefaultSupportModule';
+function NWSetDefaultSupportModule    (newSupportModuleID:longint;
+                                   var currentSupportModuleID:longint):longint; cdecl;external Clib name 'NWSetDefaultSupportModule';
+
+{------------------------------------------------------------------------------}
+{ Trustee Access Rights in a network directory  }
+const
+   TA_NONE          = $0000;
+   TA_READ          = $0001;
+   TA_WRITE         = $0002;
+   TA_CREATE        = $0008;
+   TA_DELETE        = $0010;
+   TA_ACCESSCONTROL = $0020;
+   TA_SEEFILES      = $0040;
+   TA_MODIFY        = $0080;
+   TA_SUPERVISOR    = $0100;
+   TA_ALL           = $01FB;
+
+{ Old names for rights  }
+   TA_OPEN          = $0004;
+   TA_OWNERSHIP     = $0020;
+   TA_SEARCH        = $0040;
+   BYTES_PER_SECTOR = 512;
+
+{ define volume types  }
+   VINetWare386     = 0;
+   VINetWare286     = 1;
+   VINetWare386v30  = 2;
+   VINetWare386v31  = 3;
+{ define the extended volume information status flag bits  }
+   NWSubAllocEnabledBit    = $01;
+   NWCompressionEnabledBit = $02;
+   NWMigrationEnabledBit   = $04;
+   NWAuditingEnabledBit    = $08;
+   NWReadOnlyEnabledBit    = $10;
+
+{$include npackon.inc}
+type
+   PAnswerStructure = ^TAnswerStructure;
+   TAnswerStructure = record
+     ALevelNumber   : byte;
+     AMaximumAmount : longint;  // ?? TMisalignedLONG;
+     ACurrentAmount : longint;  // ?? TMisalignedLONG;
+   end;
+
+
+   PVOLUME_STATS = ^TVOLUME_STATS;
+   TVOLUME_STATS = record
+        systemElapsedTime : longint;
+        volumeNumber : byte;
+        logicalDriveNumber : byte;
+        sectorsPerBlock : word;
+        startingBlock : longint;
+        totalBlocks : word;
+        availableBlocks : word;
+        totalDirectorySlots : word;
+        availableDirectorySlots : word;
+        maxDirectorySlotsUsed : word;
+        isHashing : byte;
+        isRemovable : byte;
+        isMounted : byte;
+        volumeName : array[0..16] of char;
+        purgableBlocks : longint;
+        notYetPurgableBlocks : longint;
+     end;
+
+   PVOLUME_INFO = ^TVOLUME_INFO;
+   TVOLUME_INFO = record
+        systemElapsedTime : longint;
+        volumeNumber : byte;
+        logicalDriveNumber : byte;
+        sectorsPerBlock : word;
+        startingBlock : smallint;
+        totalBlocks : longint;
+        availableBlocks : longint;
+        totalDirectorySlots : longint;
+        availableDirectorySlots : longint;
+        isHashing : byte;
+        isRemovable : byte;
+        isMounted : byte;
+        volumeName : array[0..16] of char;
+        purgableBlocks : longint;
+        notYetPurgableBlocks : longint;
+     end;
+
+   PNWVolExtendedInfo = ^TNWVolExtendedInfo;
+   TNWVolExtendedInfo = record
+        volType : longint;
+        statusFlag : longint;
+        sectorSize : longint;
+        sectorsPerCluster : longint;
+        volSizeInClusters : longint;
+        freeClusters : longint;
+        subAllocFreeableClusters : longint;
+        freeableLimboSectors : longint;
+        nonfreeableLimboSectors : longint;
+        availSubAllocSectors : longint;
+        nonuseableSubAllocSectors : longint;
+        subAllocClusters : longint;
+        numDataStreams : longint;
+        numLimboDataStreams : longint;
+        oldestDelFileAgeInTicks : longint;
+        numCompressedDataStreams : longint;
+        numCompressedLimboDataStreams : longint;
+        numNoncompressibleDataStreams : longint;
+        precompressedSectors : longint;
+        compressedSectors : longint;
+        numMigratedDataStreams : longint;
+        migratedSectors : longint;
+        clustersUsedByFAT : longint;
+        clustersUsedByDirs : longint;
+        clustersUsedByExtDirs : longint;
+        totalDirEntries : longint;
+        unusedDirEntries : longint;
+        totalExtDirExtants : longint;
+        unusedExtDirExtants : longint;
+        extAttrsDefined : longint;
+        extAttrExtantsUsed : longint;
+        directoryServicesObjectID : longint;
+        lastModifiedDateAndTime : longint;
+     end;
+
+{$include npackoff.inc}
+
+function AddSpaceRestrictionForDirectory (pathName:Pchar;
+                                          value:longint;
+                                          allowWildCardsFlag:longint):longint;cdecl;external Clib name 'AddSpaceRestrictionForDirectory';
+function AddTrustee                      (pathName:Pchar;
+                                          trusteeID:longint;
+                                          newRights:word):longint; cdecl;external Clib name 'AddTrustee';
+function AddUserSpaceRestriction         (volume:longint;
+                                          trusteeID:longint;
+                                          value:longint):longint;cdecl;external Clib name 'AddUserSpaceRestriction';
+function ChangeDirectoryEntry            (pathName:Pchar;
+                                          modifyVector:pointer;  //PModifyStructure;
+                                          modifyBits:longint;
+                                          allowWildCardsFlag:longint):longint;cdecl;external Clib name 'ChangeDirectoryEntry';
+function ChangeDirectoryEntry            (pathName:Pchar;
+                                      var modifyVector;
+                                          modifyBits:longint;
+                                          allowWildCardsFlag:longint):longint;cdecl;external Clib name 'ChangeDirectoryEntry';
+function ConvertNameToFullPath           (partialPath:Pchar;
+                                          fullPath:Pchar):longint;cdecl;external Clib name 'ConvertNameToFullPath';
+function ConvertNameToVolumePath         (fileName:Pchar;
+                                          volumePath:Pchar):longint;cdecl;external Clib name 'ConvertNameToVolumePath';
+function DeleteTrustee                   (pathName:Pchar;
+                                          trusteeID:longint):longint;cdecl;external Clib name 'DeleteTrustee';
+function DeleteUserSpaceRestriction      (volume:longint;
+                                          trusteeID:longint):longint;cdecl;external Clib name 'DeleteUserSpaceRestriction';
+function GetAvailableUserDiskSpace       (pathName:Pchar;
+                                          availableSpace:PLongint):longint;cdecl;external Clib name 'GetAvailableUserDiskSpace';
+function GetAvailableUserDiskSpace       (pathName:Pchar;
+                                      var availableSpace:longint):longint;cdecl;external Clib name 'GetAvailableUserDiskSpace';
+function GetDiskSpaceUsedByObject        (trusteeID:longint;
+                                          volume:longint;
+                                          usedSpace:PLongint):longint;cdecl;external Clib name 'GetDiskSpaceUsedByObject';
+function GetDiskSpaceUsedByObject        (trusteeID:longint;
+                                          volume:longint;
+                                      var usedSpace:longint):longint;cdecl;external Clib name 'GetDiskSpaceUsedByObject';
+function GetEffectiveRights              (pathName:Pchar;
+                                          accessRights:PWORD):longint;cdecl;external Clib name 'GetEffectiveRights';
+function GetEffectiveRights              (pathName:Pchar;
+                                      var accessRights:word):longint;cdecl;external Clib name 'GetEffectiveRights';
+function GetMaximumUserSpaceRestriction  (trusteeID, volume:longint; maxRestriction:PLongint):longint;cdecl;external Clib name 'GetMaximumUserSpaceRestriction';
+function GetMaximumUserSpaceRestriction  (trusteeID, volume:longint; var maxRestriction:longint):longint;cdecl;external Clib name 'GetMaximumUserSpaceRestriction';
+function GetNumberOfVolumes : longint; cdecl;external Clib name 'GetNumberOfVolumes';
+function GetVolumeInformation            (connectionID:word;
+                                          volumeNumber:byte;
+                                          structSize:longint;
+                                          volumeStatistics:PVOLUME_STATS):longint;cdecl;external Clib name 'GetVolumeInformation';
+function GetVolumeInformation            (connectionID:word;
+                                          volumeNumber:byte;
+                                          structSize:longint;
+                                      var volumeStatistics:TVOLUME_STATS):longint;cdecl;external Clib name 'GetVolumeInformation';
+function GetVolumeInfoWithNumber         (volumeNumber:byte;
+                                          volumeName:Pchar;
+                                          totalBlocks:PWORD;
+                                          sectorsPerBlock:PWORD;
+                                          availableBlocks:PWORD;
+                                          totalDirectorySlots:PWORD;
+                                          availableDirectorySlots:PWORD;
+                                          volumeIsRemovable:PWORD):longint;cdecl;external Clib name 'GetVolumeInfoWithNumber';
+function GetVolumeInfoWithNumber         (volumeNumber:byte;
+                                          volumeName:Pchar;
+                                      var totalBlocks:word;
+                                      var sectorsPerBlock:word;
+                                      var availableBlocks:word;
+                                      var totalDirectorySlots:word;
+                                      var availableDirectorySlots:word;
+                                      var volumeIsRemovable:word):longint;cdecl;external Clib name 'GetVolumeInfoWithNumber';
+function GetVolumeName(volumeNumber:longint; volumeName:Pchar):longint;cdecl;external Clib name 'GetVolumeName';
+
+function GetVolumeNumber(volumeName:Pchar; volumeNumber:Plongint):longint;cdecl;external Clib name 'GetVolumeNumber';
+function GetVolumeNumber(volumeName:Pchar; var volumeNumber:longint):longint;cdecl;external Clib name 'GetVolumeNumber';
+function GetVolumeStatistics             (connectionID:word;
+                                          volumeNumber:byte;
+                                          structSize:longint;
+                                          volumeStatistics:PVOLUME_INFO):longint;cdecl;external Clib name 'GetVolumeStatistics';
+function GetVolumeStatistics             (connectionID:word;
+                                          volumeNumber:byte;
+                                          structSize:longint;
+                                      var volumeStatistics:TVOLUME_INFO):longint;cdecl;external Clib name 'GetVolumeStatistics';
+
+procedure _makepath                      (path:Pchar;
+                                          drive:Pchar;
+                                          dir:Pchar;
+                                          fname:Pchar;
+                                          ext:Pchar);cdecl;external Clib name '_makepath';
+
+function ModifyInheritedRightsMask       (path:Pchar;
+                                          revokeRightsMask:word;
+                                          grantRightsMask:word):longint;cdecl;external Clib name 'ModifyInheritedRightsMask';
+function NWGetExtendedVolumeInfo         (volNumber:longint;
+                                          volName:Pchar;
+                                          volInfo:PNWVolExtendedInfo):longint;cdecl;external Clib name 'NWGetExtendedVolumeInfo';
+function NWGetExtendedVolumeInfo         (volNumber:longint;
+                                          volName:Pchar;
+                                      var volInfo:TNWVolExtendedInfo):longint;cdecl;external Clib name 'NWGetExtendedVolumeInfo';                                          
+function NWVolumeIsCDROM                 (volNumber:longint;
+                                          isCDROM:PLongint):longint;cdecl;external Clib name 'NWVolumeIsCDROM';
+function NWVolumeIsCDROM                 (volNumber:longint;
+                                      var isCDROM:longint):longint;cdecl;external Clib name 'NWVolumeIsCDROM';
+
+function ParsePath                       (path:Pchar;
+                                          server:Pchar;
+                                          volume:Pchar;
+                                          directories:Pchar):longint;cdecl;external Clib name 'ParsePath';
+function PurgeTrusteeFromVolume          (volume:longint;
+                                          trusteeID:longint):longint;cdecl;external Clib name 'PurgeTrusteeFromVolume';
+
+function ReturnSpaceRestrictionForDirectory(pathName:Pchar;
+                                            numberOfStructuresToReturn:longint;
+                                            answerBuffer:pointer;
+                                            numberOfStructuresReturned:PLongint):longint;cdecl;external Clib name 'ReturnSpaceRestrictionForDirectory';
+function ScanBinderyObjectTrusteePaths     (objectID:longint;
+                                            volumeNumber:byte;
+                                            sequenceNumber:Plongint;
+                                            trusteeAccessMask:PWORD;
+                                            trusteePathName:Pchar):longint;cdecl;external Clib name 'ScanBinderyObjectTrusteePaths';
+function ScanBinderyObjectTrusteePaths     (objectID:longint;
+                                            volumeNumber:byte;
+                                        var sequenceNumber:longint;
+                                        var trusteeAccessMask:word;
+                                            trusteePathName:Pchar):longint;cdecl;external Clib name 'ScanBinderyObjectTrusteePaths';
+(* Const before type ignored *)
+function ScanTrustees                      (pathName:Pchar;
+                                            startingOffset:longint;
+                                            vectorSize:longint;
+                                            trusteeVector:PLongint;
+                                            maskVector:PWORD;
+                                            actualVectorSize:PLongint):longint;cdecl;external Clib name 'ScanTrustees';
+function ScanTrustees                      (pathName:Pchar;
+                                            startingOffset:longint;
+                                            vectorSize:longint;
+                                        var trusteeVector:longint;
+                                        var maskVector:longint;
+                                        var actualVectorSize:longint):longint;cdecl;external Clib name 'ScanTrustees';
+function ScanUserSpaceRestrictions         (volume:longint;
+                                            sequenceNumber:PLongint;
+                                            numberOfTrusteesToReturn:longint;
+                                            answerArea:PLongint;
+                                            numberOfTrusteesReturned:PLongint):longint;cdecl;external Clib name 'ScanUserSpaceRestrictions';
+function ScanUserSpaceRestrictions         (volume:longint;
+                                        var sequenceNumber:longint;
+                                            numberOfTrusteesToReturn:longint;
+                                        var answerArea;
+                                        var numberOfTrusteesReturned:longint):longint;cdecl;external Clib name 'ScanUserSpaceRestrictions';
+
+function SetDirectoryInfo                  (pathName:Pchar;
+                                            newCreationDateAndTime:PBYTE;
+                                            newOwnerObjectID:longint;
+                                            inheritedRightsMask:word):longint;cdecl;external Clib name 'SetDirectoryInfo';
+
+function SetWildcardTranslationMode         (newMode:byte):byte;cdecl;external Clib name 'SetWildcardTranslationMode';
+
+procedure _splitpath                        (path:Pchar;
+                                             drive:Pchar;
+                                             dir:Pchar;
+                                             fname:Pchar;
+                                             ext:Pchar);cdecl;external Clib name '_splitpath';
+
+function StripFileServerFromPath            (path:Pchar;
+                                             server:Pchar):Pchar;cdecl;external Clib name 'StripFileServerFromPath';
+function UpdateDirectoryEntry               (handle:longint):longint;cdecl;external Clib name 'UpdateDirectoryEntry';
+
+{------------------------------------------------------------------------------}
+const
+   TYPE_NORMAL_SERVER  = 0;
+   TYPE_IO_ENGINE      = 1;
+   TYPE_MS_ENGINE      = 2;
+   LOADER_TYPE_DOS     = 1;
+   LOADER_TYPE_OS2     = 2;
+   LOADER_TYPE_MSWIN31 = 3;
+   RSUPER              = 3;
+{$include npackon.inc}
+type
+
+   PFILE_SERV_INFO = ^TFILE_SERV_INFO;
+   TFILE_SERV_INFO = record
+        serverName : array[0..47] of char;
+        netwareVersion : byte;
+        netwareSubVersion : byte;
+        maxConnectionsSupported : word;
+        connectionsInUse : word;
+        maxVolumesSupported : word;
+        revisionLevel : byte;
+        SFTLevel : byte;
+        TTSLevel : byte;
+        peakConnectionsUsed : word;
+        accountingVersion : byte;
+        VAPversion : byte;
+        queingVersion : byte;
+        printServerVersion : byte;
+        virtualConsoleVersion : byte;
+        securityRestrictionLevel : byte;
+        internetBridgeSupport : byte;
+        reserved : array[0..59] of byte;
+        CLibMajorVersion : byte;
+        CLibMinorVersion : byte;
+        CLibRevision : byte;
+     end;
+
+{$include npackoff.inc}
+
+function CheckConsolePrivileges:longint;cdecl;external Clib name 'CheckConsolePrivileges';
+function CheckNetWareVersion (majorVersion,
+                              minorVersion,
+                              revisionNumber,
+                              minimumSFTLevel,
+                              minimumTTSLevel:word):longint;cdecl;external Clib name 'CheckNetWareVersion';
+function ClearConnectionNumber(connectionNumber:word):longint;cdecl;external Clib name 'ClearConnectionNumber';
+function DisableFileServerLogin:longint;cdecl;external Clib name 'DisableFileServerLogin';
+function DisableTransactionTracking:longint;cdecl;external Clib name 'DisableTransactionTracking';
+function DownFileServer(forceFlag:longint):longint;cdecl;external Clib name 'DownFileServer';
+function EnableFileServerLogin:longint;cdecl;external Clib name 'EnableFileServerLogin';
+function EnableTransactionTracking:longint;cdecl;external Clib name 'EnableTransactionTracking';
+function GetBinderyObjectDiskSpaceLeft (connectionID:word;
+                                        binderyObjectID:longint;
+                                        systemElapsedTime:PLongint;
+                                        unusedDiskBlocks:PLongint;
+                                        restrictionEnforced:PBYTE):longint;cdecl;external Clib name 'GetBinderyObjectDiskSpaceLeft';
+function GetBinderyObjectDiskSpaceLeft (connectionID:word;
+                                        binderyObjectID:longint;
+                                    var systemElapsedTime:Longint;
+                                    var unusedDiskBlocks:Longint;
+                                    var restrictionEnforced:byte):longint;cdecl;external Clib name 'GetBinderyObjectDiskSpaceLeft';
+function GetDiskUtilization            (objectID:longint;
+                                        volumeNumber:char;
+                                        usedDirectories:PLongint;
+                                        usedFiles:PLongint;
+                                        usedBlocks:PLongint):longint;cdecl;external Clib name 'GetDiskUtilization';
+function GetDiskUtilization            (objectID:longint;
+                                        volumeNumber:char;
+                                    var usedDirectories:Longint;
+                                    var usedFiles:Longint;
+                                    var usedBlocks:Longint):longint; cdecl;external Clib name 'GetDiskUtilization';
+
+//procedure GetFileServerConnectionID(fileServerName:Pchar; connectionID:PWORD);cdecl;external Clib name 'GetFileServerConnectionID';
+procedure GetFileServerDateAndTime(dateAndTime:PBYTE);cdecl;external Clib name 'GetFileServerDateAndTime';
+procedure GetFileServerDateAndTime(var dateAndTime);cdecl;external Clib name 'GetFileServerDateAndTime';
+function GetFileServerDescriptionStrings (company_Name:Pchar;
+                                          revision:Pchar;
+                                          revisionDate:Pchar;
+                                          copyrightNotice:Pchar):longint;cdecl;external Clib name 'GetFileServerDescriptionStrings';
+function GetFileServerLoginStatus        (loginEnabledFlag:PLongint):longint;cdecl;external Clib name 'GetFileServerLoginStatus';
+function GetFileServerLoginStatus        (var loginEnabledFlag:Longint):longint;cdecl;external Clib name 'GetFileServerLoginStatus';
+procedure GetFileServerName(connectionID:word; fileServerName:Pchar);cdecl;external Clib name 'GetFileServerName';
+function GetServerConfigurationInfo      (serverType:PLongint;
+                                          loaderType:PLongint):longint;cdecl;external Clib name 'GetServerConfigurationInfo';
+function GetServerConfigurationInfo      (var serverType:Longint;
+                                          var loaderType:Longint):longint;cdecl;external Clib name 'GetServerConfigurationInfo';
+function GetServerInformation            (returnSize:longint;
+                                          serverInfo:PFILE_SERV_INFO):longint;cdecl;external Clib name 'GetServerInformation';
+function GetServerInformation            (returnSize:longint;
+                                      var serverInfo:TFILE_SERV_INFO):longint;cdecl;external Clib name 'GetServerInformation';                                          
+function GetServerMemorySize:longint;cdecl;external Clib name 'GetServerMemorySize';
+function GetServerUtilization:longint;cdecl;external Clib name 'GetServerUtilization';
+function SendConsoleBroadcast(msg:Pchar;
+                              connectionCount:word;
+                              connectionList:PWORD):longint;cdecl;external Clib name 'SendConsoleBroadcast';
+function SendConsoleBroadcast(msg:Pchar;
+                              connectionCount:word;
+                              const connectionList:array of word):longint;cdecl;external Clib name 'SendConsoleBroadcast';
+function SetFileServerDateAndTime (year,month,day,hour,minute,second:word):longint;cdecl;external Clib name 'SetFileServerDateAndTime';
+
+
+{------------------------------------------------------------------------------}
+const
+   ENVSERV_OVERHEAD_SIZE = 2 * cardinal(sizeof(WORD));
+   ENVSERV_BUFFER1_SIZE = 512 + ENVSERV_OVERHEAD_SIZE;
+   ENVSERV_CONN_TYPE_286 = 286;
+   ENVSERV_CONN_TYPE_386 = 386;
+
+{$include npackon.inc}
+type
+
+   PCONN_USAGE = ^TCONN_USAGE;
+   TCONN_USAGE = record
+        systemElapsedTime : longint;
+        bytesRead : array[0..5] of byte;
+        bytesWritten : array[0..5] of byte;
+        totalRequestPackets : longint;
+     end;
+
+   PDISK_CACHE_STATS = ^TDISK_CACHE_STATS;
+   TDISK_CACHE_STATS = record
+        systemElapsedTime : longint;
+        cacheBufferCount : word;
+        cacheBufferSize : word;
+        dirtyCacheBuffers : word;
+        cacheReadRequests : longint;
+        cacheWriteRequests : longint;
+        cacheHits : longint;
+        cacheMisses : longint;
+        physicalReadRequests : longint;
+        physicalWriteRequests : longint;
+        physicalReadErrors : word;
+        physicalWriteErrors : word;
+        cacheGetRequests : longint;
+        cacheFullWriteRequests : longint;
+        cachePartialWriteRequests : longint;
+        backgroundDirtyWrites : longint;
+        backgroundAgedWrites : longint;
+        totalCacheWrites : longint;
+        cacheAllocations : longint;
+        thrashingCount : word;
+        LRUBlockWasDirtyCount : word;
+        readBeyondWriteCount : word;
+        fragmentedWriteCount : word;
+        cacheHitOnUnavailCount : word;
+        cacheBlockScrappedCount : word;
+     end;
+
+
+   PDISK_CHANNEL_STATS = ^TDISK_CHANNEL_STATS;
+   TDISK_CHANNEL_STATS = record
+        systemElapsedTime : longint;
+        channelState : word;
+        channelSyncState : word;
+        driverType : byte;
+        driverMajorVersion : byte;
+        driverMinorVersion : byte;
+        driverDescription : array[0..64] of char;
+        IOAddr1 : word;
+        IOAddr1Size : word;
+        IOAddr2 : word;
+        IOAddr2Size : word;
+        sharedMem1Seg : array[0..2] of byte;
+        sharedMem1Ofs : word;
+        sharedMem2Seg : array[0..2] of byte;
+        sharedMem2Ofs : word;
+        interrupt1Used : byte;
+        interrupt1 : byte;
+        interrupt2Used : byte;
+        interrupt2 : byte;
+        DMAChannel1Used : byte;
+        DMAChannel1 : byte;
+        DMAChannel2Used : byte;
+        DMAChannel2 : byte;
+        reserved2 : word;
+        configDescription : array[0..79] of char;
+     end;
+
+
+   PDRIVE_MAP_TABLE = ^TDRIVE_MAP_TABLE;
+   TDRIVE_MAP_TABLE = record
+        systemElapsedTime : longint;
+        SFTLevel : byte;
+        logicalDriveCount : byte;
+        physicalDriveCount : byte;
+        diskChannelTable : array[0..4] of byte;
+        pendingIOCommands : word;
+        mappingTable : array[0..31] of byte;
+        driveMirrorTable : array[0..31] of byte;
+        deadMirrorTable : array[0..31] of byte;
+        remirroredDrive : byte;
+        reserved : byte;
+        remirroredBlock : longint;
+        SFTErrorTable : array[0..59] of word;
+     end;
+
+
+   PSERVER_LAN_IO = ^TSERVER_LAN_IO;
+   TSERVER_LAN_IO = record
+        systemElapsedTime : longint;
+        maxRoutingBuffersAvail : word;
+        maxRoutingBuffersUsed : word;
+        routingBuffersInUse : word;
+        totalFileServicePackets : longint;
+        fileServicePacketsBuffered : word;
+        invalidConnPacketCount : word;
+        badLogicalConnCount : word;
+        packetsRcvdDuringProcCount : word;
+        reprocessedRequestCount : word;
+        badSequenceNumberPacketCount : word;
+        duplicateReplyCount : word;
+        acknowledgementsSent : word;
+        badRequestTypeCount : word;
+        attachDuringProcCount : word;
+        attachWhileAttachingCount : word;
+        forgedDetachRequestCount : word;
+        badConnNumberOnDetachCount : word;
+        detachDuringProcCount : word;
+        repliesCanceledCount : word;
+        hopCountDiscardCount : word;
+        unknownNetDiscardCount : word;
+        noDGroupBufferDiscardCount : word;
+        outPacketNoBufferDiscardCount : word;
+        IPXNotMyNetworkCount : word;
+        NetBIOSPropagationCount : longint;
+        totalOtherPackets : longint;
+        totalRoutedPackets : longint;
+     end;
+
+
+   PSERVER_MISC_INFO = ^TSERVER_MISC_INFO;
+   TSERVER_MISC_INFO = record
+        systemElapsedTime : longint;
+        processorType : byte;
+        reserved : byte;
+        serviceProcessCount : byte;
+        serverUtilizationPercent : byte;
+        maxBinderyObjectsAvail : word;
+        maxBinderyObjectsUsed : word;
+        binderyObjectsInUse : word;
+        serverMemoryInK : word;
+        serverWastedMemoryInK : word;
+        dynamicAreaCount : word;
+        dynamicSpace1 : longint;
+        maxUsedDynamicSpace1 : longint;
+        dynamicSpaceInUse1 : longint;
+        dynamicSpace2 : longint;
+        maxUsedDynamicSpace2 : longint;
+        dynamicSpaceInUse2 : longint;
+        dynamicSpace3 : longint;
+        maxUsedDynamicSpace3 : longint;
+        dynamicSpaceInUse3 : longint;
+     end;
+
+
+   PFILE_SYS_STATS = ^TFILE_SYS_STATS;
+   TFILE_SYS_STATS = record
+        systemElapsedTime : longint;
+        maxOpenFiles : word;
+        maxFilesOpened : word;
+        currOpenFiles : word;
+        totalFilesOpened : longint;
+        totalReadRequests : longint;
+        totalWriteRequests : longint;
+        currChangedFATSectors : word;
+        totalChangedFATSectors : longint;
+        FATWriteErrors : word;
+        fatalFATWriteErrors : word;
+        FATScanErrors : word;
+        maxIndexFilesOpened : word;
+        currOpenIndexedFiles : word;
+        attachedIndexFiles : word;
+        availableIndexFiles : word;
+     end;
+
+
+   PLAN_CONFIG = ^TLAN_CONFIG;
+   TLAN_CONFIG = record
+        networkAddress : array[0..3] of byte;
+        hostAddress : array[0..5] of byte;
+        LANDriverInstalled : byte;
+        optionNumber : byte;
+        configurationText : array[0..159] of char;
+     end;
+
+   PPHYS_DISK_STATS = ^TPHYS_DISK_STATS;
+   TPHYS_DISK_STATS = record
+        systemElapsedTime : longint;
+        diskChannel : byte;
+        diskRemovable : byte;
+        driveType : byte;
+        controllerDriveNumber : byte;
+        controllerNumber : byte;
+        controllerType : byte;
+        driveSize : longint;
+        driveCylinders : word;
+        driveHeads : byte;
+        sectorsPerTrack : byte;
+        driveDefinition : array[0..63] of char;
+        IOErrorCount : word;
+        hotFixStart : longint;
+        hotFixSize : word;
+        hotFixBlockAvailable : word;
+        hotFixDisabled : byte;
+     end;
+
+
+   PTTS_STATS = ^TTTS_STATS;
+   TTTS_STATS = record
+        systemElapsedTime : longint;
+        TTS_Supported : byte;
+        TTS_Enabled : byte;
+        TTS_VolumeNumber : word;
+        TTS_MaxOpenTransactions : word;
+        TTS_MaxTransactionsOpened : word;
+        TTS_CurrTransactionsOpen : word;
+        TTS_TotalTransactions : longint;
+        TTS_TotalWrites : longint;
+        TTS_TotalBackouts : longint;
+        TTS_UnfilledBackouts : word;
+        TTS_DiskBlocksInUse : word;
+        TTS_FATAllocations : longint;
+        TTS_FileSizeChanges : longint;
+        TTS_FilesTruncated : longint;
+        numberOfTransactions : byte;
+     end;
+
+   PTTS_CONNECTIONS = ^TTTS_CONNECTIONS;
+   TTTS_CONNECTIONS = record
+        connectionNumber : byte;
+        taskNumber : byte;
+     end;
+
+
+   PCONN_OPEN_FILES_286 = ^TCONN_OPEN_FILES_286;
+   TCONN_OPEN_FILES_286 = record
+        taskNumber : byte;
+        lockType : byte;
+        accessControl : byte;
+        lockFlag : byte;
+        volumeNumber : byte;
+        dirEntry : word;
+        fileName : array[0..13] of char;
+     end;
+
+   PCONN_OPEN_FILES_386 = ^TCONN_OPEN_FILES_386;
+   TCONN_OPEN_FILES_386 = record
+        taskNumber : word;
+        lockType : byte;
+        accessControl : byte;
+        lockFlag : byte;
+        volumeNumber : byte;
+        parentDirEntry : longint;
+        dirEntry : longint;
+        forkCount : byte;
+        nameSpace : byte;
+        nameLength : byte;
+        fileName : array[0..255] of byte;
+     end;
+
+   PCONN_OPEN_FILES = ^TCONN_OPEN_FILES;
+   TCONN_OPEN_FILES = record
+        unionType : word;
+        u : record
+            case longint of
+               0 : ( con286 : TCONN_OPEN_FILES_286 );
+               1 : ( con386 : TCONN_OPEN_FILES_386 );
+            end;
+     end;
+
+   PCONN_SEMAPHORE_286 = ^TCONN_SEMAPHORE_286;
+   TCONN_SEMAPHORE_286 = record
+        openCount : word;
+        semaphoreValue : byte;
+        taskNumber : byte;
+        nameLength : byte;
+        semaphoreName : array[0..254] of byte;
+     end;
+
+   PCONN_SEMAPHORE_386 = ^TCONN_SEMAPHORE_386;
+   TCONN_SEMAPHORE_386 = record
+        openCount : word;
+        semaphoreValue : word;
+        taskNumber : word;
+        nameLength : byte;
+        semaphoreName : array[0..254] of byte;
+     end;
+
+   PCONN_SEMAPHORE = ^TCONN_SEMAPHORE;
+   TCONN_SEMAPHORE = record
+        unionType : word;
+        u : record
+            case longint of
+               0 : ( con286 : TCONN_SEMAPHORE_286 );
+               1 : ( con386 : TCONN_SEMAPHORE_386 );
+            end;
+     end;
+
+   PCONN_TASK_INFO_286 = ^TCONN_TASK_INFO_286;
+   TCONN_TASK_INFO_286 = record
+        unionType : word;
+        lockStatus : byte;
+        waitRecord : record
+            case longint of
+               0 : ( LockStatus1 : record
+                    taskNumber : byte;
+                    beginAddress : word;
+                    endAddress : word;
+                    volumeNumber : byte;
+                    directoryEntry : word;
+                    nameLength : byte;
+                    name : byte;
+                 end );
+               1 : ( LockStatus2 : record
+                    taskNumber : byte;
+                    volumeNumber : byte;
+                    directoryEntry : word;
+                    nameLength : byte;
+                    name : byte;
+                 end );
+               2 : ( LockStatus3Or4 : record
+                    taskNumber : byte;
+                    nameLength : byte;
+                    name : byte;
+                 end );
+            end;
+     end;
+
+   PCONN_TASK_INFO_386 = ^TCONN_TASK_INFO_386;
+   TCONN_TASK_INFO_386 = record
+        unionType : word;
+        lockStatus : byte;
+        waitRecord : record
+            case longint of
+               0 : ( LockStatus1 : record
+                    taskNumber : word;
+                    beginAddress : longint;
+                    endAddress : longint;
+                    volumeNumber : word;
+                    parentID : longint;
+                    directoryEntry : longint;
+                    forkCount : byte;
+                    nameSpace : byte;
+                    nameLength : byte;
+                    name : byte;
+                 end );
+               1 : ( LockStatus2 : record
+                    taskNumber : word;
+                    volumeNumber : word;
+                    parentID : longint;
+                    directoryEntry : longint;
+                    forkCount : byte;
+                    nameSpace : byte;
+                    nameLength : byte;
+                    name : byte;
+                 end );
+               2 : ( LockStatus3Or4 : record
+                    taskNumber : word;
+                    nameLength : byte;
+                    name : byte;
+                 end );
+            end;
+     end;
+
+   PCONN_TASK_PAIRS_286 = ^TCONN_TASK_PAIRS_286;
+   TCONN_TASK_PAIRS_286 = record
+        task : byte;
+        taskStatus : byte;
+     end;
+
+   PCONN_TASK_PAIRS_386 = ^TCONN_TASK_PAIRS_386;
+   TCONN_TASK_PAIRS_386 = record
+        task : word;
+        taskStatus : byte;
+     end;
+
+   PCONN_USING_FILE_REQ_286 = ^TCONN_USING_FILE_REQ_286;
+   TCONN_USING_FILE_REQ_286 = record
+        lastRecordSeen : word;
+        directoryHandle : byte;
+        pathLength : byte;
+        path : array[0..254] of byte;
+     end;
+
+   PCONN_USING_FILE_REQ_386 = ^TCONN_USING_FILE_REQ_386;
+   TCONN_USING_FILE_REQ_386 = record
+        forkType : byte;
+        volume : byte;
+        directoryID : longint;
+        nextRecord : word;
+     end;
+
+   PCONN_USING_FILE_REQUEST = ^TCONN_USING_FILE_REQUEST;
+   TCONN_USING_FILE_REQUEST = record
+        unionType : word;
+        reserved1 : word;
+        reserved2 : byte;
+        request : record
+            case longint of
+               0 : ( req286 : TCONN_USING_FILE_REQ_286 );
+               1 : ( req386 : TCONN_USING_FILE_REQ_386 );
+            end;
+     end;
+
+   PCONN_USING_FILE_REPLY_286 = ^TCONN_USING_FILE_REPLY_286;
+   TCONN_USING_FILE_REPLY_286 = record
+        useCount : word;
+        openCount : word;
+        openForReadCount : word;
+        openForWriteCount : word;
+        denyReadCount : word;
+        denyWriteCount : word;
+        nextRequestRecord : word;
+        locked : byte;
+        numberOfRecords : word;
+     end;
+
+   PCONN_USING_FILE_REPLY_386 = ^TCONN_USING_FILE_REPLY_386;
+   TCONN_USING_FILE_REPLY_386 = record
+        nextRequestRecord : word;
+        useCount : word;
+        openCount : word;
+        openForReadCount : word;
+        openForWriteCount : word;
+        denyReadCount : word;
+        denyWriteCount : word;
+        locked : byte;
+        forkCount : byte;
+        numberOfRecords : word;
+     end;
+
+   PCONN_USING_FILE_RECORD_286 = ^TCONN_USING_FILE_RECORD_286;
+   TCONN_USING_FILE_RECORD_286 = record
+        connectionNumber : word;
+        taskNumber : byte;
+        lockType : byte;
+        accessFlags : byte;
+        lockStatus : byte;
+     end;
+
+   PCONN_USING_FILE_RECORD_386 = ^TCONN_USING_FILE_RECORD_386;
+   TCONN_USING_FILE_RECORD_386 = record
+        connectionNumber : word;
+        taskNumber : word;
+        lockType : byte;
+        accessFlags : byte;
+        lockStatus : byte;
+     end;
+
+   PCONN_USING_FILE_REPLY = ^TCONN_USING_FILE_REPLY;
+   TCONN_USING_FILE_REPLY = record
+        unionType : word;
+        reply : record
+            case longint of
+               0 : ( rep286 : TCONN_USING_FILE_REPLY_286 );
+               1 : ( rep386 : TCONN_USING_FILE_REPLY_386 );
+            end;
+     end;
+
+   PLOGICAL_RECORD_INFO_286 = ^TLOGICAL_RECORD_INFO_286;
+   TLOGICAL_RECORD_INFO_286 = record
+        useCount : word;
+        shareableLockCount : word;
+        nextRequestRecord : word;
+        locked : byte;
+        numberOfRecords : byte;
+     end;
+
+   PLOGICAL_RECORD_INFO_386 = ^TLOGICAL_RECORD_INFO_386;
+   TLOGICAL_RECORD_INFO_386 = record
+        useCount : word;
+        shareableLockCount : word;
+        locked : byte;
+        nextRequestRecord : word;
+        numberOfRecords : word;
+     end;
+
+   PLOGICAL_RECORD_286 = ^TLOGICAL_RECORD_286;
+   TLOGICAL_RECORD_286 = record
+        connectionNumber : word;
+        taskNumber : byte;
+        lockStatus : byte;
+     end;
+
+   PLOGICAL_RECORD_386 = ^TLOGICAL_RECORD_386;
+   TLOGICAL_RECORD_386 = record
+        connectionNumber : word;
+        taskNumber : word;
+        lockStatus : byte;
+     end;
+
+   PLOGICAL_RECORD_INFO = ^TLOGICAL_RECORD_INFO;
+   TLOGICAL_RECORD_INFO = record
+        unionType : word;
+        u : record
+            case longint of
+               0 : ( lr286 : TLOGICAL_RECORD_INFO_286 );
+               1 : ( lr386 : TLOGICAL_RECORD_INFO_386 );
+            end;
+     end;
+
+   PLOGICAL_RECORD_REQUEST = ^TLOGICAL_RECORD_REQUEST;
+   TLOGICAL_RECORD_REQUEST = record
+        reserved1 : word;
+        reserved2 : byte;
+        nextRecord : word;
+        nameLength : byte;
+        name : array[0..254] of byte;
+     end;
+
+   PCONN_LOGICAL_RECORD_286 = ^TCONN_LOGICAL_RECORD_286;
+   TCONN_LOGICAL_RECORD_286 = record
+        nextRequest : word;
+        numberOfRecords : byte;
+     end;
+
+   PCONN_LOGICAL_RECORD_386 = ^TCONN_LOGICAL_RECORD_386;
+   TCONN_LOGICAL_RECORD_386 = record
+        nextRequest : word;
+        numberOfRecords : word;
+     end;
+
+   PCONN_LOGICAL_RECORD = ^TCONN_LOGICAL_RECORD;
+   TCONN_LOGICAL_RECORD = record
+        unionType : word;
+        u : record
+            case longint of
+               0 : ( lr286 : TCONN_LOGICAL_RECORD_286 );
+               1 : ( lr386 : TCONN_LOGICAL_RECORD_386 );
+            end;
+     end;
+
+   PCONN_LOGICAL_RECORD_BLOCK_286 = ^TCONN_LOGICAL_RECORD_BLOCK_286;
+   TCONN_LOGICAL_RECORD_BLOCK_286 = record
+        taskNumber : byte;
+        lockStatus : byte;
+        lockNameLength : byte;
+        lockName : byte;
+     end;
+
+   PCONN_LOGICAL_RECORD_BLOCK_386 = ^TCONN_LOGICAL_RECORD_BLOCK_386;
+   TCONN_LOGICAL_RECORD_BLOCK_386 = record
+        taskNumber : word;
+        lockStatus : byte;
+        lockNameLength : byte;
+        lockName : byte;
+     end;
+
+   PFILE_PHYSICAL_RECORD_LOCK_286 = ^TFILE_PHYSICAL_RECORD_LOCK_286;
+   TFILE_PHYSICAL_RECORD_LOCK_286 = record
+        nextRequest : word;
+        numberOfLocks : byte;
+        reserved : byte;
+     end;
+
+   PFILE_PHYSICAL_RECORD_LOCK_386 = ^TFILE_PHYSICAL_RECORD_LOCK_386;
+   TFILE_PHYSICAL_RECORD_LOCK_386 = record
+        nextRequest : word;
+        numberOfLocks : word;
+     end;
+
+   PFILE_PHYSICAL_RECORD_LOCK = ^TFILE_PHYSICAL_RECORD_LOCK;
+   TFILE_PHYSICAL_RECORD_LOCK = record
+        unionType : word;
+        u : record
+            case longint of
+               0 : ( pr286 : TFILE_PHYSICAL_RECORD_LOCK_286 );
+               1 : ( pr386 : TFILE_PHYSICAL_RECORD_LOCK_286 );
+            end;
+     end;
+
+   PFILE_PHYSICAL_RECORD_286 = ^TFILE_PHYSICAL_RECORD_286;
+   TFILE_PHYSICAL_RECORD_286 = record
+        loggedCount : word;
+        shareLockCount : word;
+        recordStart : longint;
+        recordEnd : longint;
+        connectionNumber : word;
+        taskNumber : byte;
+        lockType : byte;
+     end;
+
+   PFILE_PHYSICAL_RECORD_386 = ^TFILE_PHYSICAL_RECORD_386;
+   TFILE_PHYSICAL_RECORD_386 = record
+        loggedCount : word;
+        shareLockCount : word;
+        recordStart : longint;
+        recordEnd : longint;
+        connectionNumber : word;
+        taskNumber : word;
+        lockType : byte;
+     end;
+
+   PFILE_PHYSICAL_REQUEST_286 = ^TFILE_PHYSICAL_REQUEST_286;
+   TFILE_PHYSICAL_REQUEST_286 = record
+        lastRecord : word;
+        directoryHandle : byte;
+        pathLength : byte;
+        name : array[0..254] of byte;
+     end;
+
+   PFILE_PHYSICAL_REQUEST_386 = ^TFILE_PHYSICAL_REQUEST_386;
+   TFILE_PHYSICAL_REQUEST_386 = record
+        forkType : byte;
+        volume : byte;
+        directoryID : longint;
+        next : word;
+     end;
+
+   PFILE_PHYSICAL_RECORD_REQUEST = ^TFILE_PHYSICAL_RECORD_REQUEST;
+   TFILE_PHYSICAL_RECORD_REQUEST = record
+        unionType : word;
+        reserved1 : word;
+        reserved2 : byte;
+        u : record
+            case longint of
+               0 : ( pr286 : TFILE_PHYSICAL_REQUEST_286 );
+               1 : ( pr386 : TFILE_PHYSICAL_REQUEST_386 );
+            end;
+     end;
+
+   PCONN_RECORD_LOCKS_286 = ^TCONN_RECORD_LOCKS_286;
+   TCONN_RECORD_LOCKS_286 = record
+        nextRecord : word;
+        numberOfLocks : byte;
+        reserved : byte;
+     end;
+
+   PCONN_RECORD_LOCKS_386 = ^TCONN_RECORD_LOCKS_386;
+   TCONN_RECORD_LOCKS_386 = record
+        nextRecord : word;
+        numberOfLocks : word;
+     end;
+
+   PCONN_RECORD_LOCKS = ^TCONN_RECORD_LOCKS;
+   TCONN_RECORD_LOCKS = record
+        unionType : word;
+        u : record
+            case longint of
+               0 : ( rl286 : TCONN_RECORD_LOCKS_286 );
+               1 : ( rl386 : TCONN_RECORD_LOCKS_386 );
+            end;
+     end;
+
+   PCONN_LOCK_RECORD_286 = ^TCONN_LOCK_RECORD_286;
+   TCONN_LOCK_RECORD_286 = record
+        taskNumber : byte;
+        lockFlag : byte;
+        recordStart : longint;
+        recordEnd : longint;
+     end;
+
+   PCONN_LOCK_RECORD_386 = ^TCONN_LOCK_RECORD_386;
+   TCONN_LOCK_RECORD_386 = record
+        taskNumber : word;
+        lockFlag : byte;
+        recordStart : longint;
+        recordEnd : longint;
+     end;
+
+   PCONN_LOCK_REQUEST_286 = ^TCONN_LOCK_REQUEST_286;
+   TCONN_LOCK_REQUEST_286 = record
+        connectionNumber : word;
+        lastRecord : word;
+        volume : byte;
+        directoryID : word;
+        pathLength : byte;
+        fileName : array[0..13] of byte;
+     end;
+
+   PCONN_LOCK_REQUEST_386 = ^TCONN_LOCK_REQUEST_386;
+   TCONN_LOCK_REQUEST_386 = record
+        connectionNumber : word;
+        forkType : byte;
+        volume : byte;
+        directoryID : longint;
+        next : word;
+     end;
+
+   PCONN_LOCK_REQUEST = ^TCONN_LOCK_REQUEST;
+   TCONN_LOCK_REQUEST = record
+        unionType : word;
+        reserved1 : word;
+        reserved2 : byte;
+        u : record
+            case longint of
+               0 : ( lr286 : TCONN_LOCK_REQUEST_286 );
+               1 : ( lr386 : TCONN_LOCK_REQUEST_386 );
+            end;
+     end;
+
+   PSEMAPHORE_INFO_286 = ^TSEMAPHORE_INFO_286;
+   TSEMAPHORE_INFO_286 = record
+        nextRequest : word;
+        openCount : word;
+        semaphoreValue : byte;
+        numberOfRecords : byte;
+     end;
+
+   PSEMAPHORE_INFO_386 = ^TSEMAPHORE_INFO_386;
+   TSEMAPHORE_INFO_386 = record
+        nextRequest : word;
+        openCount : word;
+        semaphoreValue : word;
+        numberOfRecords : word;
+     end;
+
+   PSEMAPHORE_INFO = ^TSEMAPHORE_INFO;
+   TSEMAPHORE_INFO = record
+        unionType : word;
+        u : record
+            case longint of
+               0 : ( si286 : TSEMAPHORE_INFO_286 );
+               1 : ( si386 : TSEMAPHORE_INFO_386 );
+            end;
+     end;
+
+   PSEMAPHORE_INFO_RECORD_286 = ^TSEMAPHORE_INFO_RECORD_286;
+   TSEMAPHORE_INFO_RECORD_286 = record
+        connectionNumber : word;
+        taskNumber : byte;
+     end;
+
+   PSEMAPHORE_INFO_RECORD_386 = ^TSEMAPHORE_INFO_RECORD_386;
+   TSEMAPHORE_INFO_RECORD_386 = record
+        connectionNumber : word;
+        taskNumber : word;
+     end;
+
+   PSEMAPHORE_INFO_REQUEST = ^TSEMAPHORE_INFO_REQUEST;
+   TSEMAPHORE_INFO_REQUEST = record
+        reserved1 : word;
+        reserved2 : byte;
+        nextRecord : word;
+        nameLength : byte;
+        name : array[0..254] of byte;
+     end;
+
+{$include npackoff.inc}
+
+function GetConnectionsOpenFiles(connectionNumber:word; lastRecord:Plongint; lastTask:Plongint; structSize:longint; openFiles:PCONN_OPEN_FILES;
+               buffer:pointer; bufferSize:longint):longint;cdecl;external Clib name 'GetConnectionsOpenFiles';
+function GetConnectionsTaskInformation(connectionNumber:word; connectionTaskInfo:Ppointer; buffer:pointer; bufferSize:longint):longint;cdecl;external Clib name 'GetConnectionsTaskInformation';
+function GetConnectionsUsageStats(connectionNumber:longint; connectionUsage:PCONN_USAGE):longint;cdecl;external Clib name 'GetConnectionsUsageStats';
+function GetConnectionsUsingFile(requestSize:longint; request:pointer; buffer:pointer; bufferSize:longint):longint;cdecl;external Clib name 'GetConnectionsUsingFile';
+function GetDiskCacheStats(cacheStats:PDISK_CACHE_STATS):longint;cdecl;external Clib name 'GetDiskCacheStats';
+function GetDiskCacheStats(var cacheStats:TDISK_CACHE_STATS):longint;cdecl;external Clib name 'GetDiskCacheStats';
+function GetDiskChannelStats(channelNumber:longint; diskChannelStats:PDISK_CHANNEL_STATS):longint;cdecl;external Clib name 'GetDiskChannelStats';
+function GetDiskChannelStats(channelNumber:longint; var diskChannelStats:TDISK_CHANNEL_STATS):longint;cdecl;external Clib name 'GetDiskChannelStats';
+function GetDriveMappingTable(driveMappingTable:PDRIVE_MAP_TABLE):longint;cdecl;external Clib name 'GetDriveMappingTable';
+function GetDriveMappingTable(var driveMappingTable:TDRIVE_MAP_TABLE):longint;cdecl;external Clib name 'GetDriveMappingTable';
+function GetFileServerLANIOStats(serverLANIOStats:PSERVER_LAN_IO):longint;cdecl;external Clib name 'GetFileServerLANIOStats';
+function GetFileServerLANIOStats(var serverLANIOStats:TSERVER_LAN_IO):longint;cdecl;external Clib name 'GetFileServerLANIOStats';
+function GetFileServerMiscInformation(miscInformation:PSERVER_MISC_INFO):longint;cdecl;external Clib name 'GetFileServerMiscInformation';
+function GetFileServerMiscInformation(var miscInformation:TSERVER_MISC_INFO):longint;cdecl;external Clib name 'GetFileServerMiscInformation';
+function GetFileSystemStats(fileSysStats:PFILE_SYS_STATS):longint;cdecl;external Clib name 'GetFileSystemStats';
+function GetFileSystemStats(var fileSysStats:TFILE_SYS_STATS):longint;cdecl;external Clib name 'GetFileSystemStats';
+function GetLANDriverConfigInfo(LANBoardNumber:byte; LANConfiguration:PLAN_CONFIG):longint;cdecl;external Clib name 'GetLANDriverConfigInfo';
+function GetLANDriverConfigInfo(LANBoardNumber:byte; var LANConfiguration:TLAN_CONFIG):longint;cdecl;external Clib name 'GetLANDriverConfigInfo';
+function GetLogicalRecordInformation(requestSize:longint; request:pointer; buffer:pointer; bufferSize:longint):longint;cdecl;external Clib name 'GetLogicalRecordInformation';
+function GetLogicalRecordsByConnection(connectionNumber:word; nextRecord:word; buffer:pointer; bufferSize:longint):longint;cdecl;external Clib name 'GetLogicalRecordsByConnection';
+function GetPathFromDirectoryEntry(volumeNumber:byte; directoryEntry:word; pathLength:PBYTE; path:Pchar):longint;cdecl;external Clib name 'GetPathFromDirectoryEntry';
+function GetPhysicalDiskStats(physicalDiskNumber:byte; physicalDiskStats:PPHYS_DISK_STATS):longint;cdecl;external Clib name 'GetPhysicalDiskStats';
+function GetPhysicalDiskStats(physicalDiskNumber:byte; var physicalDiskStats:TPHYS_DISK_STATS):longint;cdecl;external Clib name 'GetPhysicalDiskStats';
+function GetPhysicalRecordLocksByFile(requestSize:longint; request:pointer; buffer:pointer; bufferSize:longint):longint;cdecl;external Clib name 'GetPhysicalRecordLocksByFile';
+function GetPhysRecLockByConnectAndFile(requestSize:longint; request:pointer; buffer:pointer; bufferSize:longint):longint;cdecl;external Clib name 'GetPhysRecLockByConnectAndFile';
+function GetSemaphoreInformation(requestSize:longint; request:pointer; buffer:pointer; bufferSize:longint):longint;cdecl;external Clib name 'GetSemaphoreInformation';
+function TTSGetStats(TTSStats:PTTS_STATS; bufferLen:longint; buffer:PBYTE):longint;cdecl;external Clib name 'TTSGetStats';
+function TTSGetStats(var TTSStats:TTTS_STATS; bufferLen:longint; var buffer):longint;cdecl;external Clib name 'TTSGetStats';
+
+{------------------------------------------------------------------------------}
+{$include npackon.inc}
+
+const
+   CRITICAL_ATTRIBUTE_FLAG = $00000080;
+   RESERVED_FLAGS_MASK     = $0000FFFF;
+   USER_FLAGS_MASK         = $FFFF0000;
+{------------------------------------------------------------------
+     T_enumerateEAnoKey is the structure returned in the dataBuffer
+     by EnumerateEA if a empty key (or NULL) is specified.  The
+     EAsInReply output parameter tells how many T_enumerateEAnoKey
+     structures are in the dataBuffer.
+    ------------------------------------------------------------------ }
+{ length of entire EA  }
+{ length of this field is given by keyLength  }
+type
+
+   PT_enumerateEAnoKey = ^TT_enumerateEAnoKey;
+   TT_enumerateEAnoKey = record
+        valueLength : longint;
+        keyLength   : word;
+        accessFlags : longint;
+        keyValue    : array[0..0] of char;
+     end;
+{----------------------------------------------------------------------
+     T_enumerateEAwithKey is the structure returned in the dataBuffer
+     by EnumerateEA if a non-empty key is specified.  In this case the
+     EAsInReply output parameter will return one and there will only be
+     one T_enumerateEAwithKey structure in the dataBuffer.
+    ---------------------------------------------------------------------- }
+
+   PT_enumerateEAwithKey = ^TT_enumerateEAwithKey;
+   TT_enumerateEAwithKey = record
+        valueLength : longint;
+        keyLength : word;
+        accessFlags : longint;
+        keyExtants : longint;
+        valueExtants : longint;
+        keyValue : array[0..0] of char;
+     end;
+
+{$include npackoff.inc}
+
+function CloseEA(handle:longint):longint;cdecl;external Clib name 'CloseEA';
+function CopyEA (srcPath,destPath:Pchar; destVolumeNumber,destDirectoryNumber:longint;
+                 EAcount,EAdataSize,EAkeySize:PLongint):longint;cdecl;external Clib name 'CopyEA';
+function CopyEA (srcPath,destPath:Pchar; destVolumeNumber,destDirectoryNumber:longint;
+             var EAcount,EAdataSize,EAkeySize:longint):longint;cdecl;external Clib name 'CopyEA';
+
+function EnumerateEA(handle:longint; keyBuffer:Pchar; dataBuffer:pointer; dataBufferSize:longint;
+                     startPosition:longint;
+                     dataSize,EAsInReply:PLongint):longint;cdecl;external Clib name 'EnumerateEA';
+function EnumerateEA(handle:longint; keyBuffer:Pchar; var dataBuffer; dataBufferSize:longint;
+                     startPosition:longint;
+                 var dataSize,EAsInReply:longint):longint;cdecl;external Clib name 'EnumerateEA';
+function EnumerateEA(handle:longint; keyBuffer:Pchar; dataBuffer:pointer; dataBufferSize:longint;
+                     startPosition:longint;
+                 var dataSize,EAsInReply:longint):longint;cdecl;external Clib name 'EnumerateEA';
+function GetEAInfo (handle:longint; totalEAs,totalDataSizeOfEAs,totalKeySizeOfEAs:PLongint):longint;cdecl;external Clib name 'GetEAInfo';
+function GetEAInfo (handle:longint; var totalEAs,totalDataSizeOfEAs,totalKeySizeOfEAs:longint):longint;cdecl;external Clib name 'GetEAInfo';
+
+function OpenEA(path:Pchar; reserved:longint):longint;cdecl;external Clib name 'OpenEA';
+function ReadEA(handle:longint; keyBuffer:Pchar; dataBuffer:Pchar; dataBufferSize:longint; accessFlags:PLongint):longint;cdecl;external Clib name 'ReadEA';
+function ReadEA(handle:longint; keyBuffer:Pchar; dataBuffer:Pchar; dataBufferSize:longint; var accessFlags:longint):longint;cdecl;external Clib name 'ReadEA';
+function WriteEA(handle:longint; keyBuffer:Pchar; dataBuffer:Pchar; dataBufferSize:longint; accessFlags:longint):longint;cdecl;external Clib name 'WriteEA';
+
+{------------------------------------------------------------------------------}
+
+const MAX_CONSOLE_MESSAGE_LENGTH =  80;
+      MAX_MESSAGE_LENGTH         =  58;
+      NEW_MAX_MESSAGE_LENGTH     = 250;
+
+function BroadcastToConsole       (msg:Pchar):longint;       cdecl;external Clib name 'BroadcastToConsole';
+function DisableStationBroadcasts:longint;                   cdecl;external Clib name 'DisableStationBroadcasts';
+function EnableStationBroadcasts:longint;                    cdecl;external Clib name 'EnableStationBroadcasts';
+function GetBroadcastMessage      (msgBuffer:Pchar):longint; cdecl;external Clib name 'GetBroadcastMessage';
+function SendBroadcastMessage     (msg:Pchar;
+                                   connectionList:PWORD;
+                                   resultList:PBYTE;
+                                   connectionCount:word):longint; cdecl;external Clib name 'SendBroadcastMessage';
+function SendBroadcastMessage     (msg:Pchar;
+                                   var connectionList;
+                                   var resultList;
+                                   var connectionCount:word):longint; cdecl;external Clib name 'SendBroadcastMessage';
+
+{------------------------------------------------------------------------------}
+{$include npackon.inc}
+
+const
+   NWMAX_QENTRIES = 250;
+{ the following manifest constant applies to server versions BELOW 3.X  }
+   NWMAX_JOB_SERVERS = 25;
+{ the following manifest constant applies to server versions ABOVE 2.X  }
+   NWQ_MAX_JOB_SERVERS = 50;
+   QF_AUTO_START = $08;
+   QF_SERVICE_RESTART = $10;
+   QF_ENTRY_OPEN = $20;
+   QF_USER_HOLD = $40;
+   QF_OPERATOR_HOLD = $80;
+{ Queue Status Flags  }
+   QS_CANT_ADD_JOBS = $01;
+   QS_SERVERS_CANT_ATTACH = $02;
+   QS_CANT_SERVICE_JOBS = $04;
+type
+
+   PJobStruct = ^TJobStruct;
+   TJobStruct = record
+        clientStation : byte;
+        clientTaskNumber : byte;
+        clientIDNumber : longint;
+        targetServerIDNumber : longint;
+        targetExecutionTime : array[0..5] of byte;
+        jobEntryTime : array[0..5] of byte;
+        jobNumber : word;
+        jobType : word;
+        jobPosition : byte;
+        jobControlFlags : byte;
+        jobFileName : array[0..13] of byte;
+        jobFileHandle : array[0..5] of byte;
+        serverStation : byte;
+        serverTaskNumber : byte;
+        serverIDNumber : longint;
+        textJobDescription : array[0..49] of byte;
+        clientRecordArea : array[0..151] of byte;
+     end;
+{ (19)80 - (20)79    }
+{ 1 = January,  ...  }
+{ 1 - 31             }
+{ 0 - 23             }
+{ 0 - 59             }
+{ 0 - 59             }
+
+   PNWStandardChronRec_t = ^TNWStandardChronRec_t;
+   TNWStandardChronRec_t = record
+        year : byte;
+        month : byte;
+        day : byte;
+        hour : byte;
+        minute : byte;
+        second : byte;
+     end;
+
+   PNWQChronRec_t = ^TNWQChronRec_t;
+   TNWQChronRec_t = TNWStandardChronRec_t;
+
+   PNWFileHandle_t = ^TNWFileHandle_t;
+   TNWFileHandle_t = byte;
+
+   PNWQEntityInfo_t = ^TNWQEntityInfo_t;
+   TNWQEntityInfo_t = record
+        clientConnNum : longint;
+        taskNum : longint;
+        id : longint;
+     end;
+
+   PNWQJobServerInfo_t = ^TNWQJobServerInfo_t;
+   TNWQJobServerInfo_t = record
+        id : longint;
+        executionTime : TNWQChronRec_t;
+     end;
+
+   PNWQJobInfo_t = ^TNWQJobInfo_t;
+   TNWQJobInfo_t = record
+        entryTime : TNWQChronRec_t;
+        num : longint;
+        _type : word;
+        position : word;
+        controlFlags : word;
+        assocFileName : array[0..13] of char;
+        fileHandle : TNWFileHandle_t;
+     end;
+
+   PNWQPrintJobInfo_t = ^TNWQPrintJobInfo_t;
+   TNWQPrintJobInfo_t = record
+        entryTime : TNWQChronRec_t;
+        num : longint;
+        formType : word;
+        position : word;
+        controlFlags : word;
+        assocFileName : array[0..13] of char;
+        fileHandle : TNWFileHandle_t;
+     end;
+
+   PNWQJobRec_t = ^TNWQJobRec_t;
+   TNWQJobRec_t = record
+        reserved : array[0..9] of byte;
+        client : TNWQEntityInfo_t;
+        target : TNWQJobServerInfo_t;
+        job : TNWQJobInfo_t;
+        jobServer : TNWQEntityInfo_t;
+        textJobDescription : array[0..49] of byte;
+        jobServerRecord : array[0..151] of byte;
+     end;
+
+   PNWQPrintServerRec_t = ^TNWQPrintServerRec_t;
+   TNWQPrintServerRec_t = record
+        versionNumber : byte;
+        tabSize : byte;
+        numberOfCopies : word;
+        printControlFlags : word;
+        maxLinesPerPage : word;
+        maxCharsPerLine : word;
+        formName : array[0..12] of char;
+        reserve : array[0..8] of byte;
+        bannerNameField : array[0..12] of char;
+        bannerFileField : array[0..12] of char;
+        bannerFileName : array[0..13] of char;
+        directoryPath : array[0..79] of char;
+     end;
+{$include npackoff.inc}
+
+function AbortServicingQueueJobAndFile(queueID:longint; jobNumber:word; fileHandle:longint):longint;cdecl;external Clib name 'AbortServicingQueueJobAndFile';
+function AttachQueueServerToQueue(queueID:longint):longint;cdecl;external Clib name 'AttachQueueServerToQueue';
+function ChangeQueueJobEntry(queueID:longint; job:PJobStruct):longint;cdecl;external Clib name 'ChangeQueueJobEntry';
+function ChangeQueueJobEntry(queueID:longint; var job:TJobStruct):longint;cdecl;external Clib name 'ChangeQueueJobEntry';
+function ChangeQueueJobPosition(queueID:longint; jobNumber:word; newPosition:byte):longint;cdecl;external Clib name 'ChangeQueueJobPosition';
+function ChangeToClientRights(queueID:longint; jobNumber:word):longint;cdecl;external Clib name 'ChangeToClientRights';
+function CloseFileAndAbortQueueJob(queueID:longint; jobNumber:word; fileHandle:longint):longint;cdecl;external Clib name 'CloseFileAndAbortQueueJob';
+function CloseFileAndStartQueueJob(queueID:longint; jobNumber:word; fileHandle:longint):longint;cdecl;external Clib name 'CloseFileAndStartQueueJob';
+function CreateAQueue(queueName:Pchar; queueType:longint; pathName:Pchar; queueID:Plongint):longint;cdecl;external Clib name 'CreateAQueue';
+function CreateAQueue(queueName:Pchar; queueType:longint; pathName:Pchar; var queueID:longint):longint;cdecl;external Clib name 'CreateAQueue';
+function CreateQueueJobAndFile(queueID:longint; job:PJobStruct; fileHandle:Plongint):longint;cdecl;external Clib name 'CreateQueueJobAndFile';
+function CreateQueueJobAndFile(queueID:longint; var job:TJobStruct; var fileHandle:longint):longint;cdecl;external Clib name 'CreateQueueJobAndFile';
+function DestroyQueue(queueID:longint):longint;cdecl;external Clib name 'DestroyQueue';
+function DetachQueueServerFromQueue(queueID:longint):longint;cdecl;external Clib name 'DetachQueueServerFromQueue';
+function FinishServicingQueueJobAndFile(queueID:longint; jobNumber:word; charge:longint; fileHandle:longint):longint;cdecl;external Clib name 'FinishServicingQueueJobAndFile';
+function GetQueueJobList(queueID:longint; jobCount:PWORD; jobNumberList:PWORD; maxJobNumbers:word):longint;cdecl;external Clib name 'GetQueueJobList';
+function GetQueueJobsFileSize(queueID:longint; jobNumber:longint; fileSize:Plongint):longint;cdecl;external Clib name 'GetQueueJobsFileSize';
+function NWQAbortJob(queueID:longint; jobNum:longint; fileHandle:longint):longint;cdecl;external Clib name 'NWQAbortJob';
+function NWQAbortJobService(queueID:longint; jobNum:longint; fileHandle:longint):longint;cdecl;external Clib name 'NWQAbortJobService';
+function NWQAttachServer(queueID:longint):longint;cdecl;external Clib name 'NWQAttachServer';
+function NWQBeginJobService(queueID:longint; targetJobType:word; jobInfo:PNWQJobRec_t; fileHandle:Plongint):longint;cdecl;external Clib name 'NWQBeginJobService';
+function NWQChangeJobEntry(queueID:longint; jobInfo:PNWQJobRec_t):longint;cdecl;external Clib name 'NWQChangeJobEntry';
+function NWQChangeJobPosition(queueID:longint; jobNum:longint; newPosition:longint):longint;cdecl;external Clib name 'NWQChangeJobPosition';
+function NWQChangeJobQueue(srcQueueID:longint; srcJobNum:longint; dstQueueID:longint; dstJobNum:Plongint):longint;cdecl;external Clib name 'NWQChangeJobQueue';
+function NWQChangeToClientRights(queueID:longint; jobNum:longint):longint;cdecl;external Clib name 'NWQChangeToClientRights';
+function NWQCreate(queueName:Pchar; queueType:word; pathName:Pchar; queueID:Plongint):longint;cdecl;external Clib name 'NWQCreate';
+function NWQCreateJob(queueID:longint; jobInfo:PNWQJobRec_t; fileHandle:Plongint):longint;cdecl;external Clib name 'NWQCreateJob';
+function NWQCreateJob(queueID:longint; var jobInfo:TNWQJobRec_t; fileHandle:Plongint):longint;cdecl;external Clib name 'NWQCreateJob';
+function NWQDestroy(queueID:longint):longint;cdecl;external Clib name 'NWQDestroy';
+function NWQDetachServer(queueID:longint):longint;cdecl;external Clib name 'NWQDetachServer';
+function NWQEndJobService(queueID:longint; jobNum:longint; chargeInfo:longint; fileHandle:longint):longint;cdecl;external Clib name 'NWQEndJobService';
+function NWQGetJobEntry(queueID:longint; jobNum:longint; jobInfo:PNWQJobRec_t):longint;cdecl;external Clib name 'NWQGetJobEntry';
+function NWQGetJobEntry(queueID:longint; jobNum:longint; var jobInfo:TNWQJobRec_t):longint;cdecl;external Clib name 'NWQGetJobEntry';
+function NWQGetJobFileSize(queueID:longint; jobNum:longint; fileSize:Plongint):longint;cdecl;external Clib name 'NWQGetJobFileSize';
+function NWQGetJobFileSize(queueID:longint; jobNum:longint; var fileSize:longint):longint;cdecl;external Clib name 'NWQGetJobFileSize';
+function NWQGetServers(queueID:longint; currentServers,qServerIDs,qServerConnNums:Plongint):longint;cdecl;external Clib name 'NWQGetServers';
+function NWQGetServerStatus(queueID:longint; jobServerID:longint; jobServerConnNum:longint; jobServerRecord:pointer):longint;cdecl;external Clib name 'NWQGetServerStatus';
+function NWQGetStatus(queueID:longint; queueStatus:Plongint; currentEntries:Plongint; currentServers:Plongint):longint;cdecl;external Clib name 'NWQGetStatus';
+function NWQMarkJobForService(queueID:longint; jobNum:longint; fileHandle:longint):longint;cdecl;external Clib name 'NWQMarkJobForService';
+function NWQRemoveJob(queueID:longint; jobNum:longint):longint;cdecl;external Clib name 'NWQRemoveJob';
+function NWQRestoreServerRights:longint;cdecl;external Clib name 'NWQRestoreServerRights';
+function NWQScanJobNums(queueID:longint; queueSequence:Plongint; totalJobs:Plongint; jobCount:Plongint; jobNumList:Plongint):longint;cdecl;external Clib name 'NWQScanJobNums';
+function NWQServiceJob(queueID:longint; targetJobTypesCount:longint; targetJobTypes:PWORD; jobInfo:PNWQJobRec_t; fileHandle:Plongint):longint;cdecl;external Clib name 'NWQServiceJob';
+function NWQSetServerStatus(queueID:longint; serverStatusRecord:pointer):longint;cdecl;external Clib name 'NWQSetServerStatus';
+function NWQSetStatus(queueID:longint; queueStatus:longint):longint;cdecl;external Clib name 'NWQSetStatus';
+function ReadQueueCurrentStatus(queueID:longint; queueStatus:PBYTE; numberOfJobs:PBYTE; numberOfServers:PBYTE; serverIDList:Plongint;
+           serverStationList:PWORD; maxNumberOfServers:word):longint;cdecl;external Clib name 'ReadQueueCurrentStatus';
+function ReadQueueJobEntry(queueID:longint; jobNumber:word; job:PJobStruct):longint;cdecl;external Clib name 'ReadQueueJobEntry';
+function ReadQueueServerCurrentStatus(queueID:longint; serverID:longint; serverStation:char; serverStatusRecord:Pchar):longint;cdecl;external Clib name 'ReadQueueServerCurrentStatus';
+function RemoveJobFromQueue(queueID:longint; jobNumber:word):longint;cdecl;external Clib name 'RemoveJobFromQueue';
+function RestoreQueueServerRights:longint;cdecl;external Clib name 'RestoreQueueServerRights';
+function ServiceQueueJobAndOpenFile(queueID:longint; targetJobType:word; job:PJobStruct; fileHandle:Plongint):longint;cdecl;external Clib name 'ServiceQueueJobAndOpenFile';
+function ServiceQueueJobAndOpenFile(queueID:longint; targetJobType:word; var job:TJobStruct; var fileHandle:longint):longint;cdecl;external Clib name 'ServiceQueueJobAndOpenFile';
+function SetQueueCurrentStatus(queueID:longint; queueStatus:byte):longint;cdecl;external Clib name 'SetQueueCurrentStatus';
+function SetQueueServerCurrentStatus(queueID:longint; serverStatusRecord:PBYTE):longint;cdecl;external Clib name 'SetQueueServerCurrentStatus';
+function SetQueueServerCurrentStatus(queueID:longint; var serverStatusRecord):longint;cdecl;external Clib name 'SetQueueServerCurrentStatus';
+
+{------------------------------------------------------------------------------}
+function GetNetworkSerialNumber    (networkSerialNumber : Plongint;
+                                    applicationNumber   : Pword)     : longint; cdecl; external Clib name 'GetNetworkSerialNumber';
+function GetNetworkSerialNumber    (var networkSerialNumber : longint;
+                                    var applicationNumber   : word)  : longint; cdecl; external Clib name 'GetNetworkSerialNumber';
+function VerifyNetworkSerialNumber (networkSerialNumber : longint;
+                                    applicationNumber   : Pword)     : longint; cdecl; external Clib name 'VerifyNetworkSerialNumber';
+function VerifyNetworkSerialNumber (networkSerialNumber : longint;
+                                var applicationNumber   : word)      : longint; cdecl; external Clib name 'VerifyNetworkSerialNumber';
+
+{------------------------------------------------------------------------------}
+const
+   OLD_SS_DEFAULT_BUFFER_SIZE = 538;
+   SS_DEFAULT_BUFFER_SIZE = 600;
+
+{ These connection types are used by SSGetActiveConnListByType          }
+{ They are all conditionally defined because some of them may appear in }
+{ other clib header files.                                              }
+{                                                                       }
+{ Connection service type  }
+{ NOTE: type 1 is reserved by CLIB for backward compatability  }
+
+   NCP_CONNECTION_TYPE = 2;
+   NLM_CONNECTION_TYPE = 3;
+   AFP_CONNECTION_TYPE = 4;
+   FTAM_CONNECTION_TYPE = 5;
+   ANCP_CONNECTION_TYPE = 6;
+
+{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% }
+{      User Interface Structures         }
+{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% }
+{$include npackon.inc}
+type
+
+   PSSDefaultBuffer = ^TSSDefaultBuffer;
+   TSSDefaultBuffer = record
+        data : array[0..(SS_DEFAULT_BUFFER_SIZE)-1] of byte;
+     end;
+
+   PCacheMemoryCounters = ^TCacheMemoryCounters;
+   TCacheMemoryCounters = record
+        OriginalNumberOfCacheBuffers : longint;
+        CurrentNumberOfCacheBuffers : longint;
+        CacheDirtyBlockThreshold : longint;
+        debugCounters : array[0..6] of longint;
+     end;
+
+   PCacheTrendCounters = ^TCacheTrendCounters;
+   TCacheTrendCounters = record
+        NumOfCacheChecks : longint;
+        NumOfCacheHits : longint;
+        debugCounters : array[0..6] of longint;
+        LRUSittingTime : longint;
+     end;
+
+   PCacheInformation = ^TCacheInformation;
+   TCacheInformation = record
+        MaximumByteCount : longint;
+        MinimumNumberOfCacheBuffers : longint;
+        MinimumCacheReportThreshold : longint;
+        AllocateWaitingCount : longint;
+        NDirtyBlocks : longint;
+        CacheDirtyWaitTime : longint;
+        CacheMaximumConcurrentWrites : longint;
+        MaximumDirtyTime : longint;
+        NumberOfDirectoryCacheBuffers : longint;
+        CacheByteToBlockShiftFactor : longint;
+     end;
+
+   PGetCacheInfoStructure = ^TGetCacheInfoStructure;
+   TGetCacheInfoStructure = record
+        currentServerTime : longint;
+        VConsoleVersion : byte;
+        VConsoleRevision : byte;
+        reserved : word;
+        CacheCntrs : array[0..25] of longint;
+        MemoryCntrs : TCacheMemoryCounters;
+        TrendCntrs : TCacheTrendCounters;
+        CacheInfo : TCacheInformation;
+     end;
+
+   PServerInformation = ^TServerInformation;
+   TServerInformation = record
+        ReplyCanceledCount : longint;
+        WriteHeldOffCount : longint;
+        reserved1 : longint;
+        InvalidRequestTypeCount : longint;
+        BeingAbortedCount : longint;
+        AlreadyDoingReAllocateCount : longint;
+        reserved2 : array[0..2] of longint;
+        DeAllocateStillTransmittingCount : longint;
+        StartStationErrorCount : longint;
+        InvalidSlotCount : longint;
+        BeingProcessedCount : longint;
+        ForgedPacketCount : longint;
+        StillTransmittingCount : longint;
+        ReExecuteRequestCount : longint;
+        InvalidSequenceNumberCount : longint;
+        DuplicateIsBeingSentAlreadyCount : longint;
+        SentPositiveAcknowledgeCount : longint;
+        SentADuplicateReplyCount : longint;
+        NoMemoryForStationControlCount : longint;
+        NoAvailableConnectionsCount : longint;
+        ReAllocateSlotCount : longint;
+        ReAllocateSlotCameTooSoonCount : longint;
+     end;
+
+   PFSCounters = ^TFSCounters;
+   TFSCounters = record
+        TooManyHops : word;
+        UnknownNetwork : word;
+        NoSpaceForService : word;
+        NoRecieveBuffers : word;
+        NotMyNetwork : word;
+        NetBIOSPropagatedCount : longint;
+        TotalPacketsServiced : longint;
+        TotalPacketsRouted : longint;
+     end;
+
+   PGetFileServerInfoStructure = ^TGetFileServerInfoStructure;
+   TGetFileServerInfoStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        NCPStaInUseCnt : longint;
+        NCPPeakStaInUse : longint;
+        numOfNCPReqs : longint;
+        serverUtilization : longint;
+        serverInfo : TServerInformation;
+        fileServerCounters : TFSCounters;
+     end;
+
+   PGetFileSystemInfoStructure = ^TGetFileSystemInfoStructure;
+   TGetFileSystemInfoStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        debugCounters : array[0..12] of longint;
+     end;
+
+   PUserInformation = ^TUserInformation;
+   TUserInformation = record
+        connectionNumber : longint;
+        useCount : longint;
+        connectionServiceType : byte;
+        loginTime : array[0..6] of byte;
+        status : longint;
+        expirationTime : longint;
+        objectType : longint;
+        transactionFlag : byte;
+        logicalLockThreshold : byte;
+        recordLockThreshold : byte;
+        fileWriteFlags : byte;
+        fileWriteState : byte;
+        filler : byte;
+        fileLockCount : word;
+        recordLockCount : word;
+        totalBytesRead : array[0..5] of byte;
+        totalBytesWritten : array[0..5] of byte;
+        totalRequests : longint;
+        heldRequests : longint;
+        heldBytesRead : array[0..5] of byte;
+        heldBytesWritten : array[0..5] of byte;
+     end;
+
+   PGetUserInfoStructure = ^TGetUserInfoStructure;
+   TGetUserInfoStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        userInfo : TUserInformation;
+        userNameLen : byte;
+        username : byte;
+     end;
+
+   PPacketBurstInformation = ^TPacketBurstInformation;
+   TPacketBurstInformation = record
+        BigInvalidSlotCount : longint;
+        BigForgedPacketCount : longint;
+        BigInvalidPacketCount : longint;
+        BigStillTransmittingCount : longint;
+        StillDoingTheLastRequestCount : longint;
+        InvalidControlRequestCount : longint;
+        ControlInvalidMessageNumberCount : longint;
+        ControlBeingTornDownCount : longint;
+        BigRepeatTheFileReadCount : longint;
+        BigSendExtraCCCount : longint;
+        BigReturnAbortMessageCount : longint;
+        BigReadInvalidMessageNumberCount : longint;
+        BigReadDoItOverCount : longint;
+        BigReadBeingTornDownCount : longint;
+        PreviousControlPacketCount : longint;
+        SendHoldOffMessageCount : longint;
+        BigReadNoDataAvailableCount : longint;
+        BigReadTryingToReadTooMuchCount : longint;
+        ASyncReadErrorCount : longint;
+        BigReadPhysicalReadErrorCount : longint;
+        ControlBadACKFragmentListCount : longint;
+        ControlNoDataReadCount : longint;
+        WriteDuplicateRequestCount : longint;
+        ShouldntBeACKingHereCount : longint;
+        WriteInconsistentPacketLengthsCount : longint;
+        FirstPacketIsntAWriteCount : longint;
+        WriteTrashedDuplicateRequestCount : longint;
+        BigWriteInvalidMessageNumberCount : longint;
+        BigWriteBeingTornDownCount : longint;
+        BigWriteBeingAbortedCount : longint;
+        ZeroACKFragmentCountCount : longint;
+        WriteCurrentlyTransmittingCount : longint;
+        TryingToWriteTooMuchCount : longint;
+        WriteOutOfMemoryForControlNodesCount : longint;
+        WriteDidntNeedThisFragmentCount : longint;
+        WriteTooManyBuffersCheckedOutCount : longint;
+        WriteTimeOutCount : longint;
+        WriteGotAnACKCount : longint;
+        WriteGotAnACKCount1 : longint;
+        PollerAbortedTheConnectionCount : longint;
+        MaybeHadOutOfOrderWritesCount : longint;
+        HadAnOutOfOrderWriteCount : longint;
+        MovedTheACKBitDownCount : longint;
+        BumpedOutOfOrderWriteCount : longint;
+        PollerRemovedOldOutOfOrderCount : longint;
+        WriteDidntNeedButRequestedACKCount : longint;
+        WriteTrashedPacketCount : longint;
+        TooManyACKFragmentsCount : longint;
+        SavedAnOutOfOrderPacketCount : longint;
+        ConnectionBeingAbortedCount : longint;
+     end;
+
+   PGetPacketBurstInfoStructure = ^TGetPacketBurstInfoStructure;
+   TGetPacketBurstInfoStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        packetBurstInfo : TPacketBurstInformation;
+     end;
+
+   PIPXInformation = ^TIPXInformation;
+   TIPXInformation = record
+        IpxSendPacketCount : longint;
+        IpxMalformPacketCount : word;
+        IpxGetECBRequestCount : longint;
+        IpxGetECBFailCount : longint;
+        IpxAESEventCount : longint;
+        IpxPostponedAESCount : word;
+        IpxMaxConfiguredSocketCount : word;
+        IpxMaxOpenSocketCount : word;
+        IpxOpensocketFailCount : word;
+        IpxListenECBCount : longint;
+        IpxECBCancelFailCount : word;
+        IpxGetLocalTargetFailCount : word;
+     end;
+
+   PSPXInformation = ^TSPXInformation;
+   TSPXInformation = record
+        SpxMaxConnectionsCount : word;
+        SpxMaxUsedConnections : word;
+        SpxEstConnectionReq : word;
+        SpxEstConnectionFail : word;
+        SpxListenConnectReq : word;
+        SpxListenConnectFail : word;
+        SpxSendCount : longint;
+        SpxWindowChokeCount : longint;
+        SpxBadSendCount : word;
+        SpxSendFailCount : word;
+        SpxAbortedConnection : word;
+        SpxListenPacketCount : longint;
+        SpxBadListenCount : word;
+        SpxIncomingPacketCount : longint;
+        SpxBadInPacketCnt : word;
+        SpxSuppressedPackCnt : word;
+        SpxNoSesListenECBCnt : word;
+        SpxWatchDogDestSesCnt : word;
+     end;
+
+   PGetIPXSPXInfoStructure = ^TGetIPXSPXInfoStructure;
+   TGetIPXSPXInfoStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        IPXInfo : TIPXInformation;
+        SPXInfo : TSPXInformation;
+     end;
+
+   PGetGarbageCollInfoStructure = ^TGetGarbageCollInfoStructure;
+   TGetGarbageCollInfoStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        failedAllocReqCount : longint;
+        numberOfAllocs : longint;
+        noMoreMemAvlCnt : longint;
+        numOfGarbageColl : longint;
+        foundSomeMem : longint;
+        numOfChecks : longint;
+     end;
+   TGetGarbageCollInfoStruc = TGetGarbageCollInfoStructure;
+   PGetGarbageCollInfoStruc = ^TGetGarbageCollInfoStruc;
+
+   PCPUInformation = ^TCPUInformation;
+   TCPUInformation = record
+        numberOfCPUs : longint;
+        PageTableOwnerFlag : longint;
+        CPUType : longint;
+        CoProcessorFlag : longint;
+        BusType : longint;
+        IOEngineFlag : longint;
+        FSEngineFlag : longint;
+        NonDedFlag : longint;
+     end;
+
+
+   PGetCPUInfoStructure = ^TGetCPUInfoStructure;
+   TGetCPUInfoStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        CPUInfo : TCPUInformation;
+        variableStringsStart : byte;
+     end;
+{ The LFSCountersStructure is provided  }
+{ so that you can see field names.  It  }
+{ isn't referenced and developers will  }
+{ probably want to define their own     }
+{ structure.  This structure may grow   }
+{ beyond what one call can return at    }
+{ some future date.                     }
+{                                       }
+
+   PLFSCountersStructure = ^TLFSCountersStructure;
+   TLFSCountersStructure = record
+        ReadFile : longint;
+        WriteFile : longint;
+        DeleteFile : longint;
+        RenMove : longint;
+        OpenFile : longint;
+        CreateFile : longint;
+        CreateAndOpenFile : longint;
+        CloseFile : longint;
+        ScanDeleteFile : longint;
+        SalvageFile : longint;
+        PurgeFile : longint;
+        MigrateFile : longint;
+        DeMigrateFile : longint;
+        CreateDir : longint;
+        DeleteDir : longint;
+        DirectoryScans : longint;
+        MapPathToDirNum : longint;
+        ModifyDirEntry : longint;
+        GetAccessRights : longint;
+        GetAccessRightsFromIDs : longint;
+        MapDirNumToPath : longint;
+        GetEntryFromPathStrBase : longint;
+        GetOtherNSEntry : longint;
+        GetExtDirInfo : longint;
+        GetParentDirNum : longint;
+        AddTrusteeR : longint;
+        ScanTrusteeR : longint;
+        DelTrusteeR : longint;
+        PurgeTrust : longint;
+        FindNextTrustRef : longint;
+        ScanUserRestNodes : longint;
+        AddUserRest : longint;
+        DeleteUserRest : longint;
+        RtnDirSpaceRest : longint;
+        GetActualAvailDskSp : longint;
+        CntOwnedFilesAndDirs : longint;
+        MigFileInfo : longint;
+        VolMigInfo : longint;
+        ReadMigFileData : longint;
+        GetVolusageStats : longint;
+        GetActualVolUsageStats : longint;
+        GetDirUsageStats : longint;
+        NMFileReadsCount : longint;
+        NMFileWritesCount : longint;
+        MapPathToDirectoryNumberOrPhantom : longint;
+        StationHasAccessRightsGrantedBelow : longint;
+        GetDataStreamLengthsFromPathStringBase : longint;
+        CheckAndGetDirectoryEntry : longint;
+        GetDeletedEntry : longint;
+        GetOriginalNameSpace : longint;
+        GetActualFileSize : longint;
+        VerifyNameSpaceNumber : longint;
+        VerifyDataStreamNumber : longint;
+        CheckVolumeNumber : longint;
+        CommitFile : longint;
+        VMGetDirectoryEntry : longint;
+        CreateDMFileEntry : longint;
+        RenameNameSpaceEntry : longint;
+        LogFile : longint;
+        ReleaseFile : longint;
+        ClearFile : longint;
+        SetVolumeFlag : longint;
+        ClearVolumeFlag : longint;
+        GetOriginalInfo : longint;
+        CreateMigratedDir : longint;
+        F3OpenCreate : longint;
+        F3InitFileSearch : longint;
+        F3ContinueFileSearch : longint;
+        F3RenameFile : longint;
+        F3ScanForTrustees : longint;
+        F3ObtainFileInfo : longint;
+        F3ModifyInfo : longint;
+        F3EraseFile : longint;
+        F3SetDirHandle : longint;
+        F3AddTrustees : longint;
+        F3DeleteTrustees : longint;
+        F3AllocDirHandle : longint;
+        F3ScanSalvagedFiles : longint;
+        F3RecoverSalvagedFiles : longint;
+        F3PurgeSalvageableFile : longint;
+        F3GetNSSpecificInfo : longint;
+        F3ModifyNSSpecificInfo : longint;
+        F3SearchSet : longint;
+        F3GetDirBase : longint;
+        F3QueryNameSpaceInfo : longint;
+        F3GetNameSpaceList : longint;
+        F3GetHugeInfo : longint;
+        F3SetHugeInfo : longint;
+        F3GetFullPathString : longint;
+        F3GetEffectiveDirectoryRights : longint;
+        ParseTree : longint;
+     end;
+
+   PGetVolumeSwitchInfoStructure = ^TGetVolumeSwitchInfoStructure;
+   TGetVolumeSwitchInfoStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        totalLFSCounters : longint;
+        currentLFSCounters : longint;
+        counters : longint;
+     end;
+
+   PGetNLMLoadedListStructure = ^TGetNLMLoadedListStructure;
+   TGetNLMLoadedListStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        moreFlag : word;
+        NLMLoadedCount : longint;
+        NLMCount : longint;
+        NLMNumbers : longint;
+     end;
+
+
+   PNLMInformation = ^TNLMInformation;
+   TNLMInformation = record
+        nlmIdentificationNumber : longint;
+        nlmFlags : longint;
+        nlmType : longint;
+        nlmParentID : longint;
+        nlmMajorVersion : longint;
+        nlmMinorVersion : longint;
+        nlmRevision : longint;
+        nlmYear : longint;
+        nlmMonth : longint;
+        nlmDay : longint;
+        nlmAllocAvailBytes : longint;
+        nlmAllocFreeCount : longint;
+        nlmLastGarbCollect : longint;
+        nlmMessageLanguage : longint;
+        nlmNumberOfReferencedPublics : longint;
+     end;
+
+{ In GetNLMInfoStructure:                 }
+{ At startOFLStrings there will be three  }
+{ length preceeded strings -- they may be }
+{ zero bytes long!  The strings are:      }
+{ the file name, the NLM name, and the    }
+{ copyright.                              }
+{ Each string consists of one byte which  }
+{ contains the length of the string       }
+{ followed by zero to 255 bytes of data,  }
+{ depending upon the value of the length  }
+{ byte.  When the length byte is zero, no }
+{ data is present for that string.        }
+{                                         }
+{ 3 Len preceeded strings: filename, name, copyright  }
+
+   PGetNLMInfoStructure = ^TGetNLMInfoStructure;
+   TGetNLMInfoStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        NLMInfo : TNLMInformation;
+        startOfLStrings : byte;
+     end;
+
+   PDirectoryCacheInformation = ^TDirectoryCacheInformation;
+   TDirectoryCacheInformation = record
+        MinimumTimeSinceFileDelete : longint;
+        AbsMinimumTimeSinceFileDelete : longint;
+        MinimumNumberOfDirCacheBuffers : longint;
+        MaximumNumberOfDirCacheBuffers : longint;
+        NumberOfDirectoryCacheBuffers : longint;
+        DCMinimumNonReferencedTime : longint;
+        DCWaitTimeBeforeNewBuffer : longint;
+        DCMaximumConcurrentWrites : longint;
+        DCDirtyWaitTime : longint;
+        debugCounters : array[0..3] of longint;
+        PercentOfVolumeUsedByDirs : longint;
+     end;
+
+   PGetDirCacheInfoStructure = ^TGetDirCacheInfoStructure;
+   TGetDirCacheInfoStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        dirCacheInfo : TDirectoryCacheInformation;
+     end;
+
+   PGetOSVersionInfoStructure = ^TGetOSVersionInfoStructure;
+   TGetOSVersionInfoStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        OSMajorVersion : byte;
+        OSMinorVersion : byte;
+        OSRevision : byte;
+        accountVersion : byte;
+        VAPVersion : byte;
+        queueingVersion : byte;
+        securityRestLvl : byte;
+        bridgingSupport : byte;
+        maxNumOfVol : longint;
+        maxNumOfConn : longint;
+        maxNumOfUsers : longint;
+        maxNumOfnameSpaces : longint;
+        maxNumOfLANS : longint;
+        maxNumOfMedias : longint;
+        maxNumOfStacks : longint;
+        maxDirDepth : longint;
+        maxDataStreams : longint;
+        maxNumOfSpoolPr : longint;
+        serverSerialNumber : longint;
+        serverApplicationNumber : word;
+     end;
+
+   PGetActiveConnListByTypeStructure = ^TGetActiveConnListByTypeStructure;
+   TGetActiveConnListByTypeStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        ActiveConnBitList : array[0..511] of byte;
+     end;
+
+   PRTagStructure = ^TRTagStructure;
+   TRTagStructure = record
+        rTagNumber : longint;
+        signature : longint;
+        count : longint;
+        name : byte;
+     end;
+
+   PGetNLMResourceTagList = ^TGetNLMResourceTagList;
+   TGetNLMResourceTagList = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        totalNumOfRTags : longint;
+        currentNumOfRTags : longint;
+        RTagStart : TRTagStructure;
+     end;
+
+   PGetActiveLANBoardListStructure = ^TGetActiveLANBoardListStructure;
+   TGetActiveLANBoardListStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        maxNumOfLANs : longint;
+        itemsCount : longint;
+        boardNumbers : longint;
+     end;
+
+   PDriverConfigStructure = ^TDriverConfigStructure;
+   TDriverConfigStructure = record
+        DriverCFG_MajorVersion : byte;
+        DriverCFG_MinorVersion : byte;
+        DriverNodeAddress : array[0..5] of byte;
+        DriverModeFlags : word;
+        DriverBoardNumber : word;
+        DriverBoardInstance : word;
+        DriverMaximumSize : longint;
+        DriverMaxRecvSize : longint;
+        DriverRecvSize : longint;
+        DriverCardName : longint;
+        DriverShortName : longint;
+        DriverMediaType : longint;
+        DriverCardID : word;
+        DriverMediaID : word;
+        DriverTransportTime : word;
+        DriverReserved : array[0..15] of byte;
+        DriverMajorVersion : byte;
+        DriverMinorVersion : byte;
+        DriverFlags : word;
+        DriverSendRetries : word;
+        DriverLink : longint;
+        DriverSharingFlags : word;
+        DriverSlot : word;
+        DriverIOPortsAndLengths : array[0..3] of word;
+        DriverMemoryDecode0 : longint;
+        DriverLength0 : word;
+        DriverMemoryDecode1 : longint;
+        DriverLength1 : word;
+        DriverInterrupt : array[0..1] of byte;
+        DriverDMAUsage : array[0..1] of byte;
+        DriverResourceTag : longint;
+        DriverConfig : longint;
+        DriverCommandString : longint;
+        DriverLogicalName : array[0..17] of byte;
+        DriverLinearMemory : array[0..1] of longint;
+        DriverChannelNumber : word;
+        DriverIOReserved : array[0..5] of byte;
+     end;
+
+   PGetLANConfigInfoStructure = ^TGetLANConfigInfoStructure;
+   TGetLANConfigInfoStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        LANConfig : TDriverConfigStructure;
+     end;
+
+   PCommonLANStructure = ^TCommonLANStructure;
+   TCommonLANStructure = record
+        notSupportedMask : longint;
+        TotalTxPacketCount : longint;
+        TotalRxPacketCount : longint;
+        NoECBAvailableCount : longint;
+        PacketTxTooBigCount : longint;
+        PacketTxTooSmallCount : longint;
+        PacketRxOverflowCount : longint;
+        PacketRxTooBigCount : longint;
+        PacketRxTooSmallCount : longint;
+        PacketTxMiscErrorCount : longint;
+        PacketRxMiscErrorCount : longint;
+        RetryTxCount : longint;
+        ChecksumErrorCount : longint;
+        HardwareRxMismatchCount : longint;
+        TotalTxOKByteCountLow : longint;
+        TotalTxOKByteCountHigh : longint;
+        TotalRxOKByteCountLow : longint;
+        TotalRxOKByteCountHigh : longint;
+        TotalGroupAddrTxCount : longint;
+        TotalGroupAddrRxCount : longint;
+        AdapterResetCount : longint;
+        AdapterOprTimeStamp : longint;
+        AdapterQueDepth : longint;
+        MediaSpecificCounter1 : longint;
+        MediaSpecificCounter2 : longint;
+        MediaSpecificCounter3 : longint;
+        MediaSpecificCounter4 : longint;
+        MediaSpecificCounter5 : longint;
+        MediaSpecificCounter6 : longint;
+        MediaSpecificCounter7 : longint;
+        MediaSpecificCounter8 : longint;
+        MediaSpecificCounter9 : longint;
+        MediaSpecificCounter10 : longint;
+        ValidMask1 : longint;
+        MediaSpecificCounter11 : longint;
+        MediaSpecificCounter12 : longint;
+        MediaSpecificCounter13 : longint;
+        MediaSpecificCounter14 : longint;
+     end;
+
+   PGetLANCommonCountersStructure = ^TGetLANCommonCountersStructure;
+   TGetLANCommonCountersStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        statMajorVersion : byte;
+        statMinorVersion : byte;
+        totalCommonCnts : longint;
+        totalCntBlocks : longint;
+        customCounters : longint;
+        nextCntBlock : longint;
+        info : TCommonLANStructure;
+     end;
+
+   PCustomCountersInfo = ^TCustomCountersInfo;
+   TCustomCountersInfo = record
+        value : longint;
+        stringLength : byte;
+        stringStart : byte;
+     end;
+
+   PGetCustomCountersInfoStructure = ^TGetCustomCountersInfoStructure;
+   TGetCustomCountersInfoStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        moreflag : word;
+        numberOfCustomCounters : longint;
+        startOfCustomCounters : byte;
+     end;
+
+   PLSLInformation = ^TLSLInformation;
+   TLSLInformation = record
+        RxBufs : longint;
+        RxBufs75PerCent : longint;
+        RxBufsCheckedOut : longint;
+        RxBufMaxSize : longint;
+        MaxPhysicalSize : longint;
+        LastTimeRxBufAllocated : longint;
+        MaxNumbersOfProtocols : longint;
+        MaxNumbersOfMediaTypes : longint;
+        TotalTXPackets : longint;
+        GetECBBfrs : longint;
+        GetECBFails : longint;
+        AESEventCounts : longint;
+        PostpondedEvents : longint;
+        ECBCxlFails : longint;
+        ValidBfrsReused : longint;
+        EnqueuedSendCnt : longint;
+        TotalRXPackets : longint;
+        UnclaimedPackets : longint;
+        StatisticsTableMajorVersion : byte;
+        StatisticsTableMinorVersion : byte;
+     end;
+
+   PGetLSLInfoStructure = ^TGetLSLInfoStructure;
+   TGetLSLInfoStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        LSLInfo : TLSLInformation;
+     end;
+
+   PLogicalBoard = ^TLogicalBoard;
+   TLogicalBoard = record
+        LogTtlTxPackets : longint;
+        LogTtlRxPackets : longint;
+        LogUnclaimedPackets : longint;
+        reserved : longint;
+     end;
+
+   PGetLSLBoardStatsStructure = ^TGetLSLBoardStatsStructure;
+   TGetLSLBoardStatsStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        boardStats : TLogicalBoard;
+     end;
+
+   PCopyOfPMStructure = ^TCopyOfPMStructure;
+   TCopyOfPMStructure = record
+        f1 : array[0..63] of byte;
+        f2 : longint;
+        f3 : longint;
+     end;
+
+   PCopyOfGenericInfoDef = ^TCopyOfGenericInfoDef;
+   TCopyOfGenericInfoDef = record
+        mediaInfo : TCopyOfPMStructure;
+        mediatype : longint;
+        cartridgetype : longint;
+        unitsize : longint;
+        blocksize : longint;
+        capacity : longint;
+        preferredunitsize : longint;
+        name : array[0..63] of byte;
+        _type : longint;
+        status : longint;
+        functionmask : longint;
+        controlmask : longint;
+        parentcount : longint;
+        siblingcount : longint;
+        childcount : longint;
+        specificinfosize : longint;
+        objectuniqueid : longint;
+        mediaslot : longint;
+     end;
+
+   PGetMManagerObjInfoStructure = ^TGetMManagerObjInfoStructure;
+   TGetMManagerObjInfoStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        info : TCopyOfGenericInfoDef;
+     end;
+
+   PGetMMObjectListsStructure = ^TGetMMObjectListsStructure;
+   TGetMMObjectListsStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        nextStartNum : longint;
+        objectCount : longint;
+        objects : longint;
+     end;
+
+   PGetMMObjectChildListStructure = ^TGetMMObjectChildListStructure;
+   TGetMMObjectChildListStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        nextStartNum : longint;
+        objectCount : longint;
+        objects : longint;
+     end;
+
+   PVolumeSegmentStructure = ^TVolumeSegmentStructure;
+   TVolumeSegmentStructure = record
+        segmentDevice : longint;
+        segmentOffset : longint;
+        segmentSize : longint;
+     end;
+
+   PGetVolumeSegmentListStructure = ^TGetVolumeSegmentListStructure;
+   TGetVolumeSegmentListStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        numberOfSegments : longint;
+        segment : TVolumeSegmentStructure;
+     end;
+
+   PProtocolStackInfo = ^TProtocolStackInfo;
+   TProtocolStackInfo = record
+        stackNumber : longint;
+        stackName : array[0..15] of byte;
+     end;
+
+   PGetActiveProtocolStackStructure = ^TGetActiveProtocolStackStructure;
+   TGetActiveProtocolStackStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        maxNumberOfStacks : longint;
+        stackCount : longint;
+        nextStartNumber : longint;
+        stackInfo : TProtocolStackInfo;
+     end;
+
+   PGetProtocolConfigStructure = ^TGetProtocolConfigStructure;
+   TGetProtocolConfigStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        configMajorVersion : byte;
+        configMinorVerstion : byte;
+        stackMajorVersion : byte;
+        stackMinorVersion : byte;
+        shortName : array[0..15] of byte;
+        fullNameLength : byte;
+        fullName : byte;
+     end;
+
+   PGetProtocolStatsStructure = ^TGetProtocolStatsStructure;
+   TGetProtocolStatsStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        StatMajorVersion : byte;
+        StatMinorVersion : byte;
+        GenericCounters : word;
+        ValidCntsMask : longint;
+        TotalTxPackets : longint;
+        TotalRxPackets : longint;
+        IgnoredRxPackets : longint;
+        NumberOfCustomCounters : word;
+     end;
+
+   PProtocolCustomInfo = ^TProtocolCustomInfo;
+   TProtocolCustomInfo = record
+        value : longint;
+        length : byte;
+        customData : byte;
+     end;
+
+   PGetProtocolCustomInfoStructure = ^TGetProtocolCustomInfoStructure;
+   TGetProtocolCustomInfoStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        customCount : longint;
+        info : TProtocolCustomInfo;
+     end;
+
+   PGetProtocolByMediaStructure = ^TGetProtocolByMediaStructure;
+   TGetProtocolByMediaStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        stackIDCount : longint;
+        stackID : longint;
+     end;
+
+   PGetProtocolByBoardStructure = ^TGetProtocolByBoardStructure;
+   TGetProtocolByBoardStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        stackIDCount : longint;
+        stackID : longint;
+     end;
+
+   PGetMediaNameByNumberStructure = ^TGetMediaNameByNumberStructure;
+   TGetMediaNameByNumberStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        mediaNameLength : byte;
+        mediaName : byte;
+     end;
+
+   PGetMediaNumberListStructure = ^TGetMediaNumberListStructure;
+   TGetMediaNumberListStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        maxNumberOfMedia : longint;
+        mediaListCount : longint;
+        mediaList : longint;
+     end;
+
+   PGetRouterAndSAPInfoStructure = ^TGetRouterAndSAPInfoStructure;
+   TGetRouterAndSAPInfoStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        RIPSocketNumber : longint;
+        routerDownFlag : longint;
+        trackOnFlag : longint;
+        extRouterActiveFlag : longint;
+        SAPSocketNumber : longint;
+        rpyNearestServerFlag : longint;
+     end;
+
+   PGetNetRouterInfoStructure = ^TGetNetRouterInfoStructure;
+   TGetNetRouterInfoStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        netIDNumber : longint;
+        hopsToNet : word;
+        netStatus : word;
+        timeToNet : word;
+     end;
+
+   PRoutersInfoStructure = ^TRoutersInfoStructure;
+   TRoutersInfoStructure = record
+        node : array[0..5] of byte;
+        connectedLAN : longint;
+        hopsToNetCount : word;
+        timeToNet : word;
+     end;
+
+   PGetNetworkRoutersInfoStructure = ^TGetNetworkRoutersInfoStructure;
+   TGetNetworkRoutersInfoStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        numberOfEntries : longint;
+        info : TRoutersInfoStructure;
+     end;
+
+   PKnownNetworksStructure = ^TKnownNetworksStructure;
+   TKnownNetworksStructure = record
+        netIDNumber : longint;
+        hopsToNet : word;
+        netStatus : word;
+        timeToNet : word;
+     end;
+
+   PGetKnownNetworksStructure = ^TGetKnownNetworksStructure;
+   TGetKnownNetworksStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        numberOfEntries : longint;
+        info : TKnownNetworksStructure;
+     end;
+
+   PGetServerInfoStructure = ^TGetServerInfoStructure;
+   TGetServerInfoStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        serverAddress : array[0..11] of byte;
+        hopsToServer : word;
+     end;
+
+   PServerSourceInfoStructure = ^TServerSourceInfoStructure;
+   TServerSourceInfoStructure = record
+        serverNode : array[0..5] of byte;
+        connectLAN : longint;
+        hopCount : word;
+     end;
+
+   PGetServerSourcesStructure = ^TGetServerSourcesStructure;
+   TGetServerSourcesStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        numberOfEntries : longint;
+        info : TServerSourceInfoStructure;
+     end;
+
+   PKnownServerStructure = ^TKnownServerStructure;
+   TKnownServerStructure = record
+        serverAddress : array[0..11] of byte;
+        hopCount : word;
+        serverNameLength : byte;
+        name : byte;
+     end;
+
+   PGetKnownServersInfoStructure = ^TGetKnownServersInfoStructure;
+   TGetKnownServersInfoStructure = record
+        currentServerTime : longint;
+        vConsoleVersion : byte;
+        vConsoleRevision : byte;
+        reserved : word;
+        numberOfEntries : longint;
+        info : TKnownServerStructure;
+     end;
+
+{$include npackoff.inc}
+
+function SSGetActiveConnListByType(startConnNumber:longint; connType:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetActiveConnListByType';
+function SSGetActiveLANBoardList(startNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetActiveLANBoardList';
+function SSGetActiveProtocolStacks(startNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetActiveProtocolStacks';
+function SSGetCacheInfo(pointer:PBYTE; bufferLen:word):longint;cdecl;external Clib name 'SSGetCacheInfo';
+function SSGetCPUInfo(CPUNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetCPUInfo';
+function SSGetDirCacheInfo(buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetDirCacheInfo';
+function SSGetFileServerInfo(buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetFileServerInfo';
+function SSGetFileSystemInfo(fileSystemID:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetFileSystemInfo';
+function SSGetGarbageCollectionInfo(buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetGarbageCollectionInfo';
+function SSGetIPXSPXInfo(buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetIPXSPXInfo';
+function SSGetKnownNetworksInfo(startNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetKnownNetworksInfo';
+function SSGetKnownServersInfo(startNumber:longint; serverType:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetKnownServersInfo';
+function SSGetLANCommonCounters(boardNumber:longint; blockNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetLANCommonCounters';
+function SSGetLANConfiguration(boardNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetLANConfiguration';
+function SSGetLANCustomCounters(boardNumber:longint; startNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetLANCustomCounters';
+function SSGetLSLInfo(buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetLSLInfo';
+function SSGetLSLLogicalBoardStats(boardNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetLSLLogicalBoardStats';
+function SSGetLoadedMediaNumberList(buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetLoadedMediaNumberList';
+function SSGetMediaManagerObjChildList(startNumber:longint; objType:longint; parentObjNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetMediaManagerObjChildList';
+function SSGetMediaManagerObjInfo(objNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetMediaManagerObjInfo';
+function SSGetMediaManagerObjList(startNumber:longint; objType:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetMediaManagerObjList';
+function SSGetMediaNameByNumber(mediaNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetMediaNameByNumber';
+function SSGetNetRouterInfo(networkNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetNetRouterInfo';
+function SSGetNetworkRoutersInfo(networkNumber:longint; startNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetNetworkRoutersInfo';
+function SSGetNLMInfo(NLMNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetNLMInfo';
+function SSGetNLMLoadedList(startNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetNLMLoadedList';
+function SSGetNLMResourceTagList(NLMNumber:longint; startNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetNLMResourceTagList';
+function SSGetOSVersionInfo(buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetOSVersionInfo';
+function SSGetPacketBurstInfo(buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetPacketBurstInfo';
+function SSGetProtocolConfiguration(startNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetProtocolConfiguration';
+function SSGetProtocolCustomInfo(stackNumber:longint; customStartNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetProtocolCustomInfo';
+function SSGetProtocolNumbersByLANBoard(LANBoardNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetProtocolNumbersByLANBoard';
+function SSGetProtocolNumbersByMedia(mediaNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetProtocolNumbersByMedia';
+function SSGetProtocolStatistics(stackNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetProtocolStatistics';
+function SSGetRouterAndSAPInfo(buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetRouterAndSAPInfo';
+function SSGetServerInfo(serverType:longint; nameLength:byte; name:PBYTE; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetServerInfo';
+function SSGetServerSourcesInfo(startNumber:longint; serverType:longint; nameLength:byte; name:PChar; buffer:pointer;
+           bufferLen:word):longint;cdecl;external Clib name 'SSGetServerSourcesInfo';
+function SSGetUserInfo(connectionNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetUserInfo';
+function SSGetVolumeSegmentList(volumeNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetVolumeSegmentList';
+function SSGetVolumeSwitchInfo(startNumber:longint; buffer:pointer; bufferLen:word):longint;cdecl;external Clib name 'SSGetVolumeSwitchInfo';
+
+{------------------------------------------------------------------------------}
+const _MAX_LOGREC_NAME = 128;
+     _MAX_SEMAPHORE_NAME = 128;
+
+function  ClearFile(fileName:Pchar):longint; cdecl;external Clib name 'ClearFile';
+procedure ClearFileSet;                      cdecl;external Clib name 'ClearFileSet';
+function  ClearLogicalRecord(logicalRecordName:Pchar):longint;cdecl;external Clib name 'ClearLogicalRecord';
+procedure ClearLogicalRecordSet;             cdecl;external Clib name 'ClearLogicalRecordSet';
+function  ClearPhysicalRecord(fileHandle,recordStartOffset,recordLength:longint):longint;cdecl;external Clib name 'ClearPhysicalRecord';
+procedure ClearPhysicalRecordSet;cdecl;external Clib name 'ClearPhysicalRecordSet';
+function  CloseSemaphore(semaphoreHandle:longint):longint;cdecl;external Clib name 'CloseSemaphore';
+function  ExamineSemaphore(semaphoreHandle:longint; semaphoreValue:Plongint; openCount:PWORD):longint;cdecl;external Clib name 'ExamineSemaphore';
+function  ExamineSemaphore(semaphoreHandle:longint; var semaphoreValue:longint; var openCount:word):longint;cdecl;external Clib name 'ExamineSemaphore';
+function  LockFileSet(timeoutLimit:word):longint;cdecl;external Clib name 'LockFileSet';
+function  LockLogicalRecordSet(timeoutLimit:word):longint;cdecl;external Clib name 'LockLogicalRecordSet';
+function  LockPhysicalRecordSet(lockDirective:byte; timeoutLimit:word):longint;cdecl;external Clib name 'LockPhysicalRecordSet';
+function  LogFile(fileName:Pchar; lockDirective:byte; timeoutLimit:word):longint;cdecl;external Clib name 'LogFile';
+function  LogLogicalRecord(logicalRecordName:Pchar; lockDirective:byte; timeoutLimit:word):longint;cdecl;external Clib name 'LogLogicalRecord';
+function  LogPhysicalRecord(fileHandle,recordStartOffset,recordLength:longint; lockDirective:byte; timeoutLimit:word):longint;cdecl;external Clib name 'LogPhysicalRecord';
+function  OpenSemaphore(semaphoreName:Pchar; initialValue:longint; semaphoreHandle:Plongint; openCount:PWORD):longint;cdecl;external Clib name 'OpenSemaphore';
+function  OpenSemaphore(semaphoreName:Pchar; initialValue:longint; var semaphoreHandle:longint; var openCount:word):longint;cdecl;external Clib name 'OpenSemaphore';
+function  ReleaseFile(fileName:Pchar):longint;cdecl;external Clib name 'ReleaseFile';
+procedure ReleaseFileSet;cdecl;external Clib name 'ReleaseFileSet';
+function  ReleaseLogicalRecord(logicalRecordName:Pchar):longint;cdecl;external Clib name 'ReleaseLogicalRecord';
+procedure ReleaseLogicalRecordSet;cdecl;external Clib name 'ReleaseLogicalRecordSet';
+function  ReleasePhysicalRecord(fileHandle,recordStartOffset,recordLength:longint):longint;cdecl;external Clib name 'ReleasePhysicalRecord';
+procedure ReleasePhysicalRecordSet;cdecl;external Clib name 'ReleasePhysicalRecordSet';
+function  SignalSemaphore(semaphoreHandle:longint):longint;cdecl;external Clib name 'SignalSemaphore';
+function  WaitOnSemaphore(semaphoreHandle:longint; timeoutLimit:word):longint;cdecl;external Clib name 'WaitOnSemaphore';
+
+{------------------------------------------------------------------------------}
+
+function TTSAbortTransaction:longint;cdecl;external 'clib' name 'TTSAbortTransaction';
+function TTSBeginTransaction:longint;cdecl;external 'clib' name 'TTSBeginTransaction';
+function TTSEndTransaction(transactionNumber:Plongint):longint;cdecl;external 'clib' name 'TTSEndTransaction';
+function TTSEndTransaction(var transactionNumber:longint):longint;cdecl;external 'clib' name 'TTSEndTransaction';
+function TTSGetApplicationThresholds(logicalRecordLockThreshold:pbyte; physicalRecordLockThreshold:pbyte):longint;cdecl;external 'clib' name 'TTSGetApplicationThresholds';
+function TTSGetWorkstationThresholds(logicalRecordLockThreshold:pbyte; physicalRecordLockThreshold:pbyte):longint;cdecl;external 'clib' name 'TTSGetWorkstationThresholds';
+function TTSIsAvailable:longint;cdecl;external 'clib' name 'TTSIsAvailable';
+function TTSSetApplicationThresholds(logicalRecordLockThreshold:pbyte; physicalRecordLockThreshold:pbyte):longint;cdecl;external 'clib' name 'TTSSetApplicationThresholds';
+function TTSSetWorkstationThresholds(logicalRecordLockThreshold:pbyte; physicalRecordLockThreshold:pbyte):longint;cdecl;external 'clib' name 'TTSSetWorkstationThresholds';
+function TTSTransactionStatus(transactionNumber:longint):longint;cdecl;external 'clib' name 'TTSTransactionStatus';
+
+{------------------------------------------------------------------------------}
+
+implementation
+
+end.
+
+{
+  $Log$
+  Revision 1.1  2003-02-22 18:23:26  armin
+  * removed nwstdio and nwthread
+  * added nwnit.pp and nwserv.pp containing nearly all netware server structures/function definitions available in the c sdk
+
+}

+ 4828 - 0
rtl/netware/nwserv.pp

@@ -0,0 +1,4828 @@
+{ $Id$
+
+  Netware Server Imports for FreePascal, contains definition from the
+  following header files:
+
+  string.h dirent.h errno.h fcntl.h limits.h locale.h nwaudnlm.h
+  nwbitops.h nwcntask.h nwconio.h nwconn.h nwdebug.h nwdfs.h nwdos.h
+  nwerrno.h nwfattr.h nwfileio.h nwfileng.h nwfinfo.h nwfshook.h
+  nwipx.h nwlib.h nwlocale.h nwmalloc.h nwncpx.h nwnspace.h nwproc.h
+  nwsemaph.h nwserv.h nwsignal.h nwstring.h nwtoolib.h stdio.h stdlib.h
+  unistd.h time.h utime.h nwthread.h nwmediam.h ioctl.h
+  sys/socket.h sys/time.h sys/filio.h syys/ioctl.h sys/stat.h
+  sys/time.h sys/timeval.h sys/uio.h sys/utsname.h
+
+  Initial Version 2002/02/22 Armin ([email protected])
+
+  The C-NDK and Documentation can be found here:
+    http://developer.novell.com
+
+  This program is distributed in the hope that it will be useful,but WITHOUT 
+  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
+  FITNESS FOR A PARTICULAR PURPOSE.
+
+  Do not blame Novell if there are errors in this file, instead
+  contact me and i will se what i can do.
+
+}
+
+unit nwserv;
+
+interface
+
+{$mode objfpc}
+
+const NULL = 0;
+      ThreadsNlm = 'threads';
+      Lib0Nlm    = 'lib0';
+      NlmLibNlm  = 'nlmlib';
+      FIONREAD   = 1;  // get count of bytes to read (readable)
+      FIONBIO    = 2;  // set/clear nonblocking I/O
+      FIOGETNBIO = 3;  // get nonblocking I/O status
+
+type
+   Psize_t = ^Tsize_t;
+   Tsize_t = dword;
+   PPChar = ^PChar;
+   PPPChar= ^PPChar;
+   Tsigset_t = longint;
+
+{-time.h-----------------------------------------------------------------------}
+{$PACKRECORDS C}
+
+const
+   CLOCKS_PER_SEC = 100;
+
+type
+   Pclock_t = ^Tclock_t;
+   Tclock_t = dword;
+
+   Ptime_t = ^Ttime_t;
+   Ttime_t = dword;
+{ seconds after the minute--range [0, 59]      }
+{ minutes after the hour--range [0, 59]        }
+{ hours since midnight--range [0, 23]          }
+{ days of the month--range [1, 31]             }
+{ months since January--range [0, 11]          }
+{ years since 1900--range [0, 99]              }
+{ days since Sunday--range [0, 6]              }
+{ days since first of January--range [0, 365]  }
+{ Daylight Savings Time flag--set [-, 0, +]:   }
+   Ptm = ^Ttm;
+   Ttm = record
+        tm_sec : longint;
+        tm_min : longint;
+        tm_hour : longint;
+        tm_mday : longint;
+        tm_mon : longint;
+        tm_year : longint;
+        tm_wday : longint;
+        tm_yday : longint;
+        tm_isdst : longint;
+     end;
+     
+{ ISO/ANSI C functions...  }
+function asctime(para1:Ptm):Pchar;cdecl;external 'clib' name 'asctime';
+function clock:Tclock_t;cdecl;external 'clib' name 'clock';
+function ctime(para1:Ptime_t):Pchar;cdecl;external 'clib' name 'ctime';
+function difftime(para1:Ttime_t; para2:Ttime_t):double;cdecl;external 'clib' name 'difftime';
+function gmtime(para1:Ptime_t):Ptm;cdecl;external 'clib' name 'gmtime';
+function localtime(para1:Ptime_t):Ptm;cdecl;external 'clib' name 'localtime';
+function mktime(para1:Ptm):Ttime_t;cdecl;external 'clib' name 'mktime';
+function strftime(para1:Pchar; para2:Tsize_t; para3:Pchar; para4:Ptm):Tsize_t;cdecl;external 'clib' name 'strftime';
+function time(para1:Ptime_t):Ttime_t;cdecl;external 'clib' name 'time';
+{ POSIX data and functions...  }
+{ For extern char tzname[2], see macro below  }
+procedure tzset;cdecl;external 'clib' name 'tzset';
+function __get_CLK_TCK:Tclock_t;cdecl;external 'clib' name '__get_CLK_TCK';
+function __get_tzname:pPchar;cdecl;external 'clib' name '__get_tzname';
+{ POSIX-defined additions ...  }
+function asctime_r(para1:Ptm; para2:Pchar):Pchar;cdecl;external 'clib' name 'asctime_r';
+function ctime_r(para1:Ptime_t; para2:Pchar):Pchar;cdecl;external 'clib' name 'ctime_r';
+function gmtime_r(para1:Ptime_t; para2:Ptm):Ptm;cdecl;external 'clib' name 'gmtime_r';
+function localtime_r(para1:Ptime_t; para2:Ptm):Ptm;cdecl;external 'clib' name 'localtime_r';
+function CLK_TCK : longint;
+function tzname : pchar;
+
+{-utime.h----------------------------------------------------------------------}
+type
+   Putimbuf = ^Tutimbuf;
+   Tutimbuf = record
+      actime  : Ttime_t;   // access time
+      modtime : Ttime_t;   // modification time
+   end;
+
+
+function utime(path:Pchar; times:Putimbuf):longint;cdecl;external 'clib' name 'utime';
+function utime(path:Pchar; var times:Tutimbuf):longint;cdecl;external 'clib' name 'utime';
+
+{-string.h---------------------------------------------------------------------}
+function memchr(para1:pointer; para2:longint; para3:Tsize_t):pointer;cdecl;external 'clib' name 'memchr';
+function memcmp(para1:pointer; para2:pointer; para3:Tsize_t):longint;cdecl;external 'clib' name 'memcmp';
+function memcpy(para1:pointer; para2:pointer; para3:Tsize_t):pointer;cdecl;external 'clib' name 'memcpy';
+function memmove(para1:pointer; para2:pointer; para3:Tsize_t):pointer;cdecl;external 'clib' name 'memmove';
+function memset(para1:pointer; para2:longint; para3:Tsize_t):pointer;cdecl;external 'clib' name 'memset';
+function strcpy(para1:Pchar; para2:Pchar):Pchar;cdecl;external 'clib' name 'strcpy';
+function strcat(para1:Pchar; para2:Pchar):Pchar;cdecl;external 'clib' name 'strcat';
+function strchr(para1:Pchar; para2:longint):Pchar;cdecl;external 'clib' name 'strchr';
+function strcmp(para1:Pchar; para2:Pchar):longint;cdecl;external 'clib' name 'strcmp';
+function strcoll(para1:Pchar; para2:Pchar):longint;cdecl;external 'clib' name 'strcoll';
+function strcspn(para1:Pchar; para2:Pchar):Tsize_t;cdecl;external 'clib' name 'strcspn';
+function strerror(para1:longint):Pchar;cdecl;external 'clib' name 'strerror';
+function strlen(para1:Pchar):Tsize_t;cdecl;external 'clib' name 'strlen';
+function strncat(para1:Pchar; para2:Pchar; para3:Tsize_t):Pchar;cdecl;external 'clib' name 'strncat';
+function strncmp(para1:Pchar; para2:Pchar; para3:Tsize_t):longint;cdecl;external 'clib' name 'strncmp';
+function strncpy(para1:Pchar; para2:Pchar; para3:Tsize_t):Pchar;cdecl;external 'clib' name 'strncpy';
+function strpbrk(para1:Pchar; para2:Pchar):Pchar;cdecl;external 'clib' name 'strpbrk';
+function strrchr(para1:Pchar; para2:longint):Pchar;cdecl;external 'clib' name 'strrchr';
+function strspn(para1:Pchar; para2:Pchar):Tsize_t;cdecl;external 'clib' name 'strspn';
+function strstr(para1:Pchar; para2:Pchar):Pchar;cdecl;external 'clib' name 'strstr';
+function strtok(para1:Pchar; para2:Pchar):Pchar;cdecl;external 'clib' name 'strtok';
+function strxfrm(para1:Pchar; para2:Pchar; para3:Tsize_t):Tsize_t;cdecl;external 'clib' name 'strxfrm';
+function strtok_r(para1:Pchar; para2:Pchar; para3:PPchar):Pchar;cdecl;external 'clib' name 'strtok_r';
+function memicmp(para1:pointer; para2:pointer; para3:Tsize_t):longint;cdecl;external 'clib' name 'memicmp';
+function strcmpi(para1:Pchar; para2:Pchar):longint;cdecl;external 'clib' name 'strcmpi';
+function stricmp(para1:Pchar; para2:Pchar):longint;cdecl;external 'clib' name 'stricmp';
+function strdup(para1:Pchar):Pchar;cdecl;external 'clib' name 'strdup';
+function strlist(para1,para2:Pchar; args:array of const):Pchar;cdecl;external 'clib' name 'strlist';
+function strlist(para1,para2:Pchar):Pchar;cdecl;external 'clib' name 'strlist';
+function strlwr(para1:Pchar):Pchar;cdecl;external 'clib' name 'strlwr';
+function strnicmp(para1,para2:Pchar; para3:Tsize_t):longint;cdecl;external 'clib' name 'strnicmp';
+function strnset(para1:Pchar; para2:longint; para3:Tsize_t):Pchar;cdecl;external 'clib' name 'strnset';
+function strrev(para1:Pchar):Pchar;cdecl;external 'clib' name 'strrev';
+function strset(para1:Pchar; para2:longint):Pchar;cdecl;external 'clib' name 'strset';
+function strupr(para1:Pchar):Pchar;cdecl;external 'clib' name 'strupr';
+procedure swab(para1:pointer; para2:pointer; para3:Tsize_t);cdecl;external 'clib' name 'swab';
+procedure swaw(para1:pointer; para2:pointer; para3:Tsize_t);cdecl;external 'clib' name 'swaw';
+{-dirent.h---------------------------------------------------------------------}
+{$I npackon.inc}
+type
+   Pino_t = ^Tino_t;
+   Tino_t = longint;
+   Pdev_t = ^Tdev_t;
+   Tdev_t = longint;
+   Pdirent = ^Tdirent;
+   Tdirent =
+   record
+     d_attr                 : dword;
+     d_time                 : word;
+     d_date                 : word;
+     d_size                 : longint;
+     d_ino                  : Tino_t;
+     d_dev                  : Tdev_t;
+     d_cdatetime            : dword;
+     d_adatetime            : dword;
+     d_bdatetime            : dword;
+     d_uid                  : longint;
+     d_archivedID           : dword;
+     d_updatedID            : dword;
+     d_nameDOS              : array[0..12] of char;
+     d_inheritedRightsMask  : word;
+     d_originatingNameSpace : byte;
+     d_ddatetime            : dword;
+     d_deletedID            : dword;
+     d_name                 : array[0..255] of char;
+   end;
+   TDIR = Tdirent;
+   PDIR = ^TDIR;
+{$I npackoff.inc}
+
+function closedir_old (dirp:PDIR):longint;                            cdecl; external 'clib' name 'closedir';
+function closedir     (dirp:PDIR):longint;                            cdecl; external 'clib' name 'closedir_510';
+function opendir_old  (pathName:Pchar):PDIR;                          cdecl; external 'clib' name 'opendir';
+function opendir      (pathName:Pchar):PDIR;                          cdecl; external 'clib' name 'opendir_411';
+function readdir_old  (dirp:PDIR):PDIR;                               cdecl; external 'clib' name 'readdir';
+function readdir      (dirp:PDIR):PDIR;                               cdecl; external 'clib' name 'readdir_411';
+procedure rewinddir   (dirp:PDIR);                                    cdecl; external 'clib' name 'rewinddir';
+function SetReaddirAttribute(dirp:PDIR; newAttribute:dword):longint;  cdecl; external 'clib' name 'SetReaddirAttribute';
+{-errno.h----------------------------------------------------------------------}
+const
+   ENOENT   = 1;
+   E2BIG    = 2;
+   ENOEXEC  = 3;
+   EBADF    = 4;
+   ENOMEM   = 5;
+   EACCES   = 6;
+   EEXIST   = 7;
+   EXDEV    = 8;
+   EINVAL   = 9;
+   ENFILE   = 10;
+   EMFILE   = 11;
+   ENOSPC   = 12;
+   EDOM     = 13;
+   ERANGE   = 14;
+   EDEADLK  = 15;
+   EINUSE   = 16;
+   ESERVER  = 17;
+   ENOSERVR = 18;
+   EWRNGKND = 19;
+   ETRNREST = 20;
+   ERESOURCE= 21;
+   EBADHNDL = 22;
+   ENO_SCRNS= 23;
+   EAGAIN   = 24;
+   ENXIO    = 25;
+   EBADMSG  = 26;
+   EFAULT   = 27;
+   EIO      = 28;
+   ENODATA  = 29;
+   ENOSTRMS = 30;
+   EPROTO   = 31;
+   EPIPE    = 32;
+   ESPIPE   = 33;
+   ETIME    = 34;
+   EWOULDBLOCK = 35;
+   EINPROGRESS = 36;
+   EALREADY = 37;
+   ENOTSOCK = 38;
+   EDESTADDRREQ = 39;
+   EMSGSIZE        = 40;
+   EPROTOTYPE      = 41;
+   ENOPROTOOPT     = 42;
+   EPROTONOSUPPORT = 43;
+   ESOCKTNOSUPPORT = 44;
+   EOPNOTSUPP = 45;
+   EPFNOSUPPORT = 46;
+   EAFNOSUPPORT = 47;
+   EADDRINUSE = 48;
+   EADDRNOTAVAIL = 49;
+   ENETDOWN = 50;
+   ENETUNREACH = 51;
+   ENETRESET = 52;
+   ECONNABORTED = 53;
+   ECONNRESET = 54;
+   ENOBUFS = 55;
+   EISCONN = 56;
+   ENOTCONN = 57;
+   ESHUTDOWN = 58;
+   ETOOMANYREFS = 59;
+   ETIMEDOUT = 60;
+   ECONNREFUSED = 61;
+
+   EBUSY = 62;
+   EINTR = 63;
+   EISDIR = 64;
+   ENAMETOOLONG = 65;
+   ENOSYS = 66;
+   ENOTDIR = 67;
+   ENOTEMPTY = 68;
+   EPERM = 69;
+   ECHILD = 70;
+   EFBIG = 71;
+   EMLINK = 72;
+   ENODEV = 73;
+   ENOLCK = 74;
+   ENOTTY = 75;
+   EFTYPE = ENOTTY;
+   EROFS = 76;
+   ESRCH = 77;
+   ECANCELED = 78;
+   ENOTSUP = 79;
+
+   // CLib-implementation-specific constants
+   ECANCELLED = ECANCELED;
+   ENLMDATA = 100;
+   EILSEQ = 101;
+   EINCONSIS = 102;
+   EDOSTEXTEOL = 103;
+   ENONEXTANT = 104;
+   ENOCONTEXT = 105;
+   ELASTERR = ENOCONTEXT;
+{-nwerrno.h--------------------------------------------------------------------}
+{ Multi purpose return values.}
+const
+   ESUCCESS = 0;
+   EFAILURE = -(1);
+   ERR_TTS_NOT_AVAILABLE = $00;
+   ERR_RECORD_NOT_LOCKED = $01;
+   ERR_INSUFFICIENT_SPACE = $01;
+   ERR_STRING_EXCEEDS_LENGTH = $01;
+   ERR_TTS_AVAILABLE = $01;
+   ERR_NOT_AVAILABLE_PROTECTED = $64;
+   ERR_NOT_AVAILABLE_ON_3X = $65;
+   ERR_BAD_THREAD_ID = $66;
+   ERR_BAD_PRTY_CLASS = $67;
+   ERR_BAD_PRTY_SCOPE = $68;
+   ERR_NOT_A_POPUP_SCREEN = $69;
+   ERR_OPEN_SCREEN = $6A;
+   ERR_BAD_SHFLAG = $6B;
+   ERR_BAD_ACCESS = $6C;
+   ERR_BAD_ORIGIN = $6D;
+   ERR_BAD_ACTION_CODE = $6E;
+   ERR_OUT_OF_TASKS = $6F;
+   ERR_BAD_QUERY_TYPE = $70;
+   ERR_BAD_LIBRARY_HANDLE = $71;
+   ERR_STREAMS = $72;
+   ERR_BAD_FILE_SERVER_ID = $73;
+   ERR_BAD_CONNECTION_ID = $73;
+   ERR_BAD_FLAGS = $74;
+   ERR_STRUCT_NOT_FOUND = $C8;
+   ERR_NO_ITEMS_FOUND = $79;
+   ERR_NCPEXT_TRANSPORT_PROTOCOL_VIOLATION = $7E;
+   ERR_FILE_IN_USE = $80;
+   ERR_LOCK_FAIL = $80;
+   ERR_MAPPED_TO_A_LOCAL_DRIVE = $80;
+   ERR_NO_MORE_FILE_HANDLES = $81;
+   ERR_NO_OPEN_PRIVILEGE = $82;
+   ERR_NETWORK_DISK_IO = $83;
+   ERR_NO_CREATE_PRIVILEGE = $84;
+   ERR_NO_CREATE_DELETE_PRIVILEGE = $85;
+   ERR_R_O_CREATE_FILE = $86;
+   ERR_CREATE_FILE_INVALID_NAME = $87;
+   ERR_INVALID_FILE_HANDLE = $88;
+   ERR_NO_SEARCH_PRIVILEGE = $89;
+   ERR_NO_DELETE_PRIVILEGE = $8A;
+   ERR_NO_RENAME_PRIVILEGE = $8B;
+   ERR_NO_MODIFY_PRIVILEGE = $8C;
+   ERR_NO_SET_PRIVILEGE = $8C;
+   ERR_SOME_FILES_IN_USE = $8D;
+   ERR_ALL_FILES_IN_USE = $8E;
+   ERR_SOME_READ_ONLY = $8F;
+   ERR_ALL_READ_ONLY = $90;
+   ERR_SOME_NAMES_EXIST = $91;
+   ERR_ALL_NAMES_EXIST = $92;
+   ERR_NO_READ_PRIVILEGE = $93;
+   ERR_NO_WRITE_PRIVILEGE_OR_READONLY = $94;
+   ERR_FILE_DETACHED = $95;
+   ERR_NO_ALLOC_SPACE = $96;
+   ERR_SERVER_OUT_OF_MEMORY = $96;
+   ERR_TARGET_NOT_A_SUBDIRECTORY = $96;
+   ERR_NO_SPOOL_SPACE = $97;
+   ERR_INVALID_VOLUME = $98;
+   ERR_VOLUME_DOES_NOT_EXIST = $98;
+   ERR_DIRECTORY_FULL = $99;
+   ERR_RENAME_ACROSS_VOLUME = $9A;
+   ERR_BAD_DIR_HANDLE = $9B;
+   ERR_HOLE_FOUND = $9C;
+   ERR_INVALID_PATH = $9C;
+   ERR_NO_SUCH_EXTENSION = $9C;
+   ERR_NO_DIR_HANDLES = $9D;
+   ERR_BAD_FILE_NAME = $9E;
+   ERR_DIRECTORY_ACTIVE = $9F;
+   ERR_DIRECTORY_IN_USE = $9F;
+   ERR_DIRECTORY_NOT_EMPTY = $A0;
+   ERR_DIRECTORY_IO_ERROR = $A1;
+   ERR_IO_LOCKED = $A2;
+   ERR_TRANSACTION_RESTARTED = $A3;
+   ERR_RENAME_DIR_INVALID = $A4;
+   ERR_INVALID_OPENCREATE_MODE = $A5;
+   ERR_ALREADY_IN_USE = $A6;
+   ERR_SEARCH_DRIVE_VECTOR_FULL = $B0;
+   ERR_DRIVE_DOES_NOT_EXIST = $B1;
+   ERR_DRIVE_IS_NOT_MAPPED = $B1;
+   ERR_CANT_MAP_LOCAL_DRIVE = $B2;
+   ERR_INVALID_MAP_TYPE = $B3;
+   ERR_INVALID_DRIVE_LETTER = $B4;
+   ERR_NO_DRIVE_AVAILABLE = $B5;
+   ERR_WORKSTATION_OUT_OF_MEMORY = $B6;
+   ERR_NO_SUCH_SEARCH_DRIVE = $B7;
+   ERR_INVALID_ENVIRON_VARIABLE = $B8;
+   ERR_DOES_NOT_RUN_ON_IOENGINE = $B9;
+   ERR_PACKET_SIGNATURES_REQURIED = $BC;
+   ERR_PACKET_SIGNATURES_REQUIRED = $BC;
+   ERR_INVALID_DATA_STREAM = $BE;
+   ERR_INVALID_NAME_SPACE = $BF;
+   ERR_NO_ACCOUNT_PRIVILEGES = $C0;
+   ERR_NO_ACCOUNTING_PRIVILEGES = $C0;
+   ERR_NO_ACCOUNT_BALANCE = $C1;
+   ERR_CREDIT_LIMIT_EXCEEDED = $C2;
+   ERR_LOGIN_DENIED_NO_CREDIT = $C2;
+   ERR_TOO_MANY_HOLDS = $C3;
+   ERR_ACCOUNTING_DISABLED = $C4;
+   ERR_LOGIN_LOCKOUT = $C5;
+   ERR_NO_CONSOLE_OPERATOR_RIGHTS = $C6;
+   ERR_MISSING_EA_KEY = $C8;
+   ERR_EA_NOT_FOUND = $C9;
+   ERR_INVALID_EA_HANDLE_TYPE = $CA;
+   ERR_EA_NO_KEY_NO_DATA = $CB;
+   ERR_EA_NUMBER_MISMATCH = $CC;
+   ERR_EXTENT_NUMBER_OUT_OF_RANGE = $CD;
+   ERR_EA_BAD_DIR_NUM = $CE;
+   ERR_INVALID_EA_HANDLE = $CF;
+   ERR_EA_POSITION_OUT_OF_RANGE = $D0;
+   ERR_Q_IO_FAILURE = $D0;
+   ERR_EA_ACCESS_DENIED = $D1;
+   ERR_NO_QUEUE = $D1;
+   ERR_DATA_PAGE_ODD_SIZE = $D2;
+   ERR_NO_Q_SERVER = $D2;
+   ERR_EA_VOLUME_NOT_MOUNTED = $D3;
+   ERR_NO_Q_RIGHTS = $D3;
+   ERR_BAD_PAGE_BOUNDARY = $D4;
+   ERR_Q_FULL = $D4;
+   ERR_INSPECT_FAILURE = $D5;
+   ERR_NO_Q_JOB = $D5;
+   ERR_EA_ALREADY_CLAIMED = $D6;
+   ERR_NO_Q_JOB_RIGHTS = $D6;
+   ERR_UNENCRYPTED_NOT_ALLOWED = $D6;
+   ERR_ODD_BUFFER_SIZE = $D7;
+   ERR_DUPLICATE_PASSWORD = $D7;
+   ERR_Q_IN_SERVICE = $D7;
+   ERR_NO_SCORECARDS = $D8;
+   ERR_PASSWORD_TOO_SHORT = $D8;
+   ERR_Q_NOT_ACTIVE = $D8;
+   ERR_BAD_EDS_SIGNATURE = $D9;
+   ERR_MAXIMUM_LOGINS_EXCEEDED = $D9;
+   ERR_LOGIN_DENIED_NO_CONNECTION = $D9;
+   ERR_Q_STN_NOT_SERVER = $D9;
+   ERR_EA_SPACE_LIMIT = $DA;
+   ERR_BAD_LOGIN_TIME = $DA;
+   ERR_Q_HALTED = $DA;
+   ERR_EA_KEY_CORRUPT = $DB;
+   ERR_NODE_ADDRESS_VIOLATION = $DB;
+   ERR_Q_MAX_SERVERS = $DB;
+   ERR_EA_KEY_LIMIT = $DC;
+   ERR_LOG_ACCOUNT_EXPIRED = $DC;
+   ERR_TALLY_CORRUPT = $DD;
+   ERR_BAD_PASSWORD = $DE;
+   ERR_PASSWORD_EXPIRED_NO_GRACE = $DE;
+   ERR_PASSWORD_EXPIRED = $DF;
+   ERR_NOT_ITEM_PROPERTY = $E8;
+   ERR_WRITE_TO_GROUP_PROPERTY = $E8;
+   ERR_MEMBER_ALREADY_EXISTS = $E9;
+   ERR_NO_SUCH_MEMBER = $EA;
+   ERR_PROPERTY_NOT_GROUP = $EB;
+   ERR_NOT_GROUP_PROPERTY = $EB;
+   ERR_NO_SUCH_SEGMENT = $EC;
+   ERR_NO_SUCH_VALUE_SET = $EC;
+   ERR_SPX_CONNECTION_TERMINATED = $EC;
+   ERR_TERMINATED_BY_REMOTE_PARTNER = $EC;
+   ERR_PROPERTY_ALREADY_EXISTS = $ED;
+   ERR_SPX_CONNECTION_FAILED = $ED;
+   ERR_SPX_TERMINATED_POORLY = $ED;
+   ERR_SPX_NO_ANSWER_FROM_TARGET = $ED;
+   ERR_OBJECT_ALREADY_EXISTS = $EE;
+   ERR_SPX_INVALID_CONNECTION = $EE;
+   ERR_INVALID_NAME = $EF;
+   ERR_SPX_CONNECTION_TABLE_FULL = $EF;
+   ERR_IPX_NOT_INSTALLED = $F0;
+   ERR_ILLEGAL_WILDCARD = $F0;
+   ERR_WILDCARD_NOT_ALLOWED = $F0;
+   ERR_SOCKET_NOT_OPEN = $F0;
+   ERR_BINDERY_SECURITY = $F1;
+   ERR_INVALID_BINDERY_SECURITY = $F1;
+   ERR_SOCKET_ALREADY_OPEN = $F1;
+   ERR_NO_OBJECT_READ_PRIVILEGE = $F2;
+   ERR_NO_OBJECT_READ_RIGHTS = $F2;
+   ERR_NO_OBJECT_RENAME_PRIVILEGE = $F3;
+   ERR_NO_OBJECT_RENAME_RIGHTS = $F3;
+   ERR_NO_OBJECT_DELETE_PRIVILEGE = $F4;
+   ERR_NO_OBJECT_DELETE_RIGHTS = $F4;
+   ERR_NO_OBJECT_CREATE_PRIVILEGE = $F5;
+   ERR_NO_OBJECT_CREATE_RIGHTS = $F5;
+   ERR_NO_PROPERTY_DELETE_PRIVILEGE = $F6;
+   ERR_NO_PROPERTY_DELETE_RIGHTS = $F6;
+   ERR_NO_PROPERTY_CREATE_PRIVILEGE = $F7;
+   ERR_NO_PROPERTY_CREATE_RIGHTS = $F7;
+   ERR_ALREADY_ATTACHED_TO_SERVER = $F8;
+   ERR_NO_PROPERTY_WRITE_PRIVILEGE = $F8;
+   ERR_NO_PROPERTY_WRITE_RIGHTS = $F8;
+   ERR_NOT_ATTACHED_TO_SERVER = $F8;
+   ERR_ECB_CANNOT_BE_CANCELLED = $F9;
+   ERR_NO_FREE_CONNECTION_SLOTS = $F9;
+   ERR_NO_PROPERTY_READ_PRIVILEGE = $F9;
+   ERR_NO_PROPERTY_READ_RIGHTS = $F9;
+   ERR_NO_LOCAL_TARGET_IDENTIFIED = $FA;
+   ERR_NO_MORE_SERVER_SLOTS = $FA;
+   ERR_TEMP_REMAP = $FA;
+   ERR_NO_KNOWN_ROUTE_TO_DESTINATION = $FA;
+   ERR_INVALID_PARAMETERS = $FB;
+   ERR_NO_SUCH_PROPERTY = $FB;
+   ERR_UNKNOWN_REQUEST = $FB;
+   ERR_EVENT_CANCELLED = $FC;
+   ERR_INTERNET_PACKET_REQT_CANCELED = $FC;
+   ERR_MESSAGE_QUEUE_FULL = $FC;
+   ERR_NO_SUCH_BINDERY_OBJECT = $FC;
+   ERR_NO_SUCH_OBJECT = $FC;
+   ERR_REQUEST_CANCELLED = $FC;
+   ERR_SPX_COMMAND_CANCELLED = $FC;
+   ERR_SPX_SOCKET_CLOSED = $FC;
+   ERR_UNKNOWN_FILE_SERVER = $FC;
+   ERR_TARGET_ALREADY_HAS_MESSAGE = $FC;
+   ERR_NCPEXT_SERVICE_PROTOCOL_VIOLATION = $FC;
+   ERR_BAD_SERIAL_NUMBER = $FD;
+   ERR_INVALID_PACKET_LENGTH = $FD;
+   ERR_PACKET_OVERFLOW = $FD;
+   ERR_TTS_DISABLED = $FD;
+   ERR_FIELD_ALREADY_LOCKED = $FD;
+   ERR_FSCOPY_DIFFERENT_NETWORKS = $FD;
+   ERR_BAD_STATION_NUMBER = $FD;
+   ERR_BAD_PACKET = $FE;
+   ERR_SPX_MALFORMED_PACKET = $FE;
+   ERR_BINDERY_LOCKED = $FE;
+   ERR_DOS_ACCESS_DENIED = $FE;
+   ERR_DOS_NO_SEARCH_RIGHTS = $FE;
+   ERR_IMPLICIT_TRANSACTION_ACTIVE = $FE;
+   ERR_INCORRECT_ACCESS_PRIVILEGES = $FE;
+   ERR_INVALID_NAME_LENGTH = $FE;
+   ERR_INVALID_SEMAPHORE_NAME_LENGTH = $FE;
+   ERR_IO_FAILURE = $FE;
+   ERR_PACKET_NOT_DELIVERABLE = $FE;
+   ERR_SPOOL_DIRECTORY_ERROR = $FE;
+   ERR_SUPERVISOR_HAS_DISABLED_LOGIN = $FE;
+   ERR_TRANSACTION_ENDS_RECORDS_LOCKED = $FE;
+   ERR_SERVER_BINDERY_LOCKED = $FE;
+   ERR_TIMEOUT_FAILURE = $FE;
+   ERR_TRUSTEE_NOT_FOUND = $FE;
+   ERR_SOCKET_TABLE_FULL = $FE;
+   ERR_NCPEXT_NO_HANDLER = $FE;
+   ERR_BAD_PARAMETER = $FF;
+   ERR_BAD_SPOOL_PRINTER = $FF;
+   ERR_RECORD_ALREADY_LOCKED = $FF;
+   ERR_BAD_RECORD_OFFSET = $FF;
+   ERR_BINDERY_FAILURE = $FF;
+   ERR_ECB_NOT_IN_USE = $FF;
+   ERR_FAILURE = $FF;
+   ERR_FILE_EXTENSION_ERROR = $FF;
+   ERR_HARD_FAILURE = $FF;
+   ERR_INVALID_INITIAL_SEMAPHORE_VALUE = $FF;
+   ERR_INVALID_SEMAPHORE_HANDLE = $FF;
+   ERR_DOS_FILE_NOT_FOUND = $FF;
+   ERR_EXPLICIT_TRANSACTION_ACTIVE = $FF;
+   ERR_FILE_NOT_OPEN = $FF;
+   ERR_NO_EXPLICIT_TRANSACTION_ACTIVE = $FF;
+   ERR_NO_FILES_FOUND = $FF;
+   ERR_NO_RECORD_FOUND = $FF;
+   ERR_NO_RESPONSE_FROM_SERVER = $FF;
+   ERR_NO_SPOOL_FILE = $FF;
+   ERR_NO_SUCH_OBJECT_OR_BAD_PASSWORD = $FF;
+   ERR_OPEN_FILES = $FF;
+   ERR_PATH_ALREADY_EXISTS = $FF;
+   ERR_PATH_NOT_LOCATABLE = $FF;
+   ERR_QUEUE_FULL = $FF;
+   ERR_REQUEST_NOT_OUTSTANDING = $FF;
+   ERR_SOCKET_CLOSED = $FF;
+   ERR_SPX_IS_INSTALLED = $FF;
+   ERR_SPX_SOCKET_NOT_OPENED = $FF;
+   ERR_TARGET_NOT_LOGGED_IN = $FF;
+   ERR_TARGET_NOT_ACCEPTING_MESSAGES = $FF;
+   ERR_TRANSACTION_NOT_YET_WRITTEN = $FF;
+   ERR_NO_TRUSTEE_CHANGE_PRIVILEGE = $FF;
+   ERR_CHECKSUMS_REQUIRED = $FF;
+   ERR_SERVICE_NOT_LOADED = $101;
+   ERR_NO_LIBRARY_CONTEXT = $400;
+{-----------------------------------------------------------------------------
+   Important Note:
+   Additional NetWareErrno values that don't employ a ERR_ prefix have been
+   moved from this position into obsolete header niterror.h. Many of these had
+   been included for compatibility with the now-obsolete NIT API for DOS
+   clients and many conflict with current cross-platform headers.
+  -----------------------------------------------------------------------------}
+{ NetWare Core Protocol (NCP) error codes. }
+   DISKFULL = 1;
+   BADNET = 2;
+   LISTENERROR = 2;
+   BADLADDRESS = 3;
+   INVALIDSESSION = 3;
+   NOSLOTS = 4;
+   SLOTALLOCERR = 4;
+   BROADCASTERROR = 5;
+   BADSERVERNAME = 6;
+   BADUSERNAME = 7;
+   BADPASSWORD = 8;
+   MEMERROR = 9;
+   INVALIDCONNECTION = 10;
+   INVALIDHANDLE = 11;
+   INVALIDREQUEST = 12;
+   SOCKETERROR = 13;
+   ALLOCTAGERR = 14;
+   CONNECTIONABORTED = 15;
+   TIMEOUTERR = 16;
+{ frame type: Ethernet 802.3  }
+   CHECKSUMS_NOT_SUPPORTED = 17;
+   CHECKSUM_FAILURE = 18;
+   NO_FRAGMENT_LIST = 19;
+{ Values for 'NetWareErrno' as set by spawnlp() and spawnvp().}
+   LOAD_COULD_NOT_FIND_FILE = 1;
+   LOAD_ERROR_READING_FILE = 2;
+   LOAD_NOT_NLM_FILE_FORMAT = 3;
+   LOAD_WRONG_NLM_FILE_VERSION = 4;
+   LOAD_REENTRANT_INITIALIZE_FAILURE = 5;
+   LOAD_CAN_NOT_LOAD_MULTIPLE_COPIES = 6;
+   LOAD_ALREADY_IN_PROGRESS = 7;
+   LOAD_NOT_ENOUGH_MEMORY = 8;
+   LOAD_INITIALIZE_FAILURE = 9;
+   LOAD_INCONSISTENT_FILE_FORMAT = 10;
+   LOAD_CAN_NOT_LOAD_AT_STARTUP = 11;
+   LOAD_AUTO_LOAD_MODULES_NOT_LOADED = 12;
+   LOAD_UNRESOLVED_EXTERNAL = 13;
+   LOAD_PUBLIC_ALREADY_DEFINED = 14;
+ { Values for _msize() error return and NWMemorySizeAddressable(). }
+   ERR_HEAP_BAD_PTR = $FFFFFFFF;
+   ERR_HEAP_BLOCK_ALREADY_FREE = $FFFFFFFE;
+   ERR_INVALID_ADDRESS = $FFFFFFFD;
+ { Values for NetWare Virtual Memory (NVM) APIs as returned by GetVMErrno().
+   These values should be examined after calling a Win32 VM API without a
+   satisfactorily-lucid error in 'errno' or from (Win32) GetLastError(). }
+   ERROR_INSUFFICIENT_CONTIGUOUS_MEMORY = $1000;
+   ERROR_INSUFFICIENT_DISK_SWAP_SPACE = $1001;
+   ERROR_INSUFFICIENT_MEMORY = $1002;
+   ERROR_INSUFFICIENT_RESOURCES_TO_COMMIT_MEMORY = $1003;
+   ERROR_INVALID_ATTRIBUTE_FLAGS = $1004;
+   ERROR_INVALID_ADDRESS = $1005;
+   ERROR_INVALID_LOCK_FLAGS = $1006;
+   ERROR_INVALID_PAGE_COUNT = $1007;
+   ERROR_INVALID_PROTECTION_FLAGS = $1008;
+   ERROR_NON_SHARED_MEMORY_ADDRESS = $1009;
+   ERROR_SHARED_MEMORY_ADDRESS = $100A;
+
+function GetVMErrno:longint;cdecl;external 'clib' name 'GetVMErrno';
+procedure SetVMErrno(para1:longint);cdecl;external 'clib' name 'SetVMErrno';
+function __get_NWErrno:longint;cdecl;external 'clib' name '__get_NWErrno';
+function __get_NWErrno_ptr:Plongint;cdecl;external 'clib' name '__get_NWErrno_ptr';
+function NetWareErrno : longint;
+{-fcntl.h----------------------------------------------------------------------}
+const
+   F_GETFL    = 1;
+   F_SETFL    = 2;
+   F_DUPFD    = 3;
+   F_GETFD    = 4;
+   F_SETFD    = 5;
+   F_SETLK    = 6;
+   F_GETLK    = 7;
+   F_SETLKW   = 8;
+   F_RDLCK    = 9;
+   F_UNLCK    = 10;
+   F_WRLCK    = 11;
+   F_CLOEXEC  = 12;
+   O_RDONLY   = $0000;
+   O_WRONLY   = $0001;
+   O_RDWR     = $0002;
+   O_ACCMODE  = $0003;
+   O_APPEND   = $0010;
+   O_CREAT    = $0020;
+   O_TRUNC    = $0040;
+   O_EXCL     = $0080;
+   O_TEXT     = $0100;
+   O_BINARY   = $0200;
+   O_NDELAY   = $0400;
+   O_NOCTTY   = $0800;
+   O_NONBLOCK = O_NDELAY;
+   FNDELAY    = $0004;
+type
+   Poff_t = ^Toff_t;
+   Toff_t = longint;
+   Ppid_t = ^Tpid_t;
+   Tpid_t = longint;
+   Pssize_t = ^Tssize_t;
+   Tssize_t = longint;
+   Pmode_t = ^Tmode_t;
+   Tmode_t = dword;
+
+   Pflock = ^Tflock;
+   Tflock = record
+        l_type   : smallint;
+        l_whence : smallint;
+        l_start  : Toff_t;
+        l_len    : Toff_t;
+        l_pid    : Tpid_t;
+     end;
+
+
+function creat (path:Pchar; mode:Tmode_t):longint;                  cdecl;external 'clib' name 'creat';
+function _fcntl (fildes:longint; cmd:longint;
+                args:array of const):longint;                       cdecl;external 'clib' name 'fcntl';
+function _fcntl (fildes:longint; cmd:longint):longint;               cdecl;external 'clib' name 'fcntl';
+function open  (path:Pchar; oflag:longint;
+                args:array of const):longint;                       cdecl;external 'clib' name 'open';
+function open  (path:Pchar; oflag:longint):longint;                 cdecl;external 'clib' name 'open';
+function sopen (path:Pchar; oflag, shflag:longint;
+                args:array of const):longint;                       cdecl;external 'clib' name 'sopen';
+function sopen (path:Pchar; oflag,shflag:longint):longint;          cdecl;external 'clib' name 'sopen';
+
+{-limits.h---------------------------------------------------------------------}
+const
+   PAGESIZE  = 4096;
+   CHAR_BIT  = 8;
+   SCHAR_MIN = -(128);
+   SCHAR_MAX = 127;
+   UCHAR_MAX = 255;
+   CHAR_MIN  = SCHAR_MIN;
+   CHAR_MAX  = SCHAR_MAX;
+
+   MB_LEN_MAX = 5;
+   SHRT_MIN   = -(32768);
+   SHRT_MAX   = 32767;
+   USHRT_MAX  = 65535;
+   LONG_MIN   = (-(2147483647)) - 1;
+   LONG_MAX   = 2147483647;
+   ULONG_MAX  = 4294967295;
+   INT_MIN    = LONG_MIN;
+   INT_MAX    = LONG_MAX;
+   UINT_MAX   = ULONG_MAX;
+   SSIZE_MAX  = INT_MAX;
+   TZNAME_MAX = 8;
+   PIPE_BUF   = 512;
+{-locale.h---------------------------------------------------------------------}
+{$PACKRECORDS C}
+
+const
+   LC_CTYPE = 0;
+   LC_NUMERIC = 1;
+   LC_TIME = 2;
+   LC_COLLATE = 3;
+   LC_MONETARY = 4;
+   LC_MESSAGES = 5;
+   LC_ALL = 6;
+
+type
+   Plconv = ^Tlconv;
+   Tlconv =
+   record
+     decimal_point       : array [0..3] of char;
+     thousands_sep       : array [0..3] of char;
+     grouping            : array [0..3] of char;
+     int_curr_symbol     : array [0..7] of char;
+     currency_symbol     : array [0..3] of char;
+     mon_decimal_point   : array [0..3] of char;
+     mon_thousands_sep   : array [0..3] of char;
+     mon_grouping        : array [0..7] of char;
+     positive_sign       : array [0..3] of char;
+     negative_sign       : array [0..3] of char;
+     int_frac_digits     : char;
+     frac_digits         : char;
+     p_cs_precedes       : char;
+     p_sep_by_space      : char;
+     n_cs_precedes       : char;
+     n_sep_by_space      : char;
+     p_sign_posn         : char;
+     n_sign_posn         : char;
+     code_page           : word;
+     country_id          : word;
+     data_list_separator : array[0..1] of char;
+     date_separator      : array[0..1] of char;
+     time_separator      : array[0..1] of char;
+     time_format         : char;
+     date_format         : word;
+     reserved            : array[0..49] of char;
+   end;
+
+// ???? struct lconv  *localeconv( void );
+
+function setlocale_old (p1:longint; p2:Pchar):Pchar;  cdecl; external 'clib' name 'setlocale';
+function setlocale     (p1:longint; p2:Pchar):Pchar;  cdecl; external 'clib' name 'setlocale_411';
+{-nwlocale.h-------------------------------------------------------------------}
+{$PACKRECORDS C}
+
+type
+  TNUMBER_TYPE = double;
+  TUCHAR = byte;
+
+
+const
+   MERIDLEN = 5;
+   L_MB_LEN_MAX = 2;    // multibyte character length maximum is 2
+   NWSINGLE_BYTE = 1;	// returned from NWCharType()...
+   NWDOUBLE_BYTE = 2;
+{ country/language ID definitions (field 'country_id' in struct Llconv)...   }
+   ARABIC = 785;
+   AUSTRALIA = 61;
+   BELGIUM = 32;
+   CANADA_ENG = 1;
+   CANADA_FR = 2;
+   DENMARK = 45;
+   FINLAND = 358;
+   FRANCE = 33;
+   GERMANY = 49;
+   HEBREW = 972;
+   ITALY = 39;
+   LATIN_AMERICA = 003;
+   NETHERLANDS = 31;
+   NORWAY = 47;
+   PORTUGAL = 351;
+   SPAIN = 34;
+   SWEDEN = 46;
+   SWITZERLAND = 41;
+   UK = 44;
+   USA = 1;
+   JAPAN = 81;
+   KOREA = 82;
+   PRC = 86;
+   TAIWAN = 88;
+   ASIAN_ENGLISH = 99;
+
+
+type
+   PVECTOR = ^TVECTOR;
+   TVECTOR = record
+        lowValue : char;
+        highValue : char;
+     end;
+{ extern double-byte table data...  }
+  var
+     _DBCSVector : array[0..4] of TVECTOR;cvar;external;
+{ prototypes...  }
+
+function NWCharType(ch:dword):longint;cdecl;external 'locnlm32' name 'NWCharType';
+function NWCharVal(_string:Pchar):longint;cdecl;external 'locnlm32' name 'NWCharVal';
+function NWCharUpr(chr:longint):longint;cdecl;external 'locnlm32' name 'NWCharUpr';
+function NWcprintf(format:Pchar; args:array of const):longint;cdecl;external 'locnlm32' name 'NWcprintf';
+function NWcprintf(format:Pchar):longint;cdecl;external 'locnlm32' name 'NWcprintf';
+function NWIncrement(_string:Pchar; numChars:Tsize_t):Pchar;cdecl;external 'locnlm32' name 'NWIncrement';
+{
+   NWatoi, NWisalnum, NWisalpha, and NWisdigit are preferred over NWLatoi,
+   NWisalnum, NWLisalpha, and NWLisdigit respectively.
+ }
+function NWatoi(_string:Pchar):longint;cdecl;external 'locnlm32' name 'NWatoi';
+function NWisalnum(ch:dword):longint;cdecl;external 'locnlm32' name 'NWisalnum';
+function NWisalpha(ch:dword):longint;cdecl;external 'locnlm32' name 'NWisalpha';
+function NWisdigit(ch:dword):longint;cdecl;external 'locnlm32' name 'NWisdigit';
+function NWisxdigit(ch:dword):longint;cdecl;external 'locnlm32' name 'NWisxdigit';
+function NWitoa(value:longint; _string:Pchar; radix:longint):longint;cdecl;external 'locnlm32' name 'NWitoa';
+function NWutoa(value:dword; _string:Pchar; radix:longint):longint;cdecl;external 'locnlm32' name 'NWutoa';
+function NWltoa(value:longint; _string:Pchar; radix:longint):longint;cdecl;external 'locnlm32' name 'NWltoa';
+function NWultoa(value:dword; _string:Pchar; radix:longint):longint;cdecl;external 'locnlm32' name 'NWultoa';
+(* Const before type ignored *)
+function NWLatoi(_string:Pchar):longint;cdecl;external 'locnlm32' name 'NWLatoi';
+function NWLisalnum(ch:dword):longint;cdecl;external 'locnlm32' name 'NWLisalnum';
+function NWLisalpha(ch:dword):longint;cdecl;external 'locnlm32' name 'NWLisalpha';
+function NWLisdigit(ch:dword):longint;cdecl;external 'locnlm32' name 'NWLisdigit';
+function NWLlocaleconv(lconvPtr:PLCONV):PLCONV;cdecl;external 'locnlm32' name 'NWLlocaleconv';
+function NWLmblen(_string:Pchar; maxBytes:Tsize_t):longint;cdecl;external 'locnlm32' name 'NWLmblen';
+function NWLmbslen(_string:Pchar):longint;cdecl;external 'locnlm32' name 'NWLmbslen';
+function NWLsetlocale(category:longint; locale:Pchar):Pchar;cdecl;external 'locnlm32' name 'NWLsetlocale';
+function NWLsetlocale_411(category:longint; locale:Pchar):Pchar;cdecl;external 'locnlm32' name 'NWLsetlocale_411';
+function NWLstrbcpy(dest:Pchar; src:Pchar; maxlen:Tsize_t):Pchar;cdecl;external 'locnlm32' name 'NWLstrbcpy';
+function NWLstrchr(_string:Pchar; find:longint):Pchar;cdecl;external 'locnlm32' name 'NWLstrchr';
+function NWLstrcoll(string1:Pchar; string2:Pchar):longint;cdecl;external 'locnlm32' name 'NWLstrcoll';
+function NWLstrcspn(string1:Pchar; string2:Pchar):Tsize_t;cdecl;external 'locnlm32' name 'NWLstrcspn';
+function NWLstrftime(_string:Pchar; maxSize:Tsize_t; format:Pchar; timePtr:Ptm):Tsize_t;cdecl;external 'locnlm32' name 'NWLstrftime';
+function NWLstricmp(str1:Pchar; str2:Pchar):longint;cdecl;external 'locnlm32' name 'NWLstricmp';
+function NWLstrlwr(_string:Pchar):Pchar;cdecl;external 'locnlm32' name 'NWLstrlwr';
+function NWLstrpbrk(string1:Pchar; string2:Pchar):Pchar;cdecl;external 'locnlm32' name 'NWLstrpbrk';
+function NWLstrrchr(_string:Pchar; find:longint):Pchar;cdecl;external 'locnlm32' name 'NWLstrrchr';
+function NWLstrrev(string1:Pchar; string2:Pchar):Pchar;cdecl;external 'locnlm32' name 'NWLstrrev';
+function NWLstrspn(string1:Pchar; string2:Pchar):Tsize_t;cdecl;external 'locnlm32' name 'NWLstrspn';
+function NWLstrstr(_string:Pchar; searchString:Pchar):Pchar;cdecl;external 'locnlm32' name 'NWLstrstr';
+function NWLstrupr(_string:Pchar):Pchar;cdecl;external 'locnlm32' name 'NWLstrupr';
+function NWLstrxfrm(string1:Pchar; string2:Pchar; numChars:Tsize_t):Tsize_t;cdecl;external 'locnlm32' name 'NWLstrxfrm';
+function NWPrevChar(_string:Pchar; position:Pchar):Pchar;cdecl;external 'locnlm32' name 'NWPrevChar';
+function NWprintf(format:Pchar; args:array of const):longint;cdecl;external 'locnlm32' name 'NWprintf';
+function NWprintf(format:Pchar):longint;cdecl;external 'locnlm32' name 'NWprintf';
+function NWsprintf(s:Pchar; format:Pchar; args:array of const):longint;cdecl;external 'locnlm32' name 'NWsprintf';
+function NWsprintf(s:Pchar; format:Pchar):longint;cdecl;external 'locnlm32' name 'NWsprintf';
+function NWstrImoney(buffer:Pchar; Value:TNUMBER_TYPE):Pchar;cdecl;external 'locnlm32' name 'NWstrImoney';
+function NWstrmoney(buffer:Pchar; Value:TNUMBER_TYPE):Pchar;cdecl;external 'locnlm32' name 'NWstrmoney';
+function NWstrncoll(string1:Pchar; string2:Pchar; maxChars:Tsize_t):longint;cdecl;external 'locnlm32' name 'NWstrncoll';
+function NWstrncpy(target_string:Pchar; source_string:Pchar; numChars:longint):Pchar;cdecl;external 'locnlm32' name 'NWstrncpy';
+function NWstrnum(buffer:Pchar; Value:TNUMBER_TYPE):Pchar;cdecl;external 'locnlm32' name 'NWstrnum';
+//function NWvcprintf(format:Pchar; arg:Tva_list):longint;cdecl;external 'locnlm32' name 'NWvcprintf';
+//function NWvprintf(format:Pchar; arg:Tva_list):longint;cdecl;external 'locnlm32' name 'NWvprintf';
+//function NWvsprintf(s:Pchar; format:Pchar; arg:Tva_list):longint;cdecl;external 'locnlm32' name 'NWvsprintf';
+{-nwaudnlm.h-------------------------------------------------------------------}
+{ defined network address types:  }
+
+const
+   ASCIIZ_STRING_NET_ADDRESS_TYPE = 0;
+   IPX_NET_ADDRESS_TYPE           = 1;
+
+   // special value network address type:
+   NO_IDENTITY_HAS_BEEN_SET       = $FF;
+
+function NWAddRecordToAuditingFile
+    (volumeNumber,
+     recordType,
+     stationNumber,
+     statusCode        : longint;
+     data              : pointer;
+     dataSize          : longint):longint;cdecl;external 'clib' name 'NWAddRecordToAuditingFile';
+function NWAddRecordToAuditingFile
+    (volumeNumber,
+     recordType,
+     stationNumber,
+     statusCode        : longint;
+ var data;
+     dataSize          : longint):longint;cdecl;external 'clib' name 'NWAddRecordToAuditingFile';
+
+
+function NWGetAuditingIdentity
+    (addressType       : Plongint;
+     networkAddress    : pointer;
+     identityName      : Pchar):longint;cdecl;external 'clib' name 'NWGetAuditingIdentity';
+function NWGetAuditingIdentity
+    (var addressType   : longint;
+     var networkAddress;
+     identityName      : Pchar):longint;cdecl;external 'clib' name 'NWGetAuditingIdentity';
+function NWSetAuditingIdentity
+    (addressType:longint;
+     networkAddress:pointer;
+     identityName:Pchar):longint;cdecl;external 'clib' name 'NWSetAuditingIdentity';
+function NWSetAuditingIdentity
+    (addressType:longint;
+ var networkAddress;
+     identityName:Pchar):longint;cdecl;external 'clib' name 'NWSetAuditingIdentity';
+{-nwbitops.h-------------------------------------------------------------------}
+procedure BitClear        (bitArray:pointer; bitNumber:longint);cdecl;external 'clib' name 'BitClear';
+procedure BitSet          (bitArray:pointer; bitNumber:longint);cdecl;external 'clib' name 'BitSet';
+function  BitTest         (bitArray:pointer; bitNumber:longint):longint;cdecl;external 'clib' name 'BitTest';
+function  BitTestAndClear (bitArray:pointer; bitNumber:longint):longint;cdecl;external 'clib' name 'BitTestAndClear';
+function  BitTestAndSet   (bitArray:pointer; bitNumber:longint):longint;cdecl;external 'clib' name 'BitTestAndSet';
+function  ScanBits        (bitArray:pointer; startingBitNumber,totalBitCount:longint):longint;cdecl;external 'clib' name 'ScanBits';
+function  ScanClearedBits (bitArray:pointer; startingBitNumber,totalBitCount:longint):longint;cdecl;external 'clib' name 'ScanClearedBits';
+
+procedure BitClear        (var bitArray; bitNumber:longint);cdecl;external 'clib' name 'BitClear';
+procedure BitSet          (var bitArray; bitNumber:longint);cdecl;external 'clib' name 'BitSet';
+function  BitTest         (var bitArray; bitNumber:longint):longint;cdecl;external 'clib' name 'BitTest';
+function  BitTestAndClear (var bitArray; bitNumber:longint):longint;cdecl;external 'clib' name 'BitTestAndClear';
+function  BitTestAndSet   (var bitArray; bitNumber:longint):longint;cdecl;external 'clib' name 'BitTestAndSet';
+function  ScanBits        (var bitArray; startingBitNumber,totalBitCount:longint):longint;cdecl;external 'clib' name 'ScanBits';
+function  ScanClearedBits (var bitArray; startingBitNumber,totalBitCount:longint):longint;cdecl;external 'clib' name 'ScanClearedBits';
+{-nwcntask.h-------------------------------------------------------------------}
+{#define LOGIN_WITHOUT_PASSWORD ((char *) N_TRUE) }
+
+function AllocateBlockOfTasks(numberWanted:longint):longint;cdecl;external 'clib' name 'AllocateBlockOfTasks';
+function CheckIfConnectionActive(connection:longint):byte;cdecl;external 'clib' name 'CheckIfConnectionActive';
+function DisableConnection(connection:longint):longint;cdecl;external 'clib' name 'DisableConnection';
+function EnableConnection(connection:longint):longint;cdecl;external 'clib' name 'EnableConnection';
+function GetCurrentConnection:longint;cdecl;external 'clib' name 'GetCurrentConnection';
+function GetCurrentFileServerID:word;cdecl;external 'clib' name 'GetCurrentFileServerID';
+function GetCurrentTask:longint;cdecl;external 'clib' name 'GetCurrentTask';
+function LoginObject(connection:longint; objectName:Pchar; objectType:word; password:Pchar):longint;cdecl;external 'clib' name 'LoginObject';
+function LogoutObject(connection:longint):longint;cdecl;external 'clib' name 'LogoutObject';
+function ReturnBlockOfTasks(startingTask,numberOfTasks:longint):longint;cdecl;external 'clib' name 'ReturnBlockOfTasks';
+function ReturnConnection(connection:longint):longint;cdecl;external 'clib' name 'ReturnConnection';
+function ReturnLocalConnection(connection:longint):longint;cdecl;external 'clib' name 'ReturnLocalConnection';
+function SetCurrentConnection(connectionNumber:longint):longint;cdecl;external 'clib' name 'SetCurrentConnection';
+function SetCurrentFileServerID(connectionID:word):word;cdecl;external 'clib' name 'SetCurrentFileServerID';
+function SetCurrentTask(taskNumber:longint):longint;cdecl;external 'clib' name 'SetCurrentTask';
+{-nwconio.h--------------------------------------------------------------------}
+const
+   DONT_AUTO_ACTIVATE     = $01;  // avoids autoactivation when screens are
+                                  // created, but no other screens exist
+   DONT_SWITCH_SCREEN     = $02;  // avoids screen being switched
+   DONT_CHECK_CTRL_CHARS  = $10;  // turns off ^C and ^S processing
+   AUTO_DESTROY_SCREEN    = $20;  // avoids "Press any key to close screen
+   POP_UP_SCREEN          = $40;
+   UNCOUPLED_CURSORS      = $80;  // for distinct input & output cursors
+{ more screen attribute values returned by GetScreenInfo()  }
+   HAS_A_CLIB_HANDLE            = $00000100;
+   _KEYBOARD_INPUT_ACTIVE       = $00010000;
+   _PROCESS_BLOCKED_ON_KEYBOARD = $00020000;
+   _PROCESS_BLOCKED_ON_SCREEN   = $00040000;
+   _INPUT_CURSOR_DISABLED       = $00080000;
+   _SCREEN_HAS_TITLE_BAR        = $00400000;
+   _NON_SWITCHABLE_SCREEN       = $01000000;
+
+function getch:longint; cdecl; external 'clib' name 'getch';
+function getche:longint; cdecl; external 'clib' name 'getche';
+function kbhit:longint; cdecl; external 'clib' name 'kbhit';
+function putch(c:longint):longint; cdecl; external 'clib' name 'putch';
+function ungetch(c:longint):longint; cdecl; external 'clib' name 'ungetch';
+function cgets(buf:Pchar):Pchar; cdecl; external 'clib' name 'cgets';
+function CheckIfScreenDisplayed(screenHandle,waitFlag:longint):longint; cdecl; external 'clib' name 'CheckIfScreenDisplayed';
+procedure clrscr; cdecl; external 'clib' name 'clrscr';
+procedure ConsolePrintf(format:Pchar; args:array of const); cdecl; external 'clib' name 'ConsolePrintf';
+procedure ConsolePrintf(format:Pchar); cdecl; external 'clib' name 'ConsolePrintf';
+procedure CopyToScreenMemory(height,width:word; Rect:PBYTE; beg_x,beg_y:word); cdecl; external 'clib' name 'CopyToScreenMemory';
+procedure CopyToScreenMemory(height,width:word; var Data; beg_x,beg_y:word); cdecl; external 'clib' name 'CopyToScreenMemory';
+procedure CopyFromScreenMemory(height,width:word; Rect:PBYTE; beg_x,beg_y:word); cdecl; external 'clib' name 'CopyFromScreenMemory';
+procedure CopyFromScreenMemory(height,width:word; var Data; beg_x,beg_y:word); cdecl; external 'clib' name 'CopyFromScreenMemory';
+function CoupleInputOutputCursors:longint; cdecl; external 'clib' name 'CoupleInputOutputCursors';
+function cputs(buf:Pchar):longint; cdecl; external 'clib' name 'cputs';
+function cprintf(fmt:Pchar; args:array of const):longint; cdecl; external 'clib' name 'cprintf';
+function cprintf(fmt:Pchar):longint; cdecl; external 'clib' name 'cprintf';
+function CreateScreen(screenName:Pchar; attr:byte):longint; cdecl; external 'clib' name 'CreateScreen';
+function cscanf(fmt:Pchar; args:array of const):longint; cdecl; external 'clib' name 'cscanf';
+function cscanf(fmt:Pchar):longint; cdecl; external 'clib' name 'cscanf';
+function DecoupleInputOutputCursors:longint; cdecl; external 'clib' name 'DecoupleInputOutputCursors';
+function DestroyScreen(screenHandle:longint):longint; cdecl; external 'clib' name 'DestroyScreen';
+function DisplayInputCursor:longint; cdecl; external 'clib' name 'DisplayInputCursor';
+function DisplayScreen(screenHandle:longint):longint; cdecl; external 'clib' name 'DisplayScreen';
+function DropPopUpScreen(screenHandle:longint):longint; cdecl; external 'clib' name 'DropPopUpScreen';
+function GetCurrentScreen:longint; cdecl; external 'clib' name 'GetCurrentScreen';
+function GetCursorCouplingMode:byte; cdecl; external 'clib' name 'GetCursorCouplingMode';
+function GetCursorShape(startline,endline:PBYTE):word; cdecl; external 'clib' name 'GetCursorShape';
+function GetCursorShape(var startline,endline:byte):word; cdecl; external 'clib' name 'GetCursorShape';
+function GetCursorSize(firstline,lastline:PBYTE):word; cdecl; external 'clib' name 'GetCursorSize';
+function GetCursorSize(var firstline,lastline:byte):word; cdecl; external 'clib' name 'GetCursorSize';
+function GetPositionOfOutputCursor(rowP,columnP:PWORD):longint; cdecl; external 'clib' name 'GetPositionOfOutputCursor';
+function GetPositionOfOutputCursor(var row,col:word):longint; cdecl; external 'clib' name 'GetPositionOfOutputCursor';
+function __GetScreenID(screenHandle:longint):longint; cdecl; external 'clib' name '__GetScreenID';
+function GetScreenInfo(handle:longint; name:Pchar; attr:plongint):longint; cdecl; external 'clib' name 'GetScreenInfo';
+function GetScreenInfo(handle:longint; name:Pchar; var attr:longint):longint; cdecl; external 'clib' name 'GetScreenInfo';
+function GetSizeOfScreen(heightP,widthP:PWORD):longint; cdecl; external 'clib' name 'GetSizeOfScreen';
+function GetSizeOfScreen(var heightP,widthP:word):longint; cdecl; external 'clib' name 'GetSizeOfScreen';
+procedure gotoxy(col,row:word); cdecl; external 'clib' name 'gotoxy';
+function HideInputCursor:longint; cdecl; external 'clib' name 'HideInputCursor';
+function IsColorMonitor:longint; cdecl; external 'clib' name 'IsColorMonitor';
+function PressAnyKeyToContinue:longint; cdecl; external 'clib' name 'PressAnyKeyToContinue';
+function PressEscapeToQuit:longint; cdecl; external 'clib' name 'PressEscapeToQuit';
+procedure RingTheBell; cdecl; external 'clib' name 'RingTheBell';
+function ScanScreens(LastScreenID:longint; name:Pchar; attr:plongint):longint; cdecl; external 'clib' name 'ScanScreens';
+function ScanScreens(LastScreenID:longint; name:Pchar; var attr:longint):longint; cdecl; external 'clib' name 'ScanScreens';
+function ScrollScreenRegionDown(firstLine,numLines:longint):longint; cdecl; external 'clib' name 'ScrollScreenRegionDown';
+function ScrollScreenRegionUp(firstLine,numLines:longint):longint; cdecl; external 'clib' name 'ScrollScreenRegionUp';
+function SetAutoScreenDestructionMode(newMode:byte):byte; cdecl; external 'clib' name 'SetAutoScreenDestructionMode';
+function SetCtrlCharCheckMode(newMode:byte):byte; cdecl; external 'clib' name 'SetCtrlCharCheckMode';
+function SetCursorCouplingMode(newMode:byte):byte; cdecl; external 'clib' name 'SetCursorCouplingMode';
+function SetCursorShape(startline,endline:byte):word; cdecl; external 'clib' name 'SetCursorShape';
+function SetCurrentScreen(screenHandle:longint):longint; cdecl; external 'clib' name 'SetCurrentScreen';
+function SetInputAtOutputCursorPosition:longint; cdecl; external 'clib' name 'SetInputAtOutputCursorPosition';
+function SetOutputAtInputCursorPosition:longint; cdecl; external 'clib' name 'SetOutputAtInputCursorPosition';
+function SetPositionOfInputCursor(row,col:word):longint; cdecl; external 'clib' name 'SetPositionOfInputCursor';
+function SetScreenAreaAttribute(line,col:longint; numLines:longint; numColumns:longint; attr:longint):longint; cdecl; external 'clib' name 'SetScreenAreaAttribute';
+function SetScreenAttributes(mask,attr:longint):longint; cdecl; external 'clib' name 'SetScreenAttributes';
+function SetScreenCharacterAttribute(line,column,attr:longint):longint; cdecl; external 'clib' name 'SetScreenCharacterAttribute';
+function SetScreenRegionAttribute(firstLine,numLines:longint; attr:byte):longint; cdecl; external 'clib' name 'SetScreenRegionAttribute';
+function wherex:word; cdecl; external 'clib' name 'wherex';
+function wherey:word; cdecl; external 'clib' name 'wherey';
+{-nwconn.h---------------------------------------------------------------------}
+{ Structures and typedefs for connection services  }
+
+const
+   IPX_TRANSPORT_ADDRESS =  1;
+   IPX_TRANSPORT_LENGTH  = 12;
+   UDP_TRANSPORT_ADDRESS =  8;
+   UDP_TRANSPORT_LENGTH  =  4;
+   TCP_TRANSPORT_ADDRESS =  9;
+   TCP_TRANSPORT_LENGTH  =  4;
+{$include npackon.inc}
+type
+   PUserNameStruct = ^TUserNameStruct;
+   TUserNameStruct = record
+        UserName : array[0..47] of char;
+        ObjectID : longint;
+     end;
+   TConnectionCriticalErrorHandler =
+      function (fileServerID,connection,err:longint):longint; cdecl;
+
+{$include npackoff.inc}
+
+function AttachByAddress(transType:byte; transLen:longint; transBuf:pointer; fileServerID:PWORD):longint;cdecl;external 'clib' name 'AttachByAddress';
+function AttachByAddress(transType:byte; transLen:longint; var transBuf; var fileServerID:word):longint;cdecl;external 'clib' name 'AttachByAddress';
+
+function AttachToFileServer(fileServerName:Pchar; fileServerID:PWORD):longint;cdecl;external 'clib' name 'AttachToFileServer';
+function AttachToFileServer(fileServerName:Pchar; var fileServerID:word):longint;cdecl;external 'clib' name 'AttachToFileServer';
+
+function GetConnectionFromID(fileServerID:PWORD):longint;cdecl;external 'clib' name 'GetConnectionFromID';
+function GetConnectionFromID(var fileServerID:word):longint;cdecl;external 'clib' name 'GetConnectionFromID';
+
+function GetConnectionInformation (connectionNumber:word;
+                                   objectName      :Pchar;
+                                   objectType      :PWORD;
+                                   objectID        :Plongint;
+                                   loginTime       :PBYTE):longint;cdecl;external 'clib' name 'GetConnectionInformation';
+function GetConnectionInformation (connectionNumber:word;
+                                   objectName      :Pchar;
+                               var objectType      :word;
+                               var objectID        :longint;
+                               var loginTime       :byte):longint;cdecl;external 'clib' name 'GetConnectionInformation';
+
+function GetConnectionList(objectID,lastConnection:longint;
+                           numberOfConnections:Plongint;
+                           connectionList:pointer;
+                           connectionSize:longint):longint;cdecl;external 'clib' name 'GetConnectionList';
+function GetConnectionList(objectID,lastConnection:longint;
+                       var numberOfConnections:longint;
+                       var connectionList;  {array of longint}
+                           connectionSize:longint):longint;cdecl;external 'clib' name 'GetConnectionList';
+function GetConnectionNumber:word;cdecl;external 'clib' name 'GetConnectionNumber';
+function GetDefaultConnectionID:longint;cdecl;external 'clib' name 'GetDefaultConnectionID';
+function GetDefaultFileServerID:longint;cdecl;external 'clib' name 'GetDefaultFileServerID';
+function GetFileServerID(fileServerName:Pchar; fileServerID:PWORD):longint;cdecl;external 'clib' name 'GetFileServerID';
+function GetFileServerID(fileServerName:Pchar; var fileServerID:word):longint;cdecl;external 'clib' name 'GetFileServerID';
+
+function GetInternetAddress(connectionNumber:word;
+                            networkNumber:pointer;
+                            physicalNodeAddress:pointer):longint;cdecl;external 'clib' name 'GetInternetAddress';
+function GetInternetAddress(connectionNumber:word;
+                            var networkNumber;  {4 bytes}
+                            var physicalNodeAddress {6 bytes}):longint;cdecl;external 'clib' name 'GetInternetAddress';
+function GetLANAddress (boardNumber:longint;
+                        nodeAddress:pointer):longint;cdecl;external 'clib' name 'GetLANAddress';
+function GetLANAddress (boardNumber:longint;
+                    var nodeAddress{6 bytes}):longint;cdecl;external 'clib' name 'GetLANAddress';
+
+function GetMaximumNumberOfStations:longint;cdecl;external 'clib' name 'GetMaximumNumberOfStations';
+function GetNetNumber(boardNumber:longint):longint;cdecl;external 'clib' name 'GetNetNumber';
+
+function GetObjectConnectionNumbers (objectName:Pchar;
+                                     objectType:word;
+                                     numberOfConnections:PWORD;
+                                     connectionList:PWORD;
+                                     maxConnections:word):longint;cdecl;external 'clib' name 'GetObjectConnectionNumbers';
+function GetObjectConnectionNumbers (objectName:Pchar;
+                                     objectType:word;
+                                 var numberOfConnections:word;
+                                 var connectionList;  {array of WORD}
+                                     maxConnections:word):longint;cdecl;external 'clib' name 'GetObjectConnectionNumbers';
+
+procedure GetStationAddress(physicalNodeAddress:pointer);cdecl;external 'clib' name 'GetStationAddress';
+procedure GetStationAddress(var physicalNodeAddress {6 bytes});cdecl;external 'clib' name 'GetStationAddress';
+
+function GetUserNameFromNetAddress (internetAddress:PBYTE;
+                                    sequenceNumber:longint;
+                                    userNameP:PUserNameStruct):longint;cdecl;external 'clib' name 'GetUserNameFromNetAddress';
+function GetUserNameFromNetAddress (var internetAddress;  {10 bytes}
+                                    sequenceNumber:longint;
+                                    var userName:TUserNameStruct):longint;cdecl;external 'clib' name 'GetUserNameFromNetAddress';
+
+function LoginToFileServer (objectName:Pchar;
+                            objectType:word;
+                            objectPassword:Pchar):longint;cdecl;external 'clib' name 'LoginToFileServer';
+procedure Logout;cdecl;external 'clib' name 'Logout';
+procedure LogoutFromFileServer(fileServerID:word);cdecl;external 'clib' name 'LogoutFromFileServer';
+function NWDSGetCurrentUser:longint;cdecl;external 'clib' name 'NWDSGetCurrentUser';
+function NWDSSetCurrentUser(userHandle:longint):longint;cdecl;external 'clib' name 'NWDSSetCurrentUser';
+
+function NWDSSetPreferredDSTree (len:longint; treeName:Pchar):longint;cdecl;external 'clib' name 'NWDSSetPreferredDSTree';
+function NWGetPacketBurstBufferCount:longint;cdecl;external 'clib' name 'NWGetPacketBurstBufferCount';
+function NWGetSecurityLevel:longint;cdecl;external 'clib' name 'NWGetSecurityLevel';
+
+function NWNCPSend (functionCode:byte;
+                    sendPacket:pointer; sendLen :word;
+                    replyBuf  :pointer; replyLen:word):longint;cdecl;external 'clib' name 'NWNCPSend';
+function NWNCPSend (functionCode:byte;
+                    var sendPacket; sendLen :word;
+                    var replyBuf;   replyLen:word):longint;cdecl;external 'clib' name 'NWNCPSend';
+
+function NWSetPacketBurstBufferCount(numberOfBuffers:longint):longint;cdecl;external 'clib' name 'NWSetPacketBurstBufferCount';
+function NWSetSecurityLevel(SecurityLevel:longint):longint;cdecl;external 'clib' name 'NWSetSecurityLevel';
+
+function SetConnectionCriticalErrorHandler(func:TConnectionCriticalErrorHandler):longint;cdecl;external 'clib' name 'SetConnectionCriticalErrorHandler';
+{-nwdebug.h--------------------------------------------------------------------}
+{ library-debug flags  }
+
+const
+   CLIB_CONTEXT_CHECK = $002;   { CLib Context  }
+   CLIB_MEMCHECK      = $004;   { Memory Overwrites  }
+   CLIB_RESOURCECHECK = $020;   { Resource Check  }
+   CLIB_THREAD_CHECK  = $200;   { Thread Check  }
+   CLIB_SEMCHECK      = $080;   { Semaphore Checking  }
+   CLIB_RING_BELL     = $040;
+{ dynamic setting and clearing of breakpoints  }
+   EXECUTION_BREAKPOINT  = 0;
+   WRITE_BREAKPOINT      = 1;
+   READ_WRITE_BREAKPOINT = 3;
+
+// most of the functions are in the kernel (system), we define clib here to
+// avoid linker errors
+procedure NWClearBreakpoint(breakpoint:longint);cdecl;external 'clib' name 'NWClearBreakpoint';
+function NWSetBreakpoint(address,breakType:longint):longint;cdecl;external 'clib' name 'NWSetBreakpoint';
+function NWDebugPrintf(format:Pchar; args:array of const):longint;cdecl;external 'clib' name 'NWDebugPrintf';
+function NWDebugPrintf(format:Pchar):longint;cdecl;external 'clib' name 'NWDebugPrintf';
+function NWValidateDebugProfile:longint;cdecl;external 'clib' name 'NWValidateDebugProfile';
+procedure NWBumpFunctionCount(name:Pchar);cdecl;external 'clib' name 'NWBumpFunctionCount';
+procedure NWDisplayBinaryAtAddr(addr:pointer);cdecl;external 'clib' name 'NWDisplayBinaryAtAddr';
+procedure NWDisplayDoubleAtAddr(addr:pointer);cdecl;external 'clib' name 'NWDisplayDoubleAtAddr';
+procedure NWDisplayLConvAtAddr(lc:pointer);cdecl;external 'clib' name 'NWDisplayLConvAtAddr';
+procedure NWDisplayStringAtAddr(s:Pchar; len:longint);cdecl;external 'clib' name 'NWDisplayStringAtAddr';
+procedure NWDisplayTMAtAddr(t:pointer);cdecl;external 'clib' name 'NWDisplayTMAtAddr';
+procedure NWDisplayUnicodeAtAddr(s:pointer; len:longint);cdecl;external 'clib' name 'NWDisplayUnicodeAtAddr';
+procedure NWEnableDebugProfile(flag:longint);cdecl;external 'clib' name 'NWEnableDebugProfile';
+procedure EnterDebugger;cdecl;external 'clib' name 'EnterDebugger';
+function GetDebugSettings:longint;cdecl;external 'clib' name 'GetDebugSettings';
+procedure SetDebugSettings(Settings:longint);cdecl;external 'clib' name 'SetDebugSettings';
+function GetNLMIDFromNLMName(NLMName:PChar):longint;cdecl;external 'clib' name 'GetNLMIDFromNLMName';
+function GetDebugErrorMessage:PChar;cdecl;external 'clib' name 'GetDebugErrorMessage';
+function GetMemoryUsage(NLMID:longint):longint;cdecl;external 'clib' name 'GetMemoryUsage';
+{-nwdfs.h----------------------------------------------------------------------}
+// completion codes
+const
+   DFSFailedCompletion           = -1;
+   DFSNormalCompletion           = 0;
+   DFSInsufficientSpace          = 1;
+   DFSVolumeSegmentDeactivated   = 4;
+   DFSTruncationFailure          = 16;
+   DFSHoleInFileError            = 17;
+   DFSParameterError             = 18;
+   DFSOverlapError               = 19;
+   DFSSegmentError               = 20;
+   DFSBoundryError               = 21;
+   DFSInsufficientLimboFileSpace = 22;
+   DFSNotInDirectFileMode        = 23;
+   DFSOperationBeyondEndOfFile   = 24;
+   DFSOutOfHandles               = 129;
+   DFSHardIOError                = 131;
+   DFSInvalidFileHandle          = 136;
+   DFSNoReadPrivilege            = 147;
+   DFSNoWritePrivilege           = 148;
+   DFSFileDetached               = 149;
+   DFSInsufficientMemory         = 150;
+   DFSInvalidVolume              = 152;
+   DFSIOLockError                = 162;
+
+{$PACKRECORDS C}
+type
+   PFileMapStructure = ^TFileMapStructure;
+   TFileMapStructure = record
+     fileBlock      : longint;
+     volumeBlock    : longint;
+     numberOfBlocks : longint;
+   end;
+
+   PVolumeInformationStructure = ^TVolumeInformationStructure;
+   TVolumeInformationStructure = record
+     VolumeAllocationUnitSizeInBytes           : longint;
+     VolumeSizeInAllocationUnits               : longint;
+     VolumeSectorSize                          : longint;
+     AllocationUnitsUsed                       : longint;
+     AllocationUnitsFreelyAvailable            : longint;
+     AllocationUnitsInDeletedFilesNotAvailable : longint;
+     AllocationUnitsInAvailableDeletedFiles    : longint;
+     NumberOfPhysicalSegmentsInVolume          : longint;
+     PhysicalSegmentSizeInAllocationUnits      : array[0..63] of longint;
+   end;
+
+   PDFSCallBackParameters = ^TDFSCallBackParameters;
+   TDFSCallBackParameters = record
+     localSemaphoreHandle : longint;
+     completionCode       : longint;
+   end;
+
+{-------------------------------------------------------------------------
+  	Definition of setSizeFlags
+ ------------------------------------------------------------------------- }
+
+const
+   SETSIZE_NON_SPARSE_FILE = $00000001;    // Alloc blocks to extend the file
+   SETSIZE_NO_ZERO_FILL    = $00000002;    // Do not zero fill the newly allocated blocks
+   SETSIZE_UNDO_ON_ERR     = $00000004;    // In non sparse cases truncate back to original eof if an error occurs
+   SETSIZE_PHYSICAL_ONLY   = $00000008;    // Change the physical EOF only, dont change logical EOF. This means non sparse for the expand case
+   SETSIZE_LOGICAL_ONLY    = $00000010;    // Change only the logical EOF expand will always be sparse and truncate won't free physical blocks
+
+function DFSclose(fileHandle:longint):longint;cdecl;external 'clib' name 'DFSclose';
+function DFScreat(fileName:Pchar; permission,flagBits:longint):longint;cdecl;external 'clib' name 'DFScreat';
+function DFSExpandFile(fileHandle,fileBlockNumber,
+                       numberOfBlocks,volumeBlockNumber,segmentNumber:longint):longint;cdecl;external 'clib' name 'DFSExpandFile';
+function DFSFreeLimboVolumeSpace(volumeNumber,numberOfBlocks:longint):longint;cdecl;external 'clib' name 'DFSFreeLimboVolumeSpace';
+function DFSsopen(fileName:PChar; access,share,permission,flagBits,dataStream:longint):longint;cdecl;external 'clib' name 'DFSsopen';
+function DFSRead(fileHandle,startingSector,sectorCount:longint; buffer:pointer):longint;cdecl;external 'clib' name 'DFSRead';
+function DFSRead(fileHandle,startingSector,sectorCount:longint; var buffer):longint;cdecl;external 'clib' name 'DFSRead';
+function DFSReadNoWait(fileHandle,startingSector,sectorCount:longint; buffer:pointer; callBackNode:PDFSCallBackParameters):longint;cdecl;external 'clib' name 'DFSReadNoWait';
+function DFSReadNoWait(fileHandle,startingSector,sectorCount:longint; var buffer; var callBackNode:TDFSCallBackParameters):longint;cdecl;external 'clib' name 'DFSReadNoWait';
+function DFSReturnFileMappingInformation(fileHandle,startingBlockNumber:longint; numberOfEntries:Plongint; tableSize:longint; table:PFileMapStructure):longint;cdecl;external 'clib' name 'DFSReturnFileMappingInformation';
+function DFSReturnFileMappingInformation(fileHandle,startingBlockNumber:longint; var numberOfEntries:longint; tableSize:longint; var table:TFileMapStructure):longint;cdecl;external 'clib' name 'DFSReturnFileMappingInformation';
+function DFSReturnVolumeBlockInformation(volumeNumber,startingBlockNumber,numberOfBlocks:longint; buffer:Pointer):longint;cdecl;external 'clib' name 'DFSReturnVolumeBlockInformation';
+function DFSReturnVolumeBlockInformation(volumeNumber,startingBlockNumber,numberOfBlocks:longint; var buffer):longint;cdecl;external 'clib' name 'DFSReturnVolumeBlockInformation';
+function DFSReturnVolumeMappingInformation(volumeNumber:longint; volumeInformation:PVolumeInformationStructure):longint;cdecl;external 'clib' name 'DFSReturnVolumeMappingInformation';
+function DFSSetDataSize (handle:longint; newFileSize:int64; setSizeFlags:longint):longint; cdecl;external 'clib' name 'DFSSetDataSize';
+function DFSSetEndOfFile(handle,newFileSize,returnTruncatedBlocksFlag:longint):longint;cdecl;external 'clib' name 'DFSSetEndOfFile';
+function DFSWrite(fileHandle,startingSector,sectorCount:longint; buffer:pointer):longint;cdecl;external 'clib' name 'DFSWrite';
+function DFSWrite(fileHandle,startingSector,sectorCount:longint; var buffer):longint;cdecl;external 'clib' name 'DFSWrite';
+function DFSWriteNoWait(fileHandle,startingSector,sectorCount:longint; buffer:pointer; callBackNode:PDFSCallBackParameters):longint;cdecl;external 'clib' name 'DFSWriteNoWait';
+function DFSWriteNoWait(fileHandle,startingSector,sectorCount:longint; var buffer; var callBackNode:TDFSCallBackParameters):longint;cdecl;external 'clib' name 'DFSWriteNoWait';
+{-nwdos.h----------------------------------------------------------------------}
+{$include npackon.inc}
+type
+   Pfind_t = ^Tfind_t;
+   Tfind_t = record
+        reserved : array[0..20] of char;
+        attrib : char;
+        wr_time : word;
+        wr_date : word;
+        size : longint;
+        name : array[0..12] of char;
+     end;
+
+{$include npackoff.inc}
+
+function DOSChangeFileMode(name:Pchar; attributes:Plongint; _function:longint; newAttributes:longint):longint;cdecl;external 'clib' name 'DOSChangeFileMode';
+function DOSClose(handle:longint):longint;cdecl;external 'clib' name 'DOSClose';
+function DOSCopy(NetWareFileName,DOSFileName:Pchar):longint;cdecl;external 'clib' name 'DOSCopy';
+function DOSCreate(fileName:Pchar; handle:Plongint):longint;cdecl;external 'clib' name 'DOSCreate';
+function DOSCreate(fileName:Pchar; var handle:longint):longint;cdecl;external 'clib' name 'DOSCreate';
+function DOSsopen(filename:Pchar; access,share,permission:longint):longint;cdecl;external 'clib' name 'DOSsopen';
+function DOSFindFirstFile(fileName:Pchar; searchAttributes:word; diskTransferAddress:Pfind_t):longint;cdecl;external 'clib' name 'DOSFindFirstFile';
+function DOSFindNextFile(diskTransferAddress:Pfind_t):longint;cdecl;external 'clib' name 'DOSFindNextFile';
+function DOSMkdir(__dirName:Pchar):longint;cdecl;external 'clib' name 'DOSMkdir';
+function DOSOpen(fileName:Pchar; handle:Plongint):longint;cdecl;external 'clib' name 'DOSOpen';
+function DOSOpen(fileName:Pchar; var handle:longint):longint;cdecl;external 'clib' name 'DOSOpen';
+function DOSPresent:longint;cdecl;external 'clib' name 'DOSPresent';
+function DOSRead(handle,fileOffset:longint; buffer:pointer; numberOfBytesToRead:longint; numberOfBytesRead:Plongint):longint;cdecl;external 'clib' name 'DOSRead';
+function DOSRead(handle,fileOffset:longint; var buffer; numberOfBytesToRead:longint; var numberOfBytesRead:longint):longint;cdecl;external 'clib' name 'DOSRead';
+function DOSRemove(name:Pchar):longint;cdecl;external 'clib' name 'DOSRemove';
+function DOSRename(srcName,dstName:Pchar):longint;cdecl;external 'clib' name 'DOSRename';
+function DOSRmdir(Name:Pchar):longint;cdecl;external 'clib' name 'DOSRmdir';
+function DOSSetDateAndTime(handle,date,time:longint):longint;cdecl;external 'clib' name 'DOSSetDateAndTime';
+procedure DOSShutOffFloppyDrive;cdecl;external 'clib' name 'DOSShutOffFloppyDrive';
+function DOSUnlink(Name:Pchar):longint;cdecl;external 'clib' name 'DOSUnlink';
+function DOSWrite(handle,fileOffset:longint; buffer:pointer; numberOfBytesToWrite:longint; numberOfBytesWritten:Plongint):longint;cdecl;external 'clib' name 'DOSWrite';
+function DOSWrite(handle,fileOffset:longint; var buffer; numberOfBytesToWrite:longint; var numberOfBytesWritten:longint):longint;cdecl;external 'clib' name 'DOSWrite';
+{-nwfattr.h--------------------------------------------------------------------}
+const
+   NWSH_PRE_401D_COMPAT = $80000000;  // for multiple thread use, see documentation for sopen()...
+{ Attribute values for use with existing files                              }
+{ Normal (read/write) file         }
+   _A_NORMAL             = $00000000;
+   _A_RDONLY             = $00000001;
+   _A_HIDDEN             = $00000002;
+   _A_SYSTEM             = $00000004;
+   _A_EXECUTE            = $00000008;
+   _A_VOLID              = $00000008;  // Volume ID entry
+   _A_SUBDIR             = $00000010;
+   _A_ARCH               = $00000020;
+   _A_SHARE              = $00000080;
+   _A_NO_SUBALLOC        = $00000800;  // Don't sub alloc. this file
+   _A_TRANS              = $00001000;  // Transactional file (TTS usable)
+   _A_READAUD            = $00004000;  // Read audit
+   _A_WRITAUD            = $00008000;  // Write audit
+   _A_IMMPURG            = $00010000;  // Immediate purge
+   _A_NORENAM            = $00020000;  // Rename inhibit
+   _A_NODELET            = $00040000;  // Delete inhibit
+   _A_NOCOPY             = $00080000;  // Copy inhibit
+   _A_FILE_MIGRATED      = $00400000;  // File has been migrated
+   _A_DONT_MIGRATE       = $00800000;  // Don't migrate this file
+   _A_IMMEDIATE_COMPRESS = $02000000;  // Compress this file immediately
+   _A_FILE_COMPRESSED    = $04000000;  // File is compressed
+   _A_DONT_COMPRESS      = $08000000;  // Don't compress this file
+   _A_CANT_COMPRESS      = $20000000;  // Can't compress this file
+   _A_ATTR_ARCHIVE       = $40000000;  // Entry has had an EA modified
+                                       // an ownerID changed, or trustee
+                                       // info changed, etc.
+
+// Attribute values usable during file creation
+// Use: OR value with the file mode value to initialize the mode parameter
+   FA_NORMAL  = _A_NORMAL shl 16;
+   FA_RDONLY  = _A_RDONLY shl 16;
+   FA_HIDDEN  = _A_HIDDEN shl 16;
+   FA_SYSTEM  = _A_SYSTEM shl 16;
+   FA_EXECUTE = _A_EXECUTE shl 16;
+   FA_SUBDIR  = _A_SUBDIR shl 16;
+   FA_ARCHIVE = _A_ARCH shl 16;
+   FA_SHARE   = _A_SHARE shl 16;
+{ Extended file attributes values  }
+   FA_TRANSAC = _A_TRANS shl 12;
+   FA_READAUD = _A_READAUD shl 12;
+   FA_WRITEAUD= _A_WRITAUD shl 12;
+   FA_IMMPURG = _A_IMMPURG shl 12;
+   FA_NORENAM = _A_NORENAM shl 12;
+   FA_NODELET = _A_NODELET shl 12;
+   FA_NOCOPY  = _A_NOCOPY shl 12;
+{ Sharing values for sharable open functions  }
+{ compatibility mode    }
+   SH_COMPAT = $00;
+{ deny read/write mode  }
+   SH_DENYRW = $10;
+{ deny write mode       }
+   SH_DENYWR = $20;
+{ deny read mode        }
+   SH_DENYRD = $30;
+{ deny none mode        }
+   SH_DENYNO = $40;
+{ FEcreat/FEsopen flagBits parameter values used when creating a file  }
+   DELETE_FILE_ON_CREATE_BIT        = $0001;
+   NO_RIGHTS_CHECK_ON_CREATE_BIT    = $0002;
+{ FEsopen flagBits parameter values used when opening a file  }
+   FILE_WRITE_THROUGH_BIT           = $00000040;
+   ENABLE_IO_ON_COMPRESSED_DATA_BIT = $00000100;
+   LEAVE_FILE_COMPRESSED_DATA_BIT   = $00000200;
+   DELETE_FILE_ON_CLOSE_BIT         = $00000400;
+   NO_RIGHTS_CHECK_ON_OPEN_BIT      = $00010000;
+   OK_TO_OPEN_DOS_FILE              = $80000000;
+{ Volume Flags used with NWGetVolumeFlags and NWSetVolumeFlags  }
+   SUB_ALLOCATION_FLAG         = $02;  // if set sub allocation units valid on this volume
+   FILE_COMPRESSION_FLAG       = $04;  // if set file compression enabled on this volume
+   DATA_MIGRATION_FLAG         = $08;  // if set data migration is allowed on this volume
+   VOLUME_IMMEDIATE_PURGE_FLAG = $40;  // if set volume is marked as immediate purge
+{ Name space values  }
+   DOSNameSpace      = 0;
+   MACNameSpace      = 1;
+   NFSNameSpace      = 2;
+   FTAMNameSpace     = 3;
+   OS2NameSpace      = 4;
+   LONGNameSpace     = 4;
+   NTNameSpace       = 5;
+   MAX_NAMESPACES    = 6;
+   NWDOS_NAME_SPACE  = DOSNameSpace;
+   NWMAC_NAME_SPACE  = MACNameSpace;
+   NWNFS_NAME_SPACE  = NFSNameSpace;
+   NWFTAM_NAME_SPACE = FTAMNameSpace;
+   NWOS2_NAME_SPACE  = OS2NameSpace;
+   NWLONG_NAME_SPACE = LONGNameSpace;
+   NWNT_NAME_SPACE   = NTNameSpace;
+{ Data stream values  }
+   PrimaryDataStream = 0;
+   MACResourceForkDataStream = 1;
+   FTAMStructuringDataStream = 2;
+{ File path length values  }
+   _MAX_PATH = 255;           // maximum length of full pathname
+   _MAX_SERVER = 48;          // maximum length of server name
+   _MAX_VOLUME = 16;          // maximum length of volume component
+   _MAX_DRIVE  = 3;           // maximum length of drive component
+   _MAX_DIR    = 255;         // maximum length of path component
+   _MAX_FNAME  = 9;           // maximum length of file name component
+   _MAX_EXT    = 5;           // maximum length of extension component
+   _MAX_NAME   = 13;          // maximum length of file name
+   NAME_MAX    = 12;          // maximum length of file name (alternate view)
+   
+{ Modify structure mask values  }
+   MModifyNameBit = $0001;
+   MFileAttributesBit = $0002;
+   MCreateDateBit = $0004;
+   MCreateTimeBit = $0008;
+   MOwnerIDBit = $0010;
+   MLastArchivedDateBit = $0020;
+   MLastArchivedTimeBit = $0040;
+   MLastArchivedIDBit = $0080;
+   MLastUpdatedDateBit = $0100;
+   MLastUpdatedTimeBit = $0200;
+   MLastUpdatedIDBit = $0400;
+   MLastAccessedDateBit = $0800;
+   MInheritanceRestrictionMaskBit = $1000;
+   MMaximumSpaceBit = $2000;
+   MLastUpdatedInSecondsBit = $4000;
+{$include npackon.inc}
+type
+   PModifyStructure = ^TModifyStructure;
+   TModifyStructure = record
+        MModifyName : PBYTE;
+        MFileAttributes : longint;
+        MFileAttributesMask : longint;
+        MCreateDate : word;
+        MCreateTime : word;
+        MOwnerID : longint;
+        MLastArchivedDate : word;
+        MLastArchivedTime : word;
+        MLastArchivedID : longint;
+        MLastUpdatedDate : word;
+        MLastUpdatedTime : word;
+        MLastUpdatedID : longint;
+        MLastAccessedDate : word;
+        MInheritanceGrantMask : word;
+        MInheritanceRevokeMask : word;
+        MMaximumSpace : longint;
+        MLastUpdatedInSeconds : longint;
+     end;
+
+{$include npackoff.inc}
+
+{-nwadv.h----------------------------------------------------------------------}
+{$include npackon.inc}
+{ Resource tag signatures for AllocateResourceTag  }
+
+const
+   AllocSignature = $54524C41;
+   AESProcessSignature = $50534541;
+   CacheNonMovableMemorySignature = $544D4E43;
+   ConsoleCommandSignature = $4D4F4343;
+   HardwareInterruptSignature = $50544E49;
+   InterruptTimeCallBackSignature = $524D4954;
+   SemiPermMemorySignature = $454D5053;
+   DebuggerSignature = $47554244;
+   BreakpointSignature = $54504B42;
+{ Data structure for RegisterConsoleCommand  }
+{ set by RegisterConsoleCommand  }
+{ parsing routing (user defined)  }
+{ set to resource tag  }
+type
+   PcommandParserStructure = ^TcommandParserStructure;
+   TcommandParserStructure = record
+        Link : PcommandParserStructure;
+        parseRoutine : function (screenID:longint; commandLine:PBYTE):longint;cdecl;
+        RTag : longint;
+     end;
+
+{
+   Structures and constants for RegisterForEvent function. Unless otherwise
+   noted an event does NOT call a Warn routine.
+ }
+
+const
+   EVENT_VOL_SYS_MOUNT = 0;
+{ parameter is undefined. Report Routine will be called immediately 
+      after vol SYS has been mounted.
+     }
+   EVENT_VOL_SYS_DISMOUNT = 1;
+{ parameter is undefined. Warn Routine and Report Routine will be
+      called before vol SYS is dismounted.
+     }
+   EVENT_ANY_VOL_MOUNT = 2;
+{ parameter is volume number. Report Routine will be called immediately
+      after any volume is mounted.
+     }
+   EVENT_ANY_VOL_DISMOUNT = 3;
+{ parameter is volume number. Warn Routine and Report Routine will be
+      called before any volume is dismounted.
+     }
+   EVENT_DOWN_SERVER = 4;
+{ parameter is undefined. Warn Routine and Report Routine will be
+      called before the server is shut down.
+     }
+   EVENT_EXIT_TO_DOS = 7;
+{ parameter is undefined. The Report Routine will be called before the
+      server exits to DOS.
+     }
+   EVENT_MODULE_UNLOAD = 8;
+{ parameter is module handle. Warn Routine and Report Routine will be
+      called when a module is unloaded from the console command line. Only
+      the Report Routine will be called when a module unloads itself.
+     }
+   EVENT_CLEAR_CONNECTION = 9;
+{ parameter is connection number. Report Routine is called before the
+      connection is cleared.
+     }
+   EVENT_LOGIN_USER = 10;
+{ parameter is connection number. Report Routine is called after the
+      connection has been allocated.
+     }
+   EVENT_CREATE_BINDERY_OBJ = 11;
+{ parameter is object ID. Report Routine is called after the object is
+      created and entered in the bindery.
+     }
+   EVENT_DELETE_BINDERY_OBJ = 12;
+{ parameter is object ID. Report Routine is called before the object is
+      removed from the bindery.
+     }
+   EVENT_CHANGE_SECURITY = 13;
+{ parameter is a pointer a structure of type EventSecurityChangeStruct.
+      Report Routine is called after a security
+      equivalence change has occurred.
+     }
+   EVENT_ACTIVATE_SCREEN = 14;
+{ Parameter is screen ID. Report routine is called after the
+      screen becomes the active screen.
+     }
+   EVENT_UPDATE_SCREEN = 15;
+{ Parameter is screen ID. Report routine is called after a change is
+      made to the screen image.
+     }
+   EVENT_UPDATE_CURSOR = 16;
+{ Parameter is screen ID. Report routine is called after a change to
+      the cursor position or state occurs.
+     }
+   EVENT_KEY_WAS_PRESSED = 17;
+{ Parameter is undefined. Report routine is called whenever a
+      key on the keyboard is pressed (including shift/alt/control).
+      This routine is called at interrupt time.
+     }
+   EVENT_DEACTIVATE_SCREEN = 18;
+{ Parameter is screen ID. Report routine is called when the
+      screen becomes inactive.
+     }
+   EVENT_TRUSTEE_CHANGE = 19;
+{ Parameter is a pointer to type struct EventTrusteeChangeStruct. The
+      report routine is called everytime there is a change to a trustee in
+      the file system. Shouldn't sleep.
+     }
+   EVENT_OPEN_SCREEN = 20;
+{ Parameter is the screen ID for the newly created screen. The report
+      routine will be called after the screen is created.
+     }
+   EVENT_CLOSE_SCREEN = 21;
+{ Parameter is the screen ID for the screen that will be closed. The
+      report routine will be called before the screen is closed.
+     }
+   EVENT_MODIFY_DIR_ENTRY = 22;
+{ Parameter is a pointer to a structure of type EventModifyDirEntryStruct
+      which contains the modify information. The report routine will be 
+      called right after the entry is changed but before the directory
+      entry is unlocked. The report routine must not go to sleep. 
+     }
+   EVENT_NO_RELINQUISH_CONTROL = 23;
+{ Parameter is the running process. This will be called when the
+      timer detects that a process is hogging the processor. The report
+      routine must not sleep.
+     }
+   EVENT_THREAD_SWITCH = 25;
+{ Parameter is the threadID of the thread that was executing when the
+      thread switch occurred. The report routine will be called when the
+      new thread begins executing. The report routine must not go to sleep.
+     }
+   EVENT_MODULE_LOAD = 27;
+{ parameter is module handle. The report routine will be called
+      after a module has loaded.
+     }
+   EVENT_CREATE_PROCESS = 28;
+{ parameter is the PID of the process being created. It is called
+      after the process is created. The report routine may not sleep.
+     }
+   EVENT_DESTROY_PROCESS = 29;
+{ parameter is the PID of the process being destroyed. It is called
+      before the process is actually destroyed. The report routine may not
+      sleep.
+     }
+   EVENT_NEW_PUBLIC = 32;
+{ Parameter is a pointer to a length preceded string which is the name
+      of the new public entry point. This event may not sleep.
+     }
+   EVENT_PROTOCOL_BIND = 33;
+{ Parameter is a pointer to a structure of type EventProtocolBindStruct.
+      This event is generated every time a board is bound to a protocol.
+      This event may sleep.
+     }
+   EVENT_PROTOCOL_UNBIND = 34;
+{ Parameter is a pointer to a structure of type EventProtocolBindStruct.
+      This event is generated every time a board is unbound from a protocol.
+      This event may sleep.
+     }
+   EVENT_ALLOCATE_CONNECTION = 37;
+{ parameter is connection number. Report Routine is called after the
+      connection is allocated.
+     }
+   EVENT_LOGOUT_CONNECTION = 38;
+{ parameter is connection number. Report Routine is called before the
+      connection is logged out. The event handler may sleep.
+     }
+   EVENT_MLID_REGISTER = 39;
+{ parameter is board number. Report Routine is called after the MLID
+      is registered.
+     }
+   EVENT_MLID_DEREGISTER = 40;
+{ parameter is board number. Report Routine is called before the MLID
+      is deregistered.
+     }
+   EVENT_DATA_MIGRATION = 41;
+{ Parameter is a pointer to a structure of type EventDateMigrationInfo.
+      This event is generated when a file's data has been migrated.
+    }
+   EVENT_DATA_DEMIGRATION = 42;
+{ Parameter is a pointer to a structure of type EventDateMigrationInfo.
+      This event is generated when a file's data has been de-migrated.
+    }
+   EVENT_QUEUE_ACTION = 43;
+{   Parameter is a pointer to a structure of type EventQueueNote.
+      This event is generated when a queue is activated, deactivated,
+      created, or deleted.
+    }
+   EVENT_NETWARE_ALERT = 44;
+{ Parameter is a pointer to a structure of type EventNetwareAlertStruct.
+      This event is generated anytime the following alert calls are
+      made:
+              NetWareAlert        NW 4.X
+     
+        The report routine may sleep.
+     }
+   EVENT_CREATE_OBJECT = 46;
+{ Parameter is a pointer to a structure of type EventBinderyObject
+      or EventDSObject
+     }
+   EVENT_DELETE_OBJECT = 47;
+{ Parameter is a pointer to a structure of type EventBinderyObject
+      or EventDSObject
+     }
+   EVENT_RENAME_OBJECT = 48;
+{ Parameter is a pointer to a structure of type EventBinderyObject
+      or EventDSObject
+     }
+   EVENT_VALUE_CHANGE = 49;
+{ Parameter is a pointer to a structure of type EventBinderyObject
+      or EventDSObject
+     }
+   EVENT_CLOSE_FILE = 50;
+{ Parameter is a pointer to a structure of type EventCloseFileInfo.  }
+   EVENT_CHANGE_TIME = 51;
+{ This event is given when the time is changed or when Time
+      Synchronization schedules a nonuniform adjustment. The parameter is
+      the UTC time (in seconds) before the time change. The current time
+      is available from the OS. Since you have no way of knowing the
+      magnitudue of the time change, nor whether it has taken place or is
+      scheduled for the next clock interrupt, you must detect the time
+      change on your own. In general, if current time is less than old
+      time, or at least two seconds ahead of old time, then the time change
+      has been applied. You must wait for one of those conditions to be
+      sure that the time change has "settled down" before you can assume
+      that the event has "happened."
+     }
+   EVENT_MOVE_OBJECT = 52;
+{ Parameter is a pointer to a structure of type EventBinderyObject
+      or EventDSObject
+     }
+   EVENT_VALUE_ADD = 53;
+{ Parameter is a pointer to a structure of type EventBinderyObject
+      or EventDSObject
+     }
+   EVENT_VALUE_DEL = 54;
+{ Parameter is a pointer to a structure of type EventBinderyObject
+      or EventDSObject
+     }
+   EVENT_DM_KEY_MODIFIED = 55;
+{ Parameter is a pointer to a structure of type EventDMKeyModified
+     }
+   EVENT_MODULE_UNLOADED = 56;
+{ Parameter is module handle. Report Routine will be called after the
+      NLM's exit routine has been called, after his resources have been
+      returned to the OS, and after he has been unlinked from the OS's lists.
+      The only thing left of this NLM is the memory for his load definition
+      structure, data image, and code image.
+     }
+   EVENT_REMOVE_PUBLIC = 57;
+{ Parameter is the address of the public entry point. This only happens
+      on module unload.
+     }
+   EVENT_DS_EVENT = 58;
+{ Parameter is the address of a DS defined event structure   }
+   EVENT_UNICODE = 59;
+{ Parameter is the address of a UNICODE defined event structure  }
+   EVENT_SFT3_SERVER_STATE = 60;
+{ Parameter is the ServerState Number
+      (Refer to messtype.h, server state codes)
+      IOEngineState                          0
+      PrimaryNoSecondaryState                1
+      PrimarySyncingWithSecondaryState       2
+      PrimaryTransferingMemoryImageState     3
+      PrimaryWithSecondaryState              4
+      SecondaryTransferingMemoryImageState   5
+      SecondaryMirroredState                 6
+    }
+   EVENT_SFT3_IMAGE_STATE = 61;
+{ Parameter is memory mirror state  }
+{ 0 = Not mirrored  }
+{ 1 = Mirrored  }
+   EVENT_SFT3_PRESYNC_STATE = 62;
+{ called when the primary is about ready to synchronize  }
+{ with the secondary   }
+{ Parameter is unsed for now.  }
+{ This event report is allowed to sleep  }
+   EVENT_ALTERNATE_MOUNT_VOLUME = 63;
+{ called when NetWare is not aware of the volume name to be mounted,  }
+{ Parameter is used to pass a event structure EventAlternateMountVolume. }
+{ This event report is allowed to sleep, also the return code is in the  }
+{ structre, after it has been processed.  }
+   EVENT_CONSOLE_CONFIG_COMMAND = 64;
+{ called when the console command CONFIG is typed on the server command  }
+{ line. The event report is allowed to sleep.  The console screen handle  }
+{ pointer is passed as the only parameter  }
+   EVENT_CONSOLE_VERSION_COMMAND = 65;
+{ called when the console command VERSION is typed on the server command  }
+{ line. The event report is allowed to sleep.  A pointer to the structure  }
+{ struct EventConfigVersionCmdInfo to help in the displaying to the screen  }
+   EVENT_PRE_LOAD_NLM = 66;
+{ called while an NLM is being loaded but before most of the work is
+      done. The data and code segments have not been allocated yet. The
+      event report is allowed to sleep. The parameter is a pointer to an
+      NLM Load File Header structure.
+     }
+   EVENT_LOW_MEMORY = 67;
+{ called when the cache memory allocator tries to allocate a cache block
+      and fails; only one event per minute will be generated. It happens
+      in conjunction with the netware alert. The event report can block.
+      The parameter is a zero. This event is mainly for OS2 based NetWare
+      so it can try to borrow memory back from OS2.
+     }
+{----------------------------------------------------------- 
+     Flags for the trustee change event (EVENT_TRUSTEE_CHANGE)   
+     ----------------------------------------------------------- }
+   EVENT_NEW_TRUSTEE = 1;
+   EVENT_REMOVE_TRUSTEE = 2;
+{------------------------------------------------------------- 
+     Flags for the change security event (EVENT_CHANGE_SECURITY)   
+     ------------------------------------------------------------- }
+   EVENT_ADD_EQUIVALENCE = 1;
+   EVENT_REMOVE_EQUIVALENCE = 2;
+{---------------------------------------------- 
+     Structure returned for EVENT_TRUSTEE_CHANGE    
+     ---------------------------------------------- }
+{ flags are EVENT_NEW_TRUSTEE and EVENT_REMOVE_TRUSTEE  }
+type
+   PEventTrusteeChangeStruct = ^TEventTrusteeChangeStruct;
+   TEventTrusteeChangeStruct = record
+        objectID : longint;
+        entryID : longint;
+        volumeNumber : longint;
+        changeFlags : longint;
+        newRights : longint;
+     end;
+
+{----------------------------------------------- 
+     Structure returned for EVENT_CHANGE_SECURITY    
+     ----------------------------------------------- }
+{ EVENT_ADD_EQUIVALENCE and EVENT_REMOVE_EQUIVALENCE  }
+   PEventSecurityChangeStruct = ^TEventSecurityChangeStruct;
+   TEventSecurityChangeStruct = record
+        objectID : longint;
+        equivalentID : longint;
+        changeFlags : longint;
+     end;
+
+{------------------------------------------------ 
+     Structure returned for EVENT_MODIFY_DIR_ENTRY    
+     ------------------------------------------------ }
+   PEventModifyDirEntryStruct = ^TEventModifyDirEntryStruct;
+   TEventModifyDirEntryStruct = record
+        primaryDirectoryEntry : longint;
+        nameSpace : longint;
+        modifyBits : longint;
+        modifyVector : PModifyStructure;
+        volumeNumber : longint;
+        directoryEntry : longint;
+     end;
+
+{---------------------------------------------------- 
+     Structure returned for EVENT_PROTOCOL_BIND & UNBIND  
+     ---------------------------------------------------- }
+   PEventProtocolBindStruct = ^TEventProtocolBindStruct;
+   TEventProtocolBindStruct = record
+        boardNumber : longint;
+        protocolNumber : longint;
+     end;
+
+{---------------------------------------------------------- 
+     Structure returned for EVENT_DATA_MIGRATION & DEMIGRATION  
+     ---------------------------------------------------------- }
+{ 255 + 1 len byte  }
+   PEventDateMigrationInfo = ^TEventDateMigrationInfo;
+   TEventDateMigrationInfo = record
+        FileSystemTypeID : longint;
+        Volume : longint;
+        DOSDirEntry : longint;
+        OwnerDirEntry : longint;
+        OwnerNameSpace : longint;
+        OwnerFileName : array[0..255] of byte;
+     end;
+
+{------------------------------------------------ 
+     Structure returned for EVENT_QUEUE_ACTION        
+     ------------------------------------------------ }
+{ 0=created, 1=deleted, 2 = activated, 3 = deactivated  }
+   PEventQueueNote = ^TEventQueueNote;
+   TEventQueueNote = record
+        QAction : longint;
+        QID : longint;
+        QName : array[0..49] of byte;
+     end;
+
+{------------------------------------------------ 
+     Structure returned for EVENT_NETWARE_ALERT       
+     ------------------------------------------------ }
+   PEventNetwareAlertStruct = ^TEventNetwareAlertStruct;
+   TEventNetwareAlertStruct = record
+        alertFlags : longint;
+        alertId : longint;
+        alertLocus : longint;
+        alertClass : longint;
+        alertSeverity : longint;
+        targetStationCount : longint;
+        targetStationList : array[0..31] of longint;
+        targetNotificationBits : longint;
+        alertParmCount : longint;
+        alertDataPtr : pointer;
+        NetWorkManagementAttributePointer : pointer;
+        alertUnused : array[0..1] of longint;
+        alertControlStringMessageNumber : longint;
+        alertControlString : array[0..255] of byte;
+        alertParameters : array[0..(256 + 256)-1] of byte;
+        alertModuleName : array[0..35] of byte;
+        alertModuleMajorVersion : longint;
+        alertModuleMinorVersion : longint;
+        alertModuleRevision : longint;
+     end;
+
+{ set to 'BIND' for bindery  }
+   PEventBinderyObject = ^TEventBinderyObject;
+   TEventBinderyObject = record
+        EventObjectType : longint;
+        ObjectID : longint;
+        ObjectType : longint;
+     end;
+
+{ 'DNIB'  }
+
+const
+   EventBinderySignature = $444e4942;
+{ 'CVSD'  }
+   EventDSSignature = $43565344;
+{ set to 'DSVC' for directory services  }
+{ add, delete, etc.  }
+{ DS defined entry structure  }
+type
+   PEventDSObject = ^TEventDSObject;
+   TEventDSObject = record
+        EventObjectType : longint;
+        EventType : longint;
+        entry : pointer;
+     end;
+
+   PEventCloseFileInfo = ^TEventCloseFileInfo;
+   TEventCloseFileInfo = record
+        fileHandle : longint;
+        station : longint;
+        task : longint;
+        fileHandleFlags : longint;
+        completionCode : longint;
+     end;
+
+   TreportProcedure = procedure (parameter:longint; userParameter:longint); cdecl;
+   TOutputRoutine   = procedure (controlString:pointer; args:array of const); cdecl;
+   TWarnProcedure   = function  (OutputRoutine:TOutputRoutine; parameter,userParameter:longint):longint; cdecl;
+
+{ struct EventCloseFileInfo's fileHandleFlags  }
+
+const
+   ECNotReadableBit = $00000001;
+   ECNotWriteableBit = $00000002;
+   ECWrittenBit = $00000004;
+   ECDetachedBit = $00000008;
+   ECDirectFileSystemBit = $00000020;
+   ECFileWriteThroughBit = $00000040;
+{$include npackoff.inc}
+
+function AllocateResourceTag (NLMHandle:longint;
+                              descriptionString:PChar;
+                              resourceType:longint):longint;cdecl;external 'clib' name 'AllocateResourceTag';
+function DSAllocateEventTag (DSEventSignature:longint):pointer;cdecl;external 'clib' name 'DSAllocateEventTag';
+function GetCurrentOSLanguageID:longint;cdecl;external 'clib' name 'GetCurrentOSLanguageID';
+function GetFileHoleMap (handle:longint;
+                         startingPosition:longint;
+                         numberOfBlocks:longint;
+                         replyBitMapP:PBYTE;
+                         allocationUnitSizeP:Plongint):longint;cdecl;external 'clib' name 'GetFileHoleMap';
+function GetFileHoleMap (handle:longint;
+                         startingPosition:longint;
+                         numberOfBlocks:longint;
+                         var replyBitMapP;
+                         var allocationUnitSizeP:longint):longint;cdecl;external 'clib' name 'GetFileHoleMap';
+function GetSetableParameterValue (connectionNumber:longint;
+                                   setableParameterString:PChar;
+                                   returnValue:pointer):longint;cdecl;external 'clib' name 'GetSetableParameterValue';
+function GetSettableParameterValue (connectionNumber:longint;
+                                    setableParameterString:PBYTE;
+                                    returnValue:pointer):longint;cdecl;external 'clib' name 'GetSetableParameterValue';  // use this define if the misspelling is too annoying
+function GetThreadDataAreaPtr:pointer;cdecl;external 'clib' name 'GetThreadDataAreaPtr';
+function ImportSymbol(NLMHandle:longint; symbolName:Pchar):pointer;cdecl;external 'clib' name 'ImportSymbol';
+function LoadLanguageMessageTable(messageTable:PPPchar; messageCount:Plongint; languageID:Plongint):longint;cdecl;external 'clib' name 'LoadLanguageMessageTable';
+function LoadLanguageMessageTable(var messageTable; var messageCount:longint; languageID:Plongint):longint;cdecl;external 'clib' name 'LoadLanguageMessageTable';
+function NWAddSearchPathAtEnd(searchPath:PChar; number:Plongint):longint;cdecl;external 'clib' name 'NWAddSearchPathAtEnd';
+function NWAddSearchPathAtEnd(searchPath:PChar; var number:longint):longint;cdecl;external 'clib' name 'NWAddSearchPathAtEnd';
+function NWDeleteSearchPath(searchPathNumber:longint):longint;cdecl;external 'clib' name 'NWDeleteSearchPath';
+function NWGetSearchPathElement (searchPathNumber:longint;
+                                 isDOSSearchPath:Plongint;
+                                 searchPath:PChar):longint;cdecl;external 'clib' name 'NWGetSearchPathElement';
+function NWGetSearchPathElement (searchPathNumber:longint;
+                                 var isDOSSearchPath:boolean;
+                                 searchPath:PChar):longint;cdecl;external 'clib' name 'NWGetSearchPathElement';
+function NWInsertSearchPath(searchPathNumber:longint; path:PChar):longint;cdecl;external 'clib' name 'NWInsertSearchPath';
+function RegisterConsoleCommand(newCommandParser:PcommandParserStructure):longint;cdecl;external 'clib' name 'RegisterConsoleCommand';
+function RegisterForEvent (eventType:longint;
+                           reportProcedure:TreportProcedure;
+                           warnProcedure:TwarnProcedure):longint;cdecl;external 'clib' name 'RegisterForEvent';
+function RenameLanguage (languageID:longint;
+                         newLanguageName:PChar;
+                         showErrorsToConsole:longint):longint;cdecl;external 'clib' name 'RenameLanguage';
+function ReturnLanguageName(languageID:longint; languageName:PChar):longint;cdecl;external 'clib' name 'ReturnLanguageName';
+procedure SaveThreadDataAreaPtr(threadDataAreaPtr:pointer);cdecl;external 'clib' name 'SaveThreadDataAreaPtr';
+    { -1 for all, COMMUNICATIONS, MEMORY, etc  }
+    { 0 for first time  }
+    { 0 = number, 1 = boolean, 2 = time ticks., etc  }
+    { STARTUP, HIDE, etc  }
+    { COMMUNICATIONS, MEMORY, etc  }
+    { description string  }
+function ScanSetableParameters (scanCategory:longint;
+                                scanSequence:Plongint;
+                                rParameterName:PBYTE;
+                                rType:Plongint;
+                                rFlags:Plongint;
+                                rCategory:Plongint;
+                                rParameterDescription:pointer;
+                                rCurrentValue:pointer;
+                                rLowerLimit:Plongint;
+                                rUpperLimit:Plongint):longint;cdecl;external 'clib' name 'ScanSetableParameters';
+function SetCurrentOSLanguageID(newLanguageID:longint):longint;cdecl;external 'clib' name 'SetCurrentOSLanguageID';
+function SetSetableParameterValue (connectionNumber:longint;
+                                   setableParameterString:PBYTE;
+                                   newValue:pointer):longint;cdecl;external 'clib' name 'SetSetableParameterValue';
+procedure SynchronizeStart;cdecl;external 'clib' name 'SynchronizeStart';
+function UnimportSymbol (NLMHandle:longint;
+                         symbolName:Pchar):longint;cdecl;external 'clib' name 'UnimportSymbol';
+function UnRegisterConsoleCommand (commandParserToDelete:PcommandParserStructure):longint;cdecl;external 'clib' name 'UnRegisterConsoleCommand';
+function UnregisterForEvent (eventHandle:longint):longint;cdecl;external 'clib' name 'UnregisterForEvent';
+{-nwfileio.h-------------------------------------------------------------------}
+type
+   PcacheBufferStructure = ^TcacheBufferStructure;
+   TcacheBufferStructure = record
+        cacheBufferPointer : Pchar;
+        cacheBufferLength  : longint;
+        completionCode     : longint;
+     end;
+   TT_cacheBufferStructure = TcacheBufferStructure;
+   PT_cacheBufferStructure = ^TT_cacheBufferStructure;
+
+   PmwriteBufferStructure = ^TmwriteBufferStructure;
+   TmwriteBufferStructure = record
+        mwriteBufferPointer : Pchar;
+        mwriteBufferLength  : longint;
+        reserved            : longint;
+     end;
+   TT_mwriteBufferStructure = TmwriteBufferStructure;
+   PT_mwriteBufferStructure = ^TT_mwriteBufferStructure;
+
+{ NetWare additions to POSIX...  }
+
+function filelength(fildes:longint):longint;cdecl;external 'clib' name 'filelength';
+function gwrite(fildes:longint; bufferP:PT_mwriteBufferStructure; numberBufs:longint; numberBufsWritten:plongint):longint;cdecl;external 'clib' name 'gwrite';
+function gwrite(fildes:longint; var buffer:TT_mwriteBufferStructure; numberBufs:longint; var numberBufsWritten:longint):longint;cdecl;external 'clib' name 'gwrite';
+function lock(fildes,offset,nbytes:longint):longint;cdecl;external 'clib' name 'lock';
+function qread(fildes:longint; buffer:pointer; len,position:longint):longint;cdecl;external 'clib' name 'qread';
+function qread(fildes:longint; var buffer; len,position:longint):longint;cdecl;external 'clib' name 'qread';
+function qwrite(fildes:longint; buffer:pointer; len,position:longint):longint;cdecl;external 'clib' name 'qwrite';
+function qwrite(fildes:longint; var buffer; len,position:longint):longint;cdecl;external 'clib' name 'qwrite';
+function setmode(fildes,mode:longint):longint;cdecl;external 'clib' name 'setmode';
+// sopen already in fcntl
+//function sopen(path:Pchar; oflag,shflag:longint; args:array of const):longint;cdecl;external 'clib' name 'sopen';
+//function sopen(path:Pchar; oflag,shflag:longint):longint;cdecl;external 'clib' name 'sopen';
+function tell(fildes:longint):longint;cdecl;external 'clib' name 'tell';
+function unlock(fildes,offset,nbytes:longint):longint;cdecl;external 'clib' name 'unlock';
+{ other NetWare file I/O utilities...  }
+function AsyncRead(handle:longint;
+                   startingOffset:longint;
+                   numberBytesToRead:longint;
+                   numberBytesRead:plongint;
+                   localSemaHandle:longint;
+                   cacheBufferInfo:PT_cacheBufferStructure;
+                   numOfCacheBufs:plongint):longint;cdecl;external 'clib' name 'AsyncRead';
+function AsyncRead(handle:longint;
+                   startingOffset:longint;
+                   numberBytesToRead:longint;
+                   var numberBytesRead:longint;
+                   localSemaHandle:longint;
+                   var cacheBufferInfo:TT_cacheBufferStructure;
+                   var numOfCacheBufs:longint):longint;cdecl;external 'clib' name 'AsyncRead';
+
+procedure AsyncRelease(cacheBufferInfo:PT_cacheBufferStructure);cdecl;external 'clib' name 'AsyncRelease';
+procedure AsyncRelease(var cacheBufferInfo:TT_cacheBufferStructure);cdecl;external 'clib' name 'AsyncRelease';
+function CountComponents(pathString:PChar; len:longint):longint;cdecl;external 'clib' name 'CountComponents';
+function GetExtendedFileAttributes(pathName:Pchar; extFileAttrs:PBYTE):longint;cdecl;external 'clib' name 'GetExtendedFileAttributes';
+function GetExtendedFileAttributes(pathName:Pchar; var extFileAttrs):longint;cdecl;external 'clib' name 'GetExtendedFileAttributes';
+procedure _makepath(path,drive,dir,fname,ext:Pchar);cdecl;external 'clib' name '_makepath';
+function NWGetVolumeFlags(volume:longint; flags:plongint):longint;cdecl;external 'clib' name 'NWGetVolumeFlags';
+function NWGetVolumeFlags(volume:longint; var flags:longint):longint;cdecl;external 'clib' name 'NWGetVolumeFlags';
+function NWSetVolumeFlags(volume,flags:longint):longint;cdecl;external 'clib' name 'NWSetVolumeFlags';
+function ParsePath(path,server,volume,directories:Pchar):longint;cdecl;external 'clib' name 'ParsePath';
+// SetReaddirAttribute already defined in dirent
+//function SetReaddirAttribute(dirP:PDIR; newAttribute:dword):longint;cdecl;external 'clib' name 'SetReaddirAttribute';
+procedure _splitpath(path,drive,dir,fname,ext:Pchar);cdecl;external 'clib' name '_splitpath';
+procedure UseAccurateCaseForPaths(yesno:longint);cdecl;external 'clib' name 'UseAccurateCaseForPaths';
+procedure UnAugmentAsterisk(yesno:longint);cdecl;external 'clib' name 'UnAugmentAsterisk';
+{-nwfileeng.h------------------------------------------------------------------}
+{ values for flags parameter in FEGetOpenFileInfo()...  }
+const
+   _NotReadableBit                     = $00000001;
+   _NotWriteableBit                    = $00000002;
+   _WrittenBit                         = $00000004;
+   _DetachedBit                        = $00000008;
+   _SwitchingToDirectFileSystemModeBit = $00000010;
+   _DirectFileSystemModeBit            = $00000020;
+   _FileWriteThroughBit                = $00000040;
+{ extra flags  }
+   _DiskBlockReturnedBit               = $00010000;
+   _IAmOnTheOpenFileListBit            = $00020000;
+   _FileReadAuditBit                   = $00040000;
+   _FileWriteAuditBit                  = $00080000;
+   _FileCloseAuditBit                  = $00100000;
+   _DontFileWriteSystemAlertBit        = $00200000;
+   _ReadAheadHintBit                   = $00400000;
+   _NotifyCompressionOnCloseBit        = $00800000;
+{ extra extra flags  }
+   _IsWritingCompressedBit             = $01000000;
+   _HasTimeDateBit                     = $02000000;
+   _DoingDeCompressionBit              = $04000000;
+   _NoSubAllocBit                      = $08000000;
+   _IsATransactionFileBit              = $10000000;
+   _HasFileWritePrivilegeBit           = $20000000;
+   _TTSReadAuditBit                    = $40000000;
+   _TTSWriteAuditBit                   = $80000000;
+
+type
+  TT_PathParseFunc = function (inputPath:Pchar;
+                           var connectionIDp:word;
+                           var volumeNumber:longint;
+                           var directoryNumber:longint;
+                               outPathStringP:PChar;
+                           var outPathCount:longint):longint;cdecl;
+
+function FEConvertDirectoryNumber(sourceNameSpace:longint;
+                                  volumeNumber:longint;
+                                  sourceDirectoryNumber:longint;
+                                  destinationNameSpace:longint;
+                                  destinationDirectoryNumberP:Plongint):longint;cdecl;external 'clib' name 'FEConvertDirectoryNumber';
+function FEConvertDirectoryNumber(sourceNameSpace:longint;
+                                  volumeNumber:longint;
+                                  sourceDirectoryNumber:longint;
+                                  destinationNameSpace:longint;
+                              var destinationDirectoryNumber:longint):longint;cdecl;external 'clib' name 'FEConvertDirectoryNumber';
+function FEcreat(name:Pchar; permission,flagBits:longint):longint;cdecl;external 'clib' name 'FEcreat';
+function FEFlushWrite(handle:longint):longint;cdecl;external 'clib' name 'FEFlushWrite';
+function FEGetCWDnum:longint;cdecl;external 'clib' name 'FEGetCWDnum';
+function FEGetCWVnum:longint;cdecl;external 'clib' name 'FEGetCWVnum';
+function FEGetDirectoryEntry(volumeNumber,directoryNumber:longint; pathString:PChar;
+                             pathCount,desiredNameSpace:longint;
+                             namespaceDirectoryStructPp:Ppointer;
+                             DOSdirectoryStructPp:Ppointer):longint;cdecl;external 'clib' name 'FEGetDirectoryEntry';
+function FEGetDirectoryEntry(volumeNumber,directoryNumber:longint; pathString:PChar;
+                             pathCount,desiredNameSpace:longint;
+                             var namespaceDirectoryStructP:Pointer;
+                             var DOSdirectoryStructP:Pointer):longint;cdecl;external 'clib' name 'FEGetDirectoryEntry';
+function FEGetEntryVersion(volumeNumber,directoryNumber:longint; pathString:PChar; pathCount:longint; version:PWORD):longint;cdecl;external 'clib' name 'FEGetEntryVersion';
+function FEGetEntryVersion(volumeNumber,directoryNumber:longint; pathString:PChar; pathCount:longint; var version:word):longint;cdecl;external 'clib' name 'FEGetEntryVersion';
+function FEGetOpenFileInfo (connection:longint;
+                            handle:longint;
+                            volume:Plongint;
+                            directoryNumber:Plongint;
+                            dataStream:Plongint;
+                            flags:Plongint):longint;cdecl;external 'clib' name 'FEGetOpenFileInfo';
+function FEGetOpenFileInfo (connection:longint;
+                            handle:longint;
+                        var volume,directoryNumber,dataStream,flags:longint):longint;cdecl;external 'clib' name 'FEGetOpenFileInfo';
+function FEGetOpenFileInfoForNS (connection, handle:longint;
+                                 volume,DOSdirectoryNumber,directoryNumber:Plongint;
+                                 nameSpace,dataStream,flags:Plongint):longint;cdecl;external 'clib' name 'FEGetOpenFileInfoForNS';
+function FEGetOpenFileInfoForNS (connection, handle:longint;
+                                 var volume,DOSdirectoryNumber,directoryNumber:longint;
+                                 var nameSpace,dataStream,flags:longint):longint;cdecl;external 'clib' name 'FEGetOpenFileInfoForNS';
+function FEGetOriginatingNameSpace(volumeNumber,directoryNumber:longint):longint;cdecl;external 'clib' name 'FEGetOriginatingNameSpace';
+function FEMapConnsHandleToVolAndDir(connection,handle:longint; volumeNumberP,directoryNumberP:Plongint):longint;cdecl;external 'clib' name 'FEMapConnsHandleToVolAndDir';
+function FEMapConnsHandleToVolAndDir(connection,handle:longint; var volumeNumber,directoryNumber:longint):longint;cdecl;external 'clib' name 'FEMapConnsHandleToVolAndDir';
+function FEMapHandleToVolumeAndDirectory(handle:longint; volumeNumberP,directoryNumberP:PLongint):longint;cdecl;external 'clib' name 'FEMapHandleToVolumeAndDirectory';
+function FEMapHandleToVolumeAndDirectory(handle:longint; var volumeNumberP,directoryNumberP:Longint):longint;cdecl;external 'clib' name 'FEMapHandleToVolumeAndDirectory';
+function FEMapPathVolumeDirToVolumeDir(pathName:Pchar; volumeNumber,directoryNumber:longint; newVolumeNumberP,newDirectoryNumberP:Plongint):longint;cdecl;external 'clib' name 'FEMapPathVolumeDirToVolumeDir';
+function FEMapPathVolumeDirToVolumeDir(pathName:Pchar; volumeNumber,directoryNumber:longint; var newVolumeNumberP,newDirectoryNumberP:longint):longint;cdecl;external 'clib' name 'FEMapPathVolumeDirToVolumeDir';
+
+function FEMapVolumeAndDirectoryToPath(volumeNumber,directoryNumber:longint; pathString:PChar; pathCount:Plongint):longint;cdecl;external 'clib' name 'FEMapVolumeAndDirectoryToPath';
+function FEMapVolumeAndDirectoryToPath(volumeNumber,directoryNumber:longint; pathString:PChar; var pathCount:longint):longint;cdecl;external 'clib' name 'FEMapVolumeAndDirectoryToPath';
+
+function FEMapVolumeAndDirectoryToPathForNS(volumeNumber,directoryNumber:longint; nameSpace:longint; pathString:PBYTE; pathCount:Plongint):longint;cdecl;external 'clib' name 'FEMapVolumeAndDirectoryToPathForNS';
+function FEMapVolumeNumberToName(volumeNumber:longint; volumeName:PChar):longint;cdecl;external 'clib' name 'FEMapVolumeNumberToName';
+function FEQuickClose(connection,task,fileHandle:longint):longint;cdecl;external 'clib' name 'FEQuickClose';
+function FEQuickFileLength(connection,handle:longint; fileSize:Plongint):longint;cdecl;external 'clib' name 'FEQuickFileLength';
+function FEQuickFileLength(connection,handle:longint; var fileSize:longint):longint;cdecl;external 'clib' name 'FEQuickFileLength';
+function FEQuickOpen (connection,task,volumeNumber,directoryNumber:longint;
+                      pathString:PChar;
+                      pathCount,nameSpace,attributeMatchBits,requestedAccessRights,dataStreamNumber:longint;
+                      fileHandle:Plongint):longint;cdecl;external 'clib' name 'FEQuickOpen';
+function FEQuickOpen (connection,task,volumeNumber,directoryNumber:longint;
+                      pathString:PChar;
+                      pathCount,nameSpace,attributeMatchBits,requestedAccessRights,dataStreamNumber:longint;
+                      var fileHandle:longint):longint;cdecl;external 'clib' name 'FEQuickOpen';
+
+function FEQuickRead (connection,handle,postition,bytesToRead:longint;
+                      bytesRead:Plongint;
+                      buffer:pointer):longint;cdecl;external 'clib' name 'FEQuickRead';
+function FEQuickRead (connection,handle,postition,bytesToRead:longint;
+                      var bytesRead:longint;
+                      var buffer):longint;cdecl;external 'clib' name 'FEQuickRead';
+
+function FEQuickWrite(connection,handle,position,bytesToWrite:longint; buffer:pointer):longint;cdecl;external 'clib' name 'FEQuickWrite';
+function FEQuickWrite(connection,handle,position,bytesToWrite:longint; var buffer):longint;cdecl;external 'clib' name 'FEQuickWrite';
+
+function FERegisterNSPathParser(normalFunc:TT_PathParseFunc):longint;cdecl;external 'clib' name 'FERegisterNSPathParser';
+function FESetCWDnum(CWDnum:longint):longint;cdecl;external 'clib' name 'FESetCWDnum';
+function FESetCWVandCWDnums(CWVnum:longint; CWDnum:longint):longint;cdecl;external 'clib' name 'FESetCWVandCWDnums';
+function FESetCWVnum(CWVnum:longint):longint;cdecl;external 'clib' name 'FESetCWVnum';
+function FESetOriginatingNameSpace(volumeNumber,directoryNumber,currentNameSpace,newNameSpace:longint):longint;cdecl;external 'clib' name 'FESetOriginatingNameSpace';
+function FEsopen(name:Pchar; access,share,permission,flagBits:longint;
+           dataStream:byte):longint;cdecl;external 'clib' name 'FEsopen';
+function NWGetDirBaseFromPath(path:Pchar; nameSpace:byte; volNum,NSDirBase,DOSDirBase:Plongint):longint;cdecl;external 'clib' name 'NWGetDirBaseFromPath';
+function NWGetDirBaseFromPath(path:Pchar; nameSpace:byte; var volNum,NSDirBase,DOSDirBase:longint):longint;cdecl;external 'clib' name 'NWGetDirBaseFromPath';
+{-nwfinfo.h--------------------------------------------------------------------}
+function FileServerFileCopy (sourceFileHandle,destinationFileHandle:longint;
+                             sourceFileOffset,destinationFileOffset,numberOfBytesToCopy:longint;
+                             numberOfBytesCopied:Plongint):longint;cdecl;external 'clib' name 'FileServerFileCopy';
+function FileServerFileCopy (sourceFileHandle,destinationFileHandle:longint;
+                             sourceFileOffset,destinationFileOffset,numberOfBytesToCopy:longint;
+                             var numberOfBytesCopied:longint):longint;cdecl;external 'clib' name 'FileServerFileCopy';
+
+function NWGetCompressedFileLengths (handle:longint;
+                                     uncompressedLength,
+                                     compressedLength:Plongint):longint;cdecl;external 'clib' name 'NWGetCompressedFileLengths';
+function NWGetCompressedFileLengths (handle:longint;
+                                     var uncompressedLength,
+                                         compressedLength:longint):longint;cdecl;external 'clib' name 'NWGetCompressedFileLengths';
+
+function NWGetDiskIOsPending:longint;cdecl;external 'clib' name 'NWGetDiskIOsPending';
+function NWSetCompressedFileLengths (handle,
+                                     uncompressedLength,
+                                     compressedLengt:longint):longint;cdecl;external 'clib' name 'NWSetCompressedFileLengths';
+
+function PurgeErasedFile(pathName:Pchar; sequenceNumber:longint):longint;cdecl;external 'clib' name 'PurgeErasedFile';
+function SalvageErasedFile(pathName:Pchar; sequenceNumber:longint; newFileName:Pchar):longint;cdecl;external 'clib' name 'SalvageErasedFile';
+
+function ScanErasedFiles_411 (path           : PChar;
+                              nextEntryNumber: Plongint;
+                              deletedFileInfo: PDIR):longint; cdecl;external 'clib' name 'ScanErasedFiles_411';
+function ScanErasedFiles_411 (path               : PChar;
+                              var nextEntryNumber: longint;
+                              var deletedFileInfo: TDIR):longint; cdecl;external 'clib' name 'ScanErasedFiles_411';
+
+function SetExtendedFileAttributes(pathName:Pchar; extendedFileAttributes:byte):longint;cdecl;external 'clib' name 'SetExtendedFileAttributes';
+function SetFileInfo(pathName:Pchar; searchAttributes:byte; fileAttributes:longint; creationDate:Pchar; lastAccessDate:Pchar;
+               lastUpdateDateAndTime:Pchar; lastArchiveDateAndTime:Pchar; fileOwnerID:longint):longint;cdecl;external 'clib' name 'SetFileInfo';
+{-nwfshook.h-------------------------------------------------------------------}
+{ ------------  File System Monitor Hook Call Back Numbers ------------
+   The defined constants below that have _GEN_ in the name represent call back
+   numbers that will hook Generic versions of the respective OS routines.
+   Namely, routines that support Name Spaces other than DOS.
+   --------------------------------------------------------------------- }
+
+const
+   FSHOOK_PRE_ERASEFILE            = 0;
+   FSHOOK_PRE_OPENFILE             = 1;
+   FSHOOK_PRE_CREATEFILE           = 2;
+   FSHOOK_PRE_CREATE_OPENFILE      = 3;
+   FSHOOK_PRE_RENAME_OR_MOVE       = 4;
+   FSHOOK_PRE_CLOSEFILE            = 5;
+   FSHOOK_PRE_CREATEDIR            = 6;
+   FSHOOK_PRE_DELETEDIR            = 7;
+   FSHOOK_PRE_MODIFY_DIRENTRY      = 8;
+   FSHOOK_PRE_SALVAGE_DELETED      = 9;
+   FSHOOK_PRE_PURGE_DELETED        = 10;
+   FSHOOK_PRE_RENAME_NS_ENTRY      = 11;
+   FSHOOK_PRE_GEN_SALVAGE_DELETED  = 12;
+   FSHOOK_PRE_GEN_PURGE_DELETED    = 13;
+   FSHOOK_PRE_GEN_OPEN_CREATE      = 14;
+   FSHOOK_PRE_GEN_RENAME           = 15;
+   FSHOOK_PRE_GEN_ERASEFILE        = 16;
+   FSHOOK_PRE_GEN_MODIFY_DOS_INFO  = 17;
+   FSHOOK_PRE_GEN_MODIFY_NS_INFO   = 18;
+   FSHOOK_POST_ERASEFILE           = $80000000;
+   FSHOOK_POST_OPENFILE            = $80000001;
+   FSHOOK_POST_CREATEFILE          = $80000002;
+   FSHOOK_POST_CREATE_OPENFILE     = $80000003;
+   FSHOOK_POST_RENAME_OR_MOVE      = $80000004;
+   FSHOOK_POST_CLOSEFILE           = $80000005;
+   FSHOOK_POST_CREATEDIR           = $80000006;
+   FSHOOK_POST_DELETEDIR           = $80000007;
+   FSHOOK_POST_MODIFY_DIRENTRY     = $80000008;
+   FSHOOK_POST_SALVAGE_DELETED     = $80000009;
+   FSHOOK_POST_PURGE_DELETED       = $8000000A;
+   FSHOOK_POST_RENAME_NS_ENTRY     = $8000000B;
+   FSHOOK_POST_GEN_SALVAGE_DELETED = $8000000C;
+   FSHOOK_POST_GEN_PURGE_DELETED   = $8000000D;
+   FSHOOK_POST_GEN_OPEN_CREATE     = $8000000E;
+   FSHOOK_POST_GEN_RENAME          = $8000000F;
+   FSHOOK_POST_GEN_ERASEFILE       = $80000010;
+   FSHOOK_POST_GEN_MODIFY_DOS_INFO = $80000011;
+   FSHOOK_POST_GEN_MODIFY_NS_INFO  = $80000012;
+
+    {--------------------------------------------------------------------
+      Structure returned for
+      FSHOOK_PRE_ERASEFILE and FSHOOK_POST_ERASEFILE
+     -------------------------------------------------------------------- }
+type
+
+   PEraseFileCallBackStruct = ^TEraseFileCallBackStruct;
+   TEraseFileCallBackStruct = record
+     connection,
+     task,
+     volume,
+     dirBase : Longint;
+     pathString : Pchar;
+     pathComponentCount,
+     nameSpace,
+     attributeMatchBits : Longint;
+   end;
+{--------------------------------------------------------------------
+      Structure returned for
+      FSHOOK_PRE_OPENFILE and FSHOOK_POST_OPENFILE
+     -------------------------------------------------------------------- }
+
+   POpenFileCallBackStruct = ^TOpenFileCallBackStruct;
+   TOpenFileCallBackStruct = record
+     connection,
+     task,
+     volume,
+     dirBase : Longint;
+     pathString : Pchar;
+     pathComponentCount,
+     nameSpace,
+     attributeMatchBits,
+     requestedAccessRights,
+     dataStreamNumber : Longint;
+     fileHandle : PLongint;
+   end;
+{--------------------------------------------------------------------
+  Structure returned for
+  FSHOOK_PRE_CREATEFILE and FSHOOK_POST_CREATEFILE
+ -------------------------------------------------------------------- }
+
+   PCreateFileCallBackStruct = ^TCreateFileCallBackStruct;
+   TCreateFileCallBackStruct = record
+     connection,
+     task,
+     volume,
+     dirBase : Longint;
+     pathString : Pchar;
+     pathComponentCount,
+     nameSpace,
+     createAttributeBits,
+     createFlagBits,
+     dataStreamNumber : Longint;
+     fileHandle : PLongint;
+   end;
+{--------------------------------------------------------------------
+  Structure returned for
+  FSHOOK_PRE_CREATE_OPENFILE and FSHOOK_POST_CREATE_OPENFILE
+ -------------------------------------------------------------------- }
+
+   PCreateAndOpenCallBackStruct = ^TCreateAndOpenCallBackStruct;
+   TCreateAndOpenCallBackStruct = record
+     connection,
+     task,
+     volume,
+     dirBase : Longint;
+     pathString : Pchar;
+     pathComponentCount,
+     nameSpace,
+     createAttributeBits,
+     requestedAccessRights,
+     createFlagBits,
+     dataStreamNumber : Longint;
+     fileHandle       : PLongint;
+   end;
+{--------------------------------------------------------------------
+  Structure returned for
+  FSHOOK_PRE_RENAME_OR_MOVE and FSHOOK_POST_RENAME_OR_MOVE
+ -------------------------------------------------------------------- }
+
+   PRenameMoveEntryCallBackStruct = ^TRenameMoveEntryCallBackStruct;
+   TRenameMoveEntryCallBackStruct = record
+     connection,
+     task,
+     volume,
+     dirBase                 : Longint;
+     pathString              : Pchar;
+     pathComponentCount,
+     nameSpace,
+     attributeMatchBits,
+     subDirsOnlyFlag,
+     newDirBase              : Longint;
+     newPathString           : Pchar;
+     originalNewCount,
+     compatibilityFlag,
+     allowRenamesToMyselfFlag: Longint;
+   end;
+{--------------------------------------------------------------------
+  Structure returned for
+  FSHOOK_PRE_CLOSEFILE and FSHOOK_POST_CLOSEFILE
+ -------------------------------------------------------------------- }
+
+   PCloseFileCallBackStruct = ^TCloseFileCallBackStruct;
+   TCloseFileCallBackStruct = record
+     connection,
+     task,
+     fileHandle : Longint;
+   end;
+{--------------------------------------------------------------------
+  Structure returned for
+  FSHOOK_PRE_CREATEDIR and FSHOOK_POST_CREATEDIR
+-------------------------------------------------------------------- }
+
+   PCreateDirCallBackStruct = ^TCreateDirCallBackStruct;
+   TCreateDirCallBackStruct = record
+     connection,
+     volume,
+     dirBase    : Longint;
+     pathString : Pchar;
+     pathComponentCount,
+     nameSpace,
+     directoryAccessMask : Longint;
+   end;
+{--------------------------------------------------------------------
+  Structure returned for
+  FSHOOK_PRE_DELETEDIR and FSHOOK_POST_DELETEDIR
+ -------------------------------------------------------------------- }
+
+   PDeleteDirCallBackStruct = ^TDeleteDirCallBackStruct;
+   TDeleteDirCallBackStruct = record
+     connection,
+     volume,
+     dirBase : Longint;
+     pathString : PChar;
+     pathComponentCount,
+     nameSpace : Longint;
+   end;
+{--------------------------------------------------------------------
+  Structure returned for
+  FSHOOK_PRE_MODIFYDIRENTRY and FSHOOK_POST_MODIFYDIRENTRY
+ -------------------------------------------------------------------- }
+
+   PModifyDirEntryCallBackStruct = ^TModifyDirEntryCallBackStruct;
+   TModifyDirEntryCallBackStruct = record
+     connection,
+     task,
+     volume,
+     dirBase            : Longint;
+     pathString         : PChar;
+     pathComponentCount,
+     nameSpace,
+     attributeMatchBits,
+     targetNameSpace    : Longint;
+     modifyVector       : PModifyStructure;
+     modifyBits,
+     allowWildCardsFlag : Longint;
+   end;
+{--------------------------------------------------------------------
+  Structure returned for
+  FSHOOK_PRE_SALVAGE_DELETED and FSHOOK_POST_SALVAGE_DELETED
+ -------------------------------------------------------------------- }
+
+   PSalvageDeletedCallBackStruct = ^TSalvageDeletedCallBackStruct;
+   TSalvageDeletedCallBackStruct = record
+     connection,
+     volume,
+     dirBase,
+     toBeSalvagedDirBase,
+     nameSpace            : Longint;
+     newName              : PChar;
+   end;
+{--------------------------------------------------------------------
+  Structure returned for
+  FSHOOK_PRE_PURGE_DELETED and FSHOOK_POST_PURGE_DELETED
+ -------------------------------------------------------------------- }
+
+   PPurgeDeletedCallBackStruct = ^TPurgeDeletedCallBackStruct;
+   TPurgeDeletedCallBackStruct = record
+     connection,
+     volume,
+     dirBase,
+     toBePurgedDirBase,
+     nameSpace          : Longint;
+   end;
+{--------------------------------------------------------------------
+  Structure returned for
+  FSHOOK_PRE_RENAME_NS_ENTRY and FSHOOK_POST_RENAME_NS_ENTRY
+ -------------------------------------------------------------------- }
+
+   PRenameNSEntryCallBackStruct = ^TRenameNSEntryCallBackStruct;
+   TRenameNSEntryCallBackStruct = record
+     connection,
+     task,
+     volume,
+     dirBase       : Longint;
+     pathString    : PChar;
+     pathComponentCount,
+     nameSpace,
+     matchBits     : Longint;
+     newName       : PChar;
+   end;
+{--------------------------------------------------------------------
+  Structure returned for
+  FSHOOK_PRE_GEN_SALVAGE_DELETED and FSHOOK_POST_GEN_SALVAGE_DELETED
+ -------------------------------------------------------------------- }
+
+   PGenericSalvageDeletedCBStruct = ^TGenericSalvageDeletedCBStruct;
+   TGenericSalvageDeletedCBStruct = record
+     connection,
+     nameSpace,
+     sequence,
+     volume,
+     dirBase : Longint;
+     newName : PChar;
+  end;
+{--------------------------------------------------------------------
+      Structure returned for
+      FSHOOK_PRE_GEN_PURGE_DELETED and FSHOOK_POST_GEN_PURGE_DELETED
+     -------------------------------------------------------------------- }
+
+   PGenericPurgeDeletedCBStruct = ^TGenericPurgeDeletedCBStruct;
+   TGenericPurgeDeletedCBStruct = record
+     connection,
+     nameSpace,
+     sequence,
+     volume,
+     dirBase  : Longint;
+   end;
+{--------------------------------------------------------------------
+  Structure returned for
+  FSHOOK_PRE_GEN_OPEN_CREATE and FSHOOK_POST_GEN_OPEN_CREATE
+ -------------------------------------------------------------------- }
+
+   PGenericOpenCreateCBStruct = ^TGenericOpenCreateCBStruct;
+   TGenericOpenCreateCBStruct = record
+     connection,
+     task,
+     volume,
+     pathComponentCount,
+     dirBase               : Longint;
+     pathString            : Pchar;
+     nameSpace,
+     dataStreamNumber,
+     openCreateFlags,
+     searchAttributes,
+     createAttributes,
+     requestedAccessRights,
+     returnInfoMask        : Longint;
+     fileHandle            : PLongint;
+     openCreateAction      : Pointer;
+   end;
+{--------------------------------------------------------------------
+ Structure returned for
+ FSHOOK_PRE_GEN_RENAME and FSHOOK_POST_GEN_RENAME
+ -------------------------------------------------------------------- }
+
+   PGenericRenameCBStruct = ^TGenericRenameCBStruct;
+   TGenericRenameCBStruct = record
+     connection,
+     task,
+     nameSpace,
+     renameFlag,
+     searchAttributes,
+     srcVolume,
+     srcPathComponentCount,
+     srcDirBase            : Longint;
+     srcPathString         : Pchar;
+     dstVolume,
+     dstPathComponentCount,
+     dstDirBase            : Longint;
+     dstPathString         : Pchar;
+   end;
+{--------------------------------------------------------------------
+  Structure returned for
+  FSHOOK_PRE_GEN_ERASEFILE and FSHOOK_POST_GEN_ERASEFILE
+ -------------------------------------------------------------------- }
+
+   PGenericEraseFileCBStruct = ^TGenericEraseFileCBStruct;
+   TGenericEraseFileCBStruct = record
+     connection,
+     task,
+     volume,
+     pathComponentCount,
+     dirBase          : Longint;
+     pathString       : Pchar;
+     nameSpace,
+     searchAttributes : Longint;
+   end;
+{--------------------------------------------------------------------
+  Structure returned for
+  FSHOOK_PRE_GEN_MODIFY_DOS_INFO and FSHOOK_POST_GEN_MODIFY_DOS_INFO
+ -------------------------------------------------------------------- }
+
+   PGenericModifyDOSInfoCBStruct = ^TGenericModifyDOSInfoCBStruct;
+   TGenericModifyDOSInfoCBStruct = record
+        connection,
+        task,
+        volume,
+        pathComponentCount,
+        dirBase              : Longint;
+        pathString           : Pchar;
+        nameSpace            : Longint;
+        searchAttributes     : Longint;
+        modifyMask           : Longint;
+        modifyInfo           : pointer;
+     end;
+{--------------------------------------------------------------------
+  Structure returned for
+  FSHOOK_PRE_GEN_MODIFY_NS_INFO and FSHOOK_POST_GEN_MODIFY_NS_INFO
+-------------------------------------------------------------------- }
+
+   PGenericModifyNSInfoCBStruct = ^TGenericModifyNSInfoCBStruct;
+   TGenericModifyNSInfoCBStruct = record
+     connection,
+     task,
+     dataLength,
+     srcNameSpace,
+     dstNameSpace,
+     volume,
+     dirBase,
+     modifyMask   : Longint;
+     modifyInfo   : pointer;
+   end;
+
+function NWAddFSMonitorHook (callBackNumber:Longint;
+                             callBackFunc:pointer;
+                             callBackHandle:PLongint):Longint;cdecl;external 'clib' name 'NWAddFSMonitorHook';
+function NWAddFSMonitorHook (callBackNumber:Longint;
+                             callBackFunc:pointer;
+                         var callBackHandle:Longint):Longint;cdecl;external 'clib' name 'NWAddFSMonitorHook';
+function NWRemoveFSMonitorHook (callBackNumber,callBackHandle:Longint):Longint;cdecl;external 'clib' name 'NWRemoveFSMonitorHook';
+{-nwipx.h----------------------------------------------------------------------}
+{$include npackon.inc}
+{ ECB status field completion codes  }
+
+const
+   STS_SPX_CONNECTION_TERMINATED = $FFEC;
+   STS_SPX_TERMINATED_POORLY = $FFED;
+   STS_SPX_INVALID_CONNECTION = $FFEE;
+   STS_SPX_CONNECTION_TABLE_FULL = $FFEF;
+   STS_SPX_SOCKET_NOT_OPEN = $FFF0;
+   STS_SPX_SOCKET_ALREADY_OPEN = $FFF1;
+   STS_SPX_ECB_CANNOT_BE_CANCELLED = $FFF9;
+   STS_SPX_NO_KNOWN_ROUTE_TO_DESTINATION = $FFFA;
+   STS_SPX_EVENT_CANCELLED = $FFFC;
+   STS_SPX_PACKET_OVERFLOW = $FFFD;
+   STS_SPX_MALFORMED_PACKET = $FFFE;
+   STS_SPX_TRANSMIT_FAILURE = $FFFF;
+
+   SPX_SSTATUS_ABORTED = $00;
+   SPX_SSTATUS_WAITING = $01;
+   SPX_SSTATUS_STARTING = $02;
+   SPX_SSTATUS_ESTABLISHED = $03;
+   SPX_SSTATUS_TERMINATING = $04;
+
+
+{
+   This define is for the Queued IPX/SPX Calls. The return code passed in will
+   be set to this value until the packet is actually sent to IPX/SPX.
+ }
+   PACKET_IN_QUEUE = $0001;
+{--------------------------------------------------------------------------- 
+                                                                              
+     IPX_ECB status field busy (in-process) codes:                            
+
+     0x11 - AES (asynchronous event service) waiting                          
+     0x12 - Holding
+     0x13 - Session listen                                                    
+     0x14 - Processing                                                        
+     0x15 - Receiving                                                         
+     0x16 - Sending                                                           
+     0x17 - Waiting                                                           
+                                                                              
+  -------------------------------------------------------------------------- }
+{--------------------------------------------------------------------------- 
+     The comment characters in the IPX_ECB structure have the                 
+     following meanings                                                       
+     s - this field must be filled in prior to a send                         
+     r - this field must be filled in prior to a receive                      
+     R - this field is reserved                                               
+     A - this field may be used when the ECB is not in use by IPX/SPX         
+     q - the application may read this field                                  
+  -------------------------------------------------------------------------- }
+{ Packet type codes  }
+   UNKNOWN_PACKET_TYPE = 0;
+   ROUTING_INFORMATION_PACKET = 1;
+   ECHO_PACKET = 2;
+   ERROR_PACKET = 3;
+   PACKET_EXCHANGE_PACKET = 4;
+   SEQUENCED_PACKET_PROTOCOL_PACKET = 5;
+
+   SPX_END_OF_MESSAGE = $10;
+   ENABLE_WATCHDOG    = $ff;
+
+{ various SAP definitions  }
+
+   SAP_SOCKET = $0452;
+   GENERAL_SERVICE_QUERY = 1;
+   GENERAL_SERVICE_RESPONSE = 2;
+   NEAREST_SERVICE_QUERY = 3;
+   NEAREST_SERVICE_RESPONSE = 4;
+   PERIODIC_ID_PACKET = 2;
+   NOT_SUPPORTED = 1;
+   INVALID_QUERY_TYPE = 2;
+   SAP_RESPONSES_PER_PACKET = 8;
+{ 'ELRS'  }
+   QUERY_LIST_SIGNATURE = $454C5253;
+{ type definitions  }
+type
+   TMisalignedLONG = longint;
+   TMisalignedWORD = word;
+
+   PtagECBFrag = ^TtagECBFrag;
+   TtagECBFrag = record
+        fragAddress : pointer;
+        fragSize    : longint;
+     end;
+   TECBFrag = TtagECBFrag;
+   PECBFrag = ^TECBFrag;
+
+   PIPX_ECBStruct = ^TIPX_ECBStruct;
+   TIPX_ECBStruct = record
+        semHandleSave : longint;
+        queueHead : ^PIPX_ECBStruct;
+        next : PIPX_ECBStruct;
+        prev : PIPX_ECBStruct;
+        status : word;
+        semHandle : longint;
+        lProtID : word;
+        protID : array[0..5] of byte;
+        boardNumber : longint;
+        immediateAddress : array[0..5] of byte;
+        driverWS : array[0..3] of byte;
+        ESREBXValue : longint;
+        socket : word;
+        protocolWorkspace : word;
+        dataLen : longint;
+        fragCount : longint;
+        fragList : array[0..1] of TECBFrag;
+     end;
+   TIPX_ECB  = TIPX_ECBStruct;
+   PIPX_ECB  = ^TIPX_ECB;
+   PPIPX_ECB = ^PIPX_ECB;
+
+   TSPX_ECB  = TIPX_ECBStruct;
+   PSPX_ECB  = PIPX_ECBStruct;
+
+
+   PtagInternetAddress = ^TtagInternetAddress;
+   TtagInternetAddress = record
+        network : TMisalignedLONG;
+        node    : array[0..5] of byte;
+        socket  : TMisalignedWORD;
+     end;
+   TInternetAddress = TtagInternetAddress;
+   PInternetAddress = ^TInternetAddress;
+
+   PtagIPX_HEADER = ^TtagIPX_HEADER;
+   TtagIPX_HEADER = record
+        checksum    : word;
+        packetLen   : word;
+        transportCtl: byte;
+        packetType  : byte;
+        destNet     : TMisalignedLONG;
+        destNode    : array[0..5] of byte;
+        destSocket  : word;
+        sourceNet   : TMisalignedLONG;
+        sourceNode  : array[0..5] of byte;
+        sourceSocket: word;
+     end;
+   TIPX_HEADER = TtagIPX_HEADER;
+   PIPX_HEADER = ^TIPX_HEADER;
+{ included only for compatibility  }
+
+   PtagIPX_STATS = ^TtagIPX_STATS;
+   TtagIPX_STATS = record
+        dummy : char;
+     end;
+   TIPX_STATS = TtagIPX_STATS;
+   PIPX_STATS = ^TIPX_STATS;
+
+   PtagSPX_HEADER = ^TtagSPX_HEADER;
+   TtagSPX_HEADER = record
+        checksum : word;
+        packetLen : word;
+        transportCtl : byte;
+        packetType : byte;
+        destNet : TMisalignedLONG;
+        destNode : array[0..5] of byte;
+        destSocket : word;
+        sourceNet : TMisalignedLONG;
+        sourceNode : array[0..5] of byte;
+        sourceSocket : word;
+        connectionCtl : byte;
+        dataStreamType : byte;
+        sourceConnectID : word;
+        destConnectID : word;
+        sequenceNumber : word;
+        ackNumber : word;
+        allocNumber : word;
+     end;
+   TSPX_HEADER = TtagSPX_HEADER;
+   PSPX_HEADER = ^TSPX_HEADER;
+
+   PSPX_ConnStruct = ^TSPX_ConnStruct;
+   TSPX_ConnStruct = record
+        sStatus : byte;
+        sFlags : byte;
+        sSourceConnectID : word;
+        sDestConnectID : word;
+        sSequenceNumber : word;
+        sAckNumber : word;
+        sAllocNumber : word;
+        sRemoteAckNumber : word;
+        sRemoteAllocNumber : word;
+        sLocalSocket : word;
+        sImmediateAddress : array[0..5] of byte;
+        sRemoteNet : longint;
+        sRemoteNode : array[0..5] of byte;
+        sRemoteSocket : word;
+        sRetransmitCount : byte;
+        sRetransmitMax : byte;
+        sRoundTripTimer : word;
+        sRetransmittedPackets : word;
+        sSuppressedPackets : word;
+        sLastReceiveTime : word;
+        sLastSendTime : word;
+        sRoundTripMax : word;
+        sWatchdogTimeout : word;
+        sSessionXmitQHead : array[0..3] of byte;
+        sSessionXmitECBp : array[0..3] of byte;
+     end;
+   TSPX_SESSION = TSPX_ConnStruct;
+   PSPX_SESSION = ^TSPX_SESSION;
+
+
+type
+
+   PT_SAP_ID_PACKET = ^TT_SAP_ID_PACKET;
+   TT_SAP_ID_PACKET = record
+     SAPPacketType       : word;                    // 2 or 4
+     serverType          : word;                    // assigned by novell
+     serverName          : array[0..47] of byte;    // Service name
+     serverAddress       : TInternetAddress;
+     interveningNetworks : word;                    // # of networks packets must pass
+   end;
+
+   PSERVICE_QUERY_PACKET = ^TSERVICE_QUERY_PACKET;
+   TSERVICE_QUERY_PACKET = record
+     queryType,                                     // 1 or 3
+     serverType : word;                             // assigned by novell
+   end;
+
+   PSAPResponse = ^TSAPResponse;
+   TSAPResponse = record
+        SAPPacketType : word;                       // 2 or 4
+        responses     : array[0..(SAP_RESPONSES_PER_PACKET)-1] of record
+             serverType          : word;
+             serverName          : array[0..47] of byte;
+             serverAddress       : TInternetAddress;
+             interveningNetworks : word;
+          end;
+        next          : PSAPResponse;
+        signature     : longint;
+        count         : longint;
+     end;
+   TSAP_RESPONSE_LIST_ENTRY = TSAPResponse;
+   PSAP_RESPONSE_LIST_ENTRY = ^TSAP_RESPONSE_LIST_ENTRY;
+{$include npackoff.inc}
+
+
+{ IPX function prototypes...  }
+
+function IpxCheckSocket(socket:word):longint;cdecl;external 'clib' name 'IpxCheckSocket';
+function IpxCancelEvent(ECBp:PIPX_ECB):longint;cdecl;external 'clib' name 'IpxCancelEvent';
+function IpxCloseSocket(socket:word):longint;cdecl;external 'clib' name 'IpxCloseSocket';
+function IpxConnect(ECBp:PIPX_ECB):longint;cdecl;external 'clib' name 'IpxConnect';
+function IpxDisconnect(ECBp:PIPX_ECB):longint;cdecl;external 'clib' name 'IpxDisconnect';
+function IpxGetAndClearQ(replyQptr:PPIPX_ECB):PIPX_ECB;cdecl;external 'clib' name 'IpxGetAndClearQ';
+function IpxGetInternetworkAddress(address:PBYTE):longint;cdecl;external 'clib' name 'IpxGetInternetworkAddress';
+function IpxGetLocalTarget(address:PBYTE; ECBp:PIPX_ECB; timeToNet:Plongint):longint;cdecl;external 'clib' name 'IpxGetLocalTarget';
+function IpxGetStatistics(ipxStats:PIPX_STATS):longint;cdecl;external 'clib' name 'IpxGetStatistics';
+function IpxGetVersion(majorVersion:PBYTE; minorVersion:PBYTE; revision:PWORD):longint;cdecl;external 'clib' name 'IpxGetVersion';
+function IpxGetVersion(var majorVersion,minorVersion:byte; var revision:word):longint;cdecl;external 'clib' name 'IpxGetVersion';
+function IpxOpenSocket(socketP:PWORD):longint;cdecl;external 'clib' name 'IpxOpenSocket';
+function IpxOpenSocket(var socket:word):longint;cdecl;external 'clib' name 'IpxOpenSocket';
+function IpxQueuedSend(socket:word; ECBp:PIPX_ECB; rcode:Plongint):longint;cdecl;external 'clib' name 'IpxQueuedSend';
+function IpxQueuedSend(socket:word; ECBp:PIPX_ECB; var rcode:longint):longint;cdecl;external 'clib' name 'IpxQueuedSend';
+function IpxQueuedReceive(socket:word; ECBp:PIPX_ECB; rcode:Plongint):longint;cdecl;external 'clib' name 'IpxQueuedReceive';
+function IpxQueuedReceive(socket:word; ECBp:PIPX_ECB; var rcode:longint):longint;cdecl;external 'clib' name 'IpxQueuedReceive';
+function IpxReceive(socket:word; ECBp:PIPX_ECB):longint;cdecl;external 'clib' name 'IpxReceive';
+function IpxResetStatistics:longint;cdecl;external 'clib' name 'IpxResetStatistics';
+function IpxSend(socket:word; ECBp:PIPX_ECB):longint;cdecl;external 'clib' name 'IpxSend';
+{ SPX function prototypes...  }
+function SpxAbortConnection(connection:word):longint;cdecl;external 'clib' name 'SpxAbortConnection';
+function SpxCancelEvent(ecb:PSPX_ECB):longint;cdecl;external 'clib' name 'SpxCancelEvent';
+function SpxCheckSocket(socket:word):longint;cdecl;external 'clib' name 'SpxCheckSocket';
+function SpxCloseSocket(socket:word):longint;cdecl;external 'clib' name 'SpxCloseSocket';
+function SpxEstablishConnection(socket:word; ecb:PSPX_ECB; retryCount:byte; watchDogFlag:byte; connection:PWORD):longint;cdecl;external 'clib' name 'SpxEstablishConnection';
+function SpxEstablishConnection(socket:word; ecb:PSPX_ECB; retryCount:byte; watchDogFlag:byte; var connection:word):longint;cdecl;external 'clib' name 'SpxEstablishConnection';
+function SpxGetConfiguration(maxConn,availConn:Plongint):longint;cdecl;external 'clib' name 'SpxGetConfiguration';
+function SpxGetConfiguration(var maxConn,availConn:longint):longint;cdecl;external 'clib' name 'SpxGetConfiguration';
+function SpxGetConnectionStatus(connection:word; buffer:PSPX_SESSION):longint;cdecl;external 'clib' name 'SpxGetConnectionStatus';
+{ (56 bytes)  }
+function SpxGetTime(marker:Plongint):longint;cdecl;external 'clib' name 'SpxGetTime';
+function SpxGetTime(var marker:longint):longint;cdecl;external 'clib' name 'SpxGetTime';
+function SpxGetVersion(major,minor:PBYTE; revision:PWORD; revDate:Plongint):longint;cdecl;external 'clib' name 'SpxGetVersion';
+function SpxGetVersion(var major,minor:byte; var revision:word; var revDate:longint):longint;cdecl;external 'clib' name 'SpxGetVersion';
+function SpxListenForConnection(socket:word; ecb:PSPX_ECB; retryCount:byte; watchDogFlag:byte; connection:PWORD):longint;cdecl;external 'clib' name 'SpxListenForConnection';
+function SpxListenForConnection(socket:word; ecb:PSPX_ECB; retryCount:byte; watchDogFlag:byte; var connection:word):longint;cdecl;external 'clib' name 'SpxListenForConnection';
+function SpxListenForConnectedPacket(socket:word; ecb:PSPX_ECB; connection:word):longint;cdecl;external 'clib' name 'SpxListenForConnectedPacket';
+function SpxListenForSequencedPacket(socket:word; ecb:PSPX_ECB):longint;cdecl;external 'clib' name 'SpxListenForSequencedPacket';
+function SpxOpenSocket(socket:PWORD):longint;cdecl;external 'clib' name 'SpxOpenSocket';
+function SpxOpenSocket(var socket:word):longint;cdecl;external 'clib' name 'SpxOpenSocket';
+function SpxQueuedListenForSequencedPacket(socket:word; ecb:PSPX_ECB; rcode:Plongint):longint;cdecl;external 'clib' name 'SpxQueuedListenForSequencedPacket';
+function SpxQueuedListenForSequencedPacket(socket:word; ecb:PSPX_ECB; var rcode:longint):longint;cdecl;external 'clib' name 'SpxQueuedListenForSequencedPacket';
+function SpxQueuedSendSequencedPacket(connection:word; ecb:PSPX_ECB; rcode:Plongint):longint;cdecl;external 'clib' name 'SpxQueuedSendSequencedPacket';
+function SpxQueuedSendSequencedPacket(connection:word; ecb:PSPX_ECB; var rcode:longint):longint;cdecl;external 'clib' name 'SpxQueuedSendSequencedPacket';
+function SpxSendSequencedPacket(connection:word; ecb:PSPX_ECB):longint;cdecl;external 'clib' name 'SpxSendSequencedPacket';
+function SpxTerminateConnection(connection:word; ecb:PSPX_ECB):longint;cdecl;external 'clib' name 'SpxTerminateConnection';
+{ SAP function prototypes...  }
+function AdvertiseService(serviceType:word; serviceName:Pchar; serviceSocket:word):longint;cdecl;external 'clib' name 'AdvertiseService';
+function FreeQueryServicesList(listP:PSAP_RESPONSE_LIST_ENTRY):longint;cdecl;external 'clib' name 'FreeQueryServicesList';
+function QueryServices(queryType,serviceType:word):PSAP_RESPONSE_LIST_ENTRY;cdecl;external 'clib' name 'QueryServices';
+function ShutdownAdvertising(advertisingHandle:longint):longint;cdecl;external 'clib' name 'ShutdownAdvertising';
+{-nwlib.h----------------------------------------------------------------------}
+type
+  TLibraryCleanupFunc = function (dataAreaPtr:pointer):longint; cdecl;
+
+function __get_thread_data_area_ptr:Plongint;cdecl;external 'clib' name '__get_thread_data_area_ptr';
+function GetDataAreaPtr(libraryHandle:longint):pointer;cdecl;external 'clib' name 'GetDataAreaPtr';
+function DeregisterLibrary(libraryHandle:longint):longint;cdecl;external 'clib' name 'DeregisterLibrary';
+function RegisterLibrary(cleanupFunc:TLibraryCleanupFunc):longint;cdecl;external 'clib' name 'RegisterLibrary';
+function SaveDataAreaPtr(libraryHandle:longint; dataAreaPtr:pointer):longint;cdecl;external 'clib' name 'SaveDataAreaPtr';
+// function Thread_Data_Area : pointer;  Thread_Data_Area (*__get_thread_data_area_ptr())
+{-nwmalloc.h-------------------------------------------------------------------}
+procedure NWGarbageCollect (NLMHandle:longint);  cdecl; external 'clib' name 'NWGarbageCollect';
+function  NWGetAllocPageOverhead (pageCount:longint):longint;cdecl; external 'clib' name 'NWGetAllocPageOverhead';
+function  NWGetAvailableMemory : longint;        cdecl; external 'clib' name 'NWGetAvailableMemory';
+function  NWGetPageSize : longint;               cdecl; external 'clib' name 'NWGetPageSize';
+function  NWMemorySizeAddressable (addr:pointer; size:longint):longint;cdecl; external 'clib' name 'NWMemorySizeAddressable';
+function  alloca (size:longint):pointer;         cdecl; external 'clib' name 'alloca';
+function  _msize (buffer:pointer):longint;       cdecl; external 'clib' name '_msize';
+function  __qcalloc (num,siz:longint):pointer;   cdecl; external 'clib' name '__qcalloc';
+function  __qmalloc (siz:longint):pointer;       cdecl; external 'clib' name '__qmalloc';
+function  __qrealloc (old:pointer; siz:longint):pointer;cdecl; external 'clib' name '__qrealloc';
+function  stackavail:longint;                    cdecl; external 'clib' name 'stackavail';
+
+function  calloc  (num,siz:longint):pointer;     cdecl; external 'clib' name 'calloc';
+procedure free    (p:pointer);                   cdecl; external 'clib' name 'free';
+function  malloc  (siz:longint):pointer;         cdecl; external 'clib' name 'malloc';
+function  realloc (oldMemP:pointer;
+                   newsize:longint):pointer;     cdecl; external 'clib' name 'realloc';
+{-nwncpx.h---------------------------------------------------------------------}
+const
+   MAX_NCP_EXTENSION_NAME_BYTES = 33;
+   BEGIN_SCAN_NCP_EXTENSIONS = $FFFFFFFF;
+   REPLY_BUFFER_IS_FRAGGED = $FFFFFFFF;
+   CONNECTION_BEING_RESTARTED = $01101001;
+   CONNECTION_BEING_KILLED = $02202002;
+   CONNECTION_BEING_LOGGED_OUT = $03303003;
+   CONNECTION_BEING_FREED = $04404004;
+type
+   PNCPExtensionClient = ^TNCPExtensionClient;
+   TNCPExtensionClient = record
+        connection : longint;
+        task : longint;
+     end;
+
+   PFragElement = ^TFragElement;
+   TFragElement = record
+        ptr : pointer;
+        size : longint;
+     end;
+
+   PNCPExtensionMessageFrag = ^TNCPExtensionMessageFrag;
+   TNCPExtensionMessageFrag = record
+        totalMessageSize : longint;
+        fragCount : longint;
+        fragList : array[0..3] of TFragElement;
+     end;
+
+   TNCPExtensionHandlerFunc =
+     function (NCPExtensionClient:PNCPExtensionClient;
+               requestData:pointer;
+               requestDataLen:longint;
+               replyData:pointer;
+               replyDataLen:Plongint):byte; cdecl;
+   TConnectionEventHandlerProc =
+     procedure (connection:longint; eventType:longint); cdecl;
+     
+   TReplyBufferManagerProc =
+     procedure (NCPExtensionClient:PNCPExtensionClient; replyBuffer:pointer); cdecl;
+
+function NWDeRegisterNCPExtension(queryData:pointer):longint;cdecl;external name 'NWDeRegisterNCPExtension';
+function NWGetNCPExtensionInfo(NCPExtensionName:Pchar; NCPExtensionID:Plongint; majorVersion:PBYTE; minorVersion:PBYTE; revision:PBYTE;
+           queryData:pointer):longint;cdecl;external  name 'NWGetNCPExtensionInfo';
+function NWGetNCPExtensionInfoByID(NCPExtensionID:longint; NCPExtensionName:Pchar; majorVersion:PBYTE; minorVersion:PBYTE; revision:PBYTE;
+           queryData:pointer):longint;cdecl;external  name 'NWGetNCPExtensionInfoByID';
+function NWRegisterNCPExtension(NCPExtensionName:Pchar;
+                                NCPExtensionHandler:TNCPExtensionHandlerFunc;
+                                ConnectionEventHandler:TConnectionEventHandlerProc;
+                                ReplyBufferManager:TReplyBufferManagerProc;
+                                majorVersion,minorVersion,revision:byte;
+                                queryData:Ppointer):longint;cdecl;external  name 'NWRegisterNCPExtension';
+
+function NWRegisterNCPExtensionByID(NCPExtensionID:longint;
+                                    NCPExtensionName:Pchar;
+                                    NCPExtensionHandler:TNCPExtensionHandlerFunc;
+                                    ConnectionEventHandler:TConnectionEventHandlerProc;
+                                    ReplyBufferManager:TReplyBufferManagerProc;
+                                    majorVersion,minorVersion,revision:byte; queryData:Ppointer):longint;cdecl;external  name 'NWRegisterNCPExtensionByID';
+
+function NWScanNCPExtensions(NCPExtensionID:Plongint; NCPExtensionName:Pchar; majorVersion:PBYTE; minorVersion:PBYTE; revision:PBYTE;
+           queryData:pointer):longint;cdecl;external  name 'NWScanNCPExtensions';
+function NWSendNCPExtensionFraggedRequest(NCPExtensionID:longint; requestFrag:PNCPExtensionMessageFrag; replyFrag:PNCPExtensionMessageFrag):longint;cdecl;external  name 'NWSendNCPExtensionFraggedRequest';
+function NWSendNCPExtensionRequest(NCPExtensionID:longint; requestData:pointer; requestDataLen:longint; replyData:pointer; replyDataLen:Plongint):longint;cdecl;external  name 'NWSendNCPExtensionRequest';
+{-nwnspace.h-------------------------------------------------------------------}
+{$include npackon.inc}
+type
+
+   PNWNSINFO = ^TNWNSINFO;
+   TNWNSINFO = record
+     nsInfoBitMask,
+     fixedBitMask,
+     reservedBitMask,
+     extendedBitMask     : longint;
+     fixedBitsDefined,
+     reservedBitsDefined,
+     extendedBitsDefined : word;
+     fieldsLenTable      : array[0..31] of longint;
+     hugeStateInfo       : array[0..15] of byte;
+     hugeDataLength      : longint;
+   end;
+   TNW_NS_INFO = TNWNSINFO;
+   PNW_NS_INFO = ^TNW_NS_INFO;
+
+{$include npackoff.inc}
+
+function GetDataStreamName(volume:longint; dataStream:byte; name:Pchar; numberOfDataStreams:Plongint):longint;cdecl;external 'clib' name 'GetDataStreamName';
+function GetDataStreamName(volume:longint; dataStream:byte; name:Pchar; var numberOfDataStreams:longint):longint;cdecl;external 'clib' name 'GetDataStreamName';
+function GetNameSpaceName(volume:longint; nameSpace:longint; name:Pchar; numberOfNameSpaces:Plongint):longint;cdecl;external 'clib' name 'GetNameSpaceName';
+function GetNameSpaceName(volume:longint; nameSpace:longint; name:Pchar; var numberOfNameSpaces:longint):longint;cdecl;external 'clib' name 'GetNameSpaceName';
+function NWGetHugeNSInfo(volNum,nameSpace:byte; dirBase,hugeInfoMask:longint;
+                         hugeStateInfo:PBYTE;
+                         hugeData:PBYTE;
+                         hugeDataLen:PLongint;
+                         nextHugeStateInfo:PBYTE):longint;cdecl;external 'clib' name 'NWGetHugeNSInfo';
+function NWGetHugeNSInfo(volNum,nameSpace:byte; dirBase,hugeInfoMask:longint;
+                         var hugeStateInfo;
+                         var hugeData;
+                         var hugeDataLen:longint;
+                         var nextHugeStateInfo):longint;cdecl;external 'clib' name 'NWGetHugeNSInfo';
+function NWGetNameSpaceEntryName(path:PBYTE; nameSpace:longint; maxNameBufferLength:longint; nameSpaceEntryName:PChar):longint;cdecl;external 'clib' name 'NWGetNameSpaceEntryName';
+function NWGetNameSpaceEntryName(var path:byte; nameSpace:longint; maxNameBufferLength:longint; nameSpaceEntryName:PChar):longint;cdecl;external 'clib' name 'NWGetNameSpaceEntryName';
+function NWGetNSInfo(volNum:byte; srcNameSpace:byte; dstNameSpace:byte; dirBase:longint; nsInfoMask:longint;
+           nsSpecificInfo:PBYTE):longint;cdecl;external 'clib' name 'NWGetNSInfo';
+function NWGetNSLoadedList(volNum:byte; loadListSize:word; NSLoadedList:PBYTE; returnListSize:PWORD):longint;cdecl;external 'clib' name 'NWGetNSLoadedList';
+function NWQueryNSInfoFormat(nameSpace,volNum:byte; nsInfo:PNW_NS_INFO):longint;cdecl;external 'clib' name 'NWQueryNSInfoFormat';
+function NWQueryNSInfoFormat(nameSpace,volNum:byte; var nsInfo:TNW_NS_INFO):longint;cdecl;external 'clib' name 'NWQueryNSInfoFormat';
+function NWSetHugeNSInfo(volNum,nameSpace:byte; dirBase:longint;
+                         hugeInfoMask:longint; hugeStateInfo:PBYTE;
+                         hugeDataLen:longint;
+                         hugeData:PBYTE;
+                         nextHugeStateInfo:PBYTE;
+                         hugeDataUsed:PLongint):longint;cdecl;external 'clib' name 'NWSetHugeNSInfo';
+function NWSetHugeNSInfo(volNum,nameSpace:byte; dirBase:longint;
+                         hugeInfoMask:longint; var hugeStateInfo;
+                         hugeDataLen:longint;
+                         var hugeData;
+                         var nextHugeStateInfo;
+                         var hugeDataUsed:longint):longint;cdecl;external 'clib' name 'NWSetHugeNSInfo';
+
+function NWSetNameSpaceEntryName(path:PChar; nameSpace:longint; nameSpaceEntryName:PChar):longint;cdecl;external 'clib' name 'NWSetNameSpaceEntryName';
+function NWSetNSInfo(volNum,srcNameSpace,dstNameSpace:byte; dirBase:longint;
+                     nsInfoMask:longint;
+                     nsSpecificInfoLen:longint;
+                     nsSpecificInfo:Pointer):longint;cdecl;external 'clib' name 'NWSetNSInfo';
+function NWSetNSInfo(volNum,srcNameSpace,dstNameSpace:byte; dirBase:longint;
+                     nsInfoMask:longint;
+                     nsSpecificInfoLen:longint;
+                     var nsSpecificInfo):longint;cdecl;external 'clib' name 'NWSetNSInfo';
+function SetCurrentNameSpace(newNameSpace:byte):byte;cdecl;external 'clib' name 'SetCurrentNameSpace';
+function SetTargetNameSpace(newNameSpace:byte):byte;cdecl;external 'clib' name 'SetTargetNameSpace';
+{-nwproc.h---------------------------------------------------------------------}
+type TStdfds = array[0..2] of longint;
+
+function CreateChildProcess (func:pointer;
+                             threadName:PChar;
+                             cmdLine:PChar;
+                             arg:PChar;
+                             stack:pointer;
+                             stackSize:longint;
+                             stdfds:TStdfds;
+                             clearenv:longint;
+                             procName:PChar;
+                             enableApp:longint):Tpid_t;cdecl;external 'clib' name 'CreateChildProcess';
+function KillChildProcess(pid:Tpid_t):longint;cdecl;external 'clib' name 'KillChildProcess';
+function WaitOnChildProcess(pid:Tpid_t; statloc:Plongint; options:longint):longint;cdecl;external 'clib' name 'WaitOnChildProcess';
+function WaitOnChildProcess(pid:Tpid_t; var statloc:longint; options:longint):longint;cdecl;external 'clib' name 'WaitOnChildProcess';
+{-nwsemaph.h-------------------------------------------------------------------}
+function CloseLocalSemaphore       (semaHandle : longint)       : longint; cdecl; external 'clib' name 'CloseLocalSemaphore';
+function ExamineLocalSemaphore     (semaHandle : longint)       : longint; cdecl; external 'clib' name 'ExamineLocalSemaphore';
+function OpenLocalSemaphore        (initValue  : longint)       : longint; cdecl; external 'clib' name 'OpenLocalSemaphore';
+function SignalLocalSemaphore      (semaHandle : longint)       : longint; cdecl; external 'clib' name 'SignalLocalSemaphore';
+function TimedWaitOnLocalSemaphore (semaHandle,Timeout:longint) : longint; cdecl; external 'clib' name 'TimedWaitOnLocalSemaphore';
+function WaitOnLocalSemaphore      (semaHandle : longint)       : longint; cdecl; external 'clib' name 'WaitOnLocalSemaphore';
+{-signal.h---------------------------------------------------------------------}
+{ #define SIG_IGN            (void (*)(int)) 1 }
+{ #define SIG_DFL            (void (*)(int)) 2 }
+{ #define SIG_ERR            (void (*)(int)) 3 }
+const
+    SIGABRT = 1;
+    SIGFPE = 2;
+    SIGILL = 3;
+    SIGINT = 4;
+    SIGSEGV = 5;
+    SIGTERM = 6;
+    SIGPOLL = 7;
+ { currently unimplemented POSIX-mandated signals  }
+    SIGKILL = 101;
+    SA_NOCLDSTOP = 102;
+    SIGALRM = 103;
+    SIGCHILD = 104;
+    SIGCONT = 105;
+    SIGHUP = 106;
+    SIGPIPE = 107;
+    SIGQUIT = 108;
+    SIGSTOP = 109;
+    SIGTSTP = 110;
+    SIGTTIN = 111;
+    SIGTTOU = 112;
+    SIGUSR1 = 113;
+    SIGUSR2 = 114;
+    SIG_BLOCK = 115;
+    SIG_SETMASK = 116;
+    SIG_UNBLOCK = 117;
+ { Novell-defined signals  }
+    SIG_FINI = 500;
+    SIG_IPBIND = 501;
+    SIG_IPUNBIND = 502;
+    SIG_IPXBIND = 503;
+    SIG_IPXUNBIND = 504;
+    SIG_IPREGISTER = 505;
+    SIG_IPUNREGISTER = 506;
+    SIG_IPXREGISTER = 507;
+    SIG_IPXUNREGISTER = 508;
+    SIG_LOCALECHANGE = 510;
+
+type
+   Psig_atomic_t = ^Tsig_atomic_t;
+   Tsig_atomic_t = longint;
+   TSigHandlerProc = procedure (Sig:longint); cdecl;
+
+function _raise(para1:longint):longint;cdecl;external 'clib' name 'raise';
+function signal(sig:longint; func:TSigHandlerProc):longint;cdecl;external 'clib' name 'signal';
+
+function nw_raise(para1:longint):longint;cdecl;external 'clib' name 'raise';
+function nw_signal(sig:longint; func:TSigHandlerProc):longint;cdecl;external 'clib' name 'signal';
+{-nwstring.h-------------------------------------------------------------------}
+function ASCIIZToLenStr (lenString,ASCIIZstring:Pchar) : longint; cdecl;external 'clib' name 'ASCIIZToLenStr';
+function ASCIIZToMaxLenStr (lenString,ASCIIZstring:Pchar; maximumLength:longint):longint; cdecl;external 'clib' name 'ASCIIZToMaxLenStr';
+function IntSwap (w:word):word; cdecl;external 'clib' name 'IntSwap';
+function LenStrCat (destStr,srcStr:Pchar):Pchar; cdecl;external 'clib' name 'LenStrCat';
+function LenStrCmp (s1,s2:Pchar):longint; cdecl;external 'clib' name 'LenStrCmp';
+function LenStrCpy (dest,src:Pchar):Pchar; cdecl;external 'clib' name 'LenStrCpy';
+function LenToASCIIZStr (ASCIIZstring,lenString:Pchar) : longint; cdecl;external 'clib' name 'LenToASCIIZStr';
+function LongSwap (l:longint) : longint; cdecl;external 'clib' name 'LongSwap';
+{-nwtoolib.h-------------------------------------------------------------------}
+type
+  TreadFunc           = function :longint; cdecl;
+  TNLMBeginFunc       = procedure (NLMID:longint; commandLine:Pchar); cdecl;
+  TNLMPreEndFunc      = procedure (NLMID:longint); cdecl;
+  TNLMPostEndFunc     = procedure (NLMID:longint); cdecl;
+  TNLMEndNoContextFunc= procedure (NLMID:longint); cdecl;
+  TthreadGroupBeginFunc=function (threadGroupID:longint; argc:longint; const argv:array of Pchar):longint; cdecl;
+  TthreadGroupEndFunc = procedure (threadGroupID:longint); cdecl;
+  TthreadBeginFunc    = function (threadID:longint):longint;  cdecl;
+  TthreadEndFunc      = procedure (threadID:longint); cdecl;
+  TthreadReleaseFileResourcesFunc = procedure (threadID:longint); cdecl;
+
+function _NWGetErrno:longint;cdecl;external 'clib' name '_NWGetErrno';
+function _NWGetNWErrno:longint;cdecl;external 'clib' name '_NWGetNWErrno';
+function _NWGetNLMLevelLibDataPtr(NLMID:longint):pointer;cdecl;external 'clib' name '_NWGetNLMLevelLibDataPtr';
+function _NWGetThreadGroupLevelLibDataPtr(threadGroupID:longint):pointer;cdecl;external 'clib' name '_NWGetThreadGroupLevelLibDataPtr';
+function _NWGetThreadLevelLibDataPtr(threadID:longint):pointer;cdecl;external 'clib' name '_NWGetThreadLevelLibDataPtr';
+function _NWLoadNLMMessageTable(NLMHandle:longint; messageTable:PPPchar; messageCount:Plongint; languageID:Plongint):longint;cdecl;external 'clib' name '_NWLoadNLMMessageTable';
+function _NWRegisterNLMLibrary (NLMHandle:longint;
+                                NLMFileHandle:longint;
+                                readFunc:TReadFunc;
+                                NLMBegin:TNLMBeginFunc;
+                                NLMPreEnd:TNLMPreEndFunc;
+                                NLMPostEnd:TNLMPostEndFunc;
+                                NLMEndNoContext:TNLMEndNoContextFunc;
+                                threadGroupBegin:TthreadGroupBeginFunc;
+                                threadGroupEnd:TthreadGroupEndFunc;
+                                threadBegin:TthreadBeginFunc;
+                                threadEnd:TthreadEndFunc;
+                                threadReleaseFileResources:TthreadReleaseFileResourcesFunc ):longint;cdecl;external 'clib' name '_NWRegisterNLMLibrary';
+procedure _NWSetErrno   (errnoValue : longint);cdecl;external 'clib' name '_NWSetErrno';
+procedure _NWSetNWErrno (NWErrnoValue : longint);cdecl;external 'clib' name '_NWSetNWErrno';
+procedure _NWSetNLMLevelLibDataPtr (NLMID : longint; dataPtr : pointer);cdecl;external 'clib' name '_NWSetNLMLevelLibDataPtr';
+procedure _NWSetThreadGroupLevelLibDataPtr (threadGroupID : longint; dataPtr : pointer);cdecl;external 'clib' name '_NWSetThreadGroupLevelLibDataPtr';
+procedure _NWSetThreadLevelLibDataPtr (threadID : longint; dataPtr : pointer);cdecl;external 'clib' name '_NWSetThreadLevelLibDataPtr';
+{-stdio.h----------------------------------------------------------------------}
+type
+   Tva_list = pointer;  // dont know what this is
+
+   Pfpos_t = ^Tfpos_t;
+   Tfpos_t = longint;
+
+   Pwchar_t = ^Twchar_t;
+   Twchar_t = word;
+
+   Pwint_t = ^Twint_t;
+   Twint_t = longint;
+{ values for fseek()' whence argument  }
+{ add 'offset' to beginning of file         }
+
+const
+   SEEK_SET = 0;
+{ add 'offset' to current position in file  }
+   SEEK_CUR = 1;
+{ add 'offset' to end of file               }
+   SEEK_END = 2;
+{ miscellaneous definitions  }
+{ at least this many FILEs available        }
+   FOPEN_MAX = 20;
+{ (extreme) default buffer size             }
+   BUFSIZ = 1024;
+{ max number of characters in a path name   }
+   FILENAME_MAX = 1024;
+{ definitions for tmpnam() and tmpfil()  }
+{ "_T-00000.TMP" to "_T-99999.TMP"          }
+   TMP_MAX = 100000;
+{ 8 + 1 + 3 + 1 (always DOS namespace)      }
+   L_tmpnam = 13;
+{ values for field '_flag' in FILE below  }
+{ currently reading                         }
+   _IOREAD = $0001;
+{ currently writing                         }
+   _IOWRT = $0002;
+{ opened for reading and writing            }
+   _IORW = $0004;
+{ binary file (O_BINARY)                    }
+   _IOBIN = $0008;
+{ unbuffered (e.g.: stdout and stderr)      }
+   _IONBF = $0010;
+{ line buffered (e.g.: stdin)               }
+   _IOLBF = $0020;
+{ fully buffered (most files)               }
+   _IOFBF = $0040;
+{ EOF reached on read                       }
+   _IOEOF = $0080;
+{ I/O error from system                     }
+   _IOERR = $0100;
+{ stdio code malloc()'d this buffer         }
+   _IOBUF = $0200;
+{ was a temporary file by tmpfile()         }
+   _IOTMP = $0400;
+{ file stream structure                     }
+type
+   Piobuf = ^Tiobuf;
+   Tiobuf = record
+        _signature : dword;    { identifies this structure                 }
+        _avail : longint;      { available (unused/unread) room in buffer  }
+        _ptr : Pbyte;          { next character from/to here in buffer     }
+        _base : Pbyte;         { the buffer (not really)                   }
+        _oflag : dword;        { pre-CLib.NLM v4.11 compatibility          }
+        _file : dword;         { file descriptor                           }
+        _flag : dword;         { state of stream                           }
+        _buf : array[0..3] of
+                  byte;        { fake, micro buffer as a fall-back         }
+        _env : dword;          { Macintosh or UNIX text file signature     }
+     end;
+   TFILE = Tiobuf;
+   PFILE = ^TFILE;
+   PPFILE = ^PFILE;
+
+
+{ ISO/ANSI C defined functions...  }
+procedure clearerr(para1:PFILE);cdecl;external 'clib' name 'clearerr';
+procedure clearerr(var para1:TFILE);cdecl;external 'clib' name 'clearerr';
+function fclose(para1:PFILE):longint;cdecl;external 'clib' name 'fclose';
+function fclose(var para1:TFILE):longint;cdecl;external 'clib' name 'fclose';
+function feof(para1:PFILE):longint;cdecl;external 'clib' name 'feof';
+function feof(var para1:TFILE):longint;cdecl;external 'clib' name 'feof';
+function ferror(para1:PFILE):longint;cdecl;external 'clib' name 'ferror';
+function ferror(var para1:TFILE):longint;cdecl;external 'clib' name 'ferror';
+function fflush(para1:PFILE):longint;cdecl;external 'clib' name 'fflush';
+function fflush(var para1:TFILE):longint;cdecl;external 'clib' name 'fflush';
+function fgetc(para1:PFILE):char;cdecl;external 'clib' name 'fgetc';
+function fgetc(var para1:TFILE):char;cdecl;external 'clib' name 'fgetc';
+function fgetpos(para1:PFILE; para2:Pfpos_t):longint;cdecl;external 'clib' name 'fgetpos';
+function fgetpos(var para1:TFILE; var para2:Tfpos_t):longint;cdecl;external 'clib' name 'fgetpos';
+function fgets(para1:Pchar; para2:longint; para3:PFILE):Pchar;cdecl;external 'clib' name 'fgets';
+function fgets(para1:Pchar; para2:longint; var para3:TFILE):Pchar;cdecl;external 'clib' name 'fgets';
+function fopen(para1,para2:Pchar):PFILE;cdecl;external 'clib' name 'fopen';
+function fprintf(para1:PFILE; para2:Pchar; args:array of const):longint;cdecl;external 'clib' name 'fprintf';
+function fprintf(var para1:TFILE; para2:Pchar; args:array of const):longint;cdecl;external 'clib' name 'fprintf';
+function fprintf(para1:PFILE; para2:Pchar):longint;cdecl;external 'clib' name 'fprintf';
+function fprintf(var para1:TFILE; para2:Pchar):longint;cdecl;external 'clib' name 'fprintf';
+function fputc(para1:longint; para2:PFILE):longint;cdecl;external 'clib' name 'fputc';
+function fputs(para1:Pchar; para2:PFILE):longint;cdecl;external 'clib' name 'fputs';
+function fread(para1:pointer; para2:Tsize_t; para3:Tsize_t; para4:PFILE):Tsize_t;cdecl;external 'clib' name 'fread';
+function freopen(para1:Pchar; para2:Pchar; para3:PFILE):PFILE;cdecl;external 'clib' name 'freopen';
+function fscanf(para1:PFILE; para2:Pchar; args:array of const):longint;cdecl;external 'clib' name 'fscanf';
+function fscanf(var para1:TFILE; para2:Pchar; args:array of const):longint;cdecl;external 'clib' name 'fscanf';
+function fscanf(para1:PFILE; para2:Pchar):longint;cdecl;external 'clib' name 'fscanf';
+function fscanf(var para1:TFILE; para2:Pchar):longint;cdecl;external 'clib' name 'fscanf';
+function fseek(fp:PFILE; offset:longint; whence:longint):longint;cdecl;external 'clib' name 'fseek';
+function fseek(var fp:TFILE; offset:longint; whence:longint):longint;cdecl;external 'clib' name 'fseek';
+(* Const before type ignored *)
+function fsetpos(para1:PFILE; para2:Pfpos_t):longint;cdecl;external 'clib' name 'fsetpos';
+function fsetpos(var para1:TFILE; para2:Pfpos_t):longint;cdecl;external 'clib' name 'fsetpos';
+function ftell(para1:PFILE):longint;cdecl;external 'clib' name 'ftell';
+function ftell(var para1:TFILE):longint;cdecl;external 'clib' name 'ftell';
+
+function fwrite(para1:pointer; para2:Tsize_t; para3:Tsize_t; para4:PFILE):Tsize_t;cdecl;external 'clib' name 'fwrite';
+
+function getc(para1:PFILE):char;cdecl;external 'clib' name 'getc';
+function getc(var para1:TFILE):char;cdecl;external 'clib' name 'getc';
+
+function getchar:char;cdecl;external 'clib' name 'getchar';
+function gets(para1:Pchar):Pchar;cdecl;external 'clib' name 'gets';
+procedure perror(para1:Pchar);cdecl;external 'clib' name 'perror';
+function printf(para1:Pchar; args:array of const):longint;cdecl;external 'clib' name 'printf';
+function printf(para1:Pchar):longint;cdecl;external 'clib' name 'printf';
+function putc(para1:char; para2:PFILE):longint;cdecl;external 'clib' name 'putc';
+function putc(para1:char; var para2:TFILE):longint;cdecl;external 'clib' name 'putc';
+
+function putchar(para1:char):longint;cdecl;external 'clib' name 'putchar';
+
+function puts(para1:Pchar):longint;cdecl;external 'clib' name 'puts';
+function remove(para1:Pchar):longint;cdecl;external 'clib' name 'remove';
+function rename(para1, para2:Pchar):longint;cdecl;external 'clib' name 'rename';
+procedure rewind(para1:PFILE);cdecl;external 'clib' name 'rewind';
+procedure rewind(var para1:TFILE);cdecl;external 'clib' name 'rewind';
+
+function scanf(para1:Pchar; args:array of const):longint;cdecl;external 'clib' name 'scanf';
+function scanf(para1:Pchar):longint;cdecl;external 'clib' name 'scanf';
+procedure setbuf(para1:PFILE; para2:Pchar);cdecl;external 'clib' name 'setbuf';
+procedure setbuf(var para1:TFILE; para2:Pchar);cdecl;external 'clib' name 'setbuf';
+function setvbuf(para1:PFILE; para2:Pchar; para3:longint; para4:Tsize_t):longint;cdecl;external 'clib' name 'setvbuf';
+function setvbuf(para1:TFILE; para2:Pchar; para3:longint; para4:Tsize_t):longint;cdecl;external 'clib' name 'setvbuf';
+
+function sprintf(para1,para2:Pchar; args:array of const):longint;cdecl;external 'clib' name 'sprintf';
+function sprintf(para1,para2:Pchar):longint;cdecl;external 'clib' name 'sprintf';
+function sscanf(para1, para2:Pchar; args:array of const):longint;cdecl;external 'clib' name 'sscanf';
+function sscanf(para1, para2:Pchar):longint;cdecl;external 'clib' name 'sscanf';
+function tmpfile:PFILE;cdecl;external 'clib' name 'tmpfile';
+function tmpnam(para1:Pchar):Pchar;cdecl;external 'clib' name 'tmpnam';
+function ungetc(para1:longint; para2:PFILE):longint;cdecl;external 'clib' name 'ungetc';
+function ungetc(para1:longint; var para2:TFILE):longint;cdecl;external 'clib' name 'ungetc';
+
+function vfprintf(para1:PFILE; para2:Pchar; para3:Tva_list):longint;cdecl;external 'clib' name 'vfprintf';
+function vfprintf(var para1:TFILE; para2:Pchar; para3:Tva_list):longint;cdecl;external 'clib' name 'vfprintf';
+
+function vfscanf(para1:PFILE; para2:Pchar; para3:Tva_list):longint;cdecl;external 'clib' name 'vfscanf';
+function vfscanf(var para1:TFILE; para2:Pchar; para3:Tva_list):longint;cdecl;external 'clib' name 'vfscanf';
+
+function vprintf(para1:Pchar; para2:Tva_list):longint;cdecl;external 'clib' name 'vprintf';
+function vscanf(para1:Pchar; para2:Tva_list):longint;cdecl;external 'clib' name 'vscanf';
+function vsprintf(para1,para2:Pchar; para3:Tva_list):longint;cdecl;external 'clib' name 'vsprintf';
+function vsscanf(para1, para2:Pchar; para3:Tva_list):longint;cdecl;external 'clib' name 'vsscanf';
+{ POSIX-defined additions...  }
+function fdopen(para1:longint; para2:Pchar):PFILE;cdecl;external 'clib' name 'fdopen';
+function fileno(fp:PFILE):longint;cdecl;external 'clib' name 'fileno';
+function fileno(var f:TFILE):longint;cdecl;external 'clib' name 'fileno';
+//function cgets(para1:Pchar):Pchar;cdecl;external 'clib' name 'cgets';
+//function cprintf(para1:Pchar; args:array of const):longint;cdecl;external 'clib' name 'cprintf';
+//function cprintf(para1:Pchar):longint;cdecl;external 'clib' name 'cprintf';
+//function cputs(para1:Pchar):longint;cdecl;external 'clib' name 'cputs';
+//function cscanf(para1:Pchar; args:array of const):longint;cdecl;external 'clib' name 'cscanf';
+//function cscanf(para1:Pchar):longint;cdecl;external 'clib' name 'cscanf';
+function fcloseall:longint;cdecl;external 'clib' name 'fcloseall';
+function fgetchar:longint;cdecl;external 'clib' name 'fgetchar';
+function flushall:longint;cdecl;external 'clib' name 'flushall';
+function fputchar(para1:longint):longint;cdecl;external 'clib' name 'fputchar';
+function vcprintf(para1:Pchar; para2:Tva_list):longint;cdecl;external 'clib' name 'vcprintf';
+function vcscanf(para1:Pchar; para2:Tva_list):longint;cdecl;external 'clib' name 'vcscanf';
+function NWfprintf(var para1:TFILE; para2:Pchar; args:array of const):longint;cdecl;external 'clib' name 'NWfprintf';
+function NWfprintf(var para1:TFILE; para2:Pchar):longint;cdecl;external 'clib' name 'NWfprintf';
+function NWvcprintf(para1:Pchar; para2:Tva_list):longint;cdecl;external 'clib' name 'NWvcprintf';
+function NWvfprintf(para1:PFILE; para2:Pchar; para3:Tva_list):longint;cdecl;external 'clib' name 'NWvfprintf';
+function NWvprintf(para1:Pchar; para2:Tva_list):longint;cdecl;external 'clib' name 'NWvprintf';
+function NWvsprintf(para1:Pchar; para2:Pchar; para3:Tva_list):longint;cdecl;external 'clib' name 'NWvsprintf';
+{
+   For the following support, open the file without 'b' in the mode. Additions
+   for transparent Macintosh text file support ('\r' on lines) and additions
+   for transparent UNIX text file support ('\n' on lines).
+ }
+function IsMacintoshTextFile(para1:PFILE):longint;cdecl;external 'clib' name 'IsMacintoshTextFile';
+function SetMacintoshTextMode(para1:PFILE):longint;cdecl;external 'clib' name 'SetMacintoshTextMode';
+function UnsetMacintoshTextMode(para1:PFILE):longint;cdecl;external 'clib' name 'UnsetMacintoshTextMode';
+
+function IsMacintoshTextFile(var para1:TFILE):longint;cdecl;external 'clib' name 'IsMacintoshTextFile';
+function SetMacintoshTextMode(var para1:TFILE):longint;cdecl;external 'clib' name 'SetMacintoshTextMode';
+function UnsetMacintoshTextMode(var para1:TFILE):longint;cdecl;external 'clib' name 'UnsetMacintoshTextMode';
+
+{ back to '\r\n'  }
+function is_unix_text_file(para1:PFILE):longint;cdecl;external 'clib' name 'is_unix_text_file';
+function set_unix_text_mode(para1:PFILE):longint;cdecl;external 'clib' name 'set_unix_text_mode';
+function unset_unix_text_mode(para1:PFILE):longint;cdecl;external 'clib' name 'unset_unix_text_mode';
+
+function is_unix_text_file(var para1:TFILE):longint;cdecl;external 'clib' name 'is_unix_text_file';
+function set_unix_text_mode(var para1:TFILE):longint;cdecl;external 'clib' name 'set_unix_text_mode';
+function unset_unix_text_mode(var para1:TFILE):longint;cdecl;external 'clib' name 'unset_unix_text_mode';
+
+{ back to '\r\n'  }
+{ functions underlying macro support...  }
+function __get_stdin:PPFILE;cdecl;external 'clib' name '__get_stdin';
+function __get_stdout:PPFILE;cdecl;external 'clib' name '__get_stdout';
+function __get_stderr:PPFILE;cdecl;external 'clib' name '__get_stderr';
+
+function stdin : PFILE;
+function stdout : PFILE;
+function stderr : PFILE;
+{-stdlib.h---------------------------------------------------------------------}
+{$PACKRECORDS C}
+
+
+const
+   EXIT_FAILURE = -(1);
+   EXIT_SUCCESS = 0;
+   RAND_MAX = 32767;
+type
+   Pdiv_t = ^Tdiv_t;
+   Tdiv_t = record
+        quot : longint;
+        rem : longint;
+     end;
+
+   Pldiv_t = ^Tldiv_t;
+   Tldiv_t = record
+        quot : longint;
+        rem : longint;
+     end;
+
+   TCdeclProcedure = procedure; cdecl;
+   TBSearchFunc = function (para1:pointer; para2:pointer):longint; cdecl;
+   TQSortFunc = function (para1:pointer; para2:pointer):longint; cdecl;
+
+  var
+     __ctype : array of byte;cvar;external;
+
+procedure abort;cdecl;external 'clib' name 'abort';
+function abs(para1:longint):longint;cdecl;external 'clib' name 'abs';
+function atexit(proc:TCdeclProcedure):longint;cdecl;external 'clib' name 'atexit';
+function atof(para1:Pchar):double;cdecl;external 'clib' name 'atof';
+function atoi(para1:Pchar):longint;cdecl;external 'clib' name 'atoi';
+function atol(para1:Pchar):longint;cdecl;external 'clib' name 'atol';
+function bsearch(para1,para2:pointer; para3,para4:Tsize_t; para5:TBsearchFunc):pointer;cdecl;external 'clib' name 'bsearch';
+function calloc(para1:Tsize_t; para2:Tsize_t):pointer;cdecl;external 'clib' name 'calloc';
+function _div(para1,para2:longint):Tdiv_t;cdecl;external 'clib' name 'div';
+procedure exit(para1:longint);cdecl;external 'clib' name 'exit';
+procedure _exit(para1:longint);cdecl;external 'clib' name '_exit';
+function getenv(para1:Pchar):Pchar;cdecl;external 'clib' name 'getenv';
+function labs(para1:longint):longint;cdecl;external 'clib' name 'labs';
+function ldiv(para1:longint; para2:longint):Tldiv_t;cdecl;external 'clib' name 'ldiv';
+function malloc(para1:Tsize_t):pointer;cdecl;external 'clib' name 'malloc';
+function mblen(para1:Pchar; para2:Tsize_t):longint;cdecl;external 'clib' name 'mblen';
+function mbstowcs(para1:Pwchar_t; para2:Pchar; para3:Tsize_t):Tsize_t;cdecl;external 'clib' name 'mbstowcs';
+function mbtowc(para1:Pwchar_t; para2:Pchar; para3:Tsize_t):longint;cdecl;external 'clib' name 'mbtowc';
+procedure qsort(para1:pointer; para2,para3:Tsize_t; para4:TQSortFunc);cdecl;external 'clib' name 'qsort';
+function rand:longint;cdecl;external 'clib' name 'rand';
+function realloc(para1:pointer; para2:Tsize_t):pointer;cdecl;external 'clib' name 'realloc';
+procedure srand(para1:dword);cdecl;external 'clib' name 'srand';
+function strtod(para1:Pchar; para2:PPchar):double;cdecl;external 'clib' name 'strtod';
+function strtol(para1:Pchar; para2:PPchar; para3:longint):longint;cdecl;external 'clib' name 'strtol';
+function strtoul(para1:Pchar; para2:PPchar; para3:longint):dword;cdecl;external 'clib' name 'strtoul';
+function _system(para1:Pchar):longint;cdecl;external 'clib' name 'system';
+function wcstombs(para1:Pchar; para2:Pwchar_t; para3:Tsize_t):Tsize_t;cdecl;external 'clib' name 'wcstombs';
+function wctomb(para1:Pchar; para2:Twchar_t):longint;cdecl;external 'clib' name 'wctomb';
+function clearenv:longint;cdecl;external 'clib' name 'clearenv';
+function ecvt(para1:double; para2:longint; para3:Plongint; para4:Plongint):Pchar;cdecl;external 'clib' name 'ecvt';
+function fcvt(para1:double; para2:longint; para3:Plongint; para4:Plongint):Pchar;cdecl;external 'clib' name 'fcvt';
+function gcvt(para1:double; para2:longint; para3:Pchar):Pchar;cdecl;external 'clib' name 'gcvt';
+function htol(para1:Pchar):dword;cdecl;external 'clib' name 'htol';
+function itoa(para1:longint; para2:Pchar; para3:longint):Pchar;cdecl;external 'clib' name 'itoa';
+function itoab(para1:dword; para2:Pchar):Pchar;cdecl;external 'clib' name 'itoab';
+function ltoa(para1:longint; para2:Pchar; para3:longint):Pchar;cdecl;external 'clib' name 'ltoa';
+function max(para1:longint; para2:longint):longint;cdecl;external 'clib' name 'max';
+function min(para1:longint; para2:longint):longint;cdecl;external 'clib' name 'min';
+function putenv(name:Pchar):longint;cdecl;external 'clib' name 'putenv';
+function rand_r(seed:Pdword; result:Plongint):longint;cdecl;external 'clib' name 'rand_r';
+function _rotl(para1:dword; para2:dword):dword;cdecl;external 'clib' name '_rotl';
+function _rotr(para1:dword; para2:dword):dword;cdecl;external 'clib' name '_rotr';
+function scanenv(sequence:Plongint; variable:Pchar; length:Psize_t; value:Pchar):longint;cdecl;external 'clib' name 'scanenv';
+function setenv(name:Pchar; value:Pchar; overwrite:longint):longint;cdecl;external 'clib' name 'setenv';
+// double   strtod_ld( const char *, char **, long double *);
+function strtoi(para1:Pchar; para2:longint):longint;cdecl;external 'clib' name 'strtoi';
+function ultoa(para1:dword; para2:Pchar; para3:longint):Pchar;cdecl;external 'clib' name 'ultoa';
+function unsetenv(name:Pchar):longint;cdecl;external 'clib' name 'unsetenv';
+function utoa(para1:dword; para2:Pchar; para3:longint):Pchar;cdecl;external 'clib' name 'utoa';
+function _lrotl(para1:dword; para2:dword):dword;cdecl;external 'clib' name '_lrotl';
+function _lrotr(para1:dword; para2:dword):dword;cdecl;external 'clib' name '_lrotr';
+{-unistd.h---------------------------------------------------------------------}
+const
+   F_OK = 0;
+   R_OK = 4;
+   W_OK = 2;
+   X_OK = 1;
+{ test using effective ids  }
+   EFF_ONLY_OK = 8;
+   STDIN_FILENO = 0;
+   STDOUT_FILENO = 1;
+   STDERR_FILENO = 2;
+
+type TPipeFiledes = array [0..1] of longint;
+
+function access(path:Pchar; mode:longint):longint;cdecl;external 'clib' name 'access';
+function chdir(path:Pchar):longint;cdecl;external 'clib' name 'chdir';
+function chsize(fildes:longint; size:dword):longint;cdecl;external 'clib' name 'chsize';
+function close(fildes:longint):longint;cdecl;external 'clib' name 'close';
+function dup(fildes:longint):longint;cdecl;external 'clib' name 'dup';
+function dup2(fildes1:longint; fildes2:longint):longint;cdecl;external 'clib' name 'dup2';
+function eof(fildes:longint):longint;cdecl;external 'clib' name 'eof';
+function getcwd(path:Pchar; len:Tsize_t):Pchar;cdecl;external 'clib' name 'getcwd';
+function isatty(fildes:longint):longint;cdecl;external 'clib' name 'isatty';
+function lseek(fildes:longint; offset:Toff_t; whence:longint):Toff_t;cdecl;external 'clib' name 'lseek';
+function pipe(fildes:TPipeFiledes):longint;cdecl;external 'clib' name 'pipe';
+function read(fildes:longint; buf:pointer; nbytes:Tsize_t):Tssize_t;cdecl;external 'clib' name 'read';
+function rmdir(path:Pchar):longint;cdecl;external 'clib' name 'rmdir';
+function unlink(path:Pchar):longint;cdecl;external 'clib' name 'unlink';
+function write(fildes:longint; buf:pointer; nbytes:Tsize_t):Tssize_t;cdecl;external 'clib' name 'write';
+function pread(fildes:longint; buf:pointer; nbytes:Tsize_t; offset:Toff_t):Tssize_t;cdecl;external 'clib' name 'pread';
+function pwrite(fildes:longint; buf:pointer; nbytes:Tsize_t; offset:Toff_t):Tssize_t;cdecl;external 'clib' name 'pwrite';
+
+function write(fildes:longint; var buf; nbytes:Tsize_t):Tssize_t;cdecl;external 'clib' name 'write';
+function pread(fildes:longint; var buf; nbytes:Tsize_t; offset:Toff_t):Tssize_t;cdecl;external 'clib' name 'pread';
+function pwrite(fildes:longint; var buf; nbytes:Tsize_t; offset:Toff_t):Tssize_t;cdecl;external 'clib' name 'pwrite';
+{-libcclib.h-------------------------------------------------------------------}
+{$PACKRECORDS C}
+
+type
+   Tstart_routineProc = procedure (arg:pointer); cdecl;
+   Pclibctx_t = ^Tclibctx_t;
+   Tclibctx_t = record
+     ThreadGroupGetID   : function :longint;cdecl;
+     ThreadGroupCreate  : function (name:Pchar; threadGroupID:Plongint):longint; cdecl;
+     ThreadGroupDispose : function (threadGroupID:longint):longint; cdecl;
+     ThreadGroupUnwrap  : function (threadGroupID:longint; restoredThreadGroupID:longint):longint; cdecl;
+     ThreadGroupWrap    : function (threadGroupID:longint):longint; cdecl;
+     ThreadCreate       : function (threadGroupID:longint;
+                              start_routine:Tstart_routineProc;
+                              arg:pointer;
+                              stackSize:Tsize_t;
+                              flags:dword;
+                              threadID:Plongint):longint; cdecl;
+     __UnloadBroker     : procedure ; cdecl;
+     reserved1          : pointer;
+     reserved           : array[0..7] of pointer;
+   end;
+
+function CLibLoadContextBroker(module:pointer; callback:Pchar):longint;cdecl;external 'clib' name 'CLibLoadContextBroker';
+function CLibUnloadContextBroker(broker:Pclibctx_t):longint;cdecl;external 'clib' name 'CLibUnloadContextBroker';
+function MyCallBack(broker:Pclibctx_t):longint;cdecl;external 'clib' name 'MyCallBack';
+{-nwtime.h---------------------------------------------------------------------}
+const
+   CLOCK_IS_SYNCHRONIZED = $01;
+type
+
+   PclockAndStatus = ^TclockAndStatus;
+   TclockAndStatus = longint;
+
+const
+   CLOCK_IS_NETWORK_SYNCHRONIZED = $02;
+   CLOCK_SYNCHRONIZATION_IS_ACTIVE = $04;
+
+{$include npackon.inc}
+type
+   PDOSTime = ^TDOSTime;
+   TDOSTime = record
+        flag0 : word;
+     end;
+
+const
+   bm_TDOSTime_bisecond = $1F;
+   bp_TDOSTime_bisecond = 0;
+   bm_TDOSTime_minute = $7E0;
+   bp_TDOSTime_minute = 5;
+   bm_TDOSTime_hour = $F800;
+   bp_TDOSTime_hour = 11;
+function bisecond(var a : TDOSTime) : word;
+procedure set_bisecond(var a : TDOSTime; __bisecond : word);
+function minute(var a : TDOSTime) : word;
+procedure set_minute(var a : TDOSTime; __minute : word);
+function hour(var a : TDOSTime) : word;
+procedure set_hour(var a : TDOSTime; __hour : word);
+type
+   PDOSDate = ^TDOSDate;
+   TDOSDate = record
+        flag0 : word;
+     end;
+   T_DOSDate = TDOSDate;
+
+const
+   bm_TDOSDate_day = $1F;
+   bp_TDOSDate_day = 0;
+   bm_TDOSDate_month = $1E0;
+   bp_TDOSDate_month = 5;
+   bm_TDOSDate_yearsSince80 = $FE00;
+   bp_TDOSDate_yearsSince80 = 9;
+function day(var a : TDOSDate) : word;
+procedure set_day(var a : TDOSDate; __day : word);
+function month(var a : TDOSDate) : word;
+procedure set_month(var a : TDOSDate; __month : word);
+function yearsSince80(var a : TDOSDate) : word;
+procedure set_yearsSince80(var a : TDOSDate; __yearsSince80 : word);
+type
+   P_DOSTime = ^T_DOSTime;
+   T_DOSTime = record
+        flag0 : word;
+     end;
+
+const
+   bm_T_DOSTime_bisecond = $1F;
+   bp_T_DOSTime_bisecond = 0;
+   bm_T_DOSTime_minute = $7E0;
+   bp_T_DOSTime_minute = 5;
+   bm_T_DOSTime_hour = $F800;
+   bp_T_DOSTime_hour = 11;
+function bisecond(var a : T_DOSTime) : word;
+procedure set_bisecond(var a : T_DOSTime; __bisecond : word);
+function minute(var a : T_DOSTime) : word;
+procedure set_minute(var a : T_DOSTime; __minute : word);
+function hour(var a : T_DOSTime) : word;
+procedure set_hour(var a : T_DOSTime; __hour : word);
+
+const
+   bm_T_DOSDate_day = $1F;
+   bp_T_DOSDate_day = 0;
+   bm_T_DOSDate_month = $1E0;
+   bp_T_DOSDate_month = 5;
+   bm_T_DOSDate_yearsSince80 = $FE00;
+   bp_T_DOSDate_yearsSince80 = 9;
+
+
+{$include npackoff.inc}
+
+function _ConvertDOSTimeToCalendar(dateTime:longint):Ttime_t;cdecl;external 'clib' name '_ConvertDOSTimeToCalendar';
+procedure _ConvertTimeToDOS(calendarTime:Ttime_t; filDatP:PDOSDate; filTimP:PDOSTime);cdecl;external 'clib' name '_ConvertTimeToDOS';
+procedure GetClockStatus(_dataPtr:TclockAndStatus);cdecl;external 'clib' name 'GetClockStatus';
+function GetCurrentTicks:longint;cdecl;external 'clib' name 'GetCurrentTicks';
+function GetHighResolutionTimer:longint;cdecl;external 'clib' name 'GetHighResolutionTimer';
+function GetSuperHighResolutionTimer:longint;cdecl;external 'clib' name 'GetSuperHighResolutionTimer';
+function NWGetHighResolutionTimer:longint;cdecl;external 'clib' name 'NWGetHighResolutionTimer';
+function NWGetSuperHighResolutionTimer:longint;cdecl;external 'clib' name 'NWGetSuperHighResolutionTimer';
+function __get_altzone:Ptime_t;cdecl;external 'clib' name '__get_altzone';
+function altzone:Ptime_t;cdecl;external 'clib' name '__get_altzone';
+function __get_daylight:Plongint;cdecl;external 'clib' name '__get_daylight';
+function daylight:Plongint;cdecl;external 'clib' name '__get_daylight';
+function __get_daylightOffset:Ptime_t;cdecl;external 'clib' name '__get_daylightOffset';
+function daylightOffset:Ptime_t;cdecl;external 'clib' name '__get_daylightOffset';
+function __get_daylightOnOff:Plongint;cdecl;external 'clib' name '__get_daylightOnOff';
+function daylightOnOff:Plongint;cdecl;external 'clib' name '__get_daylightOnOff';
+function __get_timezone:Ptime_t;cdecl;external 'clib' name '__get_timezone';
+function timezone:Ptime_t;cdecl;external 'clib' name '__get_timezone';
+procedure SecondsToTicks(Seconds:longint; TenthsOfSeconds:longint; Ticks:Plongint);cdecl;external 'clib' name 'SecondsToTicks';
+procedure TicksToSeconds(Ticks:longint; Seconds:Plongint; TenthsOfSeconds:Plongint);cdecl;external 'clib' name 'TicksToSeconds';
+{-nwthread.h-------------------------------------------------------------------}
+  { values for __action_code used with ExitThread()  }
+
+  const
+     TSR_THREAD = -1;
+     EXIT_THREAD = 0;
+     EXIT_NLM = 1;
+  { values for __mode used with spawnxx()  }
+     P_WAIT = 0;
+     P_NOWAIT = 1;
+     P_OVERLAY = 2;
+     P_NOWAITO = 4;
+     P_SPAWN_IN_CURRENT_DOMAIN = 8;
+     NO_CONTEXT = 0;
+     USE_CURRENT_CONTEXT = 1;
+  { stack defines  }
+     MIN_STACKSIZE = 16384;
+     DEFAULT_STACKSIZE = 16384;
+
+  type
+  
+     PWorkToDo = ^TWorkToDo;
+    
+     TProcedure    = procedure; cdecl;
+     TThreadFunc   = procedure (param1:pointer); cdecl;
+     TWorkToDoProc = procedure (data:pointer; workToDo:PWorkToDo); cdecl;
+     TCleanup      = procedure (para1:longint); cdecl;
+
+  
+     PAESProcessStructure = ^TAESProcessStructure;
+     TAESProcessStructure = record
+          ALink              : PAESProcessStructure;
+          AWakeUpDelayAmount : longint;
+          AWakeUpTime        : longint;
+          AProcessToCall     : procedure (para1:pointer);cdecl;
+          ARTag              : longint;
+          AOldLink           : longint;
+       end;
+
+
+     PWorkToDoStructure = ^TWorkToDoStructure;
+     TWorkToDoStructure = record
+          Link            : PWorkToDoStructure;
+          workProcedure   : TProcedure;
+          WorkResourceTag : longint;
+          PollCountAmount : longint;
+          PollCountWhen   : longint;
+          userProcedure   : TProcedure;
+          dataPtr         : pointer;
+          destThreadGroup : longint;
+       end;
+     TWorkToDo = TWorkToDoStructure;
+     
+
+     
+  { custom data area variables...  }
+
+    var
+       threadCustomDataPtr : pointer;cvar;external;
+       threadCustomDataSize : longint;cvar;external;
+       threadGroupCustomDataPtr : pointer;cvar;external;
+       threadGroupCustomDataSize : longint;cvar;external;
+    
+    
+  function AtUnload(func:Tprocedure):longint;                       cdecl;external ThreadsNlm name 'AtUnload';
+  function BeginThread(func:TThreadFunc; 
+                       stackP:pointer; 
+		       stackSize:dword; 
+		       arg:pointer):longint;                        cdecl;external ThreadsNlm name 'BeginThread';
+  function BeginThreadGroup(func:TThreadFunc; 
+                            stackP:pointer; 
+			    stackSize:dword; 
+			    arg:pointer):longint;                   cdecl;external ThreadsNlm name 'BeginThreadGroup';
+  function Breakpoint(arg:longint):longint;                         cdecl;external Lib0Nlm name 'Breakpoint';
+  procedure CancelNoSleepAESProcessEvent(EventNode:PAESProcessStructure);cdecl;external ThreadsNlm name 'CancelNoSleepAESProcessEvent';
+  procedure CancelSleepAESProcessEvent  (EventNode:PAESProcessStructure);cdecl;external ThreadsNlm name 'CancelSleepAESProcessEvent';
+  function ClearNLMDontUnloadFlag(NLMID:longint):longint;                cdecl;external ThreadsNlm name 'ClearNLMDontUnloadFlag';
+  procedure delay(milliseconds:dword);                                   cdecl;external ThreadsNlm name 'delay';
+  function EnterCritSec:longint;                                         cdecl;external ThreadsNlm name 'EnterCritSec';
+  function ExitCritSec:longint;                                          cdecl;external ThreadsNlm name 'ExitCritSec';
+  procedure ExitThread(action_code     :longint; 
+                       termination_code:longint);                        cdecl;external ThreadsNlm name 'ExitThread';
+
+  function FindNLMHandle(NLMFileName:Pchar):dword;                       cdecl;external ThreadsNlm name 'FindNLMHandle';
+  function getcmd(cmdLine:Pchar):Pchar;                                  cdecl;external ThreadsNlm name 'getcmd';
+  function GetNLMHandle:dword;                                           cdecl;external ThreadsNlm name 'GetNLMHandle';
+  function GetNLMID:longint;                                             cdecl;external ThreadsNlm name 'GetNLMID';
+  function GetNLMIDFromNLMHandle(NLMHandle:longint):longint;             cdecl;external ThreadsNlm name 'GetNLMIDFromNLMHandle';
+  function GetNLMIDFromThreadID(threadID:longint;fileName:Pchar):longint;cdecl;external ThreadsNlm name 'GetNLMIDFromThreadID';
+  function GetNLMNameFromNLMID(NLMID:longint; 
+                               fileName:Pchar; 
+			       description:Pchar):longint;               cdecl;external ThreadsNlm name 'GetNLMNameFromNLMID';
+  function GetNLMNameFromNLMHandle(NLMHandle:longint; 
+                                   LDFileName:Pchar; 
+				   LDName:Pchar):longint;                cdecl;external ThreadsNlm name 'GetNLMNameFromNLMHandle';
+  function GetThreadContextSpecifier(threadID:longint):longint;          cdecl;external ThreadsNlm name 'GetThreadContextSpecifier';
+  function GetThreadGroupID:longint;                                     cdecl;external ThreadsNlm name 'GetThreadGroupID';
+  function __GetThreadIDFromPCB(PCB:longint):longint;                    cdecl;external Lib0Nlm name '__GetThreadIDFromPCB';
+  function GetThreadHandicap(threadID:longint):longint;                  cdecl;external ThreadsNlm name 'GetThreadHandicap';
+  function GetThreadID:longint;                                          cdecl;external ThreadsNlm name 'GetThreadID';
+  function GetThreadName(threadID:longint; tName:Pchar):longint;         cdecl;external ThreadsNlm name 'GetThreadName';
+  function MapNLMIDToHandle(NLMID:longint):longint;                      cdecl;external ThreadsNlm name 'MapNLMIDToHandle';
+  function PopThreadCleanup(execute:longint):TCLEANUP;                   cdecl;external ThreadsNlm name 'PopThreadCleanup';
+  function PopThreadGroupCleanup(execute:longint):TCLEANUP;              cdecl;external ThreadsNlm name 'PopThreadGroupCleanup';
+  function PushThreadCleanup(func:TCLEANUP):longint;                     cdecl;external ThreadsNlm name 'PushThreadCleanup';
+  function PushThreadGroupCleanup(func:TCLEANUP):longint;                cdecl;external ThreadsNlm name 'PushThreadGroupCleanup';
+  function RenameThread(threadID:longint; newName:Pchar):longint;        cdecl;external ThreadsNlm name 'RenameThread';
+  function ResumeThread(threadID:longint):longint;                       cdecl;external ThreadsNlm name 'ResumeThread';
+  function ReturnNLMVersionInfoFromFile(pathName:pchar; 
+                                        majorVersion:Plongint; 
+					minorVersion:Plongint; 
+					revision:Plongint; 
+					year:Plongint; 
+                                        month:Plongint; 
+					day:Plongint; 
+					copyrightString:pchar; 
+					description:pchar):longint;      cdecl;external NlmLibNlm name 'ReturnNLMVersionInfoFromFile';
+  function ReturnNLMVersionInfoFromFile(pathName:pchar; 
+                                        var majorVersion,minorVersion,revision:longint;
+					var year,month,day:longint; 
+					copyrightString:pchar; 
+					description:pchar):longint;      cdecl;external NlmLibNlm name 'ReturnNLMVersionInfoFromFile';
+
+  function ReturnNLMVersionInformation(NLMHandle:longint; 
+                                       majorVersion,minorVersion,revision,year,month,day:Plongint; 
+                                       copyrightString:pchar; description:pchar):longint;cdecl;external NlmLibNlm name 'ReturnNLMVersionInformation';
+  function ReturnNLMVersionInformation(NLMHandle:longint; 
+                                       var majorVersion,minorVersion,revision,year,month,day:longint;
+                                       copyrightString:pchar; description:pchar):longint;cdecl;external NlmLibNlm name 'ReturnNLMVersionInformation';
+
+  procedure ScheduleNoSleepAESProcessEvent(EventNode:PAESProcessStructure);cdecl;external ThreadsNlm name 'ScheduleNoSleepAESProcessEvent';
+  procedure ScheduleSleepAESProcessEvent(EventNode:PAESProcessStructure);  cdecl;external ThreadsNlm name 'ScheduleSleepAESProcessEvent';
+
+
+  function ScheduleWorkToDo(ProcedureToCall:TWorkToDoProc; 
+                            workData       :pointer; 
+			    workToDo       :PWorkToDo):longint;            cdecl;external ThreadsNlm name 'ScheduleWorkToDo';
+  function SetNLMDontUnloadFlag(NLMID:longint):longint;                    cdecl;external ThreadsNlm name 'SetNLMDontUnloadFlag';
+  function SetNLMID(newNLMID:longint):longint;                             cdecl;external ThreadsNlm name 'SetNLMID';
+  function SetThreadContextSpecifier(threadID,
+                                     contextSpecifier:longint):longint;    cdecl;external ThreadsNlm name 'SetThreadContextSpecifier';
+  function SetThreadGroupID(newThreadGroupID:longint):longint;             cdecl;external ThreadsNlm name 'SetThreadGroupID';
+  procedure SetThreadHandicap(threadID, handicap:longint);                 cdecl;external ThreadsNlm name 'SetThreadHandicap';
+  function spawnlp(mode:longint; 
+                   path,arg0:Pchar; 
+		   args:array of const):longint;                           cdecl;external ThreadsNlm name 'spawnlp';
+  function spawnlp(mode:longint; 
+                   path,arg0:Pchar):longint;                               cdecl;external ThreadsNlm name 'spawnlp';
+  function spawnvp(mode:longint; 
+                   path,argv:PPchar):longint;                              cdecl;external ThreadsNlm name 'spawnvp';
+  function SuspendThread(threadID:longint):longint;                        cdecl;external ThreadsNlm name 'SuspendThread';
+  procedure ThreadSwitch;                                                  cdecl;external ThreadsNlm name 'ThreadSwitch';
+  procedure ThreadSwitchLowPriority;                                       cdecl;external ThreadsNlm name 'ThreadSwitchLowPriority';
+  procedure ThreadSwitchWithDelay;                                         cdecl;external ThreadsNlm name 'ThreadSwitchWithDelay';
+{-nwmediam.h-------------------------------------------------------------------}
+{$include npackon.inc}
+
+const
+   FORMAT_MEDIA = $0000;
+   TAPE_CONTROL = $0001;
+   ACTIVATE_FUNCTIONS = $0003;
+   MOUNT_FUNCTIONS = $0004;
+   SELECT_FUNCTIONS = $0005;
+   INSERTION_FUNCTIONS = $0006;
+   LOCK_FUNCTIONS = $0007;
+   MOVE_FUNCTIONS = $0008;
+   STAMP_FUNCTIONS = $0009;
+   SCAN_FUNCTIONS = $000A;
+   MAGAZINE_FUNCTIONS = $000D;
+{ IO Functions  }
+   RANDOM_READ = $0020;
+   RANDOM_WRITE = $0021;
+   RANDOM_WRITE_ONCE = $0022;
+   SEQUENTIAL_READ = $0023;
+   SEQUENTIAL_WRITE = $0024;
+   RESET_END_OF_TAPE = $0025;
+   SINGLE_FILE_MARK = $0026;
+   MULTIPLE_FILE_MARK = $0027;
+   SINGLE_SET_MARK = $0028;
+   MULTIPLE_SET_MARK = $0029;
+   SPACE_DATA_BLOCKS = $002A;
+   LOCATE_DATA_BLOCKS = $002B;
+   POSITION_PARTITION = $002C;
+   POSITION_MEDIA = $002D;
+   DEVICE_GENERIC_IOCTL = $003E;
+{ Object Types  }
+   UNKNOWN_OBJECT = $FFFF;
+   ADAPTER_OBJECT = 0;
+   CHANGER_OBJECT = 1;
+   DEVICE_OBJECT = 2;
+   MEDIA_OBJECT = 4;
+   PARTITION_OBJECT = 5;
+   SLOT_OBJECT = 6;
+   HOTFIX_OBJECT = 7;
+   MIRROR_OBJECT = 8;
+   PARITY_OBJECT = 9;
+   VOLUME_SEG_OBJECT = 10;
+   VOLUME_OBJECT = 11;
+   CLONE_OBJECT = 12;
+   MAGAZINE_OBJECT = 14;
+   UNIDENTIFIABLE_MEDIA = $00000001;
+   HIGH_SIERRA_CDROM_MEDIA = $00000002;
+   ISO_CDROM_MEDIA = $00000003;
+   MAC_CDROM_MEDIA = $00000004;
+   NETWARE_FILE_SYSTEM_MEDIA = $00000005;
+   INTERNAL_IDENTIFY_TYPE = $00000007;
+   SMS_MEDIA_TYPE = $00000008;
+{ Notify Event Bits  }
+   NOTIFY_OBJECT_CREATION = $0001;
+   NOTIFY_OBJECT_DELETION = $0002;
+   NOTIFY_OBJECT_ACTIVATED = $0004;
+   NOTIFY_OBJECT_DEACTIVATED = $0008;
+   NOTIFY_OBJECT_RESERVATION = $0010;
+   NOTIFY_OBJECT_UNRESERVATION = $0020;
+{ Object Status Bits  }
+   OBJECT_ACTIVATED = $00000001;
+   OBJECT_PHANTOM = $00000002;
+   OBJECT_ASSIGNABLE = $00000004;
+   OBJECT_ASSIGNED = $00000008;
+   OBJECT_RESERVED = $00000010;
+   OBJECT_BEING_IDENTIFIED = $00000020;
+   OBJECT_MAGAZINE_LOADED = $00000040;
+   OBJECT_FAILURE = $00000080;
+   OBJECT_REMOVABLE = $00000100;
+   OBJECT_READ_ONLY = $00000200;
+   OBJECT_IN_DEVICE = $00010000;
+   OBJECT_ACCEPTS_MAGAZINES = $00020000;
+   OBJECT_IS_IN_A_CHANGER = $00040000;
+   OBJECT_LOADABLE = $00080000;
+   OBJECT_BEING_LOADED = $00080000;
+   OBJECT_DEVICE_LOCK = $01000000;
+   OBJECT_CHANGER_LOCK = $02000000;
+   OBJECT_REMIRRORING = $04000000;
+   OBJECT_SELECTED = $08000000;
+{ Resource Tag Allocation Signatures  }
+{ 'PAMM'  }
+   MMApplicationSignature = $50424D4D;
+{ 'ONMM'  }
+   MMNotifySignature = $4F4E4D4D;
+{ 'DIMM'  }
+   MMIdentifySignature = $44494D4D;
+{ AlertTypes  }
+   ALERT_MESSAGE = $00000001;
+   ALERT_ACTIVATE = $00000002;
+   ALERT_DEACTIVATE = $00000003;
+   ALERT_DELETE = $00000004;
+{ AlertReasons  }
+   ALERT_HOTFIX_ERROR = $00000000;
+   ALERT_DRIVER_UNLOAD = $00000001;
+   ALERT_DEVICE_FAILURE = $00000002;
+   ALERT_PROGRAM_CONTROL = $00000003;
+   ALERT_MEDIA_DISMOUNT = $00000004;
+   ALERT_MEDIA_EJECT = $00000005;
+   ALERT_SERVER_DOWN = $00000006;
+   ALERT_SERVER_FAILURE = $00000007;
+   ALERT_MEDIA_LOAD = $00000008;
+   ALERT_MEDIA_MOUNT = $00000009;
+   ALERT_DRIVER_LOAD = $0000000A;
+   ALERT_LOST_SOFTWARE_FAULT_TOLERANCE = $0000000B;
+   ALERT_INTERNAL_OBJECT_DELETE = $0000000C;
+   ALERT_MAGAZINE_LOAD = $0000000D;
+   ALERT_MAGAZINE_UNLOAD = $0000000E;
+   ALERT_DEVICE_GOING_TO_BE_REMOVED = $0000000F;
+   ALERT_CHECK_DEVICE = $00000010;
+   ALERT_CONFIGURATION_CHANGE = $00000011;
+   ALERT_APPLICATION_UNREGISTER = $00000012;
+   ALERT_DAI_EMMULATION = $00000013;
+   ALERT_LOST_HARDWARE_FAULT_TOLERANCE = $00000014;
+   ALERT_INTERNAL_OBJECT_CREATE = $00000015;
+   ALERT_INTERNAL_MANAGER_REMOVE = $00000016;
+   ALERT_DEVICE_GOING_TO_BE_DEACTIVATED = $00000017;
+   ALERT_DEVICE_END_OF_MEDIA = $00000018;
+   ALERT_MEDIA_INSERTED = $00000019;
+   ALERT_UNKNOWN_DEVICE_ALERT = $0000001A;
+   ALERT_UNKNOWN_ADAPTER_ALERT = $0000001B;
+{ Function Control (Priority) Bits  }
+   PRIORITY_1 = $0001;
+   PRIORITY_2 = $0002;
+   ACCELERATED_BIT = $0004;
+   ELEVATOR_OFF_BIT = $0008;
+   RETURN_RAW_COMPLETION = $0010;
+   SCRAMBLE_BIT = $0020;
+{ Application Alert Codes  }
+   GOING_TO_BE_DEACTIVATED = $0001;
+   OBJECT_BEING_DEACTIVATED = $0002;
+   OBJECT_SIZE_CHANGED = $0003;
+   OBJECT_BEING_ACTIVATED = $0004;
+   OBJECT_BEING_DELETED = $0005;
+   OBJECT_LOST_FAULT_TOLERANCE = $0006;
+{ Initial Completion Codes  }
+   MESSAGE_PROCESSED = $00;
+   MESSAGE_DATA_MISSING = $01;
+   MESSAGE_POSTPONE = $02;
+   MESSAGE_ABORTED = $03;
+   MESSAGE_INVALID_PARAMETERS = $04;
+   MESSAGE_OBJECT_NOT_ACTIVE = $05;
+   MESSAGE_INVALID_OJECT = $06;
+   MESSAGE_FUNCTION_NOT_SUPPORTED = $07;
+   MESSAGE_INVALID_MODE = $08;
+   MESSAGE_INTERNAL_ERROR = $09;
+{ FinalCompletion Codes  }
+   FUNCTION_OK = $00;
+   FUNCTION_CORRECTED_MEDIA_ERROR = $10;
+   FUNCTION_MEDIA_ERROR = $11;
+   FUNCTION_DEVICE_ERROR = $12;
+   FUNCTION_ADAPTER_ERROR = $13;
+   FUNCTION_NOT_SUPPORTED_BY_DEVICE = $14;
+   FUNCTION_NOT_SUPPORTED_BY_DRIVER = $15;
+   FUNCTION_PARAMETER_ERROR = $16;
+   FUNCTION_MEDIA_NOT_PRESENT = $17;
+   FUNCTION_MEDIA_CHANGED = $18;
+   FUNCTION_PREVIOUSLY_WRITTEN = $19;
+   FUNCTION_MEDIA_NOT_FORMATED = $1A;
+   FUNCTION_BLANK_MEDIA = $1B;
+{end of partition }
+   FUNCTION_END_OF_MEDIA = $1C;
+   FUNCTION_FILE_MARK_DETECTED = $1D;
+   FUNCTION_SET_MARK_DETECTED = $1E;
+   FUNCTION_WRITE_PROTECTED = $1F;
+   FUNCTION_OK_EARLY_WARNING = $20;
+   FUNCTION_BEGINNING_OF_MEDIA = $21;
+   FUNCTION_MEDIA_NOT_FOUND = $22;
+   FUNCTION_MEDIA_NOT_REMOVED = $23;
+   FUNCTION_UNKNOWN_COMPLETION = $24;
+   FUNCTION_DATA_MISSING = $25;
+   FUNCTION_HOTFIX_ERROR = $26;
+   FUNCTION_HOTFIX_UPDATE_ERROR = $27;
+   FUNCTION_IO_ERROR = $28;
+   FUNCTION_CHANGER_SOURCE_EMPTY = $29;
+   FUNCTION_CHANGER_DEST_FULL = $2A;
+   FUNCTION_CHANGER_JAMMED = $2B;
+   FUNCTION_MAGAZINE_NOT_PRESENT = $2D;
+   FUNCTION_MAGAZINE_SOURCE_EMPTY = $2E;
+   FUNCTION_MAGAZINE_DEST_FULL = $2F;
+   FUNCTION_MAGAZINE_JAMMED = $30;
+   FUNCTION_ABORT_CAUSED_BY_PRIOR_ERROR = $31;
+   FUNCTION_CHANGER_ERROR = $32;
+   FUNCTION_MAGAZINE_ERROR = $33;
+{ ErrorCodes  }
+   MM_OK = $00;
+   MM_INVALID_OBJECT = $01;
+   MM_INVALID_APPLICATION = $02;
+   MM_INVALID_RESOURCETAG = $03;
+   MM_MEMORY_ALLOCATION_ERROR = $04;
+   MM_INVALID_MODE = $05;
+   MM_RESERVATION_CONFLICT = $06;
+   MM_PARAMETER_ERROR = $07;
+   MM_OBJECT_NOT_FOUND = $08;
+   MM_ATTRIBUTE_NOT_SETABLE = $09;
+   MM_FAILURE = $0A;
+{ Console Human Jukebox Definitions  }
+   HJ_INSERT_MESSAGE = 0;
+   HJ_EJECT_MESSAGE = 1;
+   HJ_ACK_MESSAGE = 2;
+   HJ_NACK_MESSAGE = 3;
+   HJ_ERROR = 4;
+{ Media Manager Structures  }
+type
+   PMM_F1_Structure = ^TMM_F1_Structure;
+   TMM_F1_Structure = record
+        code : word;
+        control : word;
+     end;
+
+   PPrivateIOConfigurationStucture = ^TPrivateIOConfigurationStucture;
+   TPrivateIOConfigurationStucture = record
+        f1 : longint;
+        f2 : word;
+        f3 : word;
+        f4 : array[0..3] of word;
+        f5 : longint;
+        f6 : word;
+        f7 : longint;
+        f8 : word;
+        f9 : array[0..1] of byte;
+        f10 : array[0..1] of byte;
+        f11 : longint;
+        f12 : longint;
+        f13 : longint;
+        f14 : array[0..17] of byte;
+        f15 : array[0..1] of longint;
+        f16 : word;
+        f17 : array[0..5] of byte;
+     end;
+
+   PAdapterInfoDef = ^TAdapterInfoDef;
+   TAdapterInfoDef = record
+        systemtype : byte;
+        processornumber : byte;
+        uniquetag : word;
+        systemnumber : longint;
+        devices : array[0..31] of longint;
+        configinfo : TPrivateIOConfigurationStucture;
+        drivername : array[0..35] of byte;
+        systemname : array[0..63] of byte;
+        numberofdevices : longint;
+        reserved : array[0..6] of longint;
+     end;
+
+   PAttributeInfoDef = ^TAttributeInfoDef;
+   TAttributeInfoDef = record
+        name : array[0..63] of byte;
+        attributetype : longint;
+        nextattributeid : longint;
+        attributesize : longint;
+     end;
+
+   PChangerInfoDef = ^TChangerInfoDef;
+   TChangerInfoDef = record
+        numberofdevices : longint;
+        numberofslots : longint;
+        numberofmailslots : longint;
+        reserved : array[0..7] of longint;
+        slotmappingtable : array[0..0] of longint;
+     end;
+
+   PDeviceInfoDef = ^TDeviceInfoDef;
+   TDeviceInfoDef = record
+        status : longint;
+        controllernumber : byte;
+        drivenumber : byte;
+        cardnumber : byte;
+        systemtype : byte;
+        accessflags : byte;
+        _type : byte;
+        blocksize : byte;
+        sectorsize : byte;
+        heads : byte;
+        sectors : byte;
+        cylinders : word;
+        capacity : longint;
+        mmadapternumber : longint;
+        mmmedianumber : longint;
+        rawname : array[0..39] of byte;
+        reserved : array[0..7] of longint;
+     end;
+
+   PPrivateMediaInfoDef = ^TPrivateMediaInfoDef;
+   TPrivateMediaInfoDef = record
+        f1 : array[0..63] of byte;
+        f2 : longint;
+        f3 : longint;
+     end;
+
+   PGenericInfoDef = ^TGenericInfoDef;
+   TGenericInfoDef = record
+        mediainfo : TPrivateMediaInfoDef;
+        mediatype : longint;
+        cartridgetype : longint;
+        unitsize : longint;
+        blocksize : longint;
+        capacity : longint;
+        preferredunitsize : longint;
+        name : array[0..63] of byte;
+        _type : longint;
+        status : longint;
+        functionmask : longint;
+        controlmask : longint;
+        parentcount : longint;
+        siblingcount : longint;
+        childcount : longint;
+        specificinfosize : longint;
+        objectuniqueid : longint;
+        mediaslot : longint;
+     end;
+
+   PHotfixInfoDef = ^THotfixInfoDef;
+   THotfixInfoDef = record
+        hotfixoffset : longint;
+        hotfixidentifier : longint;
+        numberoftotalblocks : longint;
+        numberofusedblocks : longint;
+        numberofavailableblocks : longint;
+        numberofsystemblocks : longint;
+        reserved : array[0..7] of longint;
+     end;
+
+   PIdentifierInfoDef = ^TIdentifierInfoDef;
+   TIdentifierInfoDef = record
+        applicationtype : longint;
+        mediatype : longint;
+        cartridgetype : longint;
+        name : array[0..63] of byte;
+        stampflag : longint;
+     end;
+
+   PInsertRequestDef = ^TInsertRequestDef;
+   TInsertRequestDef = record
+        devicenumber : longint;
+        mailslot : longint;
+        medianumber : longint;
+        mediacount : longint;
+     end;
+
+   PMagazineInfoDef = ^TMagazineInfoDef;
+   TMagazineInfoDef = record
+        numberofslots : longint;
+        reserved : array[0..7] of longint;
+        slotmappingtable : array[0..0] of longint;
+     end;
+
+   PMappintInfoHeaderDef = ^TMappintInfoHeaderDef;
+   TMappintInfoHeaderDef = record
+        parentcount : longint;
+        siblingcount : longint;
+        childcount : longint;
+     end;
+
+   PMediaInfoDef = ^TMediaInfoDef;
+   TMediaInfoDef = record
+        _label : array[0..63] of byte;
+        identificationtype : longint;
+        identificationtimestamp : longint;
+     end;
+
+   PMediaRequestDef = ^TMediaRequestDef;
+   TMediaRequestDef = record
+        devicenumber : longint;
+        mailslot : longint;
+        medianumber : longint;
+        mediacount : longint;
+     end;
+
+   PMirrorInfoDef = ^TMirrorInfoDef;
+   TMirrorInfoDef = record
+        mirrorcount : longint;
+        mirroridentifier : longint;
+        mirrormembers : array[0..7] of longint;
+        mirrorsynchflags : array[0..7] of byte;
+        reserved : array[0..7] of longint;
+     end;
+
+   PPartitionInfoDef = ^TPartitionInfoDef;
+   TPartitionInfoDef = record
+        partitionertype : longint;
+        partitiontype : longint;
+        partitionoffset : longint;
+        partitionsize : longint;
+        reserved : array[0..7] of longint;
+     end;
+
+{ these also correspond to offsets in struct  ObjectDef  }
+   PResourceTagDef = ^TResourceTagDef;
+   TResourceTagDef = record
+        reserved : array[0..1] of longint;
+        resourcetagtype : longint;
+        resourcetagcount : longint;
+        resourcenext : PResourceTagDef;
+        resourcelast : PResourceTagDef;
+     end;
+
+{$include npackoff.inc}
+
+function HJ_Media_Request_Ack(minfo:PInsertRequestDef; ackcode:longint; uniqueid:longint):longint;cdecl;external 'clib' name 'HJ_Media_Request_Ack';
+function MM_Abort_Function(messagehandle:longint):longint;cdecl;external 'clib' name 'MM_Abort_Function';
+function MM_Check_For_Pending_Aborts(OSRequestHandle:longint):longint;cdecl;external 'clib' name 'MM_Check_For_Pending_Aborts';
+function MM_Create_Media_Object(objectnumber:longint; mediainfo:PMediaInfoDef):longint;cdecl;external 'clib' name 'MM_Create_Media_Object';
+procedure MM_ExecuteMessages;cdecl;external 'clib' name 'MM_ExecuteMessages';
+function MM_Find_Identifier(lastidentifiernumber:Plongint):longint;cdecl;external 'clib' name 'MM_Find_Identifier';
+function MM_Find_Identifier(var lastidentifiernumber:longint):longint;cdecl;external 'clib' name 'MM_Find_Identifier';
+function MM_Find_Object_Type(typ:longint; nextindicator:Plongint):longint;cdecl;external 'clib' name 'MM_Find_Object_Type';
+function MM_Find_Object_Type(typ:longint; var nextindicator:longint):longint;cdecl;external 'clib' name 'MM_Find_Object_Type';
+function MM_Object_Blocking_IO (returnparameter:Plongint;
+                                objecthandle:longint;
+                                _function:TMM_F1_Structure;
+                                parameter0:longint;
+                                parameter1:longint;
+                                parameter2:longint;
+                                bufferlength:longint;
+                                buffer:pointer):longint;cdecl;external 'clib' name 'MM_Object_Blocking_IO';
+function MM_Object_Blocking_IO (var returnparameter:longint;
+                                objecthandle:longint;
+                                _function:TMM_F1_Structure;
+                                parameter0:longint;
+                                parameter1:longint;
+                                parameter2:longint;
+                                bufferlength:longint;
+                                var buffer):longint;cdecl;external 'clib' name 'MM_Object_Blocking_IO';
+// This call is not handled by the server libraries
+//function MM_Object_IO(messagehandle:Plongint; applicationrequesthandle:longint; objecthandle:longint; _function:TMM_F1_Structure; parameter0:longint;
+//               parameter1:longint; parameter2:longint; bufferlength:longint; buffer:pointer; callbackroutine:procedure ):longint;cdecl;external 'clib' name 'MM_Object_IO';
+
+type TLongintCDeclFunc = function :longint; cdecl;
+     TCdeclProc        = procedure; cdecl;
+
+function MM_Register_Application (applicationhandle:Plongint;
+                                  applicationid:longint;
+                                  name:PChar;
+                                  reserved:longint;
+                                  mediaconsoleroutine:TLongintCDeclFunc;
+                                  resourcetag:PResourceTagDef):longint;cdecl;external 'clib' name 'MM_Register_Application';
+
+function MM_Register_Identification_Routines (oshandle:Plongint;
+                                              applicationhandle:longint;
+                                              identifyroutine:TLongintCDeclFunc;
+                                              unstamproutine:TLongintCDeclFunc;
+                                              stamproutine:TLongintCDeclFunc;
+                                              identifiertype:longint;
+                                              identifiername:PBYTE;
+                                              resourcetag:PResourceTagDef):longint;cdecl;external 'clib' name 'MM_Register_Identification_Routines';
+function MM_Register_Notify_Routine (oshandle:Plongint;
+                                     applicationhandle:longint;
+                                     notifyroutine:TCdeclProc;
+                                     objectclass:longint;
+                                     eventmask:longint;
+                                     resourcetag:PResourceTagDef):longint;cdecl;external 'clib' name 'MM_Register_Notify_Routine';
+// This call is not handled by the server libraries
+//function MM_Release_Object(objecthandle:longint; applicationhandle:longint):longint;cdecl;external 'clib' name 'MM_Release_Object';
+
+function MM_Release_Unload_Semaphore(currentinstance:longint):longint;cdecl;external 'clib' name 'MM_Release_Unload_Semaphore';
+function MM_Rename_Object(objectID:longint; para2:PBYTE):longint;cdecl;external 'clib' name 'MM_Rename_Object';
+// This call is not handled by the server libraries
+//function MM_Reserve_Object(objecthandle:Plongint; applicationidentifier:longint; objectid:longint; iomode:longint; applicationhandle:longint;
+//               notifyroutine:function :longint):longint;cdecl;external 'clib' name 'MM_Reserve_Object';
+
+function MM_Return_Identifier_Info(identifiernumber:longint; info:PIdentifierInfoDef):longint;cdecl;external 'clib' name 'MM_Return_Identifier_Info';
+function MM_Return_Object_Attribute(objectid:longint; attributeid:longint; length:longint; info:pointer):longint;cdecl;external 'clib' name 'MM_Return_Object_Attribute';
+function MM_Return_Object_Generic_Info(objectid:longint; info:PGenericInfoDef):longint;cdecl;external 'clib' name 'MM_Return_Object_Generic_Info';
+function MM_Return_Object_Mapping_Info(objectid:longint; mappinginfolength:longint; mappinginfo:Plongint):longint;cdecl;external 'clib' name 'MM_Return_Object_Mapping_Info';
+function MM_Return_Object_Specific_Info(objectid:longint; infolength:longint; info:pointer):longint;cdecl;external 'clib' name 'MM_Return_Object_Specific_Info';
+function MM_Return_Object_Table_Size:longint;cdecl;external 'clib' name 'MM_Return_Object_Table_Size';
+function MM_Return_Objects_Attributes(objectid:longint; attributeid:longint; info:PAttributeInfoDef):longint;cdecl;external 'clib' name 'MM_Return_Objects_Attributes';
+function MM_Set_Object_Attribute(objecthandle:longint; attributeid:longint; length:longint; info:pointer):longint;cdecl;external 'clib' name 'MM_Set_Object_Attribute';
+function MM_Set_Unload_Semaphore(currentinstance:Plongint):longint;cdecl;external 'clib' name 'MM_Set_Unload_Semaphore';
+function MM_Special_Object_Blocking_IO(returnparameter:Plongint; objectnumber:longint; _function:TMM_F1_Structure; parameter0:longint; parameter1:longint;
+               parameter2:longint; bufferlength:longint; buffer:pointer):longint;cdecl;external 'clib' name 'MM_Special_Object_Blocking_IO';
+function MM_Unregister_Application(applicationhandle,applicationid:longint):longint;cdecl;external 'clib' name 'MM_Unregister_Application';
+function MM_Unregister_Identification_Routines(handle,applicationtype:longint):longint;cdecl;external 'clib' name 'MM_Unregister_Identification_Routines';
+function MM_Unregister_Notify_Routine(oshandle, applicationhandle:longint):longint;cdecl;external 'clib' name 'MM_Unregister_Notify_Routine';
+{-ioctl.h----------------------------------------------------------------------}
+const
+   I_NWRITE = 101;
+   I_SETBUF = 102;
+
+function ioctl(fd:longint; command:longint; args:array of const):longint;cdecl;external 'clib' name 'ioctl';
+function ioctl(fd:longint; command:longint):longint;cdecl;external 'clib' name 'ioctl';
+{-sys/socket.h-----------------------------------------------------------------}
+{$PACKRECORDS C}
+
+type
+   Piovec = ^Tiovec;
+   Tiovec = record
+        iov_base : Pchar;
+        iov_len : longint;
+     end;
+
+{ Berkeley Sockets definitions and types  }
+
+const
+   FD_SETSIZE = 16;
+type
+
+   Pfd_array = ^Tfd_array;
+   Tfd_array = longint;
+
+   Pfd_set = ^Tfd_set;
+   Tfd_set = record
+        fds : Tfd_array;
+     end;
+
+   Ptimeval = ^Ttimeval;
+   Ttimeval = record
+     tv_sec  : longint;
+     tv_usec : longint;
+   end;
+
+{ definitions related to sockets: types, address families, options  }
+{ types  }
+{ just NW OFSD, no socket  }
+
+const
+   SOCK_NULL = 0;
+{ stream socket  }
+   SOCK_STREAM = 1;
+{ datagram socket  }
+   SOCK_DGRAM = 2;
+{ raw-protocol interface  }
+   SOCK_RAW = 3;
+{ reliably-delivered message  }
+   SOCK_RDM = 4;
+{ sequenced packet stream  }
+   SOCK_SEQPACKET = 5;
+{ option flags per-socket  }
+{ turn on debugging info recording  }
+   SO_DEBUG = $0001;
+{ socket has had listen()  }
+   SO_ACCEPTCONN = $0002;
+{ allow local address reuse  }
+   SO_REUSEADDR = $0004;
+{ keep connections alive  }
+   SO_KEEPALIVE = $0008;
+{ just use interface addresses  }
+   SO_DONTROUTE = $0010;
+{ permit sending of broadcast msgs  }
+   SO_BROADCAST = $0020;
+{ bypass hardware when possible  }
+   SO_USELOOPBACK = $0040;
+{ linger on close if data present  }
+   SO_LINGER = $0080;
+{ leave received OOB data in line  }
+   SO_OOBINLINE = $0100;
+{
+   N.B.: The following definition is present only for compatibility with
+   release 3.0. It will disappear in later releases.
+ }
+{ ~SO_LINGER  }
+   SO_DONTLINGER =  not (SO_LINGER);
+{ additional options, not kept in so_options  }
+{ send buffer size  }
+   SO_SNDBUF = $1001;
+{ receive buffer size  }
+   SO_RCVBUF = $1002;
+{ send low-water mark  }
+   SO_SNDLOWAT = $1003;
+{ receive low-water mark  }
+   SO_RCVLOWAT = $1004;
+{ send timeout  }
+   SO_SNDTIMEO = $1005;
+{ receive timeout  }
+   SO_RCVTIMEO = $1006;
+{ get error status and clear  }
+   SO_ERROR = $1007;
+{ get socket type  }
+   SO_TYPE = $1008;
+{ additional option to be used with level IPPROTO_TCP  }
+{ turn off the Nagle delay algorithm  }
+   TCP_NODELAY = 1;
+
+   SIOCATMARK      = 8;              // at oob mark?
+   SIOCDGRAMSIZE   = 500;
+   IP_INBOUND_IF   = 501;
+   IP_OUTBOUND_IF  = 502;
+
+
+{ structure used for manipulating linger option  }
+{ option on/off  }
+{ linger time  }
+
+type
+   Plinger = ^Tlinger;
+   Tlinger = record
+        l_onoff : longint;
+        l_linger : longint;
+     end;
+
+{ level number for get/setsockopt() to apply to socket itself  }
+{ options for socket level  }
+
+const
+   SOL_SOCKET = $ffff;
+{ address families  }
+{ unspecified  }
+   AF_UNSPEC = 0;
+{ local to host (pipes, portals)  }
+   AF_UNIX = 1;
+{ internetwork: UDP, TCP, etc.  }
+   AF_INET = 2;
+{ Xerox NS protocols  }
+   AF_NS = 6;
+{ AppleTalk  }
+   AF_APPLETALK = 16;
+{ umbrella for all (e.g. protosw lookup)  }
+   AF_OSI = 19;
+{ U.S. Government OSI  }
+   AF_GOSIP = 22;
+   AF_MAX = 21;
+{ structure used by kernel to store most addresses  }
+{ address family  }
+{ up to 14 bytes of direct address  }
+type
+   Psockaddr = ^Tsockaddr;
+   Tsockaddr = record
+        sa_family : word;
+        sa_data : array[0..13] of char;
+     end;
+
+{ structure used by kernel to pass protocol information in raw sockets  }
+{ address family  }
+{ protocol  }
+   Psockproto = ^Tsockproto;
+   Tsockproto = record
+        sp_family : word;
+        sp_protocol : word;
+     end;
+
+{ protocol families, same as address families for now  }
+
+const
+   PF_UNSPEC = AF_UNSPEC;
+   PF_UNIX = AF_UNIX;
+   PF_INET = AF_INET;
+   PF_NS = AF_NS;
+   PF_APPLETALK = AF_APPLETALK;
+   PF_OSI = AF_OSI;
+   PF_GOSIP = AF_GOSIP;
+   PF_MAX = AF_MAX;
+{ test protocol "numbered pipe"  }
+   TSTPROTO_NPIPE = 0;
+{ maximum queue length specifiable by listen  }
+   SOMAXCONN = 5;
+{
+   Message header for recvmsg and sendmsg calls.
+  }
+{ optional address  }
+{ size of address  }
+{ scatter/gather array  }
+{ number of elements in msg_iov  }
+{ access rights sent/received  }
+type
+   Pmsghdr = ^Tmsghdr;
+   Tmsghdr = record
+        msg_name : Pchar;
+        msg_namelen : longint;
+        msg_iov : Piovec;
+        msg_iovlen : longint;
+        msg_accrights : Pchar;
+        msg_accrightslen : longint;
+     end;
+
+{ process out-of-band data  }
+
+const
+   MSG_OOB = $1;
+{ peek at incoming message  }
+   MSG_PEEK = $2;
+{ send without using routing tables  }
+   MSG_DONTROUTE = $4;
+   MSG_MAXIOVLEN = 16;
+{ for NLM clients  }
+type TSKT = longint;
+
+function accept(s:TSKT; addr:Psockaddr; addrlen:Plongint):longint;cdecl;external 'clib' name 'accept';
+function accept(s:TSKT; var addr:Tsockaddr; var addrlen:longint):longint;cdecl;external 'clib' name 'accept';
+function bind(s:TSKT; name:Psockaddr; namelen:longint):longint;cdecl;external 'clib' name 'bind';
+function connect(s:TSKT; name:Psockaddr; namelen:longint):longint;cdecl;external 'clib' name 'connect';
+function getpeername(s:TSKT; name:Psockaddr; namelen:Plongint):longint;cdecl;external 'clib' name 'getpeername';
+function getsockname(s:TSKT; name:Psockaddr; namelen:Plongint):longint;cdecl;external 'clib' name 'getsockname';
+function getsockopt(s:TSKT; level:longint; name:longint; val:Pchar; len:Plongint):longint;cdecl;external 'clib' name 'getsockopt';
+function getsockopt(s:TSKT; level:longint; name:longint; val:Pchar; var len:longint):longint;cdecl;external 'clib' name 'getsockopt';
+
+function listen(s:TSKT; backlog:longint):longint;cdecl;external 'clib' name 'listen';
+function readv(s:TSKT; iov:Piovec; iovcnt:longint):longint;cdecl;external 'clib' name 'readv';
+function recv(s:TSKT; msg:Pchar; len:longint; flags:longint):longint;cdecl;external 'clib' name 'recv';
+function recv(s:TSKT; var data; len:longint; flags:longint):longint;cdecl;external 'clib' name 'recv';
+
+function recvfrom(s:TSKT; msg:Pchar; len:longint; flags:longint; from:Psockaddr;
+           fromlen:Plongint):longint;cdecl;external 'clib' name 'recvfrom';
+function recvfrom(s:TSKT; var data; len:longint; flags:longint; from:Psockaddr;
+           var fromlen:longint):longint;cdecl;external 'clib' name 'recvfrom';
+
+function recvmsg(s:TSKT; msg:Pmsghdr; flags:longint):longint;cdecl;external 'clib' name 'recvmsg';
+function send(s:TSKT; msg:Pchar; len:longint; flags:longint):longint;cdecl;external 'clib' name 'send';
+function send(s:TSKT; var data; len:longint; flags:longint):longint;cdecl;external 'clib' name 'send';
+function sendto(s:TSKT; msg:Pchar; len:longint; flags:longint; _to:Psockaddr;
+           tolen:longint):longint;cdecl;external 'clib' name 'sendto';
+function sendto(s:TSKT; var data; len:longint; flags:longint; _to:Psockaddr;
+           tolen:longint):longint;cdecl;external 'clib' name 'sendto';
+
+function sendmsg(s:TSKT; msg:Pmsghdr; flags:longint):longint;cdecl;external 'clib' name 'sendmsg';
+function setsockopt(s:TSKT; level:longint; name:longint; val:Pchar; len:longint):longint;cdecl;external 'clib' name 'setsockopt';
+function setsockopt(s:TSKT; level:longint; name:longint; var value; len:longint):longint;cdecl;external 'clib' name 'setsockopt';
+function shutdown(s:TSKT; how:longint):longint;cdecl;external 'clib' name 'shutdown';
+function socket(domain:longint; _type:longint; protocol:longint):longint;cdecl;external 'clib' name 'socket';
+function writev(s:TSKT; iov:Piovec; iovcnt:longint):longint;cdecl;external 'clib' name 'writev';
+function select(width:longint; readfds:Pfd_set; writefds:Pfd_set; exceptfds:Pfd_set; timeout:Ptimeval):longint;cdecl;external 'clib' name 'select';
+
+{-sys/time.h-------------------------------------------------------------------}
+{$PACKRECORDS C}
+
+{ commonly-used definitions...  }
+
+const
+   SEC = 1;
+   MILLISEC = 1000;
+   MICROSEC = 1000000;
+   NANOSEC = 1000000000;
+{ wall clock, bound to LWP  }
+   __CLOCK_REALTIME0 = 0;
+{ user CPU usage clock  }
+   CLOCK_VIRTUAL = 1;
+{ user and system CPU usage clock  }
+   CLOCK_PROF = 2;
+{ wall clock, not bound  }
+   __CLOCK_REALTIME3 = 3;
+   CLOCK_REALTIME = __CLOCK_REALTIME3;
+{ set timer relative  }
+   TIMER_RELTIME = $0;
+{ set timer absolute  }
+   TIMER_ABSTIME = $1;
+{ time expressed in seconds and nanoseconds  }
+{ seconds  }
+{ and nanoseconds  }
+type
+
+   Ptimespec = ^Ttimespec;
+   Ttimespec = record
+        tv_sec : Ttime_t;
+        tv_nsec : longint;
+     end;
+   Ttimespec_t = Ttimespec;
+   Ptimespec_t = ^Ttimespec_t;
+   Ttimestrc_t = Ttimespec;
+   Ptimestrc_t = ^Ttimestrc_t;
+
+{-sys/utsname.h----------------------------------------------------------------}
+const
+   _SYS_NMLN = 260;
+
+type
+   Putsname = ^Tutsname;
+   Tutsname = record
+     sysname  : array[0..(_SYS_NMLN)-1] of char;  // name of operating system implementation
+     release  : array[0..(_SYS_NMLN)-1] of char;
+     version  : array[0..(_SYS_NMLN)-1] of char;
+     nodename : array[0..(_SYS_NMLN)-1] of char;
+     machine  : array[0..(_SYS_NMLN)-1] of char;
+     _library : array[0..(_SYS_NMLN)-1] of char;
+   end;
+
+function uname(name:Putsname):longint;cdecl;external 'clib' name 'uname';
+function uname(var name:Tutsname):longint;cdecl;external 'clib' name 'uname';
+
+{-sys/stat.h-------------------------------------------------------------------}
+{$PACKRECORDS C}
+
+{ POSIX file types  }
+{ type of file (mask for following)  }
+
+const
+   S_IFMT = 0170000;
+{ first-in/first-out (pipe)  }
+   S_IFIFO = 0010000;
+{ character-special file  }
+   S_IFCHR = 0020000;
+{ directory  }
+   S_IFDIR = 0040000;
+{ blocking device (not used on NetWare)  }
+   S_IFBLK = 0060000;
+{ regular  }
+   S_IFREG = 0100000;
+{ symbolic link (not used on NetWare)  }
+   S_IFLNK = 0120000;
+{ Berkeley socket  }
+   S_IFSOCK = 0140000;
+
+{ POSIX file modes: owner (user) permission  }
+
+const
+   S_IRWXU = 0000700;
+   S_IRUSR = 0000400;
+   S_IWUSR = 0000200;
+   S_IXUSR = 0000100;
+   S_IREAD = S_IRUSR;
+   S_IWRITE = S_IWUSR;
+   S_IEXEC = S_IXUSR;
+{ POSIX file modes: group permission  }
+   S_IRWXG = 0000070;
+   S_IRGRP = 0000040;
+   S_IWGRP = 0000020;
+   S_IXGRP = 0000010;
+{ POSIX file modes: other permission  }
+   S_IRWXO = 0000007;
+   S_IROTH = 0000004;
+   S_IWOTH = 0000002;
+   S_IXOTH = 0000001;
+{ Novell-defined additional directory modes for mkdir()  }
+{ system directory  }
+   S_DSYSTEM = $00100000;
+{ hidden directory  }
+   S_DHIDE = $00200000;
+{ delete-inhibit  }
+   S_DDEL_INH = $00400000;
+{ rename-inhibit  }
+   S_DREN_INH = $00800000;
+{ purge-immediate  }
+   S_DPURGE_IMM = $01000000;
+{ compress-immediate  }
+   S_DCOMP_IMM = $02000000;
+{ no compression  }
+   S_DCOMP_NO = $04000000;
+{ equivalent to mode = 0  }
+   S_DALL = $01FB;
+{ POSIX setuid, setgid, and sticky  }
+   S_ISUID = 0004000;
+   S_ISGID = 0002000;
+   S_ISVTX = 0001000;
+   
+type
+   Pstat = ^Tstat;
+   Tstat = record
+        st_dev : Tdev_t;
+        st_ino : Tino_t;
+        st_mode : word;
+        st_pad1 : word;
+        st_nlink : dword;
+        st_uid : dword;
+        st_gid : dword;
+        st_rdev : Tdev_t;
+        st_size : Toff_t;
+        st_atime : Ttime_t;
+        st_mtime : Ttime_t;
+        st_ctime : Ttime_t;
+        st_btime : Ttime_t;
+        st_attr : dword;
+        st_archivedID : dword;
+        st_updatedID : dword;
+        st_inheritedRightsMask : word;
+        st_pad2 : word;
+        st_originatingNameSpace : dword;
+        st_blksize : Tsize_t;
+        st_blocks : Tsize_t;
+        st_flags : dword;
+        st_spare : array[0..3] of dword;
+        st_name : array[0..(255 + 1)-1] of byte;
+     end;
+
+{ definitions of older structure technology are mostly for reference  }
+{ v4.11  }
+{----------------- new fields starting in v4.11 -------------------------  }
+   Pstat411 = ^Tstat411;
+   Tstat411 = record
+        st_dev : Tdev_t;
+        st_ino : Tino_t;
+        st_mode : word;
+        st_nlink : smallint;
+        st_uid : dword;
+        st_gid : smallint;
+        st_rdev : Tdev_t;
+        st_size : Toff_t;
+        st_atime : Ttime_t;
+        st_mtime : Ttime_t;
+        st_ctime : Ttime_t;
+        st_btime : Ttime_t;
+        st_attr : dword;
+        st_archivedID : dword;
+        st_updatedID : dword;
+        st_inheritedRightsMask : word;
+        st_originatingNameSpace : byte;
+        st_name : array[0..(255 + 1)-1] of byte;
+        st_blksize : Tsize_t;
+        st_blocks : Tsize_t;
+        st_flags : dword;
+        st_spare : array[0..3] of dword;
+     end;
+
+{ v3.12, v4.0, v4.01, v4.02 and v4.10  }
+   Pstat410 = ^Tstat410;
+   Tstat410 = record
+        st_dev : Tdev_t;
+        st_ino : Tino_t;
+        st_mode : word;
+        st_nlink : smallint;
+        st_uid : dword;
+        st_gid : smallint;
+        st_rdev : Tdev_t;
+        st_size : Toff_t;
+        st_atime : Ttime_t;
+        st_mtime : Ttime_t;
+        st_ctime : Ttime_t;
+        st_btime : Ttime_t;
+        st_attr : dword;
+        st_archivedID : dword;
+        st_updatedID : dword;
+        st_inheritedRightsMask : word;
+        st_originatingNameSpace : byte;
+        st_name : array[0..12] of byte;
+     end;
+
+function chmod(path:Pchar; mode:Tmode_t):longint;cdecl;external 'clib' name 'chmod';
+function mkdir(path:Pchar):longint;cdecl;external 'clib' name 'mkdir';
+function mkdir_510(pathname:Pchar; mode:Tmode_t):longint;cdecl;external 'clib' name 'mkdir_510';
+function umask(cmask:Tmode_t):Tmode_t;cdecl;external 'clib' name 'umask';
+function fstat_410(fildes:longint; buf:Pstat410):longint;cdecl;external 'clib' name 'fstat_410';
+function fstat_410(fildes:longint; var buf:Tstat410):longint;cdecl;external 'clib' name 'fstat_410';
+function fstat_411(fildes:longint; buf:Pstat411):longint;cdecl;external 'clib' name 'fstat_411';
+function fstat_411(fildes:longint; var buf:Tstat411):longint;cdecl;external 'clib' name 'fstat_411';
+function fstat_500(fildes:longint; buf:Pstat):longint;cdecl;external 'clib' name 'fstat_500';
+function fstat_500(fildes:longint; var buf:Tstat):longint;cdecl;external 'clib' name 'fstat_500';
+function fstat (fildes:longint; buf:Pstat):longint;cdecl;external 'clib' name 'fstat_500';
+function fstat (fildes:longint; var buf:Tstat):longint;cdecl;external 'clib' name 'fstat_500';
+
+function stat_410(path:Pchar; buf:Pstat410):longint;cdecl;external 'clib' name 'stat_410';
+function stat_410(path:Pchar; var buf:Tstat410):longint;cdecl;external 'clib' name 'stat_410';
+function stat_411(path:Pchar; buf:Pstat411):longint;cdecl;external 'clib' name 'stat_411';
+function stat_411(path:Pchar; var buf:Tstat411):longint;cdecl;external 'clib' name 'stat_411';
+function stat_500(path:Pchar; buf:Pstat):longint;cdecl;external 'clib' name 'stat_500';
+function stat_500(path:Pchar; var buf:Tstat):longint;cdecl;external 'clib' name 'stat_500';
+function stat (path:Pchar; buf:Pstat):longint;cdecl;external 'clib' name 'stat_500';
+function stat (path:Pchar; var buf:Tstat):longint;cdecl;external 'clib' name 'stat_500';
+{------------------------------------------------------------------------------}
+
+implementation
+
+function CLK_TCK : longint;
+begin
+   CLK_TCK:=__get_CLK_TCK;
+end;
+
+function tzname : pchar;
+begin
+   tzname:=__get_tzname^;
+end;
+
+function NetWareErrno : longint;
+begin
+  NetWareErrno := __get_NWErrno_ptr()^;
+end;
+
+function stdin : PFILE;
+begin
+  stdin := __get_stdin^;
+end;
+
+function stdout : PFILE;
+begin
+  stdout := __get_stdout^;
+end;
+
+function stderr : PFILE;
+begin
+  stderr := __get_stderr^;
+end;
+
+function bisecond(var a : TDOSTime) : word;
+begin
+   bisecond:=(a.flag0 and bm_TDOSTime_bisecond) shr bp_TDOSTime_bisecond;
+end;
+
+procedure set_bisecond(var a : TDOSTime; __bisecond : word);
+begin
+   a.flag0:=a.flag0 or ((__bisecond shl bp_TDOSTime_bisecond) and bm_TDOSTime_bisecond);
+end;
+
+function minute(var a : TDOSTime) : word;
+begin
+   minute:=(a.flag0 and bm_TDOSTime_minute) shr bp_TDOSTime_minute;
+end;
+
+procedure set_minute(var a : TDOSTime; __minute : word);
+begin
+   a.flag0:=a.flag0 or ((__minute shl bp_TDOSTime_minute) and bm_TDOSTime_minute);
+end;
+
+function hour(var a : TDOSTime) : word;
+begin
+   hour:=(a.flag0 and bm_TDOSTime_hour) shr bp_TDOSTime_hour;
+end;
+
+procedure set_hour(var a : TDOSTime; __hour : word);
+begin
+   a.flag0:=a.flag0 or ((__hour shl bp_TDOSTime_hour) and bm_TDOSTime_hour);
+end;
+
+function day(var a : TDOSDate) : word;
+begin
+   day:=(a.flag0 and bm_TDOSDate_day) shr bp_TDOSDate_day;
+end;
+
+procedure set_day(var a : TDOSDate; __day : word);
+begin
+   a.flag0:=a.flag0 or ((__day shl bp_TDOSDate_day) and bm_TDOSDate_day);
+end;
+
+function month(var a : TDOSDate) : word;
+begin
+   month:=(a.flag0 and bm_TDOSDate_month) shr bp_TDOSDate_month;
+end;
+
+procedure set_month(var a : TDOSDate; __month : word);
+begin
+   a.flag0:=a.flag0 or ((__month shl bp_TDOSDate_month) and bm_TDOSDate_month);
+end;
+
+function yearsSince80(var a : TDOSDate) : word;
+begin
+   yearsSince80:=(a.flag0 and bm_TDOSDate_yearsSince80) shr bp_TDOSDate_yearsSince80;
+end;
+
+procedure set_yearsSince80(var a : TDOSDate; __yearsSince80 : word);
+begin
+   a.flag0:=a.flag0 or ((__yearsSince80 shl bp_TDOSDate_yearsSince80) and bm_TDOSDate_yearsSince80);
+end;
+
+function bisecond(var a : T_DOSTime) : word;
+begin
+   bisecond:=(a.flag0 and bm_T_DOSTime_bisecond) shr bp_T_DOSTime_bisecond;
+end;
+
+procedure set_bisecond(var a : T_DOSTime; __bisecond : word);
+begin
+   a.flag0:=a.flag0 or ((__bisecond shl bp_T_DOSTime_bisecond) and bm_T_DOSTime_bisecond);
+end;
+
+function minute(var a : T_DOSTime) : word;
+begin
+   minute:=(a.flag0 and bm_T_DOSTime_minute) shr bp_T_DOSTime_minute;
+end;
+
+procedure set_minute(var a : T_DOSTime; __minute : word);
+begin
+   a.flag0:=a.flag0 or ((__minute shl bp_T_DOSTime_minute) and bm_T_DOSTime_minute);
+end;
+
+function hour(var a : T_DOSTime) : word;
+begin
+   hour:=(a.flag0 and bm_T_DOSTime_hour) shr bp_T_DOSTime_hour;
+end;
+
+procedure set_hour(var a : T_DOSTime; __hour : word);
+begin
+   a.flag0:=a.flag0 or ((__hour shl bp_T_DOSTime_hour) and bm_T_DOSTime_hour);
+end;
+
+end.
+
+
+{
+  $Log$
+  Revision 1.1  2003-02-22 18:23:26  armin
+  * removed nwstdio and nwthread
+  * added nwnit.pp and nwserv.pp containing nearly all netware server structures/function definitions available in the c sdk
+
+}

+ 0 - 199
rtl/netware/nwthread.pp

@@ -1,199 +0,0 @@
-{
-    $Id$
-    This file is part of the Free Pascal run time library
-    for Netware.
-    Copyright (c) 1999-2003 by the Free Pascal development team.
-		
-    See the file COPYING.FPC, included in this distribution,
-    for details about the copyright.
-			
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-				    
-**********************************************************************}
-
-unit nwthread;
-interface
-
-{$mode objfpc}
-
-
-  const
-    ThreadsNlm = 'threads';
-    Lib0Nlm    = 'lib0';
-    NlmLibNlm  = 'nlmlib';
-
-  Type
-    PLong = ^longint;
-
-{$PACKRECORDS C}
-
-
-
-  { values for __action_code used with ExitThread()  }
-
-  const
-     TSR_THREAD = -1;
-     EXIT_THREAD = 0;
-     EXIT_NLM = 1;
-  { values for __mode used with spawnxx()  }
-     P_WAIT = 0;
-     P_NOWAIT = 1;
-     P_OVERLAY = 2;
-     P_NOWAITO = 4;
-     P_SPAWN_IN_CURRENT_DOMAIN = 8;
-     NO_CONTEXT = 0;
-     USE_CURRENT_CONTEXT = 1;
-  { stack defines  }
-     MIN_STACKSIZE = 16384;
-     DEFAULT_STACKSIZE = 16384;
-
-  type
-  
-     PWorkToDo = ^TWorkToDo;
-    
-     TProcedure    = procedure; cdecl;
-     TThreadFunc   = procedure (param1:pointer); cdecl;
-     TWorkToDoProc = procedure (data:pointer; workToDo:PWorkToDo); cdecl;
-     TCleanup      = procedure (para1:longint); cdecl;
-
-  
-     PAESProcessStructure = ^TAESProcessStructure;
-     TAESProcessStructure = record
-          ALink              : PAESProcessStructure;
-          AWakeUpDelayAmount : longint;
-          AWakeUpTime        : longint;
-          AProcessToCall     : procedure (para1:pointer);cdecl;
-          ARTag              : longint;
-          AOldLink           : longint;
-       end;
-
-
-     PWorkToDoStructure = ^TWorkToDoStructure;
-     TWorkToDoStructure = record
-          Link            : PWorkToDoStructure;
-          workProcedure   : TProcedure;
-          WorkResourceTag : longint;
-          PollCountAmount : longint;
-          PollCountWhen   : longint;
-          userProcedure   : TProcedure;
-          dataPtr         : pointer;
-          destThreadGroup : longint;
-       end;
-     TWorkToDo = TWorkToDoStructure;
-     
-
-     
-  { custom data area variables...  }
-
-    var
-       threadCustomDataPtr : pointer;cvar;external;
-       threadCustomDataSize : longint;cvar;external;
-       threadGroupCustomDataPtr : pointer;cvar;external;
-       threadGroupCustomDataSize : longint;cvar;external;
-    
-    
-  function AtUnload(func:Tprocedure):longint;                       cdecl;external ThreadsNlm name 'AtUnload';
-  function BeginThread(func:TThreadFunc; 
-                       stackP:pointer; 
-		       stackSize:dword; 
-		       arg:pointer):longint;                        cdecl;external ThreadsNlm name 'BeginThread';
-  function BeginThreadGroup(func:TThreadFunc; 
-                            stackP:pointer; 
-			    stackSize:dword; 
-			    arg:pointer):longint;                   cdecl;external ThreadsNlm name 'BeginThreadGroup';
-  function Breakpoint(arg:longint):longint;                         cdecl;external Lib0Nlm name 'Breakpoint';
-  procedure CancelNoSleepAESProcessEvent(EventNode:PAESProcessStructure);cdecl;external ThreadsNlm name 'CancelNoSleepAESProcessEvent';
-  procedure CancelSleepAESProcessEvent  (EventNode:PAESProcessStructure);cdecl;external ThreadsNlm name 'CancelSleepAESProcessEvent';
-  function ClearNLMDontUnloadFlag(NLMID:longint):longint;                cdecl;external ThreadsNlm name 'ClearNLMDontUnloadFlag';
-  procedure delay(milliseconds:dword);                                   cdecl;external ThreadsNlm name 'delay';
-  function EnterCritSec:longint;                                         cdecl;external ThreadsNlm name 'EnterCritSec';
-  function ExitCritSec:longint;                                          cdecl;external ThreadsNlm name 'ExitCritSec';
-  procedure ExitThread(action_code     :longint; 
-                       termination_code:longint);                        cdecl;external ThreadsNlm name 'ExitThread';
-
-  function FindNLMHandle(NLMFileName:Pchar):dword;                       cdecl;external ThreadsNlm name 'FindNLMHandle';
-  function getcmd(cmdLine:Pchar):Pchar;                                  cdecl;external ThreadsNlm name 'getcmd';
-  function GetNLMHandle:dword;                                           cdecl;external ThreadsNlm name 'GetNLMHandle';
-  function GetNLMID:longint;                                             cdecl;external ThreadsNlm name 'GetNLMID';
-  function GetNLMIDFromNLMHandle(NLMHandle:longint):longint;             cdecl;external ThreadsNlm name 'GetNLMIDFromNLMHandle';
-  function GetNLMIDFromThreadID(threadID:longint;fileName:Pchar):longint;cdecl;external ThreadsNlm name 'GetNLMIDFromThreadID';
-  function GetNLMNameFromNLMID(NLMID:longint; 
-                               fileName:Pchar; 
-			       description:Pchar):longint;               cdecl;external ThreadsNlm name 'GetNLMNameFromNLMID';
-  function GetNLMNameFromNLMHandle(NLMHandle:longint; 
-                                   LDFileName:Pchar; 
-				   LDName:Pchar):longint;                cdecl;external ThreadsNlm name 'GetNLMNameFromNLMHandle';
-  function GetThreadContextSpecifier(threadID:longint):longint;          cdecl;external ThreadsNlm name 'GetThreadContextSpecifier';
-  function GetThreadGroupID:longint;                                     cdecl;external ThreadsNlm name 'GetThreadGroupID';
-  function __GetThreadIDFromPCB(PCB:longint):longint;                    cdecl;external Lib0Nlm name '__GetThreadIDFromPCB';
-  function GetThreadHandicap(threadID:longint):longint;                  cdecl;external ThreadsNlm name 'GetThreadHandicap';
-  function GetThreadID:longint;                                          cdecl;external ThreadsNlm name 'GetThreadID';
-  function GetThreadName(threadID:longint; tName:Pchar):longint;         cdecl;external ThreadsNlm name 'GetThreadName';
-  function MapNLMIDToHandle(NLMID:longint):longint;                      cdecl;external ThreadsNlm name 'MapNLMIDToHandle';
-  function PopThreadCleanup(execute:longint):TCLEANUP;                   cdecl;external ThreadsNlm name 'PopThreadCleanup';
-  function PopThreadGroupCleanup(execute:longint):TCLEANUP;              cdecl;external ThreadsNlm name 'PopThreadGroupCleanup';
-  function PushThreadCleanup(func:TCLEANUP):longint;                     cdecl;external ThreadsNlm name 'PushThreadCleanup';
-  function PushThreadGroupCleanup(func:TCLEANUP):longint;                cdecl;external ThreadsNlm name 'PushThreadGroupCleanup';
-  function RenameThread(threadID:longint; newName:Pchar):longint;        cdecl;external ThreadsNlm name 'RenameThread';
-  function ResumeThread(threadID:longint):longint;                       cdecl;external ThreadsNlm name 'ResumeThread';
-  function ReturnNLMVersionInfoFromFile(pathName:pchar; 
-                                        majorVersion:PLONG; 
-					minorVersion:PLONG; 
-					revision:PLONG; 
-					year:PLONG; 
-                                        month:PLONG; 
-					day:PLONG; 
-					copyrightString:pchar; 
-					description:pchar):longint;      cdecl;external NlmLibNlm name 'ReturnNLMVersionInfoFromFile';
-  function ReturnNLMVersionInfoFromFile(pathName:pchar; 
-                                        var majorVersion,minorVersion,revision:longint;
-					var year,month,day:longint; 
-					copyrightString:pchar; 
-					description:pchar):longint;      cdecl;external NlmLibNlm name 'ReturnNLMVersionInfoFromFile';
-
-  function ReturnNLMVersionInformation(NLMHandle:longint; 
-                                       majorVersion,minorVersion,revision,year,month,day:PLONG; 
-                                       copyrightString:pchar; description:pchar):longint;cdecl;external NlmLibNlm name 'ReturnNLMVersionInformation';
-  function ReturnNLMVersionInformation(NLMHandle:longint; 
-                                       var majorVersion,minorVersion,revision,year,month,day:longint; 
-                                       copyrightString:pchar; description:pchar):longint;cdecl;external NlmLibNlm name 'ReturnNLMVersionInformation';
-
-  procedure ScheduleNoSleepAESProcessEvent(EventNode:PAESProcessStructure);cdecl;external ThreadsNlm name 'ScheduleNoSleepAESProcessEvent';
-  procedure ScheduleSleepAESProcessEvent(EventNode:PAESProcessStructure);  cdecl;external ThreadsNlm name 'ScheduleSleepAESProcessEvent';
-
-
-  function ScheduleWorkToDo(ProcedureToCall:TWorkToDoProc; 
-                            workData       :pointer; 
-			    workToDo       :PWorkToDo):longint;            cdecl;external ThreadsNlm name 'ScheduleWorkToDo';
-  function SetNLMDontUnloadFlag(NLMID:longint):longint;                    cdecl;external ThreadsNlm name 'SetNLMDontUnloadFlag';
-  function SetNLMID(newNLMID:longint):longint;                             cdecl;external ThreadsNlm name 'SetNLMID';
-  function SetThreadContextSpecifier(threadID,
-                                     contextSpecifier:longint):longint;    cdecl;external ThreadsNlm name 'SetThreadContextSpecifier';
-  function SetThreadGroupID(newThreadGroupID:longint):longint;             cdecl;external ThreadsNlm name 'SetThreadGroupID';
-  procedure SetThreadHandicap(threadID, handicap:longint);                 cdecl;external ThreadsNlm name 'SetThreadHandicap';
-  function spawnlp(mode:longint; 
-                   path,arg0:Pchar; 
-		   args:array of const):longint;                           cdecl;external ThreadsNlm name 'spawnlp';
-  function spawnlp(mode:longint; 
-                   path,arg0:Pchar):longint;                               cdecl;external ThreadsNlm name 'spawnlp';
-  function spawnvp(mode:longint; 
-                   path,argv:PPchar):longint;                              cdecl;external ThreadsNlm name 'spawnvp';
-  function SuspendThread(threadID:longint):longint;                        cdecl;external ThreadsNlm name 'SuspendThread';
-  procedure ThreadSwitch;                                                  cdecl;external ThreadsNlm name 'ThreadSwitch';
-  procedure ThreadSwitchLowPriority;                                       cdecl;external ThreadsNlm name 'ThreadSwitchLowPriority';
-  procedure ThreadSwitchWithDelay;                                         cdecl;external ThreadsNlm name 'ThreadSwitchWithDelay';
-
-implementation
-
-
-end.
-
-{
-  $Log$
-  Revision 1.1  2003-02-16 17:45:08  armin
-  * added nwsnut, nwconio and nwthreads for netware
-
-  
-}