mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 09:19:39 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			9225 lines
		
	
	
		
			401 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			9225 lines
		
	
	
		
			401 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
{
 | 
						||
    This file is part of the Free Pascal run time library.
 | 
						||
    Copyright (c) 2004 Armin Diehl, member of the Free Pascal
 | 
						||
    development team
 | 
						||
 | 
						||
    Interface to Netware libc
 | 
						||
 | 
						||
    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.
 | 
						||
 | 
						||
 **********************************************************************}
 | 
						||
 | 
						||
 | 
						||
 | 
						||
{$ifndef INCLUDED_FROM_SYSTEM}
 | 
						||
{$mode objfpc}
 | 
						||
unit libc;
 | 
						||
interface
 | 
						||
 | 
						||
 | 
						||
{ Netware libc interface
 | 
						||
  Translated from c ndk Armin Diehl 2004/09/02 }
 | 
						||
{$endif}
 | 
						||
 | 
						||
const
 | 
						||
  libc_nlm='libc';
 | 
						||
  system_nlm='!netware';
 | 
						||
 | 
						||
{ Pointers to basic pascal types, inserted by h2pas conversion program.}
 | 
						||
Type
 | 
						||
{ $ifndef INCLUDED_FROM_SYSTEM - (always available in 2.0.x and above - TH)
 | 
						||
  PLongint  = ^Longint;
 | 
						||
  PSmallInt = ^SmallInt;
 | 
						||
  PByte     = ^Byte;
 | 
						||
  PWord     = ^Word;
 | 
						||
  PDWord    = ^DWord;
 | 
						||
  PDouble   = ^Double;
 | 
						||
$endif}
 | 
						||
//  PPPChar   = ^PPChar;
 | 
						||
  void      = pointer;
 | 
						||
  cint      = longint;
 | 
						||
  TNLMHandle = Pointer;
 | 
						||
 | 
						||
const
 | 
						||
  NullNlmHandle = nil;
 | 
						||
 | 
						||
{$PACKRECORDS C}
 | 
						||
 | 
						||
// string.h
 | 
						||
// limits.h
 | 
						||
 | 
						||
{ some limits wanted by POSIX...  }
 | 
						||
{ exact-width signed types...  }
 | 
						||
type
 | 
						||
 | 
						||
   Pint8_t = ^int8_t;
 | 
						||
   int8_t = char;
 | 
						||
 | 
						||
   Pint16 = ^Tint16;
 | 
						||
   Tint16 = smallint;
 | 
						||
 | 
						||
   Pint64_t = ^Tint64;
 | 
						||
   Tint64 = int64;
 | 
						||
{ exact-width unsigned types...  }
 | 
						||
 | 
						||
   Puint64 = ^Tuint64;
 | 
						||
   Tuint64 = qword;
 | 
						||
{ lower and upper bound of exact width integer types...  }
 | 
						||
{ macros for minimum-width integer constants...  }
 | 
						||
{ minimum-width signed integer types...  }
 | 
						||
 | 
						||
   Pint_least8_t = ^int_least8_t;
 | 
						||
   int_least8_t = char;
 | 
						||
 | 
						||
   Pint_least16_t = ^int_least16_t;
 | 
						||
   int_least16_t = smallint;
 | 
						||
 | 
						||
   Pint_least32_t = ^int_least32_t;
 | 
						||
   int_least32_t = longint;
 | 
						||
 | 
						||
   Pint_least64_t = ^int_least64_t;
 | 
						||
   int_least64_t = int64;
 | 
						||
{ minimum-width unsigned integer types...  }
 | 
						||
 | 
						||
   Puint_least8_t = ^uint_least8_t;
 | 
						||
   uint_least8_t = byte;
 | 
						||
 | 
						||
   Puint_least16_t = ^uint_least16_t;
 | 
						||
   uint_least16_t = word;
 | 
						||
 | 
						||
   Puint_least32_t = ^uint_least32_t;
 | 
						||
   uint_least32_t = dword;
 | 
						||
 | 
						||
   Puint_least64_t = ^uint_least64_t;
 | 
						||
   uint_least64_t = qword;
 | 
						||
{ lower and upper bound of exact width integer types...  }
 | 
						||
{ fastest minimum-width signed integer types...  }
 | 
						||
 | 
						||
   Pint_fast8_t = ^int_fast8_t;
 | 
						||
   int_fast8_t = char;
 | 
						||
 | 
						||
   Pint_fast16_t = ^int_fast16_t;
 | 
						||
   int_fast16_t = smallint;
 | 
						||
 | 
						||
   Pint_fast32_t = ^int_fast32_t;
 | 
						||
   int_fast32_t = longint;
 | 
						||
 | 
						||
   Pint_fast64_t = ^int_fast64_t;
 | 
						||
   int_fast64_t = int64;
 | 
						||
{ fastest minimum-width unsigned integer types...  }
 | 
						||
 | 
						||
   Puint_fast8_t = ^uint_fast8_t;
 | 
						||
   uint_fast8_t = byte;
 | 
						||
 | 
						||
   Puint_fast16_t = ^uint_fast16_t;
 | 
						||
   uint_fast16_t = word;
 | 
						||
 | 
						||
   Puint_fast32_t = ^uint_fast32_t;
 | 
						||
   uint_fast32_t = dword;
 | 
						||
 | 
						||
   Puint_fast64_t = ^uint_fast64_t;
 | 
						||
   uint_fast64_t = qword;
 | 
						||
{ lower and upper bound of fastest minimum-width integer types...  }
 | 
						||
{ integer types capable of holding object pointer...  }
 | 
						||
 | 
						||
   Pintptr_t = ^intptr_t;
 | 
						||
   intptr_t = longint;
 | 
						||
 | 
						||
   Puintptr_t = ^uintptr_t;
 | 
						||
   uintptr_t = dword;
 | 
						||
{ limit of integer type capable of holding object pointer...  }
 | 
						||
{ maximum-width integer types...  }
 | 
						||
 | 
						||
   Pintmax_t = ^intmax_t;
 | 
						||
   intmax_t = int64;
 | 
						||
 | 
						||
   Puintmax_t = ^uintmax_t;
 | 
						||
   uintmax_t = Tuint64;
 | 
						||
{ macros for maximum-width integer constants...  }
 | 
						||
{ limits for other integer types...  }
 | 
						||
 | 
						||
   Psize_t = ^size_t;
 | 
						||
   size_t = dword;
 | 
						||
{ type yielded by sizeof()  }
 | 
						||
 | 
						||
   Pssize_t = ^ssize_t;
 | 
						||
   ssize_t = longint;
 | 
						||
{ signed byte counts for file I/O  }
 | 
						||
 | 
						||
   Psize64_t = ^size64_t;
 | 
						||
   size64_t = Tuint64;
 | 
						||
{ used for 64-bit (long) file I/O  }
 | 
						||
 | 
						||
   Pmode_t = ^mode_t;
 | 
						||
   mode_t = dword;
 | 
						||
{ file attributes, permissions  }
 | 
						||
 | 
						||
   Poff_t = ^off_t;
 | 
						||
   off_t = longint;
 | 
						||
{ file offset value  }
 | 
						||
 | 
						||
   Poff64_t = ^off64_t;
 | 
						||
   off64_t = int64;
 | 
						||
{ 64-bit (long) file offset value  }
 | 
						||
 | 
						||
   Pino_t = ^ino_t;
 | 
						||
   ino_t = Tuint64;
 | 
						||
 | 
						||
   Ppid_t = ^pid_t;
 | 
						||
   pid_t = longint;
 | 
						||
{ capable of holding a pointer or -1  }
 | 
						||
 | 
						||
   Puid_t = ^uid_t;
 | 
						||
   uid_t = Tuint64;
 | 
						||
 | 
						||
   Pgid_t = ^gid_t;
 | 
						||
   gid_t = Tuint64;
 | 
						||
 | 
						||
   Pblksize_t = ^blksize_t;
 | 
						||
   blksize_t = Tuint64;
 | 
						||
 | 
						||
   Pblkcnt_t = ^blkcnt_t;
 | 
						||
   blkcnt_t = Tuint64;
 | 
						||
 | 
						||
   Pdev_t = ^dev_t;
 | 
						||
   dev_t = Tuint64;
 | 
						||
 | 
						||
   Pnlink_t = ^nlink_t;
 | 
						||
   nlink_t = dword;
 | 
						||
 | 
						||
   Pptrdiff_t = ^ptrdiff_t;
 | 
						||
   ptrdiff_t = longint;
 | 
						||
 | 
						||
   Pwchar_t = ^wchar_t;
 | 
						||
   wchar_t = WideChar;
 | 
						||
   PPwchar_t = ^Pwchar_t;
 | 
						||
 | 
						||
 | 
						||
{ prototypes for functions standard and nonstandard...  }
 | 
						||
 | 
						||
function memchr(_para1:pointer; _para2:longint; _para3:size_t):pointer;cdecl;external libc_nlm name 'memchr';
 | 
						||
function memcmp(_para1, _para2:pointer; _para3:size_t):longint;cdecl;external libc_nlm name 'memcmp';
 | 
						||
function memcpy(__restrict, __restrict1:pointer; _para3:size_t):pointer;cdecl;external libc_nlm name 'memcpy';
 | 
						||
function memmove(_para1, _para2:pointer; _para3:size_t):pointer;cdecl;external libc_nlm name 'memmove';
 | 
						||
function memset(_para1:pointer; _para2:longint; _para3:size_t):pointer;cdecl;external libc_nlm name 'memset';
 | 
						||
function strcasecmp(_para1, _para2:Pchar):longint;cdecl;external libc_nlm name 'strcasecmp';
 | 
						||
function strcat(dst,src:Pchar):Pchar;cdecl;external libc_nlm name 'strcat';
 | 
						||
function strchr(_para1:Pchar; _para2:longint):Pchar;cdecl;external libc_nlm name 'strchr';
 | 
						||
function strcmp(_para1, _para2:Pchar):longint;cdecl;external libc_nlm name 'strcmp';
 | 
						||
function strcoll(_para1, _para2:Pchar):longint;cdecl;external libc_nlm name 'strcoll';
 | 
						||
function strcpy(__restrict, __restrict1:Pchar):Pchar;cdecl;external libc_nlm name 'strcpy';
 | 
						||
function strcspn(_para1, _para2:Pchar):size_t;cdecl;external libc_nlm name 'strcspn';
 | 
						||
function strerror(_para1:longint):Pchar;cdecl;external libc_nlm name 'strerror';
 | 
						||
function strlcat(__restrict, __restrict1:Pchar; _para3:size_t):size_t;cdecl;external libc_nlm name 'strlcat';
 | 
						||
function strlcpy(__restrict, __restrict1:Pchar; _para3:size_t):size_t;cdecl;external libc_nlm name 'strlcpy';
 | 
						||
function {$ifdef INCLUDED_FROM_SYSTEM}libc_strlen{$else}strlen{$endif}(_para1:Pchar):size_t;cdecl;external libc_nlm name 'strlen';
 | 
						||
function strncasecmp(_para1, _para2:Pchar; _para3:size_t):longint;cdecl;external libc_nlm name 'strncasecmp';
 | 
						||
function strncat(__restrict, __restrict1:Pchar; _para3:size_t):Pchar;cdecl;external libc_nlm name 'strncat';
 | 
						||
function strncmp(_para1, _para2:Pchar; _para3:size_t):longint;cdecl;external libc_nlm name 'strncmp';
 | 
						||
function strncoll(_para1, _para2:Pchar; _para3:size_t):longint;cdecl;external libc_nlm name 'strncoll';
 | 
						||
function strncpy(__restrict, __restrict1:Pchar; _para3:size_t):Pchar;cdecl;external libc_nlm name 'strncpy';
 | 
						||
function strnicmp(_para1, _para2:Pchar; _para3:size_t):longint;cdecl;external libc_nlm name 'strnicmp';
 | 
						||
function strnset(_para1, _para2:longint; _para3:size_t):Pchar;cdecl;external libc_nlm name 'strnset';
 | 
						||
function strpbrk(_para1, _para2:Pchar):Pchar;cdecl;external libc_nlm name 'strpbrk';
 | 
						||
function strrchr(_para1, _para2:longint):Pchar;cdecl;external libc_nlm name 'strrchr';
 | 
						||
function strrev(_para1:Pchar):Pchar;cdecl;external libc_nlm name 'strrev';
 | 
						||
function strset(_para1:Pchar; _para2:longint):Pchar;cdecl;external libc_nlm name 'strset';
 | 
						||
function strspn(_para1, _para2:Pchar):size_t;cdecl;external libc_nlm name 'strspn';
 | 
						||
function strstr(_para1, _para2:Pchar):Pchar;cdecl;external libc_nlm name 'strstr';
 | 
						||
function strtok(__restrict, __restrict1:Pchar):Pchar;cdecl;external libc_nlm name 'strtok';
 | 
						||
function strxfrm(__restrict, __restrict1:Pchar; _para3:size_t):size_t;cdecl;external libc_nlm name 'strxfrm';
 | 
						||
{ POSIX and other functions...  }
 | 
						||
 | 
						||
function strtok_r(__restrict, __restrict1, __restrict2:PPchar):Pchar;cdecl;external libc_nlm name 'strtok_r';
 | 
						||
function memicmp(_para1, _para2:pointer; _para3:size_t):longint;cdecl;external libc_nlm name 'memicmp';
 | 
						||
function stpcpy(_para1, _para2:Pchar):Pchar;cdecl;external libc_nlm name 'stpcpy';
 | 
						||
function stricmp(_para1, _para2:Pchar):longint;cdecl;external libc_nlm name 'stricmp';
 | 
						||
function strdup(_para1:Pchar):Pchar;cdecl;external libc_nlm name 'strdup';
 | 
						||
function strecpy(_para1, _para2:Pchar):Pchar;cdecl;external libc_nlm name 'strecpy';
 | 
						||
function strerror_r(_para1:longint; _para2:Pchar; _para3:size_t):longint;cdecl;external libc_nlm name 'strerror_r';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function strlist(_para1, _para2:Pchar; args:array of const):Pchar;cdecl;external libc_nlm name 'strlist';
 | 
						||
{$endif}
 | 
						||
function strlist(_para1, _para2:Pchar):Pchar;cdecl;external libc_nlm name 'strlist';
 | 
						||
function strlwr(_para1:Pchar):Pchar;cdecl;external libc_nlm name 'strlwr';
 | 
						||
function strrindex(_para1:Pchar; _para2:size_t; _para3:longint):Pchar;cdecl;external libc_nlm name 'strrindex';
 | 
						||
function strwhich(_para1:Pchar; _para2:longint; _para3:Pchar):Pchar;cdecl;external libc_nlm name 'strwhich';
 | 
						||
function strupr(_para1:Pchar):Pchar;cdecl;external libc_nlm name 'strupr';
 | 
						||
procedure swab(_para1, _para2:pointer; _para3:size_t);cdecl;external libc_nlm name 'swab';
 | 
						||
procedure swaw(_para1, _para2:pointer; _para3:size_t);cdecl;external libc_nlm name 'swaw';
 | 
						||
procedure ungettok(__restrict, __restrict1:Pchar);cdecl;external libc_nlm name 'ungettok';
 | 
						||
procedure ungettok_r(__restrict, __restrict1:Pchar; __restrict2:PPchar);cdecl;external libc_nlm name 'ungettok_r';
 | 
						||
{ multibyte (double) interfaces for locale code page work...  }
 | 
						||
function Lstrbcpy(__restrict, __restrict1:Pchar; _para3:size_t):Pchar;cdecl;external libc_nlm name 'Lstrbcpy';
 | 
						||
function Lstrchr(_para1, _para2:Pchar):Pchar;cdecl;external libc_nlm name 'Lstrchr';
 | 
						||
function Lstrcmp(_para1, _para2:Pchar):longint;cdecl;external libc_nlm name 'Lstrcmp';
 | 
						||
function Lstrcoll(_para1, _para2:Pchar):longint;cdecl;external libc_nlm name 'Lstrcoll';
 | 
						||
function Lstrcspn(_para1, _para2:Pchar):size_t;cdecl;external libc_nlm name 'Lstrcspn';
 | 
						||
function Lstricmp(_para1, _para2:Pchar):longint;cdecl;external libc_nlm name 'Lstricmp';
 | 
						||
function Lstrlen(_para1:Pchar):size_t;cdecl;external libc_nlm name 'Lstrlen';
 | 
						||
function Lstrlwr(_para1:Pchar):Pchar;cdecl;external libc_nlm name 'Lstrlwr';
 | 
						||
function Lstrncat(__restrict:Pchar; __restrict1:Pchar; _para3:size_t):Pchar;cdecl;external libc_nlm name 'Lstrncat';
 | 
						||
function Lstrncmp(_para1, _para2:Pchar; _para3:size_t):longint;cdecl;external libc_nlm name 'Lstrncmp';
 | 
						||
function Lstrncoll(_para1, _para2:Pchar; _para3:size_t):longint;cdecl;external libc_nlm name 'Lstrncoll';
 | 
						||
function Lstrncpy(__restrict, __restrict1:Pchar; _para3:size_t):Pchar;cdecl;external libc_nlm name 'Lstrncpy';
 | 
						||
function Lstrnicmp(_para1, _para2:Pchar; _para3:size_t):longint;cdecl;external libc_nlm name 'Lstrnicmp';
 | 
						||
function Lstrpbrk(_para1, _para2:Pchar):Pchar;cdecl;external libc_nlm name 'Lstrpbrk';
 | 
						||
function Lstrrchr(_para1, _para2:Pchar):Pchar;cdecl;external libc_nlm name 'Lstrrchr';
 | 
						||
function Lstrrev(_para1:Pchar):Pchar;cdecl;external libc_nlm name 'Lstrrev';
 | 
						||
function Lstrspn(_para1, _para2:Pchar):size_t;cdecl;external libc_nlm name 'Lstrspn';
 | 
						||
function Lstrstr(_para1, _para2:Pchar):Pchar;cdecl;external libc_nlm name 'Lstrstr';
 | 
						||
function Lstrtok_r(__restrict:Pchar; __restrict1:Pchar; __restrict2:PPchar):Pchar;cdecl;external libc_nlm name 'Lstrtok_r';
 | 
						||
function Lstrupr(_para1:Pchar):Pchar;cdecl;external libc_nlm name 'Lstrupr';
 | 
						||
function Lstrxfrm(__restrict:Pchar; __restrict1:Pchar; _para3:size_t):size_t;cdecl;external libc_nlm name 'Lstrxfrm';
 | 
						||
{ length-preceeded string manipulation...  }
 | 
						||
function ASCIIZToLenStr(_para1, _para2:Pchar):longint;cdecl;external libc_nlm name 'ASCIIZToLenStr';
 | 
						||
function ASCIIZToMaxLenStr(_para1, _para2:Pchar; _para3:size_t):longint;cdecl;external libc_nlm name 'ASCIIZToMaxLenStr';
 | 
						||
function LenStrCat(_para1, _para2:Pchar):Pchar;cdecl;external libc_nlm name 'LenStrCat';
 | 
						||
function LenStrCmp(_para1, _para2:Pchar):longint;cdecl;external libc_nlm name 'LenStrCmp';
 | 
						||
function LenStrCpy(_para1, _para2:Pchar):Pchar;cdecl;external libc_nlm name 'LenStrCpy';
 | 
						||
function LenToASCIIZStr(_para1,_para2:Pchar):longint;cdecl;external libc_nlm name 'LenToASCIIZStr';
 | 
						||
function strindex(_para1, _para2:Pchar):Pchar;cdecl;external libc_nlm name 'strindex';
 | 
						||
 | 
						||
 | 
						||
// stdarg.h
 | 
						||
 | 
						||
  const
 | 
						||
     //EOF = -(1);
 | 
						||
     BUFSIZ = 8096;           { default buffer size--change with setbuf()  }
 | 
						||
     FOPEN_MAX = 1024;        { at least this many FILEs available         }
 | 
						||
     FILENAME_MAX = 1024;     { maximum characters in any path name        }
 | 
						||
                              { values for argument 'flags' to setvbuf()...}
 | 
						||
     _IONBF = $0010;          { unbuffered (e.g.: stdout and stderr)       }
 | 
						||
     _IOLBF = $0020;          { line buffered (e.g.: stdin)                }
 | 
						||
     _IOFBF = $0040;          { fully buffered (most files)                }
 | 
						||
                              { values for fseek()'s whence argument       }
 | 
						||
     SEEK_SET = 0;            { add 'offset' to beginning of file          }
 | 
						||
     SEEK_CUR = 1;            { add 'offset' to current position in file   }
 | 
						||
     SEEK_END = 2;            { add 'offset' to end of file                }
 | 
						||
                              { definitions for tmpnam() and tmpfil()      }
 | 
						||
     TMP_MAX = 1000000;       { "T-000000.TMP" to "T-999999.TMP"           }
 | 
						||
     L_tmpnam = 36;
 | 
						||
     P_tmpdir = 'sys:/tmp';
 | 
						||
  { FILE type definition (result is opaque)    }
 | 
						||
 | 
						||
 | 
						||
type
 | 
						||
 | 
						||
   Pva_list = ^va_list;
 | 
						||
   va_list = char;
 | 
						||
 | 
						||
   P_iobuf = ^_iobuf;
 | 
						||
   _iobuf = record
 | 
						||
        reserved : longint;
 | 
						||
     end;
 | 
						||
   TFILE = _iobuf;
 | 
						||
   PFILE = ^TFILE;
 | 
						||
   PPFILE = ^PFILE;
 | 
						||
 | 
						||
   Pfpos_t = ^fpos_t;
 | 
						||
   fpos_t = longint;
 | 
						||
 | 
						||
   Pfpos64_t = ^fpos64_t;
 | 
						||
   fpos64_t = off64_t;
 | 
						||
 | 
						||
procedure clearerr(_para1:PFILE);cdecl;external libc_nlm name 'clearerr';
 | 
						||
function fclose(_para1:PFILE):longint;cdecl;external libc_nlm name 'fclose';
 | 
						||
function feof(_para1:PFILE):longint;cdecl;external libc_nlm name 'feof';
 | 
						||
function ferror(_para1:PFILE):longint;cdecl;external libc_nlm name 'ferror';
 | 
						||
function fflush(_para1:PFILE):longint;cdecl;external libc_nlm name 'fflush';
 | 
						||
function fgetc(_para1:PFILE):longint;cdecl;external libc_nlm name 'fgetc';
 | 
						||
function fgetpos(_para1:PFILE; _para2:Pfpos_t):longint;cdecl;external libc_nlm name 'fgetpos';
 | 
						||
function fgets(_para1:Pchar; _para2:longint; _para3:PFILE):Pchar;cdecl;external libc_nlm name 'fgets';
 | 
						||
 | 
						||
 | 
						||
function fopen(__restrict:Pchar; __restrict1:Pchar):PFILE;cdecl;external libc_nlm name 'fopen';
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function fprintf(__restrict:PFILE; __restrict1:Pchar; args:array of const):longint;cdecl;external libc_nlm name 'fprintf';
 | 
						||
{$endif}
 | 
						||
function fprintf(__restrict:PFILE; __restrict1:Pchar):longint;cdecl;external libc_nlm name 'fprintf';
 | 
						||
function fputc(_para1:longint; _para2:PFILE):longint;cdecl;external libc_nlm name 'fputc';
 | 
						||
 | 
						||
function fputs(__restrict:Pchar; __restrict1:PFILE):longint;cdecl;external libc_nlm name 'fputs';
 | 
						||
function fread(__restrict:pointer; _para2:size_t; _para3:size_t; __restrict1:PFILE):size_t;cdecl;external libc_nlm name 'fread';
 | 
						||
 | 
						||
 | 
						||
function freopen(__restrict:Pchar; __restrict1:Pchar; __restrict2:PFILE):PFILE;cdecl;external libc_nlm name 'freopen';
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function fscanf(__restrict:PFILE; __restrict1:Pchar; args:array of const):longint;cdecl;external libc_nlm name 'fscanf';
 | 
						||
{$endif}
 | 
						||
function fscanf(__restrict:PFILE; __restrict1:Pchar):longint;cdecl;external libc_nlm name 'fscanf';
 | 
						||
function fseek(fp:PFILE; offset:longint; whence:longint):longint;cdecl;external libc_nlm name 'fseek';
 | 
						||
 | 
						||
function fsetpos(_para1:PFILE; _para2:Pfpos_t):longint;cdecl;external libc_nlm name 'fsetpos';
 | 
						||
function ftell(_para1:PFILE):longint;cdecl;external libc_nlm name 'ftell';
 | 
						||
 | 
						||
function fwrite(__restrict:pointer; _para2:size_t; _para3:size_t; __restrict1:PFILE):size_t;cdecl;external libc_nlm name 'fwrite';
 | 
						||
function getc(_para1:PFILE):longint;cdecl;external libc_nlm name 'getc';
 | 
						||
function getchar:longint;cdecl;external libc_nlm name 'getchar';
 | 
						||
function gets(_para1:Pchar):Pchar;cdecl;external libc_nlm name 'gets';
 | 
						||
procedure {$ifdef INCLUDED_FROM_SYSTEM}libc_perror{$else}perror{$endif}(_para1:Pchar);cdecl;external libc_nlm name 'perror';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function printf(__restrict:Pchar; args:array of const):longint;cdecl;external libc_nlm name 'printf';
 | 
						||
{$endif}
 | 
						||
function printf(__restrict:Pchar):longint;cdecl;external libc_nlm name 'printf';
 | 
						||
function putc(_para1:longint; _para2:PFILE):longint;cdecl;external libc_nlm name 'putc';
 | 
						||
function putchar(_para1:longint):longint;cdecl;external libc_nlm name 'putchar';
 | 
						||
function puts(_para1:Pchar):longint;cdecl;external libc_nlm name 'puts';
 | 
						||
function remove(_para1:Pchar):longint;cdecl;external libc_nlm name 'remove';
 | 
						||
function rename(_para1:Pchar; _para2:Pchar):longint;cdecl;external libc_nlm name 'rename';
 | 
						||
procedure rewind(_para1:PFILE);cdecl;external libc_nlm name 'rewind';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function scanf(__restrict:Pchar; args:array of const):longint;cdecl;external libc_nlm name 'scanf';
 | 
						||
{$endif}
 | 
						||
function scanf(__restrict:Pchar):longint;cdecl;external libc_nlm name 'scanf';
 | 
						||
procedure setbuf(__restrict:PFILE; __restrict1:Pchar);cdecl;external libc_nlm name 'setbuf';
 | 
						||
function setvbuf(__restrict:PFILE; __restrict1:Pchar; _para3:longint; _para4:size_t):longint;cdecl;external libc_nlm name 'setvbuf';
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function sprintf(__restrict:Pchar; __restrict1:Pchar; args:array of const):longint;cdecl;external libc_nlm name 'sprintf';
 | 
						||
{$endif}
 | 
						||
function sprintf(__restrict:Pchar; __restrict1:Pchar):longint;cdecl;external libc_nlm name 'sprintf';
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function snprintf(__restrict:Pchar; n:size_t; Format:Pchar; args:array of const):longint;cdecl;external libc_nlm name 'snprintf';
 | 
						||
{$endif}
 | 
						||
function snprintf(__restrict:Pchar; n:size_t; Format:Pchar):longint;cdecl;external libc_nlm name 'snprintf';
 | 
						||
function snprintf(__restrict:Pchar; n:size_t; Format:Pchar; p1:longint):longint;cdecl;external libc_nlm name 'snprintf';
 | 
						||
function snprintf(__restrict:Pchar; n:size_t; Format:Pchar; p1:longint; p2:pchar):longint;cdecl;external libc_nlm name 'snprintf';
 | 
						||
function snprintf(__restrict:Pchar; n:size_t; Format:Pchar; p1:pchar):longint;cdecl;external libc_nlm name 'snprintf';
 | 
						||
function snprintf(__restrict:Pchar; n:size_t; Format:Pchar; p1,p2:pchar):longint;cdecl;external libc_nlm name 'snprintf';
 | 
						||
function snprintf(__restrict:Pchar; n:size_t; Format:Pchar; p1,p2,p3:pchar):longint;cdecl;external libc_nlm name 'snprintf';
 | 
						||
function snprintf(__restrict:Pchar; n:size_t; Format:Pchar; p1,p2:longint):longint;cdecl;external libc_nlm name 'snprintf';
 | 
						||
function snprintf(__restrict:Pchar; n:size_t; Format:Pchar; p1,p2,p3:longint):longint;cdecl;external libc_nlm name 'snprintf';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function sscanf(__restrict:Pchar; __restrict1:Pchar; args:array of const):longint;cdecl;external libc_nlm name 'sscanf';
 | 
						||
{$endif}
 | 
						||
function sscanf(__restrict:Pchar; __restrict1:Pchar):longint;cdecl;external libc_nlm name 'sscanf';
 | 
						||
function tmpfile:PFILE;cdecl;external libc_nlm name 'tmpfile';
 | 
						||
function tmpnam(_para1:Pchar):Pchar;cdecl;external libc_nlm name 'tmpnam';
 | 
						||
function ungetc(_para1:longint; _para2:PFILE):longint;cdecl;external libc_nlm name 'ungetc';
 | 
						||
 | 
						||
function vfprintf(__restrict:PFILE; __restrict1:Pchar; _para3:va_list):longint;cdecl;external libc_nlm name 'vfprintf';
 | 
						||
function vfscanf(__restrict:PFILE; __restrict1:Pchar; _para3:va_list):longint;cdecl;external libc_nlm name 'vfscanf';
 | 
						||
function vprintf(__restrict:Pchar; _para2:va_list):longint;cdecl;external libc_nlm name 'vprintf';
 | 
						||
function vscanf(__restrict:Pchar; _para2:va_list):longint;cdecl;external libc_nlm name 'vscanf';
 | 
						||
function vsnprintf(__restrict:Pchar; n:size_t; __restrict1:Pchar; _para4:va_list):longint;cdecl;external libc_nlm name 'vsnprintf';
 | 
						||
function vsprintf(__restrict:Pchar; __restrict1:Pchar; _para3:va_list):longint;cdecl;external libc_nlm name 'vsprintf';
 | 
						||
 | 
						||
function vsscanf(__restrict:Pchar; __restrict1:Pchar; _para3:va_list):longint;cdecl;external libc_nlm name 'vsscanf';
 | 
						||
{ functions underlying macro support...  }
 | 
						||
function ___stdin:PPFILE;cdecl;external libc_nlm name '___stdin';
 | 
						||
function ___stdout:PPFILE;cdecl;external libc_nlm name '___stdout';
 | 
						||
function ___stderr:PPFILE;cdecl;external libc_nlm name '___stderr';
 | 
						||
function ___cin:PPFILE;cdecl;external libc_nlm name '___cin';
 | 
						||
function ___cout:PPFILE;cdecl;external libc_nlm name '___cout';
 | 
						||
{ POSIX-defined and other additions...  }
 | 
						||
 | 
						||
function fdopen(_para1:longint; __restrict:Pchar):PFILE;cdecl;external libc_nlm name 'fdopen';
 | 
						||
function fileno(_para1:PFILE):longint;cdecl;external libc_nlm name 'fileno';
 | 
						||
procedure flockfile(_para1:PFILE);cdecl;external libc_nlm name 'flockfile';
 | 
						||
function ftrylockfile(_para1:PFILE):longint;cdecl;external libc_nlm name 'ftrylockfile';
 | 
						||
procedure funlockfile(_para1:PFILE);cdecl;external libc_nlm name 'funlockfile';
 | 
						||
function getc_unlocked(_para1:PFILE):longint;cdecl;external libc_nlm name 'getc_unlocked';
 | 
						||
function getchar_unlocked:longint;cdecl;external libc_nlm name 'getchar_unlocked';
 | 
						||
function getw(_para1:PFILE):longint;cdecl;external libc_nlm name 'getw';
 | 
						||
function pclose(stream:PFILE):longint;cdecl;external libc_nlm name 'pclose';
 | 
						||
function popen(command:Pchar; mode:Pchar):PFILE;cdecl;external libc_nlm name 'popen';
 | 
						||
function putc_unlocked(c:longint; _para2:PFILE):longint;cdecl;external libc_nlm name 'putc_unlocked';
 | 
						||
function putchar_unlocked(c:longint):longint;cdecl;external libc_nlm name 'putchar_unlocked';
 | 
						||
function tempnam(dirpath:Pchar; prefix:Pchar):Pchar;cdecl;external libc_nlm name 'tempnam';
 | 
						||
{ nonstandard (transitional) addtions for 64-bit file I/O...  }
 | 
						||
function fgetpos64(_para1:PFILE; _para2:Pfpos64_t):longint;cdecl;external libc_nlm name 'fgetpos64';
 | 
						||
function fseek64(fp:PFILE; offset:fpos64_t; whence:longint):longint;cdecl;external libc_nlm name 'fseek64';
 | 
						||
function fsetpos64(_para1:PFILE; _para2:Pfpos64_t):longint;cdecl;external libc_nlm name 'fsetpos64';
 | 
						||
function ftell64(_para1:PFILE):off64_t;cdecl;external libc_nlm name 'ftell64';
 | 
						||
{ hard-wired console I/O support (cannot be redirected)...  }
 | 
						||
function cgetc:longint;cdecl;external libc_nlm name 'cgetc';
 | 
						||
function cgets(_para1:Pchar):Pchar;cdecl;external libc_nlm name 'cgets';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function cprintf(_para1:Pchar; args:array of const):longint;cdecl;external libc_nlm name 'cprintf';
 | 
						||
{$endif}
 | 
						||
function cprintf(_para1:Pchar):longint;cdecl;external libc_nlm name 'cprintf';
 | 
						||
function cputc(_para1:longint):longint;cdecl;external libc_nlm name 'cputc';
 | 
						||
function cputs(_para1:Pchar):longint;cdecl;external libc_nlm name 'cputs';
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function cscanf(__restrict:Pchar; args:array of const):longint;cdecl;external libc_nlm name 'cscanf';
 | 
						||
{$endif}
 | 
						||
function cscanf(__restrict:Pchar):longint;cdecl;external libc_nlm name 'cscanf';
 | 
						||
function vcprintf(__restrict:Pchar; _para2:va_list):longint;cdecl;external libc_nlm name 'vcprintf';
 | 
						||
function vcscanf(__restrict:Pchar; _para2:va_list):longint;cdecl;external libc_nlm name 'vcscanf';
 | 
						||
function vasprintf(__restrict:PPchar; __restrict1:Pchar; _para3:va_list):longint;cdecl;external libc_nlm name 'vasprintf';
 | 
						||
{ defined as macros in both C and C++...  }
 | 
						||
{ UNIX 98/POSIX.1-2002 defined additions  }
 | 
						||
 | 
						||
 | 
						||
// stdlib.h
 | 
						||
{ pshpack1.h }
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
  const
 | 
						||
     EXIT_FAILURE = -(1);
 | 
						||
     EXIT_SUCCESS = 0;
 | 
						||
     RAND_MAX = 32767;
 | 
						||
 | 
						||
 | 
						||
type
 | 
						||
   Pdiv_t = ^div_t;
 | 
						||
   div_t = record
 | 
						||
        quot : longint;
 | 
						||
        rem : longint;
 | 
						||
     end;
 | 
						||
 | 
						||
   Pldiv_t = ^ldiv_t;
 | 
						||
   ldiv_t = record
 | 
						||
        quot : longint;
 | 
						||
        rem : longint;
 | 
						||
     end;
 | 
						||
 | 
						||
   Plldiv_t = ^lldiv_t;
 | 
						||
   lldiv_t = record
 | 
						||
        quot : Tint64;
 | 
						||
        rem : Tint64;
 | 
						||
     end;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
 | 
						||
type TCDeclProcedure = procedure; cdecl;
 | 
						||
 | 
						||
procedure abort;cdecl;external libc_nlm name 'abort';
 | 
						||
// function {$ifdef INCLUDED_FROM_SYSTEM}libc_abs{$else}abs{$endif}(_para1:longint):longint;cdecl;external libc_nlm name 'abs';
 | 
						||
function atexit(_para1:TCDeclProcedure ):longint;cdecl;external libc_nlm name 'atexit';
 | 
						||
function atof(_para1:Pchar):double;cdecl;external libc_nlm name 'atof';
 | 
						||
function atoi(_para1:Pchar):longint;cdecl;external libc_nlm name 'atoi';
 | 
						||
function atol(_para1:Pchar):longint;cdecl;external libc_nlm name 'atol';
 | 
						||
function atoll(_para1:Pchar):Tint64;cdecl;external libc_nlm name 'atoll';
 | 
						||
 | 
						||
//!! function bsearch(_para1:pointer; _para2:pointer; _para3:size_t; _para4:size_t; _para5:function (_para1:pointer; _para2:pointer):longint):pointer;cdecl;external libc_nlm name 'bsearch';
 | 
						||
function calloc(_para1:size_t; _para2:size_t):pointer;cdecl;external libc_nlm name 'calloc';
 | 
						||
function __CW_div(_para1:longint; _para2:longint):div_t;cdecl;external libc_nlm name '__CW_div';
 | 
						||
procedure libc_exit(status:longint);cdecl;external libc_nlm name 'exit';
 | 
						||
procedure free(_para1:pointer);cdecl;external libc_nlm name 'free';
 | 
						||
function getenv(_para1:Pchar):Pchar;cdecl;external libc_nlm name 'getenv';
 | 
						||
function labs(_para1:longint):longint;cdecl;external libc_nlm name 'labs';
 | 
						||
function __CW_ldiv(_para1:longint; _para2:longint):ldiv_t;cdecl;external libc_nlm name '__CW_ldiv';
 | 
						||
function llabs(_para1:Tint64):Tint64;cdecl;external libc_nlm name 'llabs';
 | 
						||
function __CW_lldiv(_para1:Tint64; _para2:Tint64):lldiv_t;cdecl;external libc_nlm name '__CW_lldiv';
 | 
						||
function malloc(_para1:size_t):pointer;cdecl;external libc_nlm name 'malloc';
 | 
						||
function mblen(_para1:Pchar; _para2:size_t):longint;cdecl;external libc_nlm name 'mblen';
 | 
						||
function mbstowcs(_para1:Pwchar_t; _para2:Pchar; _para3:size_t):size_t;cdecl;external libc_nlm name 'mbstowcs';
 | 
						||
function mbtowc(_para1:Pwchar_t; _para2:Pchar; _para3:size_t):longint;cdecl;external libc_nlm name 'mbtowc';
 | 
						||
 | 
						||
type TQSortFunc = function (_para1:pointer; _para2:pointer):longint; cdecl;
 | 
						||
procedure qsort(_para1:pointer; _para2:size_t; _para3:size_t; _para4:TQSortFunc);cdecl;external libc_nlm name 'qsort';
 | 
						||
function rand:longint;cdecl;external libc_nlm name 'rand';
 | 
						||
function realloc(_para1:pointer; _para2:size_t):pointer;cdecl;external libc_nlm name 'realloc';
 | 
						||
procedure srand(_para1:dword);cdecl;external libc_nlm name 'srand';
 | 
						||
function strtod(__restrict:Pchar; __restrict1:PPchar):double;cdecl;external libc_nlm name 'strtod';
 | 
						||
function strtol(__restrict:Pchar; __restrict1:PPchar; _para3:longint):longint;cdecl;external libc_nlm name 'strtol';
 | 
						||
function strtoll(__restrict:Pchar; __restrict1:PPchar; _para3:longint):Tint64;cdecl;external libc_nlm name 'strtoll';
 | 
						||
function strtoul(__restrict:Pchar; __restrict1:PPchar; _para3:longint):dword;cdecl;external libc_nlm name 'strtoul';
 | 
						||
function strtoull(__restrict:Pchar; __restrict1:PPchar; _para3:longint):Tuint64;cdecl;external libc_nlm name 'strtoull';
 | 
						||
function system(_para1:Pchar):longint;cdecl;external libc_nlm name 'system';
 | 
						||
function wcstombs(__restrict:Pchar; __restrict1:Pwchar_t; _para3:size_t):size_t;cdecl;external libc_nlm name 'wcstombs';
 | 
						||
function wctomb(_para1:Pchar; _para2:wchar_t):longint;cdecl;external libc_nlm name 'wctomb';
 | 
						||
function alloca(_para1:size_t):pointer;cdecl;external libc_nlm name 'alloca';
 | 
						||
function clearenv:longint;cdecl;external libc_nlm name 'clearenv';
 | 
						||
function getcmd(_para1:Pchar):Pchar;cdecl;external libc_nlm name 'getcmd';
 | 
						||
function flushenv(_para1:Pchar; _para2:longint):longint;cdecl;external libc_nlm name 'flushenv';
 | 
						||
function getbsize(_para1:Plongint; _para2:Plongint):Pchar;cdecl;external libc_nlm name 'getbsize';
 | 
						||
function htol(_para1:Pchar):dword;cdecl;external libc_nlm name 'htol';
 | 
						||
function itoa(_para1:longint; _para2:Pchar; _para3:longint):Pchar;cdecl;external libc_nlm name 'itoa';
 | 
						||
function itoab(_para1:dword; _para2:Pchar):Pchar;cdecl;external libc_nlm name 'itoab';
 | 
						||
function ltoa(_para1:longint; _para2:Pchar; _para3:longint):Pchar;cdecl;external libc_nlm name 'ltoa';
 | 
						||
function lltoa(_para1:Tint64; _para2:Pchar; _para3:longint):Pchar;cdecl;external libc_nlm name 'lltoa';
 | 
						||
function _lrotr(_para1:dword; _para2:dword):dword;cdecl;external libc_nlm name '_lrotr';
 | 
						||
function _lrotl(_para1:dword; _para2:dword):dword;cdecl;external libc_nlm name '_lrotl';
 | 
						||
function mkdtemp(_para1:Pchar):Pchar;cdecl;external libc_nlm name 'mkdtemp';
 | 
						||
function mkstemp(_para1:Pchar):longint;cdecl;external libc_nlm name 'mkstemp';
 | 
						||
function mktemp(_para1:Pchar):Pchar;cdecl;external libc_nlm name 'mktemp';
 | 
						||
function msize(_para1:pointer):size_t;cdecl;external libc_nlm name 'msize';
 | 
						||
function multibyte:longint;cdecl;external libc_nlm name 'multibyte';
 | 
						||
function mvalidrange(_para1:pointer; _para2:size_t):longint;cdecl;external libc_nlm name 'mvalidrange';
 | 
						||
function nextmb(_para1:Pchar):Pchar;cdecl;external libc_nlm name 'nextmb';
 | 
						||
function prevmb(_para1:Pchar):Pchar;cdecl;external libc_nlm name 'prevmb';
 | 
						||
function putenv(_para1:Pchar):longint;cdecl;external libc_nlm name 'putenv';
 | 
						||
function rand_r(_para1:Pdword):longint;cdecl;external libc_nlm name 'rand_r';
 | 
						||
function _rotr(_para1:dword; _para2:dword):dword;cdecl;external libc_nlm name '_rotr';
 | 
						||
function _rotl(_para1:dword; _para2:dword):dword;cdecl;external libc_nlm name '_rotl';
 | 
						||
function rotl8(_para1:byte; _para2:longint):byte;cdecl;external libc_nlm name 'rotl8';
 | 
						||
function rotl16(_para1:word; _para2:longint):word;cdecl;external libc_nlm name 'rotl16';
 | 
						||
function rotl32(_para1:dword; _para2:longint):dword;cdecl;external libc_nlm name 'rotl32';
 | 
						||
function rotl64(_para1:Tuint64; _para2:longint):Tuint64;cdecl;external libc_nlm name 'rotl64';
 | 
						||
function rotr8(_para1:byte; _para2:longint):byte;cdecl;external libc_nlm name 'rotr8';
 | 
						||
function rotr16(_para1:word; _para2:longint):word;cdecl;external libc_nlm name 'rotr16';
 | 
						||
function rotr32(_para1:dword; _para2:longint):dword;cdecl;external libc_nlm name 'rotr32';
 | 
						||
function rotr64(_para1:Tuint64; _para2:longint):Tuint64;cdecl;external libc_nlm name 'rotr64';
 | 
						||
function setenv(_para1:Pchar; _para2:Pchar; _para3:longint):longint;cdecl;external libc_nlm name 'setenv';
 | 
						||
procedure setkey(_para1:Pchar);cdecl;external libc_nlm name 'setkey';
 | 
						||
function stackavail:size_t;cdecl;external libc_nlm name 'stackavail';
 | 
						||
function stackbase:pointer;cdecl;external libc_nlm name 'stackbase';
 | 
						||
function stackwatermark:size_t;cdecl;external libc_nlm name 'stackwatermark';
 | 
						||
function strtoi(_para1:Pchar; _para2:longint):longint;cdecl;external libc_nlm name 'strtoi';
 | 
						||
function truncmb(_para1:Pchar; _para2:size_t):Pchar;cdecl;external libc_nlm name 'truncmb';
 | 
						||
function ultoa(_para1:dword; _para2:Pchar; _para3:longint):Pchar;cdecl;external libc_nlm name 'ultoa';
 | 
						||
function ulltoa(_para1:Tuint64; _para2:Pchar; _para3:longint):Pchar;cdecl;external libc_nlm name 'ulltoa';
 | 
						||
function unsetenv(name:Pchar):longint;cdecl;external libc_nlm name 'unsetenv';
 | 
						||
function utoa(_para1:dword; _para2:Pchar; _para3:longint):Pchar;cdecl;external libc_nlm name 'utoa';
 | 
						||
function valuemb(_para1:Pchar):longint;cdecl;external libc_nlm name 'valuemb';
 | 
						||
{ atomic functions...  }
 | 
						||
procedure atomic_add(addr:Pdword; value:dword);cdecl;external libc_nlm name 'atomic_add';
 | 
						||
function atomic_bts(addr:Pdword; offset:dword):dword;cdecl;external libc_nlm name 'atomic_bts';
 | 
						||
function atomic_btr(addr:Pdword; offset:dword):dword;cdecl;external libc_nlm name 'atomic_btr';
 | 
						||
procedure atomic_dec(addr:Pdword);cdecl;external libc_nlm name 'atomic_dec';
 | 
						||
procedure atomic_inc(addr:Pdword);cdecl;external libc_nlm name 'atomic_inc';
 | 
						||
procedure atomic_sub(addr:Pdword; value:dword);cdecl;external libc_nlm name 'atomic_sub';
 | 
						||
function atomic_xchg(addr:Pdword; value:dword):dword;cdecl;external libc_nlm name 'atomic_xchg';
 | 
						||
procedure atomic_or(addr:Pdword; value:dword);cdecl;external libc_nlm name 'atomic_or';
 | 
						||
procedure atomic_xor(addr:Pdword; value:dword);cdecl;external libc_nlm name 'atomic_xor';
 | 
						||
procedure atomic_and(addr:Pdword; value:dword);cdecl;external libc_nlm name 'atomic_and';
 | 
						||
function atomic_xchgadd(addr:Pdword; value:dword):dword;cdecl;external libc_nlm name 'atomic_xchgadd';
 | 
						||
function atomic_cmpxchg(addr:Pdword; cmpvalue:dword; newvalue:dword):dword;cdecl;external libc_nlm name 'atomic_cmpxchg';
 | 
						||
procedure atomic64_inc(addr:Puint64);cdecl;external libc_nlm name 'atomic64_inc';
 | 
						||
procedure atomic64_dec(addr:Puint64);cdecl;external libc_nlm name 'atomic64_dec';
 | 
						||
procedure atomic64_add(addr:Puint64; value:tuint64);cdecl;external libc_nlm name 'atomic64_add';
 | 
						||
procedure atomic64_sub(addr:Puint64; value:tuint64);cdecl;external libc_nlm name 'atomic64_sub';
 | 
						||
function atomic64_xchg(addr:Puint64; value:tuint64):Tuint64;cdecl;external libc_nlm name 'atomic64_xchg';
 | 
						||
function atomic64_xchgadd(addr:Puint64; value:Tuint64):Tuint64;cdecl;external libc_nlm name 'atomic64_xchgadd';
 | 
						||
function atomic64_cmpxchg(addr:Puint64; cmpvalue:Tuint64; newvalue:Tuint64):Tuint64;cdecl;external libc_nlm name 'atomic64_cmpxchg';
 | 
						||
{ compiler-specific implementations of alloca()...  }
 | 
						||
function max(a:longint; b:longint):longint;cdecl;external libc_nlm name 'max';
 | 
						||
function min(a:longint; b:longint):longint;cdecl;external libc_nlm name 'min';
 | 
						||
 | 
						||
 | 
						||
// stropts.h
 | 
						||
// sys/ioctl.h
 | 
						||
// unistd.h
 | 
						||
// sys/types.h
 | 
						||
 | 
						||
type
 | 
						||
   Puchar_t = ^uchar_t;
 | 
						||
   uchar_t = byte;
 | 
						||
 | 
						||
   Pushort_t = ^ushort_t;
 | 
						||
   ushort_t = word;
 | 
						||
 | 
						||
   Puint_t = ^uint_t;
 | 
						||
   uint_t = dword;
 | 
						||
 | 
						||
   Pulong_t = ^ulong_t;
 | 
						||
   ulong_t = dword;
 | 
						||
 | 
						||
   Pu_char = ^u_char;
 | 
						||
   u_char = byte;
 | 
						||
 | 
						||
   Pu_short = ^u_short;
 | 
						||
   u_short = word;
 | 
						||
 | 
						||
   Pu_int = ^u_int;
 | 
						||
   u_int = dword;
 | 
						||
 | 
						||
   Pu_long = ^u_long;
 | 
						||
   u_long = dword;
 | 
						||
 | 
						||
   Pcaddr_t = ^caddr_t;
 | 
						||
   caddr_t = char;
 | 
						||
 | 
						||
   Puseconds_t = ^useconds_t;
 | 
						||
   useconds_t = Tuint64;
 | 
						||
 | 
						||
   Psuseconds_t = ^suseconds_t;
 | 
						||
   suseconds_t = Tint64;
 | 
						||
 | 
						||
   Pu_int8_t = ^u_int8_t;
 | 
						||
   u_int8_t = byte;
 | 
						||
 | 
						||
   Pu_int16_t = ^u_int16_t;
 | 
						||
   u_int16_t = word;
 | 
						||
 | 
						||
   Pu_int32_t = ^u_int32_t;
 | 
						||
   u_int32_t = dword;
 | 
						||
 | 
						||
   Pu_int64_t = ^u_int64_t;
 | 
						||
   u_int64_t = Tuint64;
 | 
						||
 | 
						||
function getpid:pid_t;cdecl;external libc_nlm name 'getpid';
 | 
						||
function getppid:pid_t;cdecl;external libc_nlm name 'getppid';
 | 
						||
function getuid:uid_t;cdecl;external libc_nlm name 'getuid';
 | 
						||
function geteuid:uid_t;cdecl;external libc_nlm name 'geteuid';
 | 
						||
function getgid:gid_t;cdecl;external libc_nlm name 'getgid';
 | 
						||
function getegid:gid_t;cdecl;external libc_nlm name 'getegid';
 | 
						||
function setuid(uid:uid_t):longint;cdecl;external libc_nlm name 'setuid';
 | 
						||
function setgid(gid:gid_t):longint;cdecl;external libc_nlm name 'setgid';
 | 
						||
function getpgrp:pid_t;cdecl;external libc_nlm name 'getpgrp';
 | 
						||
function setsid:pid_t;cdecl;external libc_nlm name 'setsid';
 | 
						||
function setpgid(pid:pid_t; pgid:pid_t):longint;cdecl;external libc_nlm name 'setpgid';
 | 
						||
 | 
						||
function FpGetpid:pid_t;cdecl;external libc_nlm name 'getpid';
 | 
						||
function FpGetppid:pid_t;cdecl;external libc_nlm name 'getppid';
 | 
						||
function FpGetuid:uid_t;cdecl;external libc_nlm name 'getuid';
 | 
						||
function FpGeteuid:uid_t;cdecl;external libc_nlm name 'geteuid';
 | 
						||
function FpGetgid:gid_t;cdecl;external libc_nlm name 'getgid';
 | 
						||
function FpGetegid:gid_t;cdecl;external libc_nlm name 'getegid';
 | 
						||
function FpSetuid(uid:uid_t):longint;cdecl;external libc_nlm name 'setuid';
 | 
						||
function FpSetgid(gid:gid_t):longint;cdecl;external libc_nlm name 'setgid';
 | 
						||
function FpSetpgrp:pid_t;cdecl;external libc_nlm name 'getpgrp';
 | 
						||
function FpSetsid:pid_t;cdecl;external libc_nlm name 'setsid';
 | 
						||
function FpSetpgid(pid:pid_t; pgid:pid_t):longint;cdecl;external libc_nlm name 'setpgid';
 | 
						||
 | 
						||
 | 
						||
// sys/unistd.h
 | 
						||
 | 
						||
type
 | 
						||
  TFilDes = Array [0..1] of cInt;
 | 
						||
  pFilDes = ^TFilDes;
 | 
						||
 | 
						||
  const
 | 
						||
     R_OK = 1;
 | 
						||
  { test for write permission                  }
 | 
						||
     W_OK = 2;
 | 
						||
  { test for execute permission                }
 | 
						||
     X_OK = 4;
 | 
						||
  { test for existence of file                 }
 | 
						||
     F_OK = 8;
 | 
						||
  { values for 'whence' in lseek()...                                  }
 | 
						||
  { set file pointer to 'offset'               }
 | 
						||
    // SEEK_SET = 0;
 | 
						||
  { set file pointer to current plus 'offset'  }
 | 
						||
     // SEEK_CUR = 1;
 | 
						||
  { set file pointer to EOF plus 'offset'      }
 | 
						||
     // SEEK_END = 2;
 | 
						||
  { old Berkeley names...                                              }
 | 
						||
     L_SET = SEEK_SET;
 | 
						||
     L_INCR = SEEK_CUR;
 | 
						||
     L_XTND = SEEK_END;
 | 
						||
  { test using effective ids                   }
 | 
						||
     EFF_ONLY_OK = 8;
 | 
						||
  { descriptor underlying 'stdin'              }
 | 
						||
     STDIN_FILENO = 0;
 | 
						||
  { ibid for 'stdout'                          }
 | 
						||
     STDOUT_FILENO = 1;
 | 
						||
  { ibid for 'stderr'                          }
 | 
						||
     STDERR_FILENO = 2;
 | 
						||
     _POSIX_THREAD_SAFE_FUNCTIONS = 1;
 | 
						||
     _POSIX_THREAD_ATTR_STACKADDR = 1;
 | 
						||
     _POSIX_THREAD_ATTR_STACKSIZE = 1;
 | 
						||
     _POSIX_MAPPED_FILES = 1;
 | 
						||
     _POSIX_MEMLOCK = 1;
 | 
						||
     _POSIX_MEMLOCK_RANGE = 1;
 | 
						||
     _POSIX_MEMORY_PROTECTION = 1;
 | 
						||
     _POSIX_SYNCHRONIZED_IO = 1;
 | 
						||
     _POSIX_FSYNC = 1;
 | 
						||
     _POSIX_ASYNC_IO = -(1);
 | 
						||
     _POSIX_CHOWN_RESTRICTED = -(1);
 | 
						||
     _POSIX_NO_TRUNC = -(1);
 | 
						||
     _POSIX_PRIO_IO = -(1);
 | 
						||
     _POSIX_SYNC_IO = 1;
 | 
						||
     _POSIX_VDISABLE = 0;
 | 
						||
 | 
						||
 | 
						||
function access(path:Pchar; mode:longint):longint;cdecl;external libc_nlm name 'access';
 | 
						||
function FpAccess(path:Pchar; mode:longint):longint;cdecl;external libc_nlm name 'access';
 | 
						||
function alarm(seconds:dword):dword;cdecl;external libc_nlm name 'alarm';
 | 
						||
function FpChdir(path:Pchar):longint;cdecl;external libc_nlm name 'chdir';
 | 
						||
function {$ifdef INCLUDED_FROM_SYSTEM}libc_chsize{$else}chsize{$endif}(fildes:longint; size:size_t):longint;cdecl;external libc_nlm name 'chsize';
 | 
						||
function FpChsize(fildes:longint; size:size_t):longint;cdecl;external libc_nlm name 'chsize';
 | 
						||
function FpClose(fildes:longint):longint;cdecl;external libc_nlm name 'close';
 | 
						||
function crypt(key:Pchar; salt:Pchar):Pchar;cdecl;external libc_nlm name 'crypt';
 | 
						||
function dup(fildes:longint):longint;cdecl;external libc_nlm name 'dup';
 | 
						||
function Fpdup(fildes:longint):longint;cdecl;external libc_nlm name 'dup';
 | 
						||
function dup2(fildes1:longint; fildes2:longint):longint;cdecl;external libc_nlm name 'dup2';
 | 
						||
function Fpdup2(fildes1:longint; fildes2:longint):longint;cdecl;external libc_nlm name 'dup2';
 | 
						||
type TArr064char = array [0..63] of char;
 | 
						||
procedure encrypt(block:TArr064char; edflag:longint);cdecl;external libc_nlm name 'encrypt';
 | 
						||
procedure _exit(status:longint);cdecl;external libc_nlm name '_exit';
 | 
						||
procedure FpExit(status:longint);cdecl;external libc_nlm name '_exit';
 | 
						||
function fchdir(fildes:longint):longint;cdecl;external libc_nlm name 'fchdir';
 | 
						||
function fdatasync(fildes:longint):longint;cdecl;external libc_nlm name 'fdatasync';
 | 
						||
function fork:pid_t;cdecl;external libc_nlm name 'fork';
 | 
						||
function fsync(fildes:longint):longint;cdecl;external libc_nlm name 'fsync';
 | 
						||
function fpathconf(fildes:longint; name:longint):longint;cdecl;external libc_nlm name 'fpathconf';
 | 
						||
function ftruncate(fildes:longint; len:off_t):longint;cdecl;external libc_nlm name 'ftruncate';
 | 
						||
function getcwd(path:Pchar; len:size_t):Pchar;cdecl;external libc_nlm name 'getcwd';
 | 
						||
function gethostid:longint;cdecl;external libc_nlm name 'gethostid';
 | 
						||
(* Const before declarator ignored *)
 | 
						||
 | 
						||
function getopt(argc:longint; argv:array of Pchar; optstr:Pchar):longint;cdecl;external libc_nlm name 'getopt';
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function Fpioctl(_para1:longint; _para2:longint; args:array of const):longint;cdecl;external libc_nlm name 'ioctl';
 | 
						||
{$endif}
 | 
						||
function Fpioctl(_para1:longint; _para2:longint):longint;cdecl;external libc_nlm name 'ioctl';
 | 
						||
function Fpisatty(fildes:longint):longint;cdecl;external libc_nlm name 'isatty';
 | 
						||
//function lseek(fildes:longint; offset:off_t; whence:longint):off_t;cdecl;external libc_nlm name 'lseek';
 | 
						||
function fplseek(fildes:longint; offset:off_t; whence:longint):off_t;cdecl;external libc_nlm name 'lseek';
 | 
						||
 | 
						||
function pathconf(path:Pchar; name:longint):longint;cdecl;external libc_nlm name 'pathconf';
 | 
						||
//!!function pipe(fildes:array[0..1] of longint):longint;cdecl;external libc_nlm name 'pipe';
 | 
						||
function FpPipe(var fildes:TFilDes):cInt;cdecl;external libc_nlm name 'pipe';
 | 
						||
function pread(fildes:longint; buf:pointer; nbytes:size_t; off:off_t):ssize_t;cdecl;external libc_nlm name 'pread';
 | 
						||
function pwrite(fildes:longint; buf:pointer; nbytes:size_t; off:off_t):ssize_t;cdecl;external libc_nlm name 'pwrite';
 | 
						||
function FpRead(fildes:longint; buf:pointer; nbytes:size_t):ssize_t;cdecl;external libc_nlm name 'read';
 | 
						||
function FpRead(fildes:longint; var buf; nbytes:size_t):ssize_t;cdecl;external libc_nlm name 'read';
 | 
						||
function Fprmdir(path:Pchar):longint;cdecl;external libc_nlm name 'rmdir';
 | 
						||
procedure sync;cdecl;external libc_nlm name 'sync';
 | 
						||
function sysconf(name:longint):longint;cdecl;external libc_nlm name 'sysconf';
 | 
						||
function unlink(path:Pchar):longint;cdecl;external libc_nlm name 'unlink';
 | 
						||
function FpUnlink(path:Pchar):longint;cdecl;external libc_nlm name 'unlink';
 | 
						||
function FpWrite(fildes:longint; buf:pointer; nbytes:size_t):ssize_t;cdecl;external libc_nlm name 'write';
 | 
						||
function FpWrite(fildes:longint; var buf; nbytes:size_t):ssize_t;cdecl;external libc_nlm name 'write';
 | 
						||
{ appeared in BSD...  }
 | 
						||
function brk(endds:pointer):longint;cdecl;external libc_nlm name 'brk';
 | 
						||
function getdtablehi:longint;cdecl;external libc_nlm name 'getdtablehi';
 | 
						||
function getdtablesize:longint;cdecl;external libc_nlm name 'getdtablesize';
 | 
						||
function getpagesize:longint;cdecl;external libc_nlm name 'getpagesize';
 | 
						||
 | 
						||
function readlink(path:Pchar; buf:Pchar; bufsize:size_t):longint;cdecl;external libc_nlm name 'readlink';
 | 
						||
function FpReadlink(path:Pchar; buf:Pchar; bufsize:size_t):longint;cdecl;external libc_nlm name 'readlink';
 | 
						||
function sbrk(incr:intptr_t):pointer;cdecl;external libc_nlm name 'sbrk';
 | 
						||
{ nonstandard additions (see also fsio.h)...  }
 | 
						||
function cancel(t_id:longint):longint;cdecl;external libc_nlm name 'cancel';
 | 
						||
function confstr(name:longint; buf:Pchar; len:size_t):size_t;cdecl;external libc_nlm name 'confstr';
 | 
						||
function delay(milliseconds:dword):longint;cdecl;external libc_nlm name 'delay';
 | 
						||
function _delay(milliseconds:dword):longint;cdecl;external libc_nlm name 'delay';
 | 
						||
function sethostid(hostid:longint):longint;cdecl;external libc_nlm name 'sethostid';
 | 
						||
function setmode(fildes:longint; oflag:longint):longint;cdecl;external libc_nlm name 'setmode';
 | 
						||
function sleep(seconds:dword):dword;cdecl;external libc_nlm name 'sleep';
 | 
						||
function FpSleep(seconds:dword):dword;cdecl;external libc_nlm name 'sleep';
 | 
						||
function usleep(useconds:useconds_t):longint;cdecl;external libc_nlm name 'usleep';
 | 
						||
{ nonstandard (transitional) addtions for 64-bit file I/O...  }
 | 
						||
function chsize64(fildes:longint; size:size64_t):longint;cdecl;external libc_nlm name 'chsize64';
 | 
						||
function Fpchsize64(fildes:longint; size:size64_t):longint;cdecl;external libc_nlm name 'chsize64';
 | 
						||
function ftruncate64(fildes:longint; len:off64_t):longint;cdecl;external libc_nlm name 'ftruncate64';
 | 
						||
function Fpftruncate64(fildes:longint; len:off64_t):longint;cdecl;external libc_nlm name 'ftruncate64';
 | 
						||
function lseek64(fildes:longint; offset:off64_t; whence:longint):off64_t;cdecl;external libc_nlm name 'lseek64';
 | 
						||
function Fplseek64(fildes:longint; offset:off64_t; whence:longint):off64_t;cdecl;external libc_nlm name 'lseek64';
 | 
						||
function pread64(fildes:longint; buf:pointer; nbytes:size_t; off:off64_t):ssize_t;cdecl;external libc_nlm name 'pread64';
 | 
						||
function pwrite64(fildes:longint; buf:pointer; nbytes:size_t; off:off64_t):ssize_t;cdecl;external libc_nlm name 'pwrite64';
 | 
						||
function tell64(fildes:longint):off64_t;cdecl;external libc_nlm name 'tell64';
 | 
						||
function Fptell64(fildes:longint):off64_t;cdecl;external libc_nlm name 'tell64';
 | 
						||
function ____environ:PPPchar;cdecl;external libc_nlm name '____environ';
 | 
						||
function ___optarg:PPchar;cdecl;external libc_nlm name '___optarg';
 | 
						||
function ___optind:Plongint;cdecl;external libc_nlm name '___optind';
 | 
						||
function ___opterr:Plongint;cdecl;external libc_nlm name '___opterr';
 | 
						||
function ___optopt:Plongint;cdecl;external libc_nlm name '___optopt';
 | 
						||
function ___optreset:Plongint;cdecl;external libc_nlm name '___optreset';
 | 
						||
function want_posix_semantics(timestamp:longint):longint;cdecl;external libc_nlm name 'want_posix_semantics';
 | 
						||
{
 | 
						||
** Prototype for libraries writing their own start-up and shut-down code. This
 | 
						||
** is not an interface, but only a prototype for code furnished by the UNIX-
 | 
						||
** style NLM library. The presence of these is noted by the prelude object.
 | 
						||
 }
 | 
						||
function _init:longint;cdecl;external libc_nlm name '_init';
 | 
						||
function _fini:longint;cdecl;external libc_nlm name '_fini';
 | 
						||
{ globals for getopt() implementation...  }
 | 
						||
{ the prototype for ioctl() is in unistd.h...  }
 | 
						||
 | 
						||
 | 
						||
// sys/byteorder.h
 | 
						||
function htonl(_para1:dword):dword;cdecl;external libc_nlm name 'htonl';
 | 
						||
function htons(_para1:word):word;cdecl;external libc_nlm name 'htons';
 | 
						||
function ntohl(_para1:dword):dword;cdecl;external libc_nlm name 'ntohl';
 | 
						||
function ntohs(_para1:word):word;cdecl;external libc_nlm name 'ntohs';
 | 
						||
 | 
						||
 | 
						||
// sys/cdefs.h
 | 
						||
// sys/dir.h
 | 
						||
// dirent.h
 | 
						||
// sys/mode.h
 | 
						||
 | 
						||
{ POSIX file types...  }
 | 
						||
{ POSIX file modes: owner (user) permission...  }
 | 
						||
{ POSIX file modes: group permission...  }
 | 
						||
{ POSIX file modes: other permission...  }
 | 
						||
{ POSIX setuid(), setgid(), and sticky...  }
 | 
						||
{ for use with stat(), readdir(), chmod(), mkdir(), etc.  }
 | 
						||
{ NetWare-specific additions to the upper half of mode_t...  }
 | 
						||
{ values for field 'd_type'...  }
 | 
						||
 | 
						||
{ pshpack1.h }
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
  const
 | 
						||
     S_IFMT = $F000;
 | 
						||
  { first-in/first-out (FIFO/pipe)            }
 | 
						||
     S_IFIFO = $1000;
 | 
						||
  { character-special file (tty/console)      }
 | 
						||
     S_IFCHR = $2000;
 | 
						||
  { directory                                 }
 | 
						||
     S_IFDIR = $4000;
 | 
						||
  { blocking device (unused)                  }
 | 
						||
     S_IFBLK = $6000;
 | 
						||
  { regular                                   }
 | 
						||
     S_IFREG = $8000;
 | 
						||
  { symbolic link (unused)                    }
 | 
						||
     S_IFLNK = $A000;
 | 
						||
  { Berkeley socket                           }
 | 
						||
     S_IFSOCK = $C000;
 | 
						||
     S_IRWXU = $01C0;
 | 
						||
     S_IRUSR = $0100;
 | 
						||
     S_IWUSR = $0080;
 | 
						||
     S_IXUSR = $0040;
 | 
						||
     S_IREAD = S_IRUSR;
 | 
						||
     S_IWRITE = S_IWUSR;
 | 
						||
     S_IEXEC = S_IXUSR;
 | 
						||
  { POSIX file modes: group permission...  }
 | 
						||
     S_IRWXG = $0038;
 | 
						||
     S_IRGRP = $0020;
 | 
						||
     S_IWGRP = $0010;
 | 
						||
     S_IXGRP = $0008;
 | 
						||
  { POSIX file modes: other permission...  }
 | 
						||
     S_IRWXO = $0007;
 | 
						||
     S_IROTH = $0004;
 | 
						||
     S_IWOTH = $0002;
 | 
						||
     S_IXOTH = $0001;
 | 
						||
  { POSIX setuid(), setgid(), and sticky...  }
 | 
						||
     S_ISUID = $0800;
 | 
						||
     S_ISGID = $0400;
 | 
						||
     S_ISVTX = $0200;
 | 
						||
  { for use with stat(), readdir(), chmod(), mkdir(), etc.  }
 | 
						||
  { NetWare-specific additions to the upper half of mode_t...  }
 | 
						||
     M_A_RDONLY          = $00010000;    // read-only entry
 | 
						||
     M_A_HIDDEN          = $00020000;    // hidden entry
 | 
						||
     M_A_SYSTEM          = $00040000;    // system entry
 | 
						||
     M_A_SUBDIR          = $00080000;    // is Subdir
 | 
						||
     M_A_ARCH            = $00100000;    // file has been archived
 | 
						||
     M_A_SHARE           = $00200000;    // file is shared
 | 
						||
     M_A_TRANS           = $00400000;    // file transactions are tracked
 | 
						||
     M_A_IMMPURG         = $00800000;    // purge deleted file immediately
 | 
						||
     M_A_NORENAM         = $01000000;    // inhibit renaming
 | 
						||
     M_A_NODELET         = $02000000;    // inhibit deletion
 | 
						||
     M_A_NOCOPY          = $04000000;    // inhibit copying
 | 
						||
     M_A_IMMCOMPRESS     = $08000000;    // compress immediately
 | 
						||
     M_A_FILE_COMPRESSED = $10000000;    // file is compressed
 | 
						||
     M_A_DONT_COMPRESS   = $20000000;    // inhibit compression
 | 
						||
     M_A_CANT_COMPRESS   = $40000000;    // file cannot be compressed
 | 
						||
     M_A_BITS_SIGNIFICANT= $80000000;    // these M_A_- bits are important
 | 
						||
 | 
						||
     DT_UNKNOWN = 0;
 | 
						||
     DT_TTY = 1;           { console (won't occur) }
 | 
						||
     DT_REG = S_IFREG;     { normal file }
 | 
						||
     DT_DIR = S_IFDIR;     { subdirectory }
 | 
						||
     DT_FIFO = S_IFIFO;    { first-in/first-out (FIFO/pipe) }
 | 
						||
     DT_SOCK = S_IFSOCK;   { socket (won't occur) }
 | 
						||
     DT_CHR = S_IFCHR;     { character-special file (unused)}
 | 
						||
     DT_BLK = S_IFBLK;     { blocking device (unused) }
 | 
						||
     DT_LNK = S_IFLNK;     { symbolic or hard link (won't occur) }
 | 
						||
 | 
						||
type
 | 
						||
   Pdirent = ^Tdirent;
 | 
						||
   Tdirent = record
 | 
						||
        d_userspec : dword;
 | 
						||
        d_flags    : dword;
 | 
						||
        d_type     : mode_t;
 | 
						||
        d_mode     : mode_t;
 | 
						||
        d_ino      : ino_t;
 | 
						||
        d_size     : off64_t;
 | 
						||
        d_spare    : array[0..54] of dword;
 | 
						||
        d_pad1     : byte;
 | 
						||
        d_pad2     : byte;
 | 
						||
        d_pad3     : byte;
 | 
						||
        d_namelen  : byte;
 | 
						||
        d_name     : array[0..(255 + 1)-1] of char;
 | 
						||
     end;
 | 
						||
    PPdirent = ^Pdirent;
 | 
						||
   //DIR = dirent;
 | 
						||
   //PDIR = ^DIR;
 | 
						||
   //TDir = Dir;
 | 
						||
{ sizeof(struct dirent) == 0x200 (512.)  }
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
 | 
						||
 | 
						||
function closedir(dirp:Pdirent):longint;cdecl;external libc_nlm name 'closedir';
 | 
						||
function opendir(pathName:Pchar):Pdirent;cdecl;external libc_nlm name 'opendir';
 | 
						||
function readdir(dirp:Pdirent):Pdirent;cdecl;external libc_nlm name 'readdir';
 | 
						||
function readdir_r(dirp:Pdirent; entry:Pdirent; result:PPdirent):longint;cdecl;external libc_nlm name 'readdir_r';
 | 
						||
procedure rewinddir(dirp:Pdirent);cdecl;external libc_nlm name 'rewinddir';
 | 
						||
 | 
						||
function Fpclosedir(dirp:Pdirent):longint;cdecl;external libc_nlm name 'closedir';
 | 
						||
function Fpopendir(pathName:Pchar):Pdirent;cdecl;external libc_nlm name 'opendir';
 | 
						||
function Fpreaddir(dirp:Pdirent):Pdirent;cdecl;external libc_nlm name 'readdir';
 | 
						||
function Fpreaddir_r(dirp:Pdirent; entry:Pdirent; result:PPdirent):longint;cdecl;external libc_nlm name 'readdir_r';
 | 
						||
procedure Fprewinddir(dirp:Pdirent);cdecl;external libc_nlm name 'rewinddir';
 | 
						||
 | 
						||
// sys/file.h
 | 
						||
// fcntl.h
 | 
						||
 | 
						||
{ 'cmd' values for fcntl()...                                               }
 | 
						||
const
 | 
						||
 F_GETFL      = 1;        // get file status flags
 | 
						||
 F_SETFL      = 2;        // set file status flags
 | 
						||
 F_DUPFD      = 3;        // duplicate file descriptor
 | 
						||
 F_GETFD      = 4;        // get file descriptor flags
 | 
						||
 F_SETFD      = 5;        // set file descriptor flags
 | 
						||
 F_SETLK      = 6;        // set record locking info
 | 
						||
 F_SETLK64    = 16;       // set record locking info (64-bit)
 | 
						||
 F_GETLK      = 7;        // get record locking info
 | 
						||
 F_GETLK64    = 17;       // get record locking info (64-bit)
 | 
						||
 F_SETLKW     = 8;        // get record locking info; wait if blocked
 | 
						||
 F_SETLKW64   = 18;       // get record locking info (64-bit)
 | 
						||
 F_CLOEXEC    = 9;        // close on execute
 | 
						||
 | 
						||
// values for 'l_type' field of 'struct flock'...
 | 
						||
 F_RDLCK      = 1;        // shared or read lock
 | 
						||
 F_WRLCK      = 2;        // exclusive or write lock
 | 
						||
 F_UNLCK      = 3;        // unlock
 | 
						||
 | 
						||
// values for 'oflag' in open()...
 | 
						||
 O_RDONLY     =$00000000; // open for read only
 | 
						||
 O_WRONLY     =$00000001; // open for write only
 | 
						||
 O_RDWR       =$00000002; // open for read and write
 | 
						||
 O_ACCMODE    =$00000003; // access flags mask
 | 
						||
 O_reserved1  =$00000004; // reserved
 | 
						||
 O_reserved2  =$00000008; // reserved
 | 
						||
 O_APPEND     =$00000010; // writes done at end of file
 | 
						||
 O_CREAT      =$00000020; // create new file
 | 
						||
 O_TRUNC      =$00000040; // truncate existing file
 | 
						||
 O_EXCL       =$00000080; // exclusive open
 | 
						||
 O_NOCTTY     =$00000100; // no controlling terminal--unsupported
 | 
						||
 O_BINARY     =$00000200; // binary file--all files
 | 
						||
 O_NDELAY     =$00000400; // nonblocking flag
 | 
						||
 O_reserved3  =$00000800; // reserved
 | 
						||
 O_SYNC       =$00001000; // synchronized I/O file integrity
 | 
						||
 O_DSYNC      =$00002000; // synchronized I/O data integrity
 | 
						||
 O_RSYNC      =$00004000; // synchronized read I/O
 | 
						||
 O_NONBLOCK   = O_NDELAY; // alias
 | 
						||
 FD_CLOEXEC   =$00008000; // parent closes after call to process()
 | 
						||
 O_UPDATE     =$00010000; // keep legacy files updated
 | 
						||
 O_FIFO       =$00100000; // opening one end of a FIFO [non-standard]
 | 
						||
 | 
						||
// value for third argument when 'cmd' is F_SETFL in fcntl()...
 | 
						||
 FNDELAY      = O_NDELAY;   // fcntl() non-blocking I/O
 | 
						||
 | 
						||
// 'shflag' values for sopen()...
 | 
						||
 SH_DENYRW    = $00000010; // deny read/write mode
 | 
						||
 SH_DENYWR    = $00000020; // deny write mode
 | 
						||
 SH_DENYRD    = $00000030; // deny read mode
 | 
						||
 SH_DENYNO    = $00000040; // deny none mode
 | 
						||
 | 
						||
type
 | 
						||
   Pflock = ^flock;
 | 
						||
   flock = record
 | 
						||
        l_pid : pid_t;                { process ID of owner, get with F_GETLK       }
 | 
						||
        l_tid : pid_t;                { thread ID of owner, get with F_GETLK        }
 | 
						||
        l_type : smallint;            { F_RDLCK or F_WRLCK                          }
 | 
						||
        l_whence : smallint;          { flag for starting offset                    }
 | 
						||
        ________spare : longint;      { unused                                      }
 | 
						||
        ________reserved1 : longint;  { padding to resemble 64-bit structure        }
 | 
						||
        l_start : off_t;              { relative offset in bytes                    }
 | 
						||
        ________reserved2 : longint;  { padding to resemble 64-bit structure        }
 | 
						||
        l_len : off_t;                { size; if 0, then until EOF                  }
 | 
						||
     end;
 | 
						||
 | 
						||
   Pflock64 = ^flock64;
 | 
						||
   flock64 = record                   { with F_GETLK64, F_SETLK64, FSETLKW64        }
 | 
						||
        l_pid : pid_t;                { process ID of owner, get with F_GETLK       }
 | 
						||
        l_tid : pid_t;                { thread ID of owner, get with F_GETLK        }
 | 
						||
        l_type : smallint;            { F_RDLCK or F_WRLCK                          }
 | 
						||
        l_whence : smallint;          { flag for starting offset                    }
 | 
						||
        ________spare : longint;      { unused                                      }
 | 
						||
        l_start : off64_t;            { relative offset in bytes                    }
 | 
						||
        l_len : off64_t;              { size; if 0, then until EOF                  }
 | 
						||
     end;
 | 
						||
 | 
						||
function creat(path:Pchar; mode:mode_t):longint;cdecl;external libc_nlm name 'creat';
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function fcntl(fildes:longint; cmd:longint; args:array of const):longint;cdecl;external libc_nlm name 'fcntl';
 | 
						||
{$endif}
 | 
						||
function fcntl(fildes:longint; cmd:longint):longint;cdecl;external libc_nlm name 'fcntl';
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function open(path:Pchar; oflag:longint; args:array of const):longint;cdecl;external libc_nlm name 'open';
 | 
						||
{$endif}
 | 
						||
function open(path:Pchar; oflag:longint):longint;cdecl;external libc_nlm name 'open';
 | 
						||
function open(path:Pchar; oflag,mode:longint):longint;cdecl;external libc_nlm name 'open';
 | 
						||
function FpOpen(path:Pchar; oflag:longint):longint;cdecl;external libc_nlm name 'open';
 | 
						||
function FpOpen(path:Pchar; oflag,mode:longint):longint;cdecl;external libc_nlm name 'open';
 | 
						||
 | 
						||
function pipe_open(path:Pchar; oflag:longint):longint;cdecl;external libc_nlm name 'pipe_open';
 | 
						||
function pipe_open(path:Pchar; oflag,mode:longint):longint;cdecl;external libc_nlm name 'pipe_open';
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function sopen(path:Pchar; oflag:longint; shflag:longint; args:array of const):longint;cdecl;external libc_nlm name 'sopen';
 | 
						||
{$endif}
 | 
						||
function sopen(path:Pchar; oflag:longint; shflag:longint):longint;cdecl;external libc_nlm name 'sopen';
 | 
						||
 | 
						||
 | 
						||
// sys/filio.h
 | 
						||
{ defines for ioctl()...  }
 | 
						||
// sys/ipc.h
 | 
						||
 | 
						||
{ mode bits...  }
 | 
						||
{ keys...  }
 | 
						||
{ control commands for semctl() and shmctl()...  }
 | 
						||
type
 | 
						||
   Pkey_t = ^key_t;
 | 
						||
   key_t = longint;
 | 
						||
   Pipc_perm = ^ipc_perm;
 | 
						||
   ipc_perm = record
 | 
						||
        uid  : uid_t;    // owner
 | 
						||
        gid  : gid_t;    // owner
 | 
						||
        cuid : uid_t;    // creator
 | 
						||
        cgid : gid_t;    // creator
 | 
						||
        mode : mode_t;   // read write permission
 | 
						||
     end;
 | 
						||
 | 
						||
 | 
						||
 | 
						||
function ftok(path:Pchar; id:longint):key_t;cdecl;external libc_nlm name 'ftok';
 | 
						||
 | 
						||
 | 
						||
// sys/mman.h
 | 
						||
 | 
						||
{ return value of mmap() in case of error...  }
 | 
						||
{ 'flags' values for mlockall()...  }
 | 
						||
{ 'protection' values for mmap()...  }
 | 
						||
{ 'flags' values for mmap()...  }
 | 
						||
{ 'flags' values for msync()...  }
 | 
						||
{ 'advice' to madvice()...  }
 | 
						||
{ effectual dummies that will never do anything...  }
 | 
						||
 | 
						||
function mlock(addr:pointer; len:size_t):longint;cdecl;external libc_nlm name 'mlock';
 | 
						||
function mlockall(flags:longint):longint;cdecl;external libc_nlm name 'mlockall';
 | 
						||
function munlock(addr:pointer; len:size_t):longint;cdecl;external libc_nlm name 'munlock';
 | 
						||
function munlockall:longint;cdecl;external libc_nlm name 'munlockall';
 | 
						||
function mprotect(addr:pointer; len:size_t; prot:longint):longint;cdecl;external libc_nlm name 'mprotect';
 | 
						||
function madvise(addr:pointer; len:size_t; advice:longint):longint;cdecl;external libc_nlm name 'madvise';
 | 
						||
 | 
						||
 | 
						||
 | 
						||
// sys/param.h
 | 
						||
// sys/stat.h
 | 
						||
// time.h
 | 
						||
type
 | 
						||
 | 
						||
   Pclock_t = ^clock_t;
 | 
						||
   clock_t = dword;
 | 
						||
   TClock  = clock_t;
 | 
						||
 | 
						||
   Ptime_t = ^time_t;
 | 
						||
   time_t = longint;
 | 
						||
   Ttime_t  = time_t;
 | 
						||
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
type
 | 
						||
   Ptm = ^Ttm;
 | 
						||
   Ttm = record                // ANSI/ISO 'broken-down' time
 | 
						||
        tm_sec   : longint;    // seconds after the minute [0..59]
 | 
						||
        tm_min   : longint;    // minutes after the hour [0..59]
 | 
						||
        tm_hour  : longint;    // hours since midnight [0..23]
 | 
						||
        tm_mday  : longint;    // days of the month [1..31]
 | 
						||
        tm_mon   : longint;    // months since January [0..11]
 | 
						||
        tm_year  : longint;    // years since 1900 [0..<2E>]
 | 
						||
        tm_wday  : longint;    // days since Sunday [0..6]
 | 
						||
        tm_yday  : longint;    // days since first of January [0..365]
 | 
						||
        tm_isdst: longint;    // on summer time (-1 unknown, 0 no, !0 yes)
 | 
						||
     end;
 | 
						||
 | 
						||
   Ptimespec = ^Ttimespec;
 | 
						||
   Ttimespec = record        // time expressed in seconds and nanoseconds
 | 
						||
        tv_sec  : time_t;    // seconds
 | 
						||
        tv_nsec : longint;   // nanoseconds
 | 
						||
     end;
 | 
						||
   timespec_t = Ttimespec;
 | 
						||
   Ptimespec_t = ^timespec_t;
 | 
						||
   timestrc_t = Ttimespec;
 | 
						||
   Ptimestrc_t = ^timestrc_t;
 | 
						||
 | 
						||
   Pitimerspec = ^Titimerspec;
 | 
						||
   Titimerspec = record
 | 
						||
        it_interval : Ttimespec;  // timer period
 | 
						||
        it_value    : Ttimespec;  // expiration
 | 
						||
     end;
 | 
						||
   itimerspec_t = Titimerspec;
 | 
						||
   Pitimerspec_t = ^itimerspec_t;
 | 
						||
{ DOS 'broken-down' time                     }
 | 
						||
{ two-second increments only                 }
 | 
						||
{ 0-59                                       }
 | 
						||
{ 0-23                                       }
 | 
						||
{ 1-31                                       }
 | 
						||
{ 1-12                                       }
 | 
						||
{ years since 1980 (limit: 0-119)            }
 | 
						||
   Pdos_tm = ^Tdos_tm;
 | 
						||
   Tdos_tm = record
 | 
						||
        flag0 : longint;
 | 
						||
     end;
 | 
						||
 | 
						||
 | 
						||
const
 | 
						||
   bm_dos_tm_bisecond = $1F;
 | 
						||
   bp_dos_tm_bisecond = 0;
 | 
						||
   bm_dos_tm_minute = $7E0;
 | 
						||
   bp_dos_tm_minute = 5;
 | 
						||
   bm_dos_tm_hour = $F800;
 | 
						||
   bp_dos_tm_hour = 11;
 | 
						||
   bm_dos_tm_day = $1F0000;
 | 
						||
   bp_dos_tm_day = 16;
 | 
						||
   bm_dos_tm_month = $1E00000;
 | 
						||
   bp_dos_tm_month = 21;
 | 
						||
   bm_dos_tm_year = $FE000000;
 | 
						||
   bp_dos_tm_year = 25;
 | 
						||
 | 
						||
{$ifndef INCLUDED_FROM_SYSTEM}
 | 
						||
function bisecond(var a : Tdos_tm) : word;
 | 
						||
procedure set_bisecond(var a : Tdos_tm; __bisecond : word);
 | 
						||
function minute(var a : Tdos_tm) : word;
 | 
						||
procedure set_minute(var a : Tdos_tm; __minute : word);
 | 
						||
function hour(var a : Tdos_tm) : word;
 | 
						||
procedure set_hour(var a : Tdos_tm; __hour : word);
 | 
						||
function day(var a : Tdos_tm) : word;
 | 
						||
procedure set_day(var a : Tdos_tm; __day : word);
 | 
						||
function month(var a : Tdos_tm) : word;
 | 
						||
procedure set_month(var a : Tdos_tm; __month : word);
 | 
						||
function year(var a : Tdos_tm) : word;
 | 
						||
procedure set_year(var a : Tdos_tm; __year : word);
 | 
						||
{$endif}
 | 
						||
 | 
						||
 | 
						||
type
 | 
						||
   Pdos_d = ^Tdos_d;
 | 
						||
   Tdos_d = packed record   // DOS date separated from time
 | 
						||
        time : word;        // time fields
 | 
						||
        date : word;        // date fields
 | 
						||
     end;
 | 
						||
 | 
						||
{ utility for passing DOS time               }
 | 
						||
{ scalar for passing as argument             }
 | 
						||
{ separated-out DOS time and date            }
 | 
						||
{ broken-down DOS time and date              }
 | 
						||
   Pdos_tm_u = ^Tdos_tm_u;
 | 
						||
   Tdos_tm_u = record
 | 
						||
       case longint of
 | 
						||
          0 : ( long_dt : dword );
 | 
						||
          1 : ( struct_dt : Tdos_d );
 | 
						||
          2 : ( struct_tm : Tdos_tm );
 | 
						||
       end;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
 | 
						||
 | 
						||
function asctime(localtime:Ptm):Pchar;cdecl;external libc_nlm name 'asctime';
 | 
						||
function asctime(var localtime:Ttm):Pchar;cdecl;external libc_nlm name 'asctime';
 | 
						||
function clock:clock_t;cdecl;external libc_nlm name 'clock';
 | 
						||
function ctime(calendar:Ptime_t):Pchar;cdecl;external libc_nlm name 'ctime';
 | 
						||
function ctime(var calendar:Ttime_t):Pchar;cdecl;external libc_nlm name 'ctime';
 | 
						||
function difftime(t1, t2:Ttime_t):double;cdecl;external libc_nlm name 'difftime';
 | 
						||
function gmtime(calendar:Ptime_t):Ptm;cdecl;external libc_nlm name 'gmtime';
 | 
						||
function gmtime(var calendar:Ttime_t):Ptm;cdecl;external libc_nlm name 'gmtime';
 | 
						||
function localtime(calendar:Ptime_t):Ptm;cdecl;external libc_nlm name 'localtime';
 | 
						||
function localtime(var calendar:Ttime_t):Ptm;cdecl;external libc_nlm name 'localtime';
 | 
						||
function mktime(localtime:Ptm):time_t;cdecl;external libc_nlm name 'mktime';
 | 
						||
function mktime(var localtime:Ttm):time_t;cdecl;external libc_nlm name 'mktime';
 | 
						||
 | 
						||
//size_t strftime ( char * __restrict s, size_t, const char * __restrict format,
 | 
						||
//size_t strftime ( char * __restrict s, size_t, const char * __restrict format,
 | 
						||
//                      const tm * __restrict localtime );
 | 
						||
 | 
						||
function time(calendar:Ptime_t):time_t;cdecl;external libc_nlm name 'time';
 | 
						||
function time(var calendar:Ttime_t):time_t;cdecl;external libc_nlm name 'time';
 | 
						||
function ___clocks_per_sec:longint;cdecl;external libc_nlm name '___clocks_per_sec';
 | 
						||
{ POSIX data and helper functions...  }
 | 
						||
function ___daylight:Plongint;cdecl;external libc_nlm name '___daylight';
 | 
						||
function ___daylightOnOff:Plongint;cdecl;external libc_nlm name '___daylightOnOff';
 | 
						||
function ___daylightOffset:Ptime_t;cdecl;external libc_nlm name '___daylightOffset';
 | 
						||
function ___timezone:Ptime_t;cdecl;external libc_nlm name '___timezone';
 | 
						||
function ___tzname:PPchar;cdecl;external libc_nlm name '___tzname';
 | 
						||
function __isleap(year:longint):longint;cdecl;external libc_nlm name '__isleap';
 | 
						||
procedure tzset;cdecl;external libc_nlm name 'tzset';
 | 
						||
{ POSIX-defined reentrant additions...  }
 | 
						||
 | 
						||
function asctime_r(localtime:Ptm; timestr:Pchar):Pchar;cdecl;external libc_nlm name 'asctime_r';
 | 
						||
function asctime_r(var localtime:Ttm; timestr:Pchar):Pchar;cdecl;external libc_nlm name 'asctime_r';
 | 
						||
function ctime_r(calendar:Ptime_t; timestr:Pchar):Pchar;cdecl;external libc_nlm name 'ctime_r';
 | 
						||
function ctime_r(var calendar:Ttime_t; timestr:Pchar):Pchar;cdecl;external libc_nlm name 'ctime_r';
 | 
						||
function gmtime_r(calendar:Ptime_t; localtime:Ptm):Ptm;cdecl;external libc_nlm name 'gmtime_r';
 | 
						||
function gmtime_r(var calendar:Ttime_t; localtime:Ptm):Ptm;cdecl;external libc_nlm name 'gmtime_r';
 | 
						||
function localtime_r(calendar:Ptime_t; localtime:Ptm):Ptm;cdecl;external libc_nlm name 'localtime_r';
 | 
						||
function localtime_r(var calendar:Ttime_t; var localtime:Ttm):Ptm;cdecl;external libc_nlm name 'localtime_r';
 | 
						||
{ Single UNIX Specification additions...  }
 | 
						||
function nanosleep(rqtp, rmtp:Ptimespec):longint;cdecl;external libc_nlm name 'nanosleep';
 | 
						||
function nanosleep(var rqtp, rmtp:Ttimespec):longint;cdecl;external libc_nlm name 'nanosleep';
 | 
						||
{ Novell-defined additions...  }
 | 
						||
function ltime(calendar:Ptime_t):time_t;cdecl;external libc_nlm name 'ltime';
 | 
						||
function ltime(var calendar:Ttime_t):time_t;cdecl;external libc_nlm name 'ltime';
 | 
						||
function mkgmtime(gmtime:Ptm):time_t;cdecl;external libc_nlm name 'mkgmtime';
 | 
						||
function mkgmtime(var gmtime:Ttm):time_t;cdecl;external libc_nlm name 'mkgmtime';
 | 
						||
function dos2calendar(dostime:Tdos_d):time_t;cdecl;external libc_nlm name 'dos2calendar';
 | 
						||
function calendar2dos(calendar:time_t):Tdos_d;cdecl;external libc_nlm name 'calendar2dos';
 | 
						||
 | 
						||
 | 
						||
// sys/time.h
 | 
						||
// sys/timeval.h
 | 
						||
// sys/times.h
 | 
						||
 | 
						||
type
 | 
						||
   Ptms = ^Ttms;
 | 
						||
   Ttms = record                        { describes CPU time used by process, children  }
 | 
						||
        tms_utime  : clock_t;           { user CPU time }
 | 
						||
        tms_stime  : clock_t;           { system CPU time (identical to 'tms_utime')    }
 | 
						||
        tms_cutime : clock_t;           { unimplemented }
 | 
						||
        tms_cstime : clock_t;           { unimplemented }
 | 
						||
     end;
 | 
						||
 | 
						||
   Ptimezone = ^Ttimezone;
 | 
						||
   TTimezone = record                   { returned by gettimeofday() }
 | 
						||
        tz_secondswest : time_t;        { seconds west of UTC }
 | 
						||
        tz_minuteswest : longint;       { minutes west of UTC (GMT) }
 | 
						||
        tz_dsttime     : longint;       { nonzero if DST is ever in effect }
 | 
						||
     end;
 | 
						||
   Timezone = TTimezone;
 | 
						||
 | 
						||
{
 | 
						||
** Normally this functions fills struct tms with several time values. Most of
 | 
						||
** the time it is very important to have only the return value, that is the
 | 
						||
** realtime that has been elapsed.
 | 
						||
 }
 | 
						||
 | 
						||
function times(__buffer:Ptms):clock_t;cdecl;external libc_nlm name 'times';
 | 
						||
function times(var __buffer:Ttms):clock_t;cdecl;external libc_nlm name 'times';
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
{ this structure is returned by gettimeofday() and used in select()...  }
 | 
						||
type
 | 
						||
   Ptimeval = ^Ttimeval;
 | 
						||
   Ttimeval = record
 | 
						||
        tv_sec  : longint;
 | 
						||
        tv_usec : longint;
 | 
						||
     end;
 | 
						||
   Timeval = TTimeval;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
{ operations on struct timeval; note timercmp() does not work for >= or <=  }
 | 
						||
 | 
						||
function gettimeofday(tp:Ptimeval; tpz:Ptimezone):longint;cdecl;external libc_nlm name 'gettimeofday';
 | 
						||
function Fpgettimeofday(tp:Ptimeval; tpz:Ptimezone):longint;cdecl;external libc_nlm name 'gettimeofday';
 | 
						||
function settimeofday(tp:Ptimeval; tpz:Ptimezone):longint;cdecl;external libc_nlm name 'settimeofday';
 | 
						||
function gettimeofday(var tp:Ttimeval; var tpz:Ttimezone):longint;cdecl;external libc_nlm name 'gettimeofday';
 | 
						||
function settimeofday(var tp:Ttimeval; var tpz:Ttimezone):longint;cdecl;external libc_nlm name 'settimeofday';
 | 
						||
function Fpgettimeofday(var tp:Ttimeval; var tpz:Ttimezone):longint;cdecl;external libc_nlm name 'gettimeofday';
 | 
						||
function Fpsettimeofday(var tp:Ttimeval; var tpz:Ttimezone):longint;cdecl;external libc_nlm name 'settimeofday';
 | 
						||
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
type
 | 
						||
   Pstat = ^Tstat;
 | 
						||
   Tstat = record
 | 
						||
        st_userspec: dword;                         // untouched by stat()
 | 
						||
        st_flags   : dword;                         // flags for this entry
 | 
						||
        st_mode    : mode_t;                        // emulated file mode
 | 
						||
        st_spare1  : dword;
 | 
						||
        st_gen     : Tuint64;                       // generation number of inode
 | 
						||
        st_ino     : ino_t;                         // directory entry number
 | 
						||
        st_dev     : dev_t;                         // volume number
 | 
						||
        st_rdev    : dev_t;                         // device type (always 0)
 | 
						||
        st_size    : off64_t;                       // total file size
 | 
						||
        st_spare2  : Tuint64;
 | 
						||
        st_blocks  : blkcnt_t;                      // count of blocks allocated to file
 | 
						||
        st_blksize : blksize_t;                     // block size for allocation--files only
 | 
						||
        st_nlink   : nlink_t;                       // count of hard links (always 1)
 | 
						||
        st_spare3  : array[0..2] of dword;
 | 
						||
        st_uid     : uid_t;                         // owner (object) identity
 | 
						||
        st_gid     : gid_t;                         // group-id (always 0)
 | 
						||
        st_bid     : uid_t;                         // identity of last archiver
 | 
						||
        st_mid     : uid_t;                         // identity of last updator
 | 
						||
        st_atim    : timespec_t;                    // last access date--files only
 | 
						||
        st_mtim    : timespec_t;                    // last modify date and time
 | 
						||
        st_ctim    : timespec_t;                    // last file attributes modification
 | 
						||
        st_btim    : timespec_t;                    // last archived date and time
 | 
						||
                                                    // NOT returned by stat() or fstat()...
 | 
						||
        st_rights  : dword;                         // NetWare rights
 | 
						||
        st_spare4  : array[0..2] of dword;
 | 
						||
        st_name    : array[0..(255 + 1)-1] of char; // object name as if from readdir()
 | 
						||
        st_spare5  : array[0..19] of dword;
 | 
						||
     end;
 | 
						||
 | 
						||
{ sizeof(struct stat) == 0x200 (512.)      }
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
 | 
						||
 | 
						||
function Fpchmod(path:Pchar; mode:mode_t):longint;cdecl;external libc_nlm name 'chmod';
 | 
						||
function Fpfchmod(fildes:longint; mode:mode_t):longint;cdecl;external libc_nlm name 'fchmod';
 | 
						||
function Fpfstat(fildes:longint; buf:Pstat):longint;cdecl;external libc_nlm name 'fstat';
 | 
						||
function Fpfstat(fildes:longint; var buf:Tstat):longint;cdecl;external libc_nlm name 'fstat';
 | 
						||
function Fplstat(path:Pchar; buf:Pstat):longint;cdecl;external libc_nlm name 'lstat';
 | 
						||
function Fplstat(path:Pchar; var buf:Tstat):longint;cdecl;external libc_nlm name 'lstat';
 | 
						||
function Fpmkdir(pathname:Pchar; mode:mode_t):longint;cdecl;external libc_nlm name 'mkdir';
 | 
						||
function Fpmkfifo(pathname:Pchar; mode:mode_t):longint;cdecl;external libc_nlm name 'mkfifo';
 | 
						||
function Fpmknod(path:Pchar; mode:mode_t; dev:dev_t):longint;cdecl;external libc_nlm name 'mknod';
 | 
						||
function Fprealname(pathname:Pchar; name:Pchar):longint;cdecl;external libc_nlm name 'realname';
 | 
						||
function Fpstat(path:Pchar; buf:Pstat):longint;cdecl;external libc_nlm name 'stat';
 | 
						||
function Fpstat(path:Pchar; var buf:Tstat):longint;cdecl;external libc_nlm name 'stat';
 | 
						||
function Fpumask(cmask:mode_t):mode_t;cdecl;external libc_nlm name 'umask';
 | 
						||
{
 | 
						||
** The following value is not really correct, but it is a value that has been
 | 
						||
** used for a long time seems to be usable. Normally, NOFILE should not be used
 | 
						||
** anyway.
 | 
						||
 }
 | 
						||
{ bit map related macros...   }
 | 
						||
{ macros for counting and rounding...  }
 | 
						||
{ supplementary macros for min/max...   }
 | 
						||
{ unit of sys/stat.h `st_blocks'...   }
 | 
						||
 | 
						||
 | 
						||
// sys/select.h
 | 
						||
 | 
						||
{
 | 
						||
** Including file may make this bigger or smaller as long as the FD_- macros
 | 
						||
** are faithfully used.
 | 
						||
 }
 | 
						||
type
 | 
						||
 | 
						||
   Pfd_set = ^Tfd_set;
 | 
						||
   Tfd_set = record
 | 
						||
        fd_count : longint;
 | 
						||
        fd_array : array[0..63] of longint;
 | 
						||
     end;
 | 
						||
{ heterogeneous select calls (socket+pipe) unsupported on NetWare...  }
 | 
						||
 | 
						||
 | 
						||
function Fppipe_select(nfds:longint; readfds, writefds, exceptfds:Pfd_set; timeout:Ptimeval):longint;cdecl;external libc_nlm name 'pipe_select';
 | 
						||
function Fppipe_select(nfds:longint; var readfds, writefds, exceptfds:Tfd_set; var timeout:Ttimeval):longint;cdecl;external libc_nlm name 'pipe_select';
 | 
						||
 | 
						||
//function select(nfds:longint; readfds:Pfd_set; writefds:Pfd_set; exceptfds:Pfd_set; timeout:Ptimeval):longint;cdecl;external libc_nlm name 'select';
 | 
						||
//function select(nfds:longint; var readfds, writefds, exceptfds:Tfd_set; var timeout:Ttimeval):longint;cdecl;external libc_nlm name 'select';
 | 
						||
function FpSelect(nfds:longint; readfds:Pfd_set; writefds:Pfd_set; exceptfds:Pfd_set; timeout:Ptimeval):longint;cdecl;external libc_nlm name 'select';
 | 
						||
function FpSelect(nfds:longint; var readfds, writefds, exceptfds:Tfd_set; var timeout:Ttimeval):longint;cdecl;external libc_nlm name 'select';
 | 
						||
function ___fd_isset(fd:longint; _set:Pfd_set):longint;cdecl;external libc_nlm name '___fd_isset';
 | 
						||
function ___fd_isset(fd:longint; var _set:Tfd_set):longint;cdecl;external libc_nlm name '___fd_isset';
 | 
						||
 | 
						||
 | 
						||
// sys/sem.h
 | 
						||
 | 
						||
{ semctl() command definitions...  }
 | 
						||
{ semaphore text map address        }
 | 
						||
{ pid of last operation             }
 | 
						||
{ count awaiting (semval > cval)    }
 | 
						||
{ count awaiting (semval == 0)      }
 | 
						||
type
 | 
						||
   Psem = ^Tsem;
 | 
						||
   Tsem = record
 | 
						||
        semval  : ushort_t;
 | 
						||
        semadj  : ushort_t;
 | 
						||
        sempid  : pid_t;
 | 
						||
        semncnt : ushort_t;
 | 
						||
        semzcnt : ushort_t;
 | 
						||
        semptr  : pointer;       // semaphore on which this is based
 | 
						||
     end;
 | 
						||
   TSemaphore = Tsem;
 | 
						||
   PSemaphore = Psem;
 | 
						||
 | 
						||
   Psemid_ds = ^Tsemid_ds;
 | 
						||
   Tsemid_ds = record
 | 
						||
        sem_perm    : ipc_perm;
 | 
						||
        sem_base    : Psem;       // pointer to first semaphore in set
 | 
						||
        sem_nsems   : word;       // number of semaphores in set
 | 
						||
        sem_otime   : time_t;     // last semop time
 | 
						||
        sem_ctime   : time_t;     // last change time
 | 
						||
        sem_ptr     : pointer;    // actual underlying semaphore
 | 
						||
        sem_realkey : longint;    // 'real' semaphore key
 | 
						||
     end;
 | 
						||
 | 
						||
   Psembuf = ^Tsembuf;
 | 
						||
   Tsembuf = record
 | 
						||
        sem_num : word;           // Number
 | 
						||
        sem_op  : smallint;       // operation
 | 
						||
        sem_flg : smallint;       // flags
 | 
						||
     end;
 | 
						||
 | 
						||
   Psemun = ^Tsemun;
 | 
						||
   Tsemun = record
 | 
						||
       case longint of
 | 
						||
          0 : ( val : longint );
 | 
						||
          1 : ( buf : Psemid_ds );
 | 
						||
          2 : ( _array : Pword );
 | 
						||
       end;
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function semctl(semid:longint; semnum:longint; cmd:longint; args:array of const):longint;cdecl;external libc_nlm name 'semctl';
 | 
						||
{$endif}
 | 
						||
function semctl(semid:longint; semnum:longint; cmd:longint):longint;cdecl;external libc_nlm name 'semctl';
 | 
						||
function semget(key:key_t; nsems:longint; semflag:longint):longint;cdecl;external libc_nlm name 'semget';
 | 
						||
function semop(semid:longint; sops:Psembuf; nsops:size_t):longint;cdecl;external libc_nlm name 'semop';
 | 
						||
function semop(semid:longint; var sops:Tsembuf; nsops:size_t):longint;cdecl;external libc_nlm name 'semop';
 | 
						||
 | 
						||
 | 
						||
// sys/sendfile.h
 | 
						||
 | 
						||
function sendfile(out_fd,in_fd:longint; offset:Poff_t; count:size_t):ssize_t;cdecl;external libc_nlm name 'sendfile';
 | 
						||
function sendfile64(out_fd,in_fd:longint; offset:Poff64_t; count:size_t):ssize_t;cdecl;external libc_nlm name 'sendfile64';
 | 
						||
 | 
						||
 | 
						||
// sys/shm.h
 | 
						||
 | 
						||
type
 | 
						||
 | 
						||
   Pshmatt_t = ^shmatt_t;
 | 
						||
   shmatt_t = dword;
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
{ size of segment in bytes               }
 | 
						||
{ process ID of last shared operation    }
 | 
						||
{ process ID of creator                  }
 | 
						||
{ number of current attaches             }
 | 
						||
{ time of last shmat()                   }
 | 
						||
{ time of last shmdt()                   }
 | 
						||
{ time of last change by shmctl()        }
 | 
						||
{ operation permission structure         }
 | 
						||
type
 | 
						||
   Pshmid_ds = ^shmid_ds;
 | 
						||
   shmid_ds = record
 | 
						||
        shm_segsz : size_t;
 | 
						||
        shm_lpid : pid_t;
 | 
						||
        shm_cpid : pid_t;
 | 
						||
        shm_nattch : shmatt_t;
 | 
						||
        shm_atime : time_t;
 | 
						||
        shm_dtime : time_t;
 | 
						||
        shm_ctime : time_t;
 | 
						||
        shm_spare1 : longint;
 | 
						||
        shm_perm : ipc_perm;
 | 
						||
        shm_spare2 : array[0..2] of longint;
 | 
						||
     end;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
 | 
						||
 | 
						||
function shmat(shmid:longint; shmaddr:pointer; shmflag:longint):pointer;cdecl;external libc_nlm name 'shmat';
 | 
						||
function shmctl(shmid:longint; cmd:longint; buf:Pshmid_ds):longint;cdecl;external libc_nlm name 'shmctl';
 | 
						||
 | 
						||
function shmdt(shmaddr:pointer):longint;cdecl;external libc_nlm name 'shmdt';
 | 
						||
function shmget(key:key_t; size:size_t; shmflag:longint):longint;cdecl;external libc_nlm name 'shmget';
 | 
						||
 | 
						||
// signal.h
 | 
						||
 | 
						||
    const
 | 
						||
       SIGABRT = 1;
 | 
						||
       SIGFPE = 2;
 | 
						||
       SIGILL = 3;
 | 
						||
       SIGINT = 4;
 | 
						||
       SIGSEGV = 5;
 | 
						||
       SIGTERM = 6;
 | 
						||
       SIGPOLL = 7;
 | 
						||
    { currently unimplemented POSIX-mandated signals  }
 | 
						||
       SIGKILL  = 11;
 | 
						||
       SIGSPARE = 12;
 | 
						||
       SIGALRM  = 13;
 | 
						||
       SIGCHILD = 14;
 | 
						||
       SIGCHLD  = SIGCHILD;
 | 
						||
       SIGCONT  = 15;
 | 
						||
       SIGHUP   = 16;
 | 
						||
       SIGPIPE  = 17;
 | 
						||
       SIGQUIT  = 18;
 | 
						||
       SIGSTOP  = 19;
 | 
						||
       SIGTSTP  = 20;
 | 
						||
       SIGTTIN  = 21;
 | 
						||
       SIGTTOU  = 22;
 | 
						||
       SIGUSR1  = 23;
 | 
						||
       SIGUSR2  = 24;
 | 
						||
       SIGUSR3  = 25;
 | 
						||
       SIGUSR4  = 26;
 | 
						||
       SIGUSR5  = 27;
 | 
						||
       SIGUSR6  = 28;
 | 
						||
       SIGUSR7  = 29;
 | 
						||
    { Novell-defined signals  }
 | 
						||
       SIG_FINI         = 30;
 | 
						||
       SIG_LOCALECHANGE = 31;
 | 
						||
       NSIG             = 32;
 | 
						||
       SIG_BLOCK        = $00000000;
 | 
						||
       SIG_UNBLOCK      = $00000001;
 | 
						||
       SIG_SETMASK      = $FFFFFFFF;
 | 
						||
//       SIGEMPTYSET      = $0000000000000000;
 | 
						||
       SIGFULLSET       = $FFFFFFFFFFFFFFFF;
 | 
						||
 | 
						||
 | 
						||
type
 | 
						||
   Psig_atomic_t = ^sig_atomic_t;
 | 
						||
   sig_atomic_t = longint;
 | 
						||
 | 
						||
   Psigset_t = ^sigset_t;
 | 
						||
   sigset_t = Tuint64;
 | 
						||
{ flags for sa_flags in struct sigaction  }
 | 
						||
   Psigaction = ^sigaction;
 | 
						||
   sigaction = record
 | 
						||
        sa_handler : procedure (_para1:longint);cdecl;
 | 
						||
        sa_mask    : sigset_t;
 | 
						||
        sa_flags   : longint;
 | 
						||
     end;
 | 
						||
 | 
						||
type TCDeclProc1LIntPara = procedure (_para1:longint); cdecl;
 | 
						||
function Fpraise(_para1:longint):longint;cdecl;external libc_nlm name 'raise';
 | 
						||
function Fpsignal(sig:longint; func:TCDeclProc1LIntPara):TCDeclProc1LIntPara;cdecl;external libc_nlm name 'signal';
 | 
						||
function Fpsigwait(_set:Psigset_t; sig:Plongint):longint;cdecl;external libc_nlm name 'sigwait';
 | 
						||
{ signal vector functions...  }
 | 
						||
 | 
						||
//!! function sigaction(sig:longint; act:Psigaction; oact:Psigaction):longint;cdecl;external libc_nlm name 'sigaction';
 | 
						||
 | 
						||
function Fpsigaddset(_para1:Psigset_t; _para2:longint):longint;cdecl;external libc_nlm name 'sigaddset';
 | 
						||
function Fpsigdelset(_para1:Psigset_t; _para2:longint):longint;cdecl;external libc_nlm name 'sigdelset';
 | 
						||
function Fpsigismember(_para1:Psigset_t; _para2:longint):longint;cdecl;external libc_nlm name 'sigismember';
 | 
						||
function Fpsigfillset(_para1:Psigset_t):longint;cdecl;external libc_nlm name 'sigfillset';
 | 
						||
function Fpsigemptyset(_para1:Psigset_t):longint;cdecl;external libc_nlm name 'sigemptyset';
 | 
						||
function Fpsigpending(_set:Psigset_t):longint;cdecl;external libc_nlm name 'sigpending';
 | 
						||
function Fpsigsuspend(mask:Psigset_t):longint;cdecl;external libc_nlm name 'sigsuspend';
 | 
						||
function Fpsigprocmask(how:longint; act:Psigset_t; oldact:Psigset_t):longint;cdecl;external libc_nlm name 'sigprocmask';
 | 
						||
function Fpkill(pid:pid_t; sig:longint):longint;cdecl;external libc_nlm name 'kill';
 | 
						||
 | 
						||
 | 
						||
// sys/socket.h
 | 
						||
// sys/uio.h
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
type
 | 
						||
   Piovec = ^iovec;
 | 
						||
   iovec = record
 | 
						||
        iov_base : caddr_t;
 | 
						||
        iov_len : longint;
 | 
						||
     end;
 | 
						||
   iovec_t = iovec;
 | 
						||
   Piovec_t = ^iovec_t;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
 | 
						||
 | 
						||
function Fpreadv(fildes:longint; iov:Piovec; iovcnt:longint):ssize_t;cdecl;external libc_nlm name 'readv';
 | 
						||
function Fpwritev(fildes:longint; iov:Piovec; iovcnt:longint):ssize_t;cdecl;external libc_nlm name 'writev';
 | 
						||
{ socket types...  }
 | 
						||
{ option flags per-socket...  }
 | 
						||
{ additional options, not kept in so_options...  }
 | 
						||
{ additional option to be used with level IPPROTO_TCP...  }
 | 
						||
{ level number for get/setsockopt() to apply to socket itself...  }
 | 
						||
{ address families  }
 | 
						||
{ protocol families, same as address families for now...  }
 | 
						||
{ values for shutdown() 'how'...  }
 | 
						||
 | 
						||
{
 | 
						||
** Note:
 | 
						||
**
 | 
						||
** The Novell NDK headers for NKS/LibC contain structures that are explicitly
 | 
						||
** hand-packed for best use on the platform in question (usually IA32). To
 | 
						||
** avoid the impredictability encountered when compiling with different
 | 
						||
** compilers, these headers rely on 1-byte packing.
 | 
						||
 }
 | 
						||
{ this header sets packing to 1 for different compilers  }
 | 
						||
{ save off the previous packing directive in a compiler specific way...  }
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
{ structure used for manipulating linger option...  }
 | 
						||
{ option on/off                          }
 | 
						||
{ linger time                            }
 | 
						||
type
 | 
						||
   Plinger = ^linger;
 | 
						||
   linger = record
 | 
						||
        l_onoff : longint;
 | 
						||
        l_linger : longint;
 | 
						||
     end;
 | 
						||
 | 
						||
{ structure used to define addresses for bind(), connect(), etc...  }
 | 
						||
 | 
						||
   Psa_family_t = ^sa_family_t;
 | 
						||
   sa_family_t = word;
 | 
						||
{ address family                         }
 | 
						||
{ up to 14 bytes of direct address       }
 | 
						||
   Psockaddr = ^sockaddr;
 | 
						||
   sockaddr = record
 | 
						||
        sa_family : sa_family_t;
 | 
						||
        sa_data : array[0..13] of char;
 | 
						||
     end;
 | 
						||
 | 
						||
{ used by kernel to pass protocol info.  }
 | 
						||
{    in raw sockets                      }
 | 
						||
{ address family                         }
 | 
						||
{ protocol                               }
 | 
						||
   Psockproto = ^sockproto;
 | 
						||
   sockproto = packed record
 | 
						||
        sp_family : word;
 | 
						||
        sp_protocol : word;
 | 
						||
     end;
 | 
						||
 | 
						||
 | 
						||
   Psocklen_t = ^socklen_t;
 | 
						||
   socklen_t = dword;
 | 
						||
{
 | 
						||
** SUS' and BSD 4.4 message passing. struct msghdr has an additional field
 | 
						||
** (msg_flags) and slightly different fieldnames over what we used to
 | 
						||
** promote. msg_accrights(len) is done differently.
 | 
						||
 }
 | 
						||
{ optional address                       }
 | 
						||
{ size of address                        }
 | 
						||
{ scatter/gather array                   }
 | 
						||
{ count of elements in msg_iov           }
 | 
						||
{ access rights sent/received            }
 | 
						||
   Pmsghdr = ^msghdr;
 | 
						||
   msghdr = record
 | 
						||
        msg_name : caddr_t;
 | 
						||
        msg_namelen : socklen_t;
 | 
						||
        msg_iov : Piovec;
 | 
						||
        msg_iovlen : longint;
 | 
						||
        msg_accrights : caddr_t;
 | 
						||
        msg_accrightslen : socklen_t;
 | 
						||
        msg_flags : longint;
 | 
						||
     end;
 | 
						||
 | 
						||
{
 | 
						||
** POSIX 1003.1g: Ancillary data object information consisting of a sequence
 | 
						||
** of pairs of (cmsghdr, cmsg_data[1]).
 | 
						||
 }
 | 
						||
{ data byte count including header       }
 | 
						||
{ originating protocol                   }
 | 
						||
{ protocol-specific type                 }
 | 
						||
   Pcmsghdr = ^cmsghdr;
 | 
						||
   cmsghdr = record
 | 
						||
        cmsg_len : socklen_t;
 | 
						||
        cmsg_level : longint;
 | 
						||
        cmsg_type : longint;
 | 
						||
     end;
 | 
						||
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
 | 
						||
function Fpaccept(s:longint; addr:Psockaddr; len:Psize_t):longint;cdecl;external libc_nlm name 'accept';
 | 
						||
function Fpbind(s:longint; addr:Psockaddr; _para3:size_t):longint;cdecl;external libc_nlm name 'bind';
 | 
						||
function Fpconnect(s:longint; addr:Psockaddr; len:size_t):longint;cdecl;external libc_nlm name 'connect';
 | 
						||
function Fpgetpeername(s:longint; addr:Psockaddr; len:Psize_t):longint;cdecl;external libc_nlm name 'getpeername';
 | 
						||
function Fpgetsockname(s:longint; addr:Psockaddr; len:Psize_t):longint;cdecl;external libc_nlm name 'getsockname';
 | 
						||
function Fpgetsockopt(s:longint; level:longint; optname:longint; optval:pointer; optlen:Psize_t):longint;cdecl;external libc_nlm name 'getsockopt';
 | 
						||
function Fplisten(s:longint; backlog:longint):longint;cdecl;external libc_nlm name 'listen';
 | 
						||
function Fprecv(s:longint; buf:pointer; len:size_t; flags:longint):ssize_t;cdecl;external libc_nlm name 'recv';
 | 
						||
function Fprecvfrom(s:longint; buf:pointer; len:size_t; flags:longint; from:Psockaddr;
 | 
						||
           fromlen:Psize_t):ssize_t;cdecl;external libc_nlm name 'recvfrom';
 | 
						||
function Fprecvmsg(s:longint; msg:Pmsghdr; flags:longint):ssize_t;cdecl;external libc_nlm name 'recvmsg';
 | 
						||
function Fpsend(s:longint; msg:pointer; len:size_t; flags:longint):ssize_t;cdecl;external libc_nlm name 'send';
 | 
						||
function Fpsendmsg(s:longint; _para2:Pmsghdr; flags:longint):ssize_t;cdecl;external libc_nlm name 'sendmsg';
 | 
						||
function Fpsendto(s:longint; msg:pointer; len:size_t; flags:longint; _to:Psockaddr;
 | 
						||
           tolen:size_t):ssize_t;cdecl;external libc_nlm name 'sendto';
 | 
						||
function Fpsetsockopt(s:longint; level:longint; optname:longint; optval:pointer; optlen:size_t):longint;cdecl;external libc_nlm name 'setsockopt';
 | 
						||
function Fpshutdown(s:longint; how:longint):longint;cdecl;external libc_nlm name 'shutdown';
 | 
						||
function Fpsocket(domain:longint; _type:longint; protocol:longint):longint;cdecl;external libc_nlm name 'socket';
 | 
						||
 | 
						||
 | 
						||
// sys/sockio.h
 | 
						||
// sys/stat.h
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
{ file system type               }
 | 
						||
{ fragment size                  }
 | 
						||
{ block size                     }
 | 
						||
{ total number of blocks         }
 | 
						||
{ count of free blocks           }
 | 
						||
{ total number of file nodes     }
 | 
						||
{ count of free file nodes       }
 | 
						||
{ server name                    }
 | 
						||
{ volume name                    }
 | 
						||
{ pack name                      }
 | 
						||
type
 | 
						||
   Pstatfs = ^Tstatfs;
 | 
						||
   Tstatfs = record
 | 
						||
        f_fstyp  : longint;
 | 
						||
        f_frsize : size_t;
 | 
						||
        f_bsize  : blksize_t;
 | 
						||
        f_blocks : blkcnt_t;
 | 
						||
        f_bfree,
 | 
						||
        f_files,
 | 
						||
        f_ffree  : Tuint64;
 | 
						||
        f_fspare : array[0..1] of Tuint64;
 | 
						||
        f_fserver: array[0..(48 + 4)-1] of char;
 | 
						||
        f_fname  : array[0..(16 + 4)-1] of char;
 | 
						||
        f_fpack  : array[0..19] of char;
 | 
						||
     end;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
 | 
						||
 | 
						||
function Fpstatfs(path:Pchar; buf:Pstatfs):longint;cdecl;external libc_nlm name 'statfs';
 | 
						||
function Fpstatfs(path:Pchar; var buf:Tstatfs):longint;cdecl;external libc_nlm name 'statfs';
 | 
						||
function Fpfstatfs(fildes:longint; buf:Pstatfs):longint;cdecl;external libc_nlm name 'fstatfs';
 | 
						||
function Fpfstatfs(fildes:longint; var buf:Tstatfs):longint;cdecl;external libc_nlm name 'fstatfs';
 | 
						||
 | 
						||
// sys/ttydefaults.h
 | 
						||
 | 
						||
{ system wide defaults for terminal state, mostly for porting help  }
 | 
						||
{ defaults on "first" open...  }
 | 
						||
{ control character defaults...  }
 | 
						||
{ compatibility:  }
 | 
						||
// sys/un.h
 | 
						||
 | 
						||
{ used in place of struct sockaddr_t to define addresses for UNIX domain...  }
 | 
						||
type
 | 
						||
   Psockaddr_un = ^sockaddr_un;
 | 
						||
   sockaddr_un = record
 | 
						||
        sun_family : sa_family_t;
 | 
						||
        sun_path : array[0..510] of char;
 | 
						||
     end;
 | 
						||
 | 
						||
// ======= sys/utsname.h ===============================================
 | 
						||
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
// (request) bits for uname2()...
 | 
						||
const
 | 
						||
   UNAME_NLMMODULE      = $00000001;  // nlmmodule (if it can be gotten)
 | 
						||
   UNAME_POSIXFIELDS    = $00000002;  // POSIX fields (see sys/utsname.h)
 | 
						||
   UNAME_LIBVERSION     = $00000004;  // libminor/major/revision/threshold
 | 
						||
   UNAME_FSVERSION      = $00000008;  // major/minor/revision/service pack
 | 
						||
   UNAME_NETWAREVERSION = $00000010;  // netware_major/minor/revision
 | 
						||
   UNAME_SERVERNAME     = $00000020;  // servername
 | 
						||
   UNAME_CLUSTERNAME    = $00000040;  // clustername
 | 
						||
   UNAME_LANGINFO       = $00000080;  // languagename/alt/id/altid/codepage
 | 
						||
   UNAME_NLMMESSAGES    = $00000100;  // nlmmessagecount/table
 | 
						||
   UNAME_NLMVERSION     = $00000200;  // nlmmajor/minor/revision
 | 
						||
   UNAME_NLMINFO        = $00000400;  // nlmtimer/loadflags
 | 
						||
   UNAME_NLMNAME        = $00000800;  // nlmname
 | 
						||
   UNAME_NLMLOADPATH    = $00001000;  // nlmloadpath
 | 
						||
   UNAME_NLMCOPYRIGHT   = $00002000;  // nlmcopyright
 | 
						||
   UNAME_NLMDESCRIPTION = $00004000;  // nlmdescription
 | 
						||
   UNAME_NLMCOMMANDLINE = $00008000;  // nlmcommandline
 | 
						||
   UNAME_NDSTREENAME    = $00010000;  // treename
 | 
						||
   UNAME_NLMCODEANDDATA = $00020000;  // code and datastart/-length
 | 
						||
 | 
						||
type
 | 
						||
   Putsname = ^Tutsname;
 | 
						||
   Tutsname = record
 | 
						||
        userspec         : longint;     // untouched by uname()
 | 
						||
                                        // Novell fields
 | 
						||
                                        // Standard C Library implementation:
 | 
						||
        libmajor         : longint;     //   major version number
 | 
						||
        libminor         : longint;     //   minor version number
 | 
						||
        librevision      : longint;     //   revision number
 | 
						||
                                        // NetWare OS implementation
 | 
						||
        major            : longint;     //   major version number
 | 
						||
        minor            : longint;     //   minor version number
 | 
						||
        revision         : longint;     //   revision number
 | 
						||
                                        // NetWare C Library implementation
 | 
						||
        libthreshold     : longint;     //   functionality and semantics timestamp
 | 
						||
                                        // NetWare product distribution
 | 
						||
        servicepack      : longint;
 | 
						||
        netware_major    : longint;
 | 
						||
        netware_minor    : longint;
 | 
						||
        netware_revision : longint;
 | 
						||
        servername       : array[0..63] of char;
 | 
						||
        clustername      : array[0..63] of char;
 | 
						||
        languagename     : array[0..31] of char;  // Server current language name
 | 
						||
        altlanguagename  : array[0..31] of char;  // NLM's current language name
 | 
						||
        languageid       : longint;
 | 
						||
        altlanguageid    : longint;
 | 
						||
        codepage         : longint;
 | 
						||
        reserved1        : longint;
 | 
						||
        reserved2        : array[0..3] of longint;
 | 
						||
        nlmmodule        : pointer;              // NetWare-loadable module (NLM) handle
 | 
						||
        nlmmajor         : longint;
 | 
						||
        nlmminor         : longint;
 | 
						||
        nlmrevision      : longint;
 | 
						||
        nlmtimer         : time_t;               // module's date and time stamp in UTC
 | 
						||
        nlmcommandline   : Pchar;
 | 
						||
        nlmmessagecount  : dword;
 | 
						||
        nlmmessagetable  : ^Pchar;
 | 
						||
        nlmname          : array[0..35] of char;
 | 
						||
        nlmloadpath      : array[0..255] of char;
 | 
						||
        nlmcopyright     : array[0..255] of char;
 | 
						||
        nlmdescription   : array[0..127] of char;
 | 
						||
        nlmloadflags     : longint;
 | 
						||
        reserved3        : longint;
 | 
						||
        release          : array[0..15] of char;
 | 
						||
        version          : array[0..15] of char;
 | 
						||
        sysname          : array[0..15] of char;
 | 
						||
        machine          : array[0..15] of char;
 | 
						||
        nodename         : array[0..15] of char;
 | 
						||
        treename         : array[0..95] of char; // name of NDS tree
 | 
						||
        codeoffset       : pointer;
 | 
						||
        codelength       : dword;
 | 
						||
        dataoffset       : pointer;
 | 
						||
        datalength       : dword;
 | 
						||
        reserved4        : array[0..27] of longint;
 | 
						||
     end;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
 | 
						||
function Fpuname(name:Putsname):longint;cdecl;external libc_nlm name 'uname';
 | 
						||
function Fpuname(var name:Tutsname):longint;cdecl;external libc_nlm name 'uname';
 | 
						||
function Fpuname2(handle:pointer; info:Putsname; bits:dword):longint;cdecl;external libc_nlm name 'uname2';
 | 
						||
function Fpuname2(handle:pointer; var info:Tutsname; bits:dword):longint;cdecl;external libc_nlm name 'uname2';
 | 
						||
 | 
						||
 | 
						||
// sys/wait.h
 | 
						||
 | 
						||
function Fpwait(stat_loc:Plongint):pid_t;cdecl;external libc_nlm name 'wait';
 | 
						||
function Fpwait(var stat_loc:longint):pid_t;cdecl;external libc_nlm name 'wait';
 | 
						||
function Fpwaitpid(pid:pid_t; stat_loc:Plongint; options:longint):pid_t;cdecl;external libc_nlm name 'waitpid';
 | 
						||
function Fpwaitpid(pid:pid_t; var stat_loc:longint; options:longint):pid_t;cdecl;external libc_nlm name 'waitpid';
 | 
						||
 | 
						||
// arpa/inet.h
 | 
						||
// netinet/in.h
 | 
						||
 | 
						||
{ protocols...  }
 | 
						||
{ port/socket numbers: network standard functions  }
 | 
						||
{ port/socket numbers: host specific functions...  }
 | 
						||
{ UNIX TCP sockets...   }
 | 
						||
{ UNIX UDP sockets...  }
 | 
						||
{
 | 
						||
** Ports numbered less than IPPORT_RESERVED are reserved for privileged
 | 
						||
** processes like 'root.'
 | 
						||
 }
 | 
						||
{ link numbers...  }
 | 
						||
{
 | 
						||
** Definitions of bits in Internet address integers. On subnets, the
 | 
						||
** decomposition of addresses to host and net parts is done according
 | 
						||
** to subnet mask, not the masks here.
 | 
						||
 }
 | 
						||
{ options for use with [gs]etsockopt at IP level...  }
 | 
						||
{ macro to stuff the loopback address into an Internet address...  }
 | 
						||
{ address testing macros...  }
 | 
						||
{ type definitions...  }
 | 
						||
type
 | 
						||
   Pin_addr = ^in_addr;
 | 
						||
   in_addr = record
 | 
						||
        S_un : record
 | 
						||
            case longint of
 | 
						||
               0 : ( S_un_b : record
 | 
						||
                    s_b1 : byte;
 | 
						||
                    s_b2 : byte;
 | 
						||
                    s_b3 : byte;
 | 
						||
                    s_b4 : byte;
 | 
						||
                 end );
 | 
						||
               1 : ( S_un_w : record
 | 
						||
                    s_w1 : word;
 | 
						||
                    s_w2 : word;
 | 
						||
                 end );
 | 
						||
               2 : ( S_addr : dword );
 | 
						||
            end;
 | 
						||
     end;
 | 
						||
 | 
						||
   //!! in_addr = in_addr_t;
 | 
						||
{ socket address, internet style    }
 | 
						||
   Psockaddr_in = ^sockaddr_in;
 | 
						||
   sockaddr_in = record
 | 
						||
        sin_family : smallint;
 | 
						||
        sin_port : u_short;
 | 
						||
        sin_addr : in_addr;
 | 
						||
        sin_zero : array[0..7] of char;
 | 
						||
     end;
 | 
						||
 | 
						||
   //!! sockaddr_in = sockaddr_in_t;
 | 
						||
   Pin6_addr = ^in6_addr;
 | 
						||
   in6_addr = record
 | 
						||
        in6a_u : record
 | 
						||
            case longint of
 | 
						||
               0 : ( bytes : array[0..15] of u_char );
 | 
						||
               1 : ( shorts : array[0..7] of u_short );
 | 
						||
               2 : ( words : array[0..3] of u_long );
 | 
						||
            end;
 | 
						||
     end;
 | 
						||
 | 
						||
   Psockaddr_in6 = ^sockaddr_in6;
 | 
						||
   sockaddr_in6 = record
 | 
						||
        sin6_family : smallint;
 | 
						||
        sin6_port : u_short;
 | 
						||
        sin6_flowinfo : u_long;
 | 
						||
        sin6_addr : in6_addr;
 | 
						||
        sin6_scope_id : u_long;
 | 
						||
     end;
 | 
						||
 | 
						||
{ for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP...  }
 | 
						||
{ IP multicast address of group    }
 | 
						||
{ local IP address of interface    }
 | 
						||
   Pip_mreq = ^ip_mreq;
 | 
						||
   ip_mreq = record
 | 
						||
        imr_multiaddr : in_addr;
 | 
						||
        imr_interface : in_addr;
 | 
						||
     end;
 | 
						||
 | 
						||
{ data...  }
 | 
						||
 | 
						||
//  var
 | 
						||
//     in6addr_any : in6_addr;cvar;external;
 | 
						||
//     in6addr_loopback : in6_addr;cvar;external;
 | 
						||
 | 
						||
 | 
						||
function inet_addr(_string:Pchar):dword;cdecl;external libc_nlm name 'inet_addr';
 | 
						||
function inet_aton(cp:Pchar; addr:Pin_addr):longint;cdecl;external libc_nlm name 'inet_aton';
 | 
						||
function inet_makeaddr(net_num:in_addr; loc_addr:in_addr):in_addr;cdecl;external libc_nlm name 'inet_makeaddr';
 | 
						||
function inet_network(_string:Pchar):in_addr;cdecl;external libc_nlm name 'inet_network';
 | 
						||
function inet_ntoa(addr:in_addr):Pchar;cdecl;external libc_nlm name 'inet_ntoa';
 | 
						||
function inet_ntop(af:longint; src:pointer; dst:Pchar; size:size_t):Pchar;cdecl;external libc_nlm name 'inet_ntop';
 | 
						||
function inet_pton(af:longint; cp:Pchar; ap:pointer):longint;cdecl;external libc_nlm name 'inet_pton';
 | 
						||
 | 
						||
 | 
						||
// netinet/in.h
 | 
						||
 | 
						||
{ User-settable options (used with setsockopt). }
 | 
						||
 | 
						||
 | 
						||
// nks/defs.h
 | 
						||
 | 
						||
  const
 | 
						||
     NX_MAX_KEYS = 64;
 | 
						||
     NX_MAX_OBJECT_NAME_LEN = 31;
 | 
						||
     NX_INTR1 = 0;
 | 
						||
     NX_INTR2 = 1;
 | 
						||
     NX_INTR3 = 2;
 | 
						||
     NX_INTR4 = 3;
 | 
						||
     NX_INTR5 = 4;
 | 
						||
     NX_INTR6 = 5;
 | 
						||
     NX_INTR7 = 6;
 | 
						||
     NX_INTR8 = 7;
 | 
						||
     NX_INTR9 = 8;
 | 
						||
     NX_INTR10 = 9;
 | 
						||
     NX_INTR11 = 10;
 | 
						||
     NX_INTR12 = 11;
 | 
						||
     NX_INTR13 = 12;
 | 
						||
     NX_INTR14 = 13;
 | 
						||
     NX_INTR15 = 14;
 | 
						||
     NX_INTR16 = 15;
 | 
						||
     NX_INTR17 = 16;
 | 
						||
     NX_INTR18 = 17;
 | 
						||
     NX_INTR19 = 18;
 | 
						||
     NX_INTR20 = 19;
 | 
						||
     NX_INTR21 = 20;
 | 
						||
     NX_INTR22 = 21;
 | 
						||
     NX_INTR23 = 22;
 | 
						||
     NX_INTR24 = 23;
 | 
						||
     NX_INTR25 = 24;
 | 
						||
     NX_INTR26 = 25;
 | 
						||
     NX_INTR27 = 26;
 | 
						||
     NX_INTR28 = 27;
 | 
						||
     NX_INTR29 = 28;
 | 
						||
     NX_INTR30 = 29;
 | 
						||
     NX_INTR31 = 30;
 | 
						||
     NX_INTR32 = 31;
 | 
						||
     NX_INTR33 = 32;
 | 
						||
     NX_INTR34 = 33;
 | 
						||
     NX_INTR35 = 34;
 | 
						||
     NX_INTR36 = 35;
 | 
						||
     NX_INTR37 = 36;
 | 
						||
     NX_INTR38 = 37;
 | 
						||
     NX_INTR39 = 38;
 | 
						||
     NX_INTR40 = 39;
 | 
						||
     NX_INTR41 = 40;
 | 
						||
     NX_INTR42 = 41;
 | 
						||
     NX_INTR43 = 42;
 | 
						||
     NX_INTR44 = 43;
 | 
						||
     NX_INTR45 = 44;
 | 
						||
     NX_INTR46 = 45;
 | 
						||
     NX_INTR47 = 46;
 | 
						||
     NX_INTR48 = 47;
 | 
						||
     NX_INTR49 = 48;
 | 
						||
     NX_INTR50 = 49;
 | 
						||
     NX_INTR51 = 50;
 | 
						||
     NX_INTR52 = 51;
 | 
						||
     NX_INTR53 = 52;
 | 
						||
     NX_INTR54 = 53;
 | 
						||
     NX_INTR55 = 54;
 | 
						||
     NX_INTR56 = 55;
 | 
						||
     NX_INTR57 = 56;
 | 
						||
     NX_INTR58 = 57;
 | 
						||
     NX_INTR59 = 58;
 | 
						||
     NX_INTR60 = 59;
 | 
						||
     NX_INTR61 = 60;
 | 
						||
     NX_INTR62 = 61;
 | 
						||
     NX_INTR63 = 62;
 | 
						||
     NX_INTR64 = 63;
 | 
						||
 | 
						||
 | 
						||
type
 | 
						||
 | 
						||
   PNXBool_t = ^NXBool_t;
 | 
						||
   NXBool_t = longint;
 | 
						||
 | 
						||
   PNXVmId_t = ^NXVmId_t;
 | 
						||
   NXVmId_t = longint;
 | 
						||
{ values for NXInterruptId_t...  }
 | 
						||
 | 
						||
 | 
						||
// nks/dirio.h
 | 
						||
// nks/fsio.h
 | 
						||
// unilib.h
 | 
						||
 | 
						||
  const
 | 
						||
     UNI_ERR_MEM_ALLOC = -(494);
 | 
						||
  { nonexistant rule table handle      }
 | 
						||
     UNI_ERR_BAD_HANDLE = -(496);
 | 
						||
  { table corruption detected          }
 | 
						||
     UNI_ERR_TABLE_CORRUPT = -(498);
 | 
						||
  { insufficient room in string        }
 | 
						||
     UNI_ERR_TOO_FEW_BYTES = -(500);
 | 
						||
  { unable to open data file           }
 | 
						||
     UNI_ERR_FILE_OPEN = -(501);
 | 
						||
  {                                    }
 | 
						||
     UNI_ERR_FILE_EXIST = -(502);
 | 
						||
  { unable to read data file           }
 | 
						||
     UNI_ERR_FILE_READ = -(504);
 | 
						||
  { functional stub only               }
 | 
						||
     UNI_ERR_UNIMPLEMENTED = -(505);
 | 
						||
  { premature end-of-string            }
 | 
						||
     UNI_ERR_PREMATURE_END = -(506);
 | 
						||
  { discovered during translation      }
 | 
						||
     UNI_ERR_UNMAPPABLE_CHAR = -(532);
 | 
						||
  { invalid UTF-8 character sequence   }
 | 
						||
     UNI_ERR_INVALID_UTF8_SEQ = $FFFF;
 | 
						||
  { the local, default rule table for argument 'table' below...  }
 | 
						||
  { respective to local codepage       }
 | 
						||
     UNI_LOCAL_DEFAULT = -(1);
 | 
						||
  { 'noMapFlag' values; when no mapping found...  }
 | 
						||
  { return UNI_ERR_UNMAPPABLE_CHAR     }
 | 
						||
     UNI_MAP_NO_CHAR = 0;
 | 
						||
  { use value in 'noMapChar' unless 0  }
 | 
						||
     UNI_MAP_CHAR = 1;
 | 
						||
  { use 'noMapFunc' if non-nil         }
 | 
						||
     UNI_MAP_BY_FUNC = 1;
 | 
						||
  { use character itself               }
 | 
						||
     UNI_MAP_SELF = 2;
 | 
						||
  { no-map character if 'noMapChar' 0  }
 | 
						||
     UNI_NOMAP_DEFAULT = '?';
 | 
						||
  { character classification (UniClass_t)...  }
 | 
						||
  { no classification                      }
 | 
						||
     UNI_UNDEF = $00000000;
 | 
						||
  { control character                      }
 | 
						||
     UNI_CNTRL = $00000001;
 | 
						||
  { non-printing space                     }
 | 
						||
     UNI_SPACE = $00000002;
 | 
						||
  { printing (visible) character           }
 | 
						||
     UNI_PRINT = $00000004;
 | 
						||
  { dingbats, special symbols, et al.      }
 | 
						||
     UNI_SPECIAL = $00000008;
 | 
						||
  { general punctuation                    }
 | 
						||
     UNI_PUNCT = $00000010;
 | 
						||
  { decimal digit                          }
 | 
						||
     UNI_DIGIT = $00000020;
 | 
						||
  { hexadecimal digit                      }
 | 
						||
     UNI_XDIGIT = $00000040;
 | 
						||
  { reserved for future use                }
 | 
						||
     UNI_RESERVED1 = $00000080;
 | 
						||
  { lower-case if applicable               }
 | 
						||
     UNI_LOWER = $00000100;
 | 
						||
  { upper-case if applicable               }
 | 
						||
     UNI_UPPER = $00000200;
 | 
						||
  { reserved for future use                }
 | 
						||
     UNI_RESERVED2 = $00000400;
 | 
						||
  { non-number, non-punctuation including: }
 | 
						||
     UNI_ALPHA = $00000800;
 | 
						||
  { Latin-based                            }
 | 
						||
     UNI_LATIN = $00001000;
 | 
						||
  { Greek                                  }
 | 
						||
     UNI_GREEK = $00002000;
 | 
						||
  { Cyrillic                               }
 | 
						||
     UNI_CYRILLIC = $00004000;
 | 
						||
  { Hebrew                                 }
 | 
						||
     UNI_HEBREW = $00008000;
 | 
						||
  { Arabic                                 }
 | 
						||
     UNI_ARABIC = $00010000;
 | 
						||
  { Chinese/Japanese/Korean characters     }
 | 
						||
     UNI_CJK = $00020000;
 | 
						||
  { Devanagari, Bengali, Tamil, et al.     }
 | 
						||
     UNI_INDIAN = $00040000;
 | 
						||
  { southeast Asia: Thai, Lao              }
 | 
						||
     UNI_SEASIA = $00080000;
 | 
						||
  { cent. Asia: Armenian Tibetain, Georg.  }
 | 
						||
     UNI_CENASIA = $00100000;
 | 
						||
  { none of the above                      }
 | 
						||
     UNI_OTHER = $80000000;
 | 
						||
 | 
						||
 | 
						||
type
 | 
						||
   Punicode_t = ^unicode_t;
 | 
						||
   unicode_t = wchar_t;
 | 
						||
   PPunicode_t = ^Punicode_t;
 | 
						||
 | 
						||
   PUniRuleTable_t = ^UniRuleTable_t;
 | 
						||
   UniRuleTable_t = longint;
 | 
						||
{ more a cookie than anything else      }
 | 
						||
 | 
						||
   PUniClass_t = ^UniClass_t;
 | 
						||
   UniClass_t = dword;
 | 
						||
{ Unicode character classification       }
 | 
						||
{ for uni2mono(), unicase(), et al.      }
 | 
						||
{ default monocasing as implemented      }
 | 
						||
{ character is not 'alphabetic'          }
 | 
						||
{ character has no case                  }
 | 
						||
{ emphatically upper case                }
 | 
						||
{ emphatically lower case                }
 | 
						||
 | 
						||
   PUniCase_t = ^UniCase_t;
 | 
						||
   UniCase_t =  Longint;
 | 
						||
   Const
 | 
						||
     UNI_CASE_DEFAULT = $FFFFFFFD;
 | 
						||
     UNI_CASE_NONE = $FFFFFFFE;
 | 
						||
     UNI_CASE_AMBIGUOUS = $FFFFFFFF;
 | 
						||
     UNI_CASE_UPPER = $00000000;
 | 
						||
     UNI_CASE_LOWER = $00000001;
 | 
						||
     UNI_CASE_TITLE = $00000002;
 | 
						||
 | 
						||
{ unmappable character handling function types...  }
 | 
						||
 | 
						||
type
 | 
						||
 | 
						||
   Loc2UniNoMapFunc_t = function (dest:PPunicode_t; remaining:size_t; src:PPchar; userParm:pointer):longint;cdecl;
 | 
						||
 | 
						||
 | 
						||
   Loc2Utf8NoMapFunc_t = function (dest:PPchar; remaining:size_t; src:PPchar; userParm:pointer):longint;cdecl;
 | 
						||
 | 
						||
 | 
						||
   Utf82LocNoMapFunc_t = function (dest:PPchar; remaining:size_t; src:PPchar; userParm:pointer):longint;cdecl;
 | 
						||
 | 
						||
 | 
						||
   Utf82UniNoMapFunc_t = function (dest:PPchar; remaining:size_t; src:PPunicode_t; userParm:pointer):longint;cdecl;
 | 
						||
 | 
						||
 | 
						||
   Uni2LocNoMapFunc_t = function (dest:PPchar; remaining:size_t; src:PPunicode_t; userParm:pointer):longint;cdecl;
 | 
						||
 | 
						||
 | 
						||
   Uni2Utf8NoMapFunc_t = function (dest:PPchar; remaining:size_t; src:PPunicode_t; userParm:pointer):longint;cdecl;
 | 
						||
{ rule table management...  }
 | 
						||
 | 
						||
function UniGetTable(codePage:longint; table:PUniRuleTable_t):longint;cdecl;external libc_nlm name 'UniGetTable';
 | 
						||
 | 
						||
function UniGetMacintoshTable(name:Pchar; table:PUniRuleTable_t):longint;cdecl;external libc_nlm name 'UniGetMacintoshTable';
 | 
						||
function UniSetDefault(table:UniRuleTable_t):longint;cdecl;external libc_nlm name 'UniSetDefault';
 | 
						||
function UniDisposeTable(table:UniRuleTable_t):longint;cdecl;external libc_nlm name 'UniDisposeTable';
 | 
						||
function UniGetHostCodePage:longint;cdecl;external libc_nlm name 'UniGetHostCodePage';
 | 
						||
{ translation between local and other codepages, Unicode and UTF-8...  }
 | 
						||
 | 
						||
function loc2uni(table:UniRuleTable_t; dest:Punicode_t; src:Pchar; noMapCh:unicode_t; noMapFlag:longint):longint;cdecl;external libc_nlm name 'loc2uni';
 | 
						||
 | 
						||
function loc2unipath(table:UniRuleTable_t; dest:Punicode_t; src:Pchar; dryRunSize:Psize_t):longint;cdecl;external libc_nlm name 'loc2unipath';
 | 
						||
 | 
						||
function locn2uni(table:UniRuleTable_t; dest:Punicode_t; destLen:Psize_t; src:Pchar; srcLen:size_t;
 | 
						||
           noMapCh:unicode_t; noMapFlag:longint):longint;cdecl;external libc_nlm name 'locn2uni';
 | 
						||
function locnp2uni(table:UniRuleTable_t; target:PPunicode_t; destLen:Psize_t; source:PPchar; srcLen:size_t;
 | 
						||
           noMapCh:unicode_t; noMapFlag:longint):longint;cdecl;external libc_nlm name 'locnp2uni';
 | 
						||
 | 
						||
function locnx2uni(table:UniRuleTable_t; dest:Punicode_t; destLen:Psize_t; src:Pchar; srcLen:size_t;
 | 
						||
           noMapFunc:Loc2UniNoMapFunc_t; noMapFuncParm:pointer; noMapFlag:longint):longint;cdecl;external libc_nlm name 'locnx2uni';
 | 
						||
 | 
						||
function locnx2unipath(table:UniRuleTable_t; dest:Punicode_t; destLen:Psize_t; src:Pchar; srcLen:size_t;
 | 
						||
           noMapFunc:Loc2UniNoMapFunc_t; noMapFuncParm:pointer; noMapFlag:longint; dryRunSize:Psize_t):longint;cdecl;external libc_nlm name 'locnx2unipath';
 | 
						||
 | 
						||
function locn2unispecial(handle:UniRuleTable_t; dest:Punicode_t; destLen:Psize_t; src:Pchar; srcLen:size_t):longint;cdecl;external libc_nlm name 'locn2unispecial';
 | 
						||
 | 
						||
function loc2utf8(handle:UniRuleTable_t; dest:Pchar; src:Pchar; noMapCh:char; noMapFlag:longint):longint;cdecl;external libc_nlm name 'loc2utf8';
 | 
						||
 | 
						||
function loc2utf8path(table:UniRuleTable_t; dest:Pchar; src:Pchar; dryRunSize:Psize_t):longint;cdecl;external libc_nlm name 'loc2utf8path';
 | 
						||
 | 
						||
function locn2utf8(table:UniRuleTable_t; dest:Pchar; destLen:Psize_t; src:Pchar; srcLen:size_t;
 | 
						||
           noMapCh:char; noMapFlag:longint):longint;cdecl;external libc_nlm name 'locn2utf8';
 | 
						||
 | 
						||
function locnx2utf8(table:UniRuleTable_t; dest:Pchar; destLen:Psize_t; src:Pchar; srcLen:size_t;
 | 
						||
           noMapFunc:Loc2Utf8NoMapFunc_t; noMapFuncParm:pointer; noMapFlag:longint):longint;cdecl;external libc_nlm name 'locnx2utf8';
 | 
						||
 | 
						||
function uni2loc(table:UniRuleTable_t; dest:Pchar; src:Punicode_t; noMapCh:char; noMapFlag:longint):longint;cdecl;external libc_nlm name 'uni2loc';
 | 
						||
 | 
						||
function uni2locpath(table:UniRuleTable_t; dest:Pchar; src:Punicode_t; dryRunSize:Psize_t):longint;cdecl;external libc_nlm name 'uni2locpath';
 | 
						||
 | 
						||
function unin2loc(table:UniRuleTable_t; dest:Pchar; destLen:Psize_t; src:Punicode_t; srcLen:size_t;
 | 
						||
           noMapCh:char; noMapFlag:longint):longint;cdecl;external libc_nlm name 'unin2loc';
 | 
						||
function uninp2loc(table:UniRuleTable_t; target:PPchar; destLen:Psize_t; source:PPunicode_t; srcLen:size_t;
 | 
						||
           noMapCh:char; noMapFlag:longint):longint;cdecl;external libc_nlm name 'uninp2loc';
 | 
						||
 | 
						||
function uninx2loc(table:UniRuleTable_t; dest:Pchar; destLen:Psize_t; src:Punicode_t; srcLen:size_t;
 | 
						||
           noMapFunc:Uni2LocNoMapFunc_t; noMapFuncParm:pointer; noMapFlag:longint):longint;cdecl;external libc_nlm name 'uninx2loc';
 | 
						||
 | 
						||
function uninx2locpath(table:UniRuleTable_t; dest:Pchar; destLen:Psize_t; src:Punicode_t; srcLen:size_t;
 | 
						||
           noMapFunc:Uni2LocNoMapFunc_t; noMapFuncParm:pointer; noMapFlag:longint; dryRunSize:Psize_t):longint;cdecl;external libc_nlm name 'uninx2locpath';
 | 
						||
 | 
						||
function unin2locspecial(handle:UniRuleTable_t; dest:Pchar; destLen:Psize_t; src:Punicode_t; srcLen:size_t):longint;cdecl;external libc_nlm name 'unin2locspecial';
 | 
						||
 | 
						||
function uni2utf8(dest:Pchar; src:Punicode_t):longint;cdecl;external libc_nlm name 'uni2utf8';
 | 
						||
 | 
						||
function uni2utf8path(dest:Pchar; src:Punicode_t; dryRunSize:Psize_t):longint;cdecl;external libc_nlm name 'uni2utf8path';
 | 
						||
 | 
						||
function unin2utf8(dest:Pchar; destLen:Psize_t; src:Punicode_t; srcLen:size_t):longint;cdecl;external libc_nlm name 'unin2utf8';
 | 
						||
 | 
						||
function utf82loc(handle:UniRuleTable_t; dest:Pchar; src:Pchar; noMapCh:char; noMapFlag:longint):longint;cdecl;external libc_nlm name 'utf82loc';
 | 
						||
 | 
						||
function utf8n2loc(table:UniRuleTable_t; dest:Pchar; destLen:Psize_t; src:Pchar; srcLen:size_t;
 | 
						||
           noMapCh:char; noMapFlag:longint):longint;cdecl;external libc_nlm name 'utf8n2loc';
 | 
						||
 | 
						||
function utf8nx2loc(table:UniRuleTable_t; dest:Pchar; destLen:Psize_t; src:Pchar; srcLen:size_t;
 | 
						||
           noMapFunc:Utf82LocNoMapFunc_t; noMapFuncParm:pointer; noMapFlag:longint):longint;cdecl;external libc_nlm name 'utf8nx2loc';
 | 
						||
 | 
						||
function utf82uni(dest:Punicode_t; src:Pchar):longint;cdecl;external libc_nlm name 'utf82uni';
 | 
						||
 | 
						||
function utf8n2uni(dest:Punicode_t; destLen:Psize_t; src:Pchar; srcLen:size_t):longint;cdecl;external libc_nlm name 'utf8n2uni';
 | 
						||
{ quick, 7-bit ASCII-capable translations--not preferred set...  }
 | 
						||
 | 
						||
function asc2uni(dest:Punicode_t; src:Pchar):Punicode_t;cdecl;external libc_nlm name 'asc2uni';
 | 
						||
 | 
						||
function ascn2uni(dest:Punicode_t; src:Pchar; nbytes:size_t):Punicode_t;cdecl;external libc_nlm name 'ascn2uni';
 | 
						||
 | 
						||
function uni2asc(dest:Pchar; src:Punicode_t):Pchar;cdecl;external libc_nlm name 'uni2asc';
 | 
						||
 | 
						||
function unin2asc(dest:Pchar; src:Punicode_t; nchars:size_t):Pchar;cdecl;external libc_nlm name 'unin2asc';
 | 
						||
{ default 'noMapFunc' for X-translation to ensure round-trip conversion...  }
 | 
						||
 | 
						||
function LocToUniTagFunc(dest:PPunicode_t; remaining:size_t; src:PPchar; userParm:pointer):longint;cdecl;external libc_nlm name 'LocToUniTagFunc';
 | 
						||
 | 
						||
function UniToLocTagFunc(dest:PPchar; remaining:size_t; src:PPunicode_t; userParm:pointer):longint;cdecl;external libc_nlm name 'UniToLocTagFunc';
 | 
						||
{ string size calculation...  }
 | 
						||
 | 
						||
function LocToUniSize(table:UniRuleTable_t; str:Pchar; unmappedCharSize:size_t; noMapFlag:longint; uniBufSize:Psize_t):longint;cdecl;external libc_nlm name 'LocToUniSize';
 | 
						||
 | 
						||
function LocToUtf8Size(table:UniRuleTable_t; str:Pchar; unmappedCharSize:size_t; noMapFlag:longint; utf8BufSize:Psize_t):longint;cdecl;external libc_nlm name 'LocToUtf8Size';
 | 
						||
 | 
						||
function UniToLocSize(table:UniRuleTable_t; str:Punicode_t; unmappedCharSize:size_t; noMapFlag:longint; locBufSize:Psize_t):longint;cdecl;external libc_nlm name 'UniToLocSize';
 | 
						||
 | 
						||
function UniToUtf8Size(str:Punicode_t; utf8BufSize:Psize_t):longint;cdecl;external libc_nlm name 'UniToUtf8Size';
 | 
						||
 | 
						||
function Utf8ToLocSize(table:UniRuleTable_t; str:Pchar; unmappedCharSize:size_t; noMapFlag:longint; locBufSize:Psize_t):longint;cdecl;external libc_nlm name 'Utf8ToLocSize';
 | 
						||
 | 
						||
function Utf8ToUniSize(str:Pchar; uniBufSize:Psize_t):longint;cdecl;external libc_nlm name 'Utf8ToUniSize';
 | 
						||
{-----------------------------------------------------------------------------
 | 
						||
** Little utility functions. These are not to be preferred over the interfaces
 | 
						||
** from wchar.h.
 | 
						||
 }
 | 
						||
{ utility to measure width of a character in a codepage...  }
 | 
						||
 | 
						||
function dbcs_width(codepage:longint; str:Pchar):longint;cdecl;external libc_nlm name 'dbcs_width';
 | 
						||
{ classification...  }
 | 
						||
function unitype(ch:unicode_t):UniClass_t;cdecl;external libc_nlm name 'unitype';
 | 
						||
{ collation...  }
 | 
						||
 | 
						||
 | 
						||
function unicoll(s1:Punicode_t; s2:Punicode_t):longint;cdecl;external libc_nlm name 'unicoll';
 | 
						||
 | 
						||
 | 
						||
function unincoll(s1:Punicode_t; s2:Punicode_t; n:size_t):longint;cdecl;external libc_nlm name 'unincoll';
 | 
						||
{ casing...  }
 | 
						||
function unicase(ch:unicode_t):UniCase_t;cdecl;external libc_nlm name 'unicase';
 | 
						||
 | 
						||
function uni2mono(dest:Punicode_t; src:Punicode_t; casing:UniCase_t):Punicode_t;cdecl;external libc_nlm name 'uni2mono';
 | 
						||
 | 
						||
function unin2mono(dest:Punicode_t; src:Punicode_t; casing:UniCase_t; destLen:size_t):Punicode_t;cdecl;external libc_nlm name 'unin2mono';
 | 
						||
function chr2upr(ch:unicode_t):unicode_t;cdecl;external libc_nlm name 'chr2upr';
 | 
						||
function chr2lwr(ch:unicode_t):unicode_t;cdecl;external libc_nlm name 'chr2lwr';
 | 
						||
function chr2title(ch:unicode_t):unicode_t;cdecl;external libc_nlm name 'chr2title';
 | 
						||
function unilwr(_string:Punicode_t):Punicode_t;cdecl;external libc_nlm name 'unilwr';
 | 
						||
function uniupr(_string:Punicode_t):Punicode_t;cdecl;external libc_nlm name 'uniupr';
 | 
						||
 | 
						||
function uni2lwr(dest:Punicode_t; src:Punicode_t):Punicode_t;cdecl;external libc_nlm name 'uni2lwr';
 | 
						||
 | 
						||
function unin2lwr(dest:Punicode_t; src:Punicode_t; destLen:size_t):Punicode_t;cdecl;external libc_nlm name 'unin2lwr';
 | 
						||
 | 
						||
function uni2upr(dest:Punicode_t; src:Punicode_t):Punicode_t;cdecl;external libc_nlm name 'uni2upr';
 | 
						||
 | 
						||
function unin2upr(dest:Punicode_t; src:Punicode_t; destLen:size_t):Punicode_t;cdecl;external libc_nlm name 'unin2upr';
 | 
						||
 | 
						||
function uni2title(dest:Punicode_t; src:Punicode_t):Punicode_t;cdecl;external libc_nlm name 'uni2title';
 | 
						||
 | 
						||
function unin2title(dest:Punicode_t; src:Punicode_t; destLen:size_t):Punicode_t;cdecl;external libc_nlm name 'unin2title';
 | 
						||
{ length...  }
 | 
						||
 | 
						||
function unilen(_string:Punicode_t):size_t;cdecl;external libc_nlm name 'unilen';
 | 
						||
 | 
						||
function uninlen(_string:Punicode_t; max:size_t):size_t;cdecl;external libc_nlm name 'uninlen';
 | 
						||
 | 
						||
function unisize(_string:Punicode_t):size_t;cdecl;external libc_nlm name 'unisize';
 | 
						||
{ copying...  }
 | 
						||
 | 
						||
function unicpy(tgt:Punicode_t; src:Punicode_t):Punicode_t;cdecl;external libc_nlm name 'unicpy';
 | 
						||
 | 
						||
function unincpy(tgt:Punicode_t; src:Punicode_t; n:size_t):Punicode_t;cdecl;external libc_nlm name 'unincpy';
 | 
						||
function uniset(base:Punicode_t; ch:unicode_t):Punicode_t;cdecl;external libc_nlm name 'uniset';
 | 
						||
function uninset(base:Punicode_t; ch:unicode_t; n:size_t):Punicode_t;cdecl;external libc_nlm name 'uninset';
 | 
						||
{ concatenation...  }
 | 
						||
 | 
						||
function unicat(tgt:Punicode_t; src:Punicode_t):Punicode_t;cdecl;external libc_nlm name 'unicat';
 | 
						||
 | 
						||
function unincat(tgt:Punicode_t; src:Punicode_t; n:size_t):Punicode_t;cdecl;external libc_nlm name 'unincat';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function unilist(tgt:Punicode_t; s1:Punicode_t; args:array of const):Punicode_t;cdecl;external libc_nlm name 'unilist';
 | 
						||
{$endif}
 | 
						||
function unilist(tgt:Punicode_t; s1:Punicode_t):Punicode_t;cdecl;external libc_nlm name 'unilist';
 | 
						||
{ comparison...  }
 | 
						||
 | 
						||
 | 
						||
function unicmp(s1:Punicode_t; s2:Punicode_t):longint;cdecl;external libc_nlm name 'unicmp';
 | 
						||
 | 
						||
 | 
						||
function uniicmp(s1:Punicode_t; s2:Punicode_t):longint;cdecl;external libc_nlm name 'uniicmp';
 | 
						||
 | 
						||
 | 
						||
function unincmp(s1:Punicode_t; s2:Punicode_t; n:size_t):longint;cdecl;external libc_nlm name 'unincmp';
 | 
						||
 | 
						||
 | 
						||
function uninicmp(s1:Punicode_t; s2:Punicode_t; n:size_t):longint;cdecl;external libc_nlm name 'uninicmp';
 | 
						||
{ character matching, indexing and miscellaneous...  }
 | 
						||
 | 
						||
function unichr(_string:Punicode_t; ch:unicode_t):Punicode_t;cdecl;external libc_nlm name 'unichr';
 | 
						||
function unirchr(_string:Punicode_t; ch:unicode_t):Punicode_t;cdecl;external libc_nlm name 'unirchr';
 | 
						||
function uniindex(_string:Punicode_t; search:Punicode_t):Punicode_t;cdecl;external libc_nlm name 'uniindex';
 | 
						||
function unistr(as1:Punicode_t; as2:Punicode_t):Punicode_t;cdecl;external libc_nlm name 'unistr';
 | 
						||
function unirev(base:Punicode_t):Punicode_t;cdecl;external libc_nlm name 'unirev';
 | 
						||
function unispn(_string:Punicode_t; charset:Punicode_t):size_t;cdecl;external libc_nlm name 'unispn';
 | 
						||
function unicspn(_string:Punicode_t; charset:Punicode_t):size_t;cdecl;external libc_nlm name 'unicspn';
 | 
						||
function unipbrk(s1:Punicode_t; s2:Punicode_t):Punicode_t;cdecl;external libc_nlm name 'unipbrk';
 | 
						||
function unitok(_string:Punicode_t; sepset:Punicode_t):Punicode_t;cdecl;external libc_nlm name 'unitok';
 | 
						||
function unitok_r(_string:Punicode_t; sepset:Punicode_t; lasts:PPunicode_t):Punicode_t;cdecl;external libc_nlm name 'unitok_r';
 | 
						||
function unidup(s1:Punicode_t):Punicode_t;cdecl;external libc_nlm name 'unidup';
 | 
						||
// nks/time.h
 | 
						||
 | 
						||
{ values for 'epoch' for NXGetTime()...  }
 | 
						||
{ values for 'units' for NXGetTime()...  }
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
type
 | 
						||
 | 
						||
   PNXTime_t = ^NXTime_t;
 | 
						||
   NXTime_t = Tuint64;
 | 
						||
 | 
						||
   PNXTimerVal_t = ^NXTimerVal_t;
 | 
						||
   NXTimerVal_t = record
 | 
						||
        tvPeriod : dword;
 | 
						||
        tvCurrent : dword;
 | 
						||
     end;
 | 
						||
 | 
						||
   PNXTimeOut_t = ^NXTimeOut_t;
 | 
						||
   NXTimeOut_t = record
 | 
						||
        reserved1 : array[0..3] of dword;
 | 
						||
        toRoutine : procedure (_para1:pointer);cdecl;
 | 
						||
        toArg : pointer;
 | 
						||
        toTimerVal : NXTimerVal_t;
 | 
						||
        reserved2 : array[0..15] of dword;
 | 
						||
     end;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
{ Time and time-out...  }
 | 
						||
 | 
						||
function NXTimeOutCancel(tout:PNXTimeOut_t; wait:NXBool_t; status:PNXBool_t):longint;cdecl;external libc_nlm name 'NXTimeOutCancel';
 | 
						||
function NXTimeOutSchedule(tout:PNXTimeOut_t):longint;cdecl;external libc_nlm name 'NXTimeOutSchedule';
 | 
						||
function NXGetTime(epoch:longint; units:longint; time:PNXTime_t):longint;cdecl;external libc_nlm name 'NXGetTime';
 | 
						||
 | 
						||
 | 
						||
// nks/thread.h
 | 
						||
// nks/plat.h
 | 
						||
type
 | 
						||
 | 
						||
   PNXCpuId_t = ^NXCpuId_t;
 | 
						||
   NXCpuId_t = longint;
 | 
						||
{ Platform-specific services...  }
 | 
						||
 | 
						||
function NXGetCacheLineSize:size_t;cdecl;external libc_nlm name 'NXGetCacheLineSize';
 | 
						||
function NXGetCpuCount:dword;cdecl;external libc_nlm name 'NXGetCpuCount';
 | 
						||
function NXGetCpuId:NXCpuId_t;cdecl;external libc_nlm name 'NXGetCpuId';
 | 
						||
function NXGetPageSize:size_t;cdecl;external libc_nlm name 'NXGetPageSize';
 | 
						||
function NXSeedRandom(width:size_t; seed:pointer):longint;cdecl;external libc_nlm name 'NXSeedRandom';
 | 
						||
function NXGetSystemTick:dword;cdecl;external libc_nlm name 'NXGetSystemTick';
 | 
						||
{ values for thread priority...  }
 | 
						||
{ values for thread context flags...  }
 | 
						||
{ values for thread flags...  }
 | 
						||
{ value returned that specifies that the thread is unbound  }
 | 
						||
{ value passed to NXThreadBind to bind it to the current CPU  }
 | 
						||
{ return from NXThreadGetId indicating no-context or other error  }
 | 
						||
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
type
 | 
						||
 | 
						||
   PNXContext_t = ^NXContext_t;
 | 
						||
   NXContext_t = void;
 | 
						||
 | 
						||
   PNXWorkId_t = ^NXWorkId_t;
 | 
						||
   NXWorkId_t = longint;
 | 
						||
 | 
						||
   PNXKey_t = ^NXKey_t;
 | 
						||
   NXKey_t = longint;
 | 
						||
 | 
						||
   PNXThreadId_t = ^NXThreadId_t;
 | 
						||
   NXThreadId_t = longint;
 | 
						||
 | 
						||
   PNXInterruptId_t = ^NXInterruptId_t;
 | 
						||
   NXInterruptId_t = longint;
 | 
						||
 | 
						||
   PNXInterruptSet_t = ^NXInterruptSet_t;
 | 
						||
   NXInterruptSet_t = Tuint64;
 | 
						||
 | 
						||
   PNXContextState_t = ^NXContextState_t;
 | 
						||
   NXContextState_t =  Longint;
 | 
						||
   Const
 | 
						||
     NX_CTXSTATE_INIT = $FFFFFFFF;
 | 
						||
     NX_CTXSTATE_BOUND = $00000001;
 | 
						||
     NX_CTXSTATE_UNBOUND = $00000000;
 | 
						||
 | 
						||
type
 | 
						||
 | 
						||
   PNXContextInfo_t = ^NXContextInfo_t;
 | 
						||
   NXContextInfo_t = record
 | 
						||
        ciState : NXContextState_t;
 | 
						||
        ciFunc : procedure (_para1:pointer);cdecl;
 | 
						||
        ciArg : pointer;
 | 
						||
        ciPriority : longint;
 | 
						||
        ciStackSize : size_t;
 | 
						||
        ciFlags : dword;
 | 
						||
     end;
 | 
						||
 | 
						||
   PlwWork = ^lwWork;
 | 
						||
   lwWork = record
 | 
						||
        reserved : array[0..6] of pointer;
 | 
						||
        lwWorkFunc : procedure (_para1:PlwWork; _para2:pointer);cdecl;
 | 
						||
        lwAppRef : pointer;
 | 
						||
     end;
 | 
						||
   NXLwWork_t = lwWork;
 | 
						||
   PNXLwWork_t = ^NXLwWork_t;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
{ Context management...  }
 | 
						||
 | 
						||
type TCDeclProc1PtrArg = procedure (_para1:pointer); cdecl;
 | 
						||
 | 
						||
function NXContextAlloc(start_routine:TCDeclProc1PtrArg; arg:pointer; priority:longint; stackSize:size_t; flags:dword;
 | 
						||
           error:Plongint):NXContext_t;cdecl;external libc_nlm name 'NXContextAlloc';
 | 
						||
function NXContextFree(ctx:NXContext_t):longint;cdecl;external libc_nlm name 'NXContextFree';
 | 
						||
function NXContextGet:NXContext_t;cdecl;external libc_nlm name 'NXContextGet';
 | 
						||
function NXContextGetInfo(ctx:NXContext_t; info:PNXContextInfo_t):longint;cdecl;external libc_nlm name 'NXContextGetInfo';
 | 
						||
function NXContextGetName(ctx:NXContext_t; name:Pchar; len:size_t):longint;cdecl;external libc_nlm name 'NXContextGetName';
 | 
						||
function NXContextReinit(ctx:NXContext_t; start_routine:TCDeclProc1PtrArg; arg:pointer; priority:longint; flags:dword):longint;cdecl;external libc_nlm name 'NXContextReinit';
 | 
						||
 | 
						||
function NXContextSetName(ctx:NXContext_t; name:Pchar):longint;cdecl;external libc_nlm name 'NXContextSetName';
 | 
						||
{ Key-value pairs (per-context data)...  }
 | 
						||
type TCdeclProc = procedure; cdecl;
 | 
						||
function NXKeyCreate(_destructor: TCDeclProc; value:pointer; key:PNXKey_t):longint;cdecl;external libc_nlm name 'NXKeyCreate';
 | 
						||
function NXKeyDelete(key:NXKey_t):longint;cdecl;external libc_nlm name 'NXKeyDelete';
 | 
						||
function NXKeyGetValue(key:NXKey_t; value:Ppointer):longint;cdecl;external libc_nlm name 'NXKeyGetValue';
 | 
						||
function NXKeySetValue(key:NXKey_t; value:pointer):longint;cdecl;external libc_nlm name 'NXKeySetValue';
 | 
						||
{ Thread management...  }
 | 
						||
function NXThreadBind(cpu_id:NXCpuId_t):longint;cdecl;external libc_nlm name 'NXThreadBind';
 | 
						||
function NXThreadContinue(tid:NXThreadId_t):longint;cdecl;external libc_nlm name 'NXThreadContinue';
 | 
						||
function NXThreadCreate(ctx:NXContext_t; flags:dword; idp:PNXThreadId_t):longint;cdecl;external libc_nlm name 'NXThreadCreate';
 | 
						||
function NXThreadCreateSx(start_routine:TCDeclProc1PtrArg; arg:pointer; thread_flags:dword; ctx:PNXContext_t; thr:PNXThreadId_t):longint;cdecl;external libc_nlm name 'NXThreadCreateSx';
 | 
						||
procedure NXThreadDelay(delay:dword);cdecl;external libc_nlm name 'NXThreadDelay';
 | 
						||
function NXThreadDestroy(tid:NXThreadId_t):longint;cdecl;external libc_nlm name 'NXThreadDestroy';
 | 
						||
function NXThreadDetach(tid:NXThreadId_t):longint;cdecl;external libc_nlm name 'NXThreadDetach';
 | 
						||
procedure NXThreadExit(status:pointer);cdecl;external libc_nlm name 'NXThreadExit';
 | 
						||
function NXThreadGetBinding:NXCpuId_t;cdecl;external libc_nlm name 'NXThreadGetBinding';
 | 
						||
function NXThreadGetContext(tid:NXThreadId_t; ctx:PNXContext_t):longint;cdecl;external libc_nlm name 'NXThreadGetContext';
 | 
						||
function NXThreadGetId:NXThreadId_t;cdecl;external libc_nlm name 'NXThreadGetId';
 | 
						||
function NXThreadGetPriority(tid:NXThreadId_t; priority:Plongint):longint;cdecl;external libc_nlm name 'NXThreadGetPriority';
 | 
						||
function NXThreadInterrupt(tid:NXThreadId_t; interId:NXInterruptId_t):longint;cdecl;external libc_nlm name 'NXThreadInterrupt';
 | 
						||
function NXThreadIsInterrupted(_set:PNXInterruptSet_t):NXBool_t;cdecl;external libc_nlm name 'NXThreadIsInterrupted';
 | 
						||
function NXThreadJoin(wait_for:NXThreadId_t; departed_thread:PNXThreadId_t; status:Ppointer):longint;cdecl;external libc_nlm name 'NXThreadJoin';
 | 
						||
function NXThreadSetPriority(tid:NXThreadId_t; priority:longint):longint;cdecl;external libc_nlm name 'NXThreadSetPriority';
 | 
						||
function NXThreadSuspend(tid:NXThreadId_t):longint;cdecl;external libc_nlm name 'NXThreadSuspend';
 | 
						||
function NXThreadSwapContext(newctx:NXContext_t; prevctx:PNXContext_t):longint;cdecl;external libc_nlm name 'NXThreadSwapContext';
 | 
						||
function NXThreadUnbind:longint;cdecl;external libc_nlm name 'NXThreadUnbind';
 | 
						||
procedure NXThreadYield;cdecl;external libc_nlm name 'NXThreadYield';
 | 
						||
function nxThreadCreate(start_routine:TCDeclProc1PtrArg; flags:dword; arg:pointer; ctxp:PNXContext_t; idp:PNXThreadId_t):longint;cdecl;external libc_nlm name 'nxThreadCreate';
 | 
						||
{ Work-to-dos...  }
 | 
						||
function NXDelayedWorkSchedule(ctx:NXContext_t; timerval:PNXTimerVal_t; bind:NXBool_t; wid:PNXWorkId_t):longint;cdecl;external libc_nlm name 'NXDelayedWorkSchedule';
 | 
						||
function NXLwWorkCancel(work:PNXLwWork_t):longint;cdecl;external libc_nlm name 'NXLwWorkCancel';
 | 
						||
function NXLwWorkSchedule(reserved:pointer; work:PNXLwWork_t; bind:NXBool_t):longint;cdecl;external libc_nlm name 'NXLwWorkSchedule';
 | 
						||
function NXWorkCancel(wid:NXWorkId_t; wait:NXBool_t; status:PNXBool_t):longint;cdecl;external libc_nlm name 'NXWorkCancel';
 | 
						||
function NXWorkSchedule(context:NXContext_t; bind:NXBool_t; wid:PNXWorkId_t):longint;cdecl;external libc_nlm name 'NXWorkSchedule';
 | 
						||
{ Miscellaneous...  }
 | 
						||
function NXProcessInterruptSet(_set:PNXInterruptSet_t; id:NXInterruptId_t; processed_id:PNXInterruptId_t):NXBool_t;cdecl;external libc_nlm name 'NXProcessInterruptSet';
 | 
						||
{ values and masks for file modes...  }
 | 
						||
{ values and masks for file operations...  }
 | 
						||
{ for NXDeviceOpen() and NXConsoleOpen()...  }
 | 
						||
{ aliases for above...  }
 | 
						||
{ open flags...  }
 | 
						||
{ sharing flags...  }
 | 
						||
{ delegation type...  }
 | 
						||
{ flush flags...  }
 | 
						||
{ values and masks for access flags...  }
 | 
						||
{ values for setting file length...  }
 | 
						||
{ values for file byte-range locking flags...  }
 | 
						||
 | 
						||
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
  const
 | 
						||
     NX_MAX_NAME_LEN = 255;
 | 
						||
  { (big! --this isn't used yet)  }
 | 
						||
{$define NX_MAX_FILESIZE}
 | 
						||
  { values and masks for file modes...  }
 | 
						||
     NX_O_RDONLY = $00000000;
 | 
						||
     NX_O_WRONLY = $00000001;
 | 
						||
     NX_O_RDWR = $00000002;
 | 
						||
     NX_O_ACCMODE = $00000003;
 | 
						||
  { values and masks for file operations...  }
 | 
						||
     NX_O_APPEND = $00000010;
 | 
						||
     NX_O_CREAT = $00000020;
 | 
						||
     NX_O_TRUNC = $00000040;
 | 
						||
     NX_O_EXCL = $00000080;
 | 
						||
     NX_O_TRANS = $00000100;
 | 
						||
     NX_O_NONBLOCK = $00000400;
 | 
						||
     NX_O_OPMODE = $000005E0;
 | 
						||
  { for NXDeviceOpen() and NXConsoleOpen()...  }
 | 
						||
     NX_O_SCROLLABLE = $00000800;
 | 
						||
  { aliases for above...  }
 | 
						||
     NX_O_CREATE = NX_O_CREAT;
 | 
						||
     NX_O_TRUNCATE = NX_O_TRUNC;
 | 
						||
     NX_O_EXCLUSIVE = NX_O_EXCL;
 | 
						||
  { open flags...  }
 | 
						||
     NX_OFLAG_DIRECTIO = $00010000;
 | 
						||
     NX_OFLAG_CRONLY = $00020000;
 | 
						||
     NX_OFLAG_BACKUP = $00040000;
 | 
						||
     NX_OFLAG_RESTORE = $00080000;
 | 
						||
     NX_OFLAG_EXTEND = $00100000;
 | 
						||
     NX_OFLAG_SYNCWR = $00200000;
 | 
						||
     NX_OFLAG_ATOMIC_RW = $00400000;
 | 
						||
     NX_OFLAG_NOTRAVERSE_LINK = $00800000;
 | 
						||
     NX_OFLAG_MASK = $00FF0000;
 | 
						||
  { sharing flags...  }
 | 
						||
     NX_SHARE_DENYNO = $00000000;
 | 
						||
     NX_SHARE_DENYRD = $00100000;
 | 
						||
     NX_SHARE_DENYWR = $00200000;
 | 
						||
     NX_SHARE_DENYALL = $00400000;
 | 
						||
     NX_SHARE_MASK = $00700000;
 | 
						||
  { delegation type...  }
 | 
						||
     NX_DELEG_NONE = $00000000;
 | 
						||
  { flush flags...  }
 | 
						||
     NX_FLUSH_DATA = $00000001;
 | 
						||
     NX_FLUSH_METADATA = $00000002;
 | 
						||
     NX_FLUSH_ASYNC = $00000004;
 | 
						||
  { values and masks for access flags...  }
 | 
						||
     NX_R_OK = $00000001;
 | 
						||
     NX_W_OK = $00000002;
 | 
						||
     NX_X_OK = $00000004;
 | 
						||
     NX_F_OK = $00000008;
 | 
						||
  { values for setting file length...  }
 | 
						||
     NX_FOP_RETURN_EXTEND = $00000001;
 | 
						||
     NX_FOP_RETURN_TRUNC_FREE = $00000002;
 | 
						||
     NX_FOP_RETURN_SPARSE = $00000004;
 | 
						||
  { values for file byte-range locking flags...  }
 | 
						||
     NX_RANGE_LOCK_SHARED = $00000001;
 | 
						||
     NX_RANGE_LOCK_EXCL = $00000002;
 | 
						||
     NX_RANGE_LOCK_CHECK = $00000004;
 | 
						||
     NX_RANGE_LOCK_TRYLOCK = $00000008;
 | 
						||
     NX_RANGE_LOCK_COURTESY = $00000010;
 | 
						||
     NX_RANGE_LOCK_CANCEL = $00000020;
 | 
						||
     NX_RANGE_LOCK_POSIX = $00000040;
 | 
						||
 | 
						||
 | 
						||
 | 
						||
type
 | 
						||
   //Pfsio = ^fsio;
 | 
						||
   //fsio = record
 | 
						||
       {undefined structure}
 | 
						||
    // end;
 | 
						||
 | 
						||
 | 
						||
   PNXMode_t = ^NXMode_t;
 | 
						||
   NXMode_t = dword;
 | 
						||
 | 
						||
   PNXOFlags_t = ^NXOFlags_t;
 | 
						||
   NXOFlags_t = dword;
 | 
						||
 | 
						||
   PNXShareMode_t = ^NXShareMode_t;
 | 
						||
   NXShareMode_t = dword;
 | 
						||
 | 
						||
   PNXOffset_t = ^NXOffset_t;
 | 
						||
   NXOffset_t = Tuint64;
 | 
						||
{ (file offsets and lengths)  }
 | 
						||
 | 
						||
   PNXSOffset_t = ^NXSOffset_t;
 | 
						||
   NXSOffset_t = Tint64;
 | 
						||
 | 
						||
   PNXLockToken_t = ^NXLockToken_t;
 | 
						||
   NXLockToken_t = Tuint64;
 | 
						||
 | 
						||
   PNXHandle_t = ^NXHandle_t;
 | 
						||
   NXHandle_t = longint;
 | 
						||
 | 
						||
   PNXPathCtx_t = ^NXPathCtx_t;
 | 
						||
   NXPathCtx_t = longint;
 | 
						||
 | 
						||
   PNXDelegType_t = ^NXDelegType_t;
 | 
						||
   NXDelegType_t = longint;
 | 
						||
 | 
						||
   PNXAsyncId_t = ^NXAsyncId_t;
 | 
						||
   NXAsyncId_t = void;
 | 
						||
{ I/O objects supported...  }
 | 
						||
 | 
						||
   PNXObjType_t = ^NXObjType_t;
 | 
						||
   NXObjType_t =  Longint;
 | 
						||
   Const
 | 
						||
     NX_OBJ_UNKNOWN = $FFFFFFFF;
 | 
						||
     NX_OBJ_DEFAULT = $FFFFFFFE;
 | 
						||
     NX_OBJ_FILE = $FFFFFFFD;
 | 
						||
     NX_OBJ_DIR = $FFFFFFFC;
 | 
						||
     NX_OBJ_FIFO = $FFFFFFFB;
 | 
						||
     NX_OBJ_DEVICE = $FFFFFFFA;
 | 
						||
     NX_OBJ_CONSOLE = $FFFFFFF9;
 | 
						||
     NX_OBJ_SYMLINK = $FFFFFFF8;
 | 
						||
 | 
						||
type
 | 
						||
 | 
						||
   PNXGuid_t = ^NXGuid_t;
 | 
						||
   NXGuid_t = record
 | 
						||
       case longint of
 | 
						||
          0 : ( guid_field : array[0..1] of Tuint64 );
 | 
						||
       end;
 | 
						||
 | 
						||
   PNXFid_t = ^NXFid_t;
 | 
						||
   NXFid_t = record
 | 
						||
        fidFsId : NXGuid_t;
 | 
						||
        fidFileId : array[0..1] of Tuint64;
 | 
						||
     end;
 | 
						||
 | 
						||
   PNXUpCallReason_t = ^NXUpCallReason_t;
 | 
						||
   NXUpCallReason_t =  Longint;
 | 
						||
   Const
 | 
						||
     NX_UPCALL_UNKNOWN = $FFFFFFFF;
 | 
						||
     NX_UPCALL_DELEGRECALL = $00000000;
 | 
						||
     NX_UPCALL_BACKUPIMMINENT = $00000001;
 | 
						||
 | 
						||
 Const
 | 
						||
     NX_LOCK_RANGE_UNKNOWN = 2147483647;
 | 
						||
     NX_LOCK_RANGE_FORWARD = 1;
 | 
						||
     NX_LOCK_RANGE_BACKWARD = 2;
 | 
						||
 | 
						||
type
 | 
						||
 | 
						||
   NXFsUpCall_t = procedure (fileHandle:NXHandle_t; reason:NXUpCallReason_t; parm:pointer);cdecl;
 | 
						||
{ generic filesystem name if used            }
 | 
						||
{ Macintosh data stream (data or resource)   }
 | 
						||
 | 
						||
   PNXDataStream_t = ^NXDataStream_t;
 | 
						||
   NXDataStream_t = record
 | 
						||
       case longint of
 | 
						||
          0 : ( name : pointer );
 | 
						||
          1 : ( macintoshId : dword );
 | 
						||
       end;
 | 
						||
{ based on which 'fosPathname' is understood }
 | 
						||
 | 
						||
{ relative to 'fosPathCtx'                   }
 | 
						||
{ NX_O_RDONLY, NX_O_RDWR, etc.               }
 | 
						||
{ NX_OFLAG_SYNCWR, NX_OFLAG_DIRECTIO, etc.   }
 | 
						||
{ NX_SHARE_DENYRD, NX_DENY_ALL, etc.         }
 | 
						||
{ contiguous file block allocation hint      }
 | 
						||
{ contiguous file block allocation hint      }
 | 
						||
{ delegation type: NX_DELEG_NONE             }
 | 
						||
{ data stream (if not part of fosPathname)   }
 | 
						||
{ called to warn of delegation revocation    }
 | 
						||
{ description of successful conclusion       }
 | 
						||
{ actual grant of delegation                 }
 | 
						||
{ returns FID of opened file                 }
 | 
						||
{ time of last access                        }
 | 
						||
{ time of last modification                  }
 | 
						||
{ time of file creation                     }
 | 
						||
{ time of last back-up                       }
 | 
						||
{ length of file at open                     }
 | 
						||
{ create/open operation results              }
 | 
						||
 | 
						||
   PNXFileOpenSpec_t = ^NXFileOpenSpec_t;
 | 
						||
   NXFileOpenSpec_t = record
 | 
						||
        fosPathCtx : NXPathCtx_t;
 | 
						||
        fosPathname : pointer;
 | 
						||
        fosMode : NXMode_t;
 | 
						||
        fosOFlags : NXOFlags_t;
 | 
						||
        fosShareMode : NXShareMode_t;
 | 
						||
        fosExtentSize : size_t;
 | 
						||
        reserved1 : dword;
 | 
						||
        fosDelegType : NXDelegType_t;
 | 
						||
        fosDataStream : NXDataStream_t;
 | 
						||
        fosUpCallFunc : NXFsUpCall_t;
 | 
						||
        fosResult : record
 | 
						||
             actionTaken : NXMode_t;
 | 
						||
             delegType : NXDelegType_t;
 | 
						||
             fid : NXFid_t;
 | 
						||
             accessTime : NXTime_t;
 | 
						||
             modifyTime : NXTime_t;
 | 
						||
             creationTime : NXTime_t;
 | 
						||
             archiveTime : NXTime_t;
 | 
						||
             length : NXOffset_t;
 | 
						||
          end;
 | 
						||
        reserved2 : dword;
 | 
						||
        reserved3 : dword;
 | 
						||
     end;
 | 
						||
   Pfsio = ^fsio;
 | 
						||
   NXIoComp_t = function (ioInfo:Pfsio):longint;cdecl;
 | 
						||
{ length of I/O buffer                       }
 | 
						||
{ pointer to data for I/O operation          }
 | 
						||
{ application-maintained reference           }
 | 
						||
 | 
						||
   PNXIoVec_t = ^NXIoVec_t;
 | 
						||
   NXIoVec_t = record
 | 
						||
        ivLength : size_t;
 | 
						||
        reserved : dword;
 | 
						||
        ivBuffer : pointer;
 | 
						||
        ivOpRef : pointer;
 | 
						||
     end;
 | 
						||
{ I/O objects supported...  }
 | 
						||
{ For Internal Use Only                }
 | 
						||
 | 
						||
   PNXLockRange_t = ^NXLockRange_t;
 | 
						||
   NXLockRange_t =  Longint;
 | 
						||
 | 
						||
 | 
						||
{ application-maintained reference           }
 | 
						||
{ file, FIFO, console, device, etc. handle   }
 | 
						||
{ I/O flags and hints                        }
 | 
						||
{ hint as to remaining number of bytes      }
 | 
						||
{ from NXFileRangeLockEx()                   }
 | 
						||
{ completion function if asynchronous        }
 | 
						||
{ only for non-file system operations        }
 | 
						||
{ offset at which to begin I/O               }
 | 
						||
{ number of records in vector                }
 | 
						||
{ IN/OUT: I/O operation record vector        }
 | 
						||
{ OUT: asynchronous transaction ID           }
 | 
						||
{ OUT: for asynchronous use                  }
 | 
						||
{ OUT: total bytes written or read           }
 | 
						||
 | 
						||
   fsio = record
 | 
						||
        ioAppRef : pointer;
 | 
						||
        ioHandle : NXHandle_t;
 | 
						||
        ioFlags : dword;
 | 
						||
        reserved : dword;
 | 
						||
        ioRemainingHint : NXOffset_t;
 | 
						||
        ioLockToken : NXLockToken_t;
 | 
						||
        ioCompletion : NXIoComp_t;
 | 
						||
        ioTimeOut : dword;
 | 
						||
        ioOffset : NXOffset_t;
 | 
						||
        ioVecCount : longint;
 | 
						||
        ioVector : PNXIoVec_t;
 | 
						||
        ioAsyncID : NXAsyncId_t;
 | 
						||
        ioStatus : longint;
 | 
						||
        ioProcessed : NXOffset_t;
 | 
						||
     end;
 | 
						||
   NXIo_t = fsio;
 | 
						||
   PNXIo_t = ^NXIo_t;
 | 
						||
{ in file (0-based)                         }
 | 
						||
{ magnitude of range                        }
 | 
						||
{ NX_LOCK_RANGE_FORWARD, ...                }
 | 
						||
{ usually 0; reserved to server apps        }
 | 
						||
{ in use only with NX_RANGE_LOCK_NETWARE    }
 | 
						||
 | 
						||
   PNXFileLockDesc_t = ^NXFileLockDesc_t;
 | 
						||
   NXFileLockDesc_t = record
 | 
						||
        ldOffset : NXOffset_t;
 | 
						||
        ldLength : NXOffset_t;
 | 
						||
        ldDirection : NXLockRange_t;
 | 
						||
        ldToken : NXLockToken_t;
 | 
						||
        ldHandle : NXHandle_t;
 | 
						||
        reserved : dword;
 | 
						||
     end;
 | 
						||
 | 
						||
   NXLockUpCall_t = procedure (fileHandle:NXHandle_t; appRef:pointer; lockDesc:PNXFileLockDesc_t);cdecl;
 | 
						||
{ application-maintained reference          }
 | 
						||
{ handle on which file was opened           }
 | 
						||
{ mandatory (TRUE) or merely advisory?     }
 | 
						||
{ NX_RANGE_LOCK_EXCL, etc.                  }
 | 
						||
{ maximum time to wait for lock             }
 | 
						||
{ call-back by file system to release lock  }
 | 
						||
{ info. on existing conflicting lock  }
 | 
						||
{ info. for VM holding conflicting lock }
 | 
						||
{ count of locks described in array         }
 | 
						||
{ array of lock descriptions                }
 | 
						||
 | 
						||
   PNXFileRangeLockSpec_t = ^NXFileRangeLockSpec_t;
 | 
						||
   NXFileRangeLockSpec_t = record
 | 
						||
        rlsAppRef : pointer;
 | 
						||
        rlsHandle : NXHandle_t;
 | 
						||
        rlsMandatory : NXBool_t;
 | 
						||
        rlsFlags : dword;
 | 
						||
        rlsTimeOut : dword;
 | 
						||
        rlsUpCall : NXLockUpCall_t;
 | 
						||
        rlsConflictLockVm : NXVmId_t;
 | 
						||
        rlsConflictLock : NXFileLockDesc_t;
 | 
						||
        rlsVecCount : longint;
 | 
						||
        rlsDescVec : PNXFileLockDesc_t;
 | 
						||
     end;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
{ File I/O...  }
 | 
						||
 | 
						||
function NXClose(handle:NXHandle_t):longint;cdecl;external libc_nlm name 'NXClose';
 | 
						||
function NXFileAllocExtentWithHandle(fileHandle:NXHandle_t; offset:NXOffset_t; length:NXOffset_t; flags:dword):longint;cdecl;external libc_nlm name 'NXFileAllocExtentWithHandle';
 | 
						||
function NXFileCancelIo(async_id:NXAsyncId_t; wait:NXBool_t; status:PNXBool_t):longint;cdecl;external libc_nlm name 'NXFileCancelIo';
 | 
						||
function NXFileFlushBuffers(fileHandle:NXHandle_t; flags:dword; offset:NXOffset_t; length:NXOffset_t):longint;cdecl;external libc_nlm name 'NXFileFlushBuffers';
 | 
						||
 | 
						||
function NXFileGetLength(pathCtx:NXPathCtx_t; pathname:pointer; length:PNXOffset_t):longint;cdecl;external libc_nlm name 'NXFileGetLength';
 | 
						||
function NXFileGetLengthWithHandle(fileHandle:NXHandle_t; length:PNXOffset_t):longint;cdecl;external libc_nlm name 'NXFileGetLengthWithHandle';
 | 
						||
 | 
						||
function NXFileOpen(pathCtx:NXPathCtx_t; pathname:pointer; mode:NXMode_t; fileHandle:PNXHandle_t):longint;cdecl;external libc_nlm name 'NXFileOpen';
 | 
						||
function NXFileOpenEx(openSpec:PNXFileOpenSpec_t; fileHandle:PNXHandle_t):longint;cdecl;external libc_nlm name 'NXFileOpenEx';
 | 
						||
function NXFileRangeLock(fileHandle:NXHandle_t; flags:dword; offset:NXOffset_t; length:NXSOffset_t):longint;cdecl;external libc_nlm name 'NXFileRangeLock';
 | 
						||
function NXFileRangeLockEx(lockSpec:NXFileRangeLockSpec_t):longint;cdecl;external libc_nlm name 'NXFileRangeLockEx';
 | 
						||
function NXFileRangeUnlock(fileHandle:NXHandle_t; flags:dword; offset:NXOffset_t; length:NXSOffset_t):longint;cdecl;external libc_nlm name 'NXFileRangeUnlock';
 | 
						||
function NXFileRangeUnlockEx(lockSpec:NXFileRangeLockSpec_t):longint;cdecl;external libc_nlm name 'NXFileRangeUnlockEx';
 | 
						||
function NXFileRemoveWithHandle(handle:NXHandle_t):longint;cdecl;external libc_nlm name 'NXFileRemoveWithHandle';
 | 
						||
 | 
						||
function NXFileRenameWithHandle(fileHandle:NXHandle_t; targetPathCtx:NXPathCtx_t; newname:pointer; overwrite:NXBool_t):longint;cdecl;external libc_nlm name 'NXFileRenameWithHandle';
 | 
						||
function NXFileSetLength(pathCtx:NXPathCtx_t; pathname:pointer; length:NXOffset_t; flags:dword):longint;cdecl;external libc_nlm name 'NXFileSetLength';
 | 
						||
function NXFileSetLengthWithHandle(fileHandle:NXHandle_t; length:NXOffset_t; flags:dword):longint;cdecl;external libc_nlm name 'NXFileSetLengthWithHandle';
 | 
						||
function NXRead(handle:NXHandle_t; offset:NXOffset_t; length:size_t; address:pointer; flags:dword;
 | 
						||
           bytesRead:Psize_t):longint;cdecl;external libc_nlm name 'NXRead';
 | 
						||
function NXReadEx(ioInfo:PNXIo_t; ioAsyncId:PNXAsyncId_t):longint;cdecl;external libc_nlm name 'NXReadEx';
 | 
						||
 | 
						||
function NXRemove(pathCtx:NXPathCtx_t; pathname:pointer):longint;cdecl;external libc_nlm name 'NXRemove';
 | 
						||
 | 
						||
 | 
						||
function NXRename(sourcePathCtx:NXPathCtx_t; oldname:pointer; targetPathCtx:NXPathCtx_t; newname:pointer; overwrite:NXBool_t):longint;cdecl;external libc_nlm name 'NXRename';
 | 
						||
 | 
						||
function NXWrite(handle:NXHandle_t; offset:NXOffset_t; length:size_t; address:pointer; flags:dword;
 | 
						||
           bytesWritten:Psize_t):longint;cdecl;external libc_nlm name 'NXWrite';
 | 
						||
function NXWriteEx(ioInfo:PNXIo_t; ioAsyncId:PNXAsyncId_t):longint;cdecl;external libc_nlm name 'NXWriteEx';
 | 
						||
{ Additional I/O (including FIFOs, devices, etc.)...  }
 | 
						||
 | 
						||
function NXDeviceOpen(pathCtx:NXPathCtx_t; name:pointer; mode:NXMode_t; shareMode:NXShareMode_t; flags:dword;
 | 
						||
           ioBlockSize:Psize_t; deviceHandle:PNXHandle_t):longint;cdecl;external libc_nlm name 'NXDeviceOpen';
 | 
						||
 | 
						||
function NXFifoOpen(pathCtx:NXPathCtx_t; pathname:pointer; mode:NXMode_t; fifoSize:size_t; fifoHandle:PNXHandle_t):longint;cdecl;external libc_nlm name 'NXFifoOpen';
 | 
						||
function NXIoSetBlockingState(handle:NXHandle_t; blocking:NXBool_t):longint;cdecl;external libc_nlm name 'NXIoSetBlockingState';
 | 
						||
function NXIoGetOpenMode(handle:NXHandle_t; mode:PNXMode_t):longint;cdecl;external libc_nlm name 'NXIoGetOpenMode';
 | 
						||
 | 
						||
 | 
						||
function NXLinkCreate(srcPathCtx:NXPathCtx_t; source:pointer; tgtPathCtx:PNXPathCtx_t; target:pointer; _type:longint):longint;cdecl;external libc_nlm name 'NXLinkCreate';
 | 
						||
 | 
						||
 | 
						||
function NXLinkCreateSymbolic(srcPathCtx:NXPathCtx_t; linkname:pointer; target:pointer):longint;cdecl;external libc_nlm name 'NXLinkCreateSymbolic';
 | 
						||
{ macro for useful alias...  }
 | 
						||
{ basic change bits for NXSetAttr()...  }
 | 
						||
{ flag values for NXDirAttr_t and NXDeEnum_t, etc...  }
 | 
						||
{ deEffectiveRights bits  }
 | 
						||
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
  { basic change bits for NXSetAttr()...  }
 | 
						||
 | 
						||
  const
 | 
						||
     NX_DIRENT_EFFECTIVERIGHTS = $0000000000000001;
 | 
						||
     NX_DIRENT_FLAGS = $0000000000000002;
 | 
						||
     NX_DIRENT_OWNERID = $0000000000000004;
 | 
						||
     NX_DIRENT_CREATETIME = $0000000000000008;
 | 
						||
     NX_DIRENT_CHANGETIME = $0000000000000010;
 | 
						||
     NX_DIRENT_ACCESSTIME = $0000000000000020;
 | 
						||
     NX_DIRENT_MODIFYTIME = $0000000000000040;
 | 
						||
     NX_DIRENT_ATTRIBUTES = $0000000000000080;
 | 
						||
     NX_DIRENT_RESERVED1 = $0000000000000100;
 | 
						||
     NX_DIRENT_RESERVED2 = $0000000000000200;
 | 
						||
     NX_DIRENT_RESERVED3 = $0000000000000400;
 | 
						||
     NX_DIRENT_RESERVED4 = $0000000000000800;
 | 
						||
  { flag values for NXDirAttr_t and NXDeEnum_t, etc...  }
 | 
						||
     NX_DEFLAGS_COMPRESSED = $00000001;
 | 
						||
     NX_DEFLAGS_ENCRYPTED = $00000002;
 | 
						||
     NX_DEFLAGS_TEMPORARY = $00000004;
 | 
						||
     NX_DEFLAGS_MIGRATED = $00000008;
 | 
						||
     NX_DEFLAGS_DELETED = $00000010;
 | 
						||
     NX_DEFLAGS_SPARSE = $00000020;
 | 
						||
  { deEffectiveRights bits  }
 | 
						||
     NX_READ_EXISTING_FILE = $00000001;
 | 
						||
     NX_WRITE_EXISTING_FILE = $00000002;
 | 
						||
     NX_CREATE_NEW_ENTRY = $00000008;
 | 
						||
     NX_DELETE_EXISTING_ENTRY = $00000010;
 | 
						||
     NX_CHANGE_ACCESS_CONTROL = $00000020;
 | 
						||
     NX_SEE_FILES = $00000040;
 | 
						||
     NX_MODIFY_ENTRY = $00000080;
 | 
						||
     NX_SUPERVISOR_PRIVILEGES = $00000100;
 | 
						||
     NX_ACCESS_RIGHTS_MASK = $000001FB;
 | 
						||
 | 
						||
 | 
						||
 | 
						||
type
 | 
						||
 | 
						||
   PNXChangeBits_t = ^NXChangeBits_t;
 | 
						||
   NXChangeBits_t = Tuint64;
 | 
						||
   TNXChangeBits = NXChangeBits_t;
 | 
						||
   PNXChangeBits = PNXChangeBits_t;
 | 
						||
{ pathname format (PNF) enumeration         }
 | 
						||
{ use PNF in effect at open                 }
 | 
						||
{ generic NKS pathname format               }
 | 
						||
{ DOS                                       }
 | 
						||
{ Macintosh/AFP 3.0                         }
 | 
						||
{ UNIX/NFS                                  }
 | 
						||
{ Windows NT, OS/2                          }
 | 
						||
{ Novell Storage Services (NSS)             }
 | 
						||
 | 
						||
   PNXPathFormat_t = ^NXPathFormat_t;
 | 
						||
   NXPathFormat_t =  Longint;
 | 
						||
   Const
 | 
						||
     NX_PNF_DEFAULT = 2147483647;
 | 
						||
     NX_PNF_NKS = 0;
 | 
						||
     NX_PNF_DOS = 1;
 | 
						||
     NX_PNF_MAC = 2;
 | 
						||
     NX_PNF_UNIX = 4;
 | 
						||
     NX_PNF_WIN = 5;
 | 
						||
     NX_PNF_NSS = 7;
 | 
						||
 | 
						||
{ basic attribute information              }
 | 
						||
{ filename                                 }
 | 
						||
{ extended file system information         }
 | 
						||
type
 | 
						||
 | 
						||
   PNXDeLevel_t = ^NXDeLevel_t;
 | 
						||
   NXDeLevel_t =  Longint;
 | 
						||
   Const
 | 
						||
     NX_DELEVEL_BASIC = $7FFFFFFF;
 | 
						||
     NX_DELEVEL_NAME_ONLY = $80000000;
 | 
						||
     NX_DELEVEL_EXTENDED = $80000001;
 | 
						||
 | 
						||
{ marking place in directory enumeration    }
 | 
						||
{ all private to implementation             }
 | 
						||
type
 | 
						||
 | 
						||
   PNXDirMark_t = ^NXDirMark_t;
 | 
						||
   NXDirMark_t = record
 | 
						||
        mark : array[0..43] of byte;
 | 
						||
        pathCtx : pointer;
 | 
						||
        entryInfo : pointer;
 | 
						||
     end;
 | 
						||
{ structure size is 52 bytes on NetWare     }
 | 
						||
{ information common to all PNF structures  }
 | 
						||
{ total length of entry including any       }
 | 
						||
{ type of entry (file, FIFO, etc.)          }
 | 
						||
{ file system yielding information          }
 | 
						||
{ level specified in NXDirEnumStart()       }
 | 
						||
 | 
						||
   PNXDeHeader_t = ^NXDeHeader_t;
 | 
						||
   NXDeHeader_t = record
 | 
						||
        length     : size_t;
 | 
						||
        objectType : NXObjType_t;
 | 
						||
        pathFormat : NXPathFormat_t;
 | 
						||
        infoLevel  : NXDeLevel_t;
 | 
						||
     end;
 | 
						||
   PNXDeHeader = PNXDeHeader_t;
 | 
						||
   TNDDeHeader = NXDeHeader_t;
 | 
						||
{ common information                        }
 | 
						||
{                                           }
 | 
						||
{ length of file                            }
 | 
						||
{ compressed, sparse, encrypted, etc.       }
 | 
						||
{ timestamp of last attribute change        }
 | 
						||
{ timestamp of last write+attribute change  }
 | 
						||
{ timestamp of last write                   }
 | 
						||
{ preferred I/O blocksize                   }
 | 
						||
 | 
						||
   PNXDirAttr_t = ^NXDirAttr_t;
 | 
						||
   NXDirAttr_t = record
 | 
						||
        deHeader : NXDeHeader_t;
 | 
						||
        deFid : NXFid_t;
 | 
						||
        deEffectiveRights : dword;
 | 
						||
        deFileSize : NXOffset_t;
 | 
						||
        deFlags : Tuint64;
 | 
						||
        deAttrChangeTime : NXTime_t;
 | 
						||
        deAccessTime : NXTime_t;
 | 
						||
        deModifyTime : NXTime_t;
 | 
						||
        deIoBlockSize : size_t;
 | 
						||
     end;
 | 
						||
{ plus name                                 }
 | 
						||
 | 
						||
   PNXDirAttrWithName_t = ^NXDirAttrWithName_t;
 | 
						||
   NXDirAttrWithName_t = record
 | 
						||
        deHeader : NXDeHeader_t;
 | 
						||
        deName : pointer;
 | 
						||
     end;
 | 
						||
{ information fields                        }
 | 
						||
{ NXDirEnum- navigational mark              }
 | 
						||
 | 
						||
   PNXDirEnum_t = ^NXDirEnum_t;
 | 
						||
   NXDirEnum_t = record
 | 
						||
        deDirAttr : NXDirAttr_t;
 | 
						||
        deDirMark : NXDirMark_t;
 | 
						||
        deName : pointer;
 | 
						||
     end;
 | 
						||
{ generic NKS (NX_PNF_NKS) attributes       }
 | 
						||
 | 
						||
   PNXDirAttrNks_t = ^NXDirAttrNks_t;
 | 
						||
   NXDirAttrNks_t = record
 | 
						||
        xdeHeader : NXDeHeader_t;
 | 
						||
        xdeFid : NXFid_t;
 | 
						||
        xdeEffectiveRights : dword;
 | 
						||
        xdeFileSize : NXOffset_t;
 | 
						||
        xdeFlags : Tuint64;
 | 
						||
        xdeChangeTime : NXTime_t;
 | 
						||
        xdeAccessTime : NXTime_t;
 | 
						||
        xdeModifyTime : NXTime_t;
 | 
						||
        xdeCreateTime : NXTime_t;
 | 
						||
        xdeOwnerId : NXGuid_t;
 | 
						||
     end;
 | 
						||
{ generic NKS (NX_PNF_NKS) information...   }
 | 
						||
{ ...including name                         }
 | 
						||
 | 
						||
   PNXDirEnumNks_t = ^NXDirEnumNks_t;
 | 
						||
   NXDirEnumNks_t = record
 | 
						||
        deNksDirAttr : NXDirAttrNks_t;
 | 
						||
        deDirMark : NXDirMark_t;
 | 
						||
        deName : pointer;
 | 
						||
     end;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
{ Path context...  }
 | 
						||
 | 
						||
function NXFreePathContext(pathCtx:NXPathCtx_t):longint;cdecl;external libc_nlm name 'NXFreePathContext';
 | 
						||
 | 
						||
function NXCreatePathContext(pathCtx:NXPathCtx_t; pathname:pchar; format:NXPathFormat_t; securityBadge:pointer; newPathCtx:PNXPathCtx_t):longint;cdecl;external libc_nlm name 'NXCreatePathContext';
 | 
						||
function NXCreatePathContext(pathCtx:NXPathCtx_t; pathname:pchar; format:NXPathFormat_t; securityBadge:pointer; var newPathCtx:NXPathCtx_t):longint;cdecl;external libc_nlm name 'NXCreatePathContext';
 | 
						||
function NXCreatePathContextWithFid(fid:NXFid_t; format:NXPathFormat_t; securityBadge:pointer; newPathCtx:PNXPathCtx_t):longint;cdecl;external libc_nlm name 'NXCreatePathContextWithFid';
 | 
						||
{ Directory I/O...  }
 | 
						||
 | 
						||
function NXDirCreate(pathCtx:NXPathCtx_t; pathname:pointer; reserved:pointer; newPathCtx:PNXPathCtx_t):longint;cdecl;external libc_nlm name 'NXDirCreate';
 | 
						||
 | 
						||
function NXDirRemove(pathCtx:NXPathCtx_t; pathname:pointer):longint;cdecl;external libc_nlm name 'NXDirRemove';
 | 
						||
{ Directory entry attributes...  }
 | 
						||
 | 
						||
function NXGetAttr(pathCtx:NXPathCtx_t; pathname:pointer; level:NXDeLevel_t; buffer:pointer; length:size_t;
 | 
						||
           flags:dword):longint;cdecl;external libc_nlm name 'NXGetAttr';
 | 
						||
function NXGetAttrWithHandle(handle:NXHandle_t; format:NXPathFormat_t; level:NXDeLevel_t; buffer:pointer; length:size_t;
 | 
						||
           flags:dword):longint;cdecl;external libc_nlm name 'NXGetAttrWithHandle';
 | 
						||
 | 
						||
 | 
						||
function NXSetAttr(pathCtx:NXPathCtx_t; pathname:pointer; level:NXDeLevel_t; buffer:pointer; changeBits:NXChangeBits_t):longint;cdecl;external libc_nlm name 'NXSetAttr';
 | 
						||
 | 
						||
function NXSetAttrWithHandle(handle:NXHandle_t; format:NXPathFormat_t; level:NXDeLevel_t; buffer:pointer; changeBits:NXChangeBits_t):longint;cdecl;external libc_nlm name 'NXSetAttrWithHandle';
 | 
						||
{ Subdirectory enumeration...  }
 | 
						||
function NXDirMarkInit(handle:NXHandle_t; dirMark:PNXDirMark_t):longint;cdecl;external libc_nlm name 'NXDirMarkInit';
 | 
						||
function NXDirMarkInit(handle:NXHandle_t; var dirMark:NXDirMark_t):longint;cdecl;external libc_nlm name 'NXDirMarkInit';
 | 
						||
function NXDirEnumEnd(handle:NXHandle_t):longint;cdecl;external libc_nlm name 'NXDirEnumEnd';
 | 
						||
function NXDirEnumGetEntries(handle:NXHandle_t; start:PNXDirMark_t; buffer:pointer; length:size_t; entriesReturned:Psize_t;
 | 
						||
           next:PNXDirMark_t; sequenceGuarantee:PNXBool_t):longint;cdecl;external libc_nlm name 'NXDirEnumGetEntries';
 | 
						||
 | 
						||
function NXDirEnumStart(pathCtx:NXPathCtx_t; pathname:pchar; level:NXDeLevel_t; handle:PNXHandle_t):longint;cdecl;external libc_nlm name 'NXDirEnumStart';
 | 
						||
function NXDirEnumStart(pathCtx:NXPathCtx_t; pathname:pchar; level:NXDeLevel_t; var handle:NXHandle_t):longint;cdecl;external libc_nlm name 'NXDirEnumStart';
 | 
						||
 | 
						||
 | 
						||
// nks/doswin.h
 | 
						||
// wchar.h
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
type
 | 
						||
 | 
						||
   Pwint_t = ^wint_t;
 | 
						||
   wint_t = longint;
 | 
						||
 | 
						||
   Pwuchar_t = ^wuchar_t;
 | 
						||
   wuchar_t = word;
 | 
						||
 | 
						||
   Pmbstate_t = ^mbstate_t;
 | 
						||
   mbstate_t = longint;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
 | 
						||
 | 
						||
function mbsrtowcs(__restrict:Pwchar_t; __restrict1:PPchar; _para3:size_t; __restrict2:Pmbstate_t):size_t;cdecl;external libc_nlm name 'mbsrtowcs';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function fwprintf(__restrict:P_iobuf; __restrict1:Pwchar_t; args:array of const):longint;cdecl;external libc_nlm name 'fwprintf';
 | 
						||
{$endif}
 | 
						||
function fwprintf(__restrict:P_iobuf; __restrict1:Pwchar_t):longint;cdecl;external libc_nlm name 'fwprintf';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function fwscanf(__restrict:P_iobuf; __restrict1:Pwchar_t; args:array of const):longint;cdecl;external libc_nlm name 'fwscanf';
 | 
						||
{$endif}
 | 
						||
function fwscanf(__restrict:P_iobuf; __restrict1:Pwchar_t):longint;cdecl;external libc_nlm name 'fwscanf';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function swprintf(__restrict:Pwchar_t; _para2:size_t; __restrict1:Pwchar_t; args:array of const):longint;cdecl;external libc_nlm name 'swprintf';
 | 
						||
{$endif}
 | 
						||
function swprintf(__restrict:Pwchar_t; _para2:size_t; __restrict1:Pwchar_t):longint;cdecl;external libc_nlm name 'swprintf';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function swscanf(__restrict:Pwchar_t; __restrict1:Pwchar_t; args:array of const):longint;cdecl;external libc_nlm name 'swscanf';
 | 
						||
{$endif}
 | 
						||
function swscanf(__restrict:Pwchar_t; __restrict1:Pwchar_t):longint;cdecl;external libc_nlm name 'swscanf';
 | 
						||
 | 
						||
function vfwprintf(__restrict:P_iobuf; __restrict1:Pwchar_t; _para3:va_list):longint;cdecl;external libc_nlm name 'vfwprintf';
 | 
						||
 | 
						||
function vfwscanf(_para1:P_iobuf; _para2:Pwchar_t; _para3:va_list):longint;cdecl;external libc_nlm name 'vfwscanf';
 | 
						||
 | 
						||
function vwscanf(_para1:Pwchar_t; _para2:va_list):longint;cdecl;external libc_nlm name 'vwscanf';
 | 
						||
function vswscanf(_para1:Pwchar_t; _para2:Pwchar_t; _para3:va_list):longint;cdecl;external libc_nlm name 'vswscanf';
 | 
						||
function wcrtomb(__restrict:Pchar; _para2:wchar_t; __restrict1:Pmbstate_t):size_t;cdecl;external libc_nlm name 'wcrtomb';
 | 
						||
function wcscat(__restrict:Pwchar_t; __restrict1:Pwchar_t):Pwchar_t;cdecl;external libc_nlm name 'wcscat';
 | 
						||
function wcschr(_para1:Pwchar_t; _para2:wchar_t):Pwchar_t;cdecl;external libc_nlm name 'wcschr';
 | 
						||
function wcscmp(_para1:Pwchar_t; _para2:Pwchar_t):longint;cdecl;external libc_nlm name 'wcscmp';
 | 
						||
function wcscoll(_para1:Pwchar_t; _para2:Pwchar_t):longint;cdecl;external libc_nlm name 'wcscoll';
 | 
						||
function wcscpy(__restrict:Pwchar_t; __restrict1:Pwchar_t):Pwchar_t;cdecl;external libc_nlm name 'wcscpy';
 | 
						||
function wcscspn(_para1:Pwchar_t; _para2:Pwchar_t):size_t;cdecl;external libc_nlm name 'wcscspn';
 | 
						||
function wcsftime(__restrict:Pwchar_t; _para2:size_t; __restrict1:Pwchar_t; __restrict2:Ptm):size_t;cdecl;external libc_nlm name 'wcsftime';
 | 
						||
function wcslen(_para1:Pwchar_t):size_t;cdecl;external libc_nlm name 'wcslen';
 | 
						||
function wcsncat(__restrict:Pwchar_t; __restrict1:Pwchar_t; _para3:size_t):Pwchar_t;cdecl;external libc_nlm name 'wcsncat';
 | 
						||
function wcsncmp(_para1:Pwchar_t; _para2:Pwchar_t; _para3:size_t):longint;cdecl;external libc_nlm name 'wcsncmp';
 | 
						||
function wcsncpy(__restrict:Pwchar_t; __restrict1:Pwchar_t; _para3:size_t):Pwchar_t;cdecl;external libc_nlm name 'wcsncpy';
 | 
						||
function wcspbrk(_para1:Pwchar_t; _para2:Pwchar_t):Pwchar_t;cdecl;external libc_nlm name 'wcspbrk';
 | 
						||
function wcsrchr(_para1:Pwchar_t; _para2:wchar_t):Pwchar_t;cdecl;external libc_nlm name 'wcsrchr';
 | 
						||
function wcsrtombs(__restrict:Pchar; __restrict1:PPwchar_t; _para3:size_t; __restrict2:Pmbstate_t):size_t;cdecl;external libc_nlm name 'wcsrtombs';
 | 
						||
function wcsspn(_para1:Pwchar_t; _para2:Pwchar_t):size_t;cdecl;external libc_nlm name 'wcsspn';
 | 
						||
function wcsstr(_para1:Pwchar_t; _para2:Pwchar_t):Pwchar_t;cdecl;external libc_nlm name 'wcsstr';
 | 
						||
function wcstod(__restrict:Pwchar_t; __restrict1:PPwchar_t):double;cdecl;external libc_nlm name 'wcstod';
 | 
						||
function wcstof(__restrict:Pwchar_t; __restrict1:PPwchar_t):double;cdecl;external libc_nlm name 'wcstof';
 | 
						||
function wcstok(__restrict:Pwchar_t; __restrict1:Pwchar_t; __restrict2:PPwchar_t):Pwchar_t;cdecl;external libc_nlm name 'wcstok';
 | 
						||
function wcstok_r(__restrict:Pwchar_t; __restrict1:Pwchar_t; __restrict2:PPwchar_t):Pwchar_t;cdecl;external libc_nlm name 'wcstok_r';
 | 
						||
function wcstol(__restrict:Pwchar_t; __restrict1:PPwchar_t; xx:longint):longint;cdecl;external libc_nlm name 'wcstol';
 | 
						||
 | 
						||
// long double wcstold(const wchar_t * __restrict1, wchar_t ** __restrict);
 | 
						||
// long double wcstold(const wchar_t * __restrict1, wchar_t ** __restrict);
 | 
						||
 | 
						||
function wcstoll(__restrict:Pwchar_t; __restrict1:PPwchar_t; xx:longint):Tint64;cdecl;external libc_nlm name 'wcstoll';
 | 
						||
function wcstoul(__restrict:Pwchar_t; __restrict1:PPwchar_t; _para3:longint):dword;cdecl;external libc_nlm name 'wcstoul';
 | 
						||
function wcstoull(__restrict:Pwchar_t; __restrict1:PPwchar_t; _para3:longint):Tuint64;cdecl;external libc_nlm name 'wcstoull';
 | 
						||
function wcsxfrm(__restrict:Pwchar_t; __restrict1:Pwchar_t; _para3:size_t):size_t;cdecl;external libc_nlm name 'wcsxfrm';
 | 
						||
function wctob(_para1:wint_t):longint;cdecl;external libc_nlm name 'wctob';
 | 
						||
function wmemchr(ws:Pwchar_t; wc:wchar_t; n:size_t):Pwchar_t;cdecl;external libc_nlm name 'wmemchr';
 | 
						||
function wmemcmp(__restrict:Pwchar_t; __restrict1:Pwchar_t; _para3:size_t):longint;cdecl;external libc_nlm name 'wmemcmp';
 | 
						||
function wmemcpy(__restrict:Pwchar_t; __restrict1:Pwchar_t; _para3:size_t):Pwchar_t;cdecl;external libc_nlm name 'wmemcpy';
 | 
						||
function wmemmove(_para1:Pwchar_t; _para2:Pwchar_t; _para3:size_t):Pwchar_t;cdecl;external libc_nlm name 'wmemmove';
 | 
						||
function wmemset(ws:Pwchar_t; wc:wchar_t; n:size_t):Pwchar_t;cdecl;external libc_nlm name 'wmemset';
 | 
						||
function putwc(_para1:wchar_t; _para2:P_iobuf):wint_t;cdecl;external libc_nlm name 'putwc';
 | 
						||
function putwchar(_para1:wchar_t):wint_t;cdecl;external libc_nlm name 'putwchar';
 | 
						||
function fwide(_para1:P_iobuf; _para2:longint):longint;cdecl;external libc_nlm name 'fwide';
 | 
						||
function fputwc(_para1:wchar_t; _para2:P_iobuf):wint_t;cdecl;external libc_nlm name 'fputwc';
 | 
						||
function fputws(__restrict:Pwchar_t; __restrict1:P_iobuf):longint;cdecl;external libc_nlm name 'fputws';
 | 
						||
function fgetwc(_para1:P_iobuf):wint_t;cdecl;external libc_nlm name 'fgetwc';
 | 
						||
function fgetws(__restrict:Pwchar_t; _para2:longint; __restrict1:P_iobuf):Pwchar_t;cdecl;external libc_nlm name 'fgetws';
 | 
						||
function getwc(_para1:P_iobuf):wint_t;cdecl;external libc_nlm name 'getwc';
 | 
						||
function getwchar:wint_t;cdecl;external libc_nlm name 'getwchar';
 | 
						||
function ungetwc(_para1:wint_t; __restrict:P_iobuf):wint_t;cdecl;external libc_nlm name 'ungetwc';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function wprintf(__restrict:Pwchar_t; args:array of const):longint;cdecl;external libc_nlm name 'wprintf';
 | 
						||
{$endif}
 | 
						||
function wprintf(__restrict:Pwchar_t):longint;cdecl;external libc_nlm name 'wprintf';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function wscanf(__restrict:Pwchar_t; args:array of const):longint;cdecl;external libc_nlm name 'wscanf';
 | 
						||
{$endif}
 | 
						||
function wscanf(__restrict:Pwchar_t):longint;cdecl;external libc_nlm name 'wscanf';
 | 
						||
function vwprintf(__restrict:Pwchar_t; _para2:va_list):longint;cdecl;external libc_nlm name 'vwprintf';
 | 
						||
function vswprintf(__restrict:Pwchar_t; _para2:size_t; __restrict1:Pwchar_t; _para4:va_list):longint;cdecl;external libc_nlm name 'vswprintf';
 | 
						||
function wcscasecmp(_para1:Pwchar_t; _para2:Pwchar_t):longint;cdecl;external libc_nlm name 'wcscasecmp';
 | 
						||
function wcserror(_para1:longint):Pwchar_t;cdecl;external libc_nlm name 'wcserror';
 | 
						||
function wcsicmp(_para1:Pwchar_t; _para2:Pwchar_t):longint;cdecl;external libc_nlm name 'wcsicmp';
 | 
						||
function wcsindex(_para1:Pwchar_t; _para2:Pwchar_t):Pwchar_t;cdecl;external libc_nlm name 'wcsindex';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function wcslist(_para1:Pwchar_t; _para2:Pwchar_t; args:array of const):Pwchar_t;cdecl;external libc_nlm name 'wcslist';
 | 
						||
{$endif}
 | 
						||
function wcslist(_para1:Pwchar_t; _para2:Pwchar_t):Pwchar_t;cdecl;external libc_nlm name 'wcslist';
 | 
						||
function wcslwr(_para1:Pwchar_t):Pwchar_t;cdecl;external libc_nlm name 'wcslwr';
 | 
						||
function wcsmemcmp(__restrict:Pwchar_t; __restrict1:Pwchar_t; _para3:size_t):longint;cdecl;external libc_nlm name 'wcsmemcmp';
 | 
						||
function wcsmemcpy(__restrict:Pwchar_t; __restrict1:Pwchar_t; _para3:size_t):Pwchar_t;cdecl;external libc_nlm name 'wcsmemcpy';
 | 
						||
function wcsmemmove(_para1:Pwchar_t; _para2:Pwchar_t; _para3:size_t):Pwchar_t;cdecl;external libc_nlm name 'wcsmemmove';
 | 
						||
function wcsncasecmp(_para1:Pwchar_t; _para2:Pwchar_t; _para3:size_t):longint;cdecl;external libc_nlm name 'wcsncasecmp';
 | 
						||
function wcsnicmp(_para1:Pwchar_t; _para2:Pwchar_t; _para3:size_t):longint;cdecl;external libc_nlm name 'wcsnicmp';
 | 
						||
function wcsnset(_para1:Pwchar_t; _para2:longint; _para3:size_t):Pwchar_t;cdecl;external libc_nlm name 'wcsnset';
 | 
						||
function wcsrev(_para1:Pwchar_t):Pwchar_t;cdecl;external libc_nlm name 'wcsrev';
 | 
						||
function wcsrindex(_para1:Pwchar_t; _para2:size_t; _para3:longint):Pwchar_t;cdecl;external libc_nlm name 'wcsrindex';
 | 
						||
function wcsset(_para1:Pwchar_t; _para2:longint):Pwchar_t;cdecl;external libc_nlm name 'wcsset';
 | 
						||
function wcsupr(_para1:Pwchar_t):Pwchar_t;cdecl;external libc_nlm name 'wcsupr';
 | 
						||
procedure wungettok(__restrict:Pwchar_t; __restrict1:Pwchar_t; __restrict2:PPwchar_t);cdecl;external libc_nlm name 'wungettok';
 | 
						||
procedure wungettok_r(__restrict:Pwchar_t; __restrict1:Pwchar_t; __restrict2:PPwchar_t);cdecl;external libc_nlm name 'wungettok_r';
 | 
						||
function btowc(_para1:longint):wint_t;cdecl;external libc_nlm name 'btowc';
 | 
						||
function mbrlen(__restrict:Pchar; _para2:size_t; __restrict1:Pmbstate_t):longint;cdecl;external libc_nlm name 'mbrlen';
 | 
						||
function mbrtowc(__restrict:Pwchar_t; __restrict1:Pchar; _para3:size_t; __restrict2:Pmbstate_t):longint;cdecl;external libc_nlm name 'mbrtowc';
 | 
						||
function mbsinit(_para1:Pmbstate_t):longint;cdecl;external libc_nlm name 'mbsinit';
 | 
						||
function wcwidth(_para1:wchar_t):longint;cdecl;external libc_nlm name 'wcwidth';
 | 
						||
function wcswidth(_para1:Pwchar_t; _para2:size_t):longint;cdecl;external libc_nlm name 'wcswidth';
 | 
						||
{ macros that overcome implementation's function call overhead...  }
 | 
						||
{ attributes for NXDirAttrDos_t 'attrib' field...  }
 | 
						||
 | 
						||
 | 
						||
// fsio.h
 | 
						||
// netware.h
 | 
						||
  const
 | 
						||
     LD_MODULE_REENTRANT_BIT       = $00000001;
 | 
						||
     LD_MODULE_MULTIPLE_LOAD       = $00000002;       { multiple load            }
 | 
						||
     LD_SYNCHRONIZE_START          = $00000004;       { uses SynchronizeStart()  }
 | 
						||
     LD_PSEUDOPREEMPTION_BIT       = $00000008;       { accept preemption        }
 | 
						||
     LD_KERNEL_LOAD                = $00000010;       { ring 0-only              }
 | 
						||
     LD_DONT_SHARE_CODE            = $00000020;
 | 
						||
  { once dependencies gone   }
 | 
						||
     LD_AUTO_UNLOAD                = $00000040;
 | 
						||
     LD_HIDDEN_MODULE              = $00000080;
 | 
						||
     LD_DIGITALLY_SIGNED_FILE      = $00000100;
 | 
						||
     LD_PROTECTED_LOAD             = $00000200;       { protected address space  }
 | 
						||
     LD_SHARED_LIBRARY             = $00000400;
 | 
						||
     LD_RESTARTABLE                = $00000800;
 | 
						||
     LD_MODULE_HAS_MPK_STUBS       = $00001000;
 | 
						||
     LD_NOT_MULTIPROCESSOR_SAFE    = $00002000;
 | 
						||
     LD_PREEMPTABLE                = $00004000;
 | 
						||
     LD_HAS_SYSTEM_CALLS           = $00008000;
 | 
						||
     LD_VIRTUAL_MEMORY             = $00010000;
 | 
						||
     LD_ALL_EXPORTS_SAFE           = $00020000;
 | 
						||
     LD_RESERVED_1                 = $00040000;
 | 
						||
     LD_RESERVED_2                 = $00080000;
 | 
						||
     LD_RESERVED_3                 = $00100000;
 | 
						||
     LD_RESERVED_4                 = $00200000;
 | 
						||
     LD_WANT_POSIX_SEMANTICS       = $00400000;       { assume POSIX semantics   }
 | 
						||
     LD_UTF8_STRINGS               = $00800000;       { UTF-8 strings            }
 | 
						||
     LD_TSR                        = $01000000;       { terminate-stay-resident  }
 | 
						||
     LD_PROMPT_USER_AND_PASSWORD   = $02000000;       { with LD_WANT_POSIX...    }
 | 
						||
     LD_HOTSWAP_DRIVER             = $04000000;
 | 
						||
     LD_STARTUP_DEVICE_NLM_BIT     = $08000000;
 | 
						||
     LD_BOUND_NLM_BIT              = $10000000;
 | 
						||
     LD_DONT_UNLOAD_BIT            = $20000000;       { never unload             }
 | 
						||
     LD_MODULE_BEING_DEBUGGED      = $40000000;       { (debugging)              }
 | 
						||
     LD_MEMORY_ON_4K_BOUNDRIES_BIT = $80000000;       { (debugging)              }
 | 
						||
  { Note LD_UNICODE_STRINGS mostly obsolete--used only by NKS applications:   }
 | 
						||
     LD_UNICODE_STRINGS            = $02000000;       { Unicode strings          }
 | 
						||
 | 
						||
 | 
						||
type
 | 
						||
   Prtag_t = ^rtag_t;
 | 
						||
   rtag_t = pointer;
 | 
						||
   Trtag = rtag_t;
 | 
						||
   Prtag = Prtag_t;
 | 
						||
 | 
						||
   {this is from the lan driver sdk () cmsm.h
 | 
						||
 | 
						||
    but be warned, like the ScanScreen function available in
 | 
						||
    clib, there is no MP save way to access netware screens, a
 | 
						||
    comment from Russell Bateman (libc developer @ novell) dated
 | 
						||
    way to do screen discovery on NetWare. }
 | 
						||
 | 
						||
   PScreenStruct = ^TScreenStruct;
 | 
						||
   TScreenStruct = packed record
 | 
						||
     previousScreen       : PScreenStruct;
 | 
						||
     nextScreen           : PScreenStruct;
 | 
						||
     popUpOriginalScreen  : PScreenStruct;
 | 
						||
     CLIBScreenStructure  : pdword;
 | 
						||
     currentPalette       : byte;
 | 
						||
     _Filler1             : byte;
 | 
						||
     popUpCount           : byte;
 | 
						||
     _Filler2             : byte;
 | 
						||
     screenList           : byte;
 | 
						||
     _Filler3             : byte;
 | 
						||
     activeCount          : byte;
 | 
						||
     _Filler4             : byte;
 | 
						||
     resourceTag          : Prtag_t;
 | 
						||
     screenName           : pchar;
 | 
						||
     screenMemory         : pointer;
 | 
						||
     flags                : dword;
 | 
						||
     state                : dword;
 | 
						||
     outputCursorPosition : word;
 | 
						||
     inputCursorPosition  : word;
 | 
						||
   end;
 | 
						||
 | 
						||
   Pscr_t = ^scr_t;
 | 
						||
   scr_t = PScreenStruct;
 | 
						||
   TScr = scr_t;
 | 
						||
   PScr = Pscr_t;
 | 
						||
 | 
						||
// event.h
 | 
						||
// screen.h
 | 
						||
 | 
						||
  const
 | 
						||
     MAX_SCREEN_STRING_LEN = 255;
 | 
						||
  { screen mode flags...  }
 | 
						||
     SCR_NO_MODE           = $00000000;
 | 
						||
     SCR_AUTOCLOSE_ON_EXIT = $00000001;   // default
 | 
						||
     SCR_COLOR_ATTRS       = $00000002;
 | 
						||
  { key types...  }
 | 
						||
     NORMAL_KEY        = $00;
 | 
						||
     FUNCTION_KEY      = $01;
 | 
						||
     ENTER_KEY         = $02;
 | 
						||
     ESCAPE_KEY        = $03;
 | 
						||
     BACKSPACE_KEY     = $04;
 | 
						||
     DELETE_KEY        = $05;
 | 
						||
     INSERT_KEY        = $06;
 | 
						||
     CURSOR_UP_KEY     = $07;
 | 
						||
     CURSOR_DOWN_KEY   = $08;
 | 
						||
     CURSOR_RIGHT_KEY  = $09;
 | 
						||
     CURSOR_LEFT_KEY   = $0A;
 | 
						||
     CURSOR_HOME_KEY   = $0B;
 | 
						||
     CURSOR_END_KEY    = $0C;
 | 
						||
     CURSOR_PUP_KEY    = $0D;
 | 
						||
     CURSOR_PDOWN_KEY  = $0E;
 | 
						||
  { some name equivalents...  }
 | 
						||
     ENTER             = $0D;
 | 
						||
     ESCAPE            = $1B;
 | 
						||
     BACKSPACE         = $08;
 | 
						||
  { modifier code constituents...  }
 | 
						||
     SHIFT_KEY_HELD    = $01;
 | 
						||
     CTRL_KEY_HELD     = $04;
 | 
						||
     ALT_KEY_HELD      = $08;
 | 
						||
     CAPS_LOCK_IS_ON   = $40;
 | 
						||
     NUM_LOCK_IS_ON    = $20;
 | 
						||
     SCROLL_LOCK_IS_ON = $10;
 | 
						||
     _PASSWORD_LEN     = 128;  // suggested 'maxlen' argument for getpassword()...
 | 
						||
  { string-embeddable color representations...  }
 | 
						||
     COLOR_STR_BLACK   = '\x1B[0;30m';
 | 
						||
     COLOR_STR_MAROON  = '\x1B[0;31m';
 | 
						||
     COLOR_STR_GREEN   = '\x1B[0;32m';
 | 
						||
     COLOR_STR_OLIVE   = '\x1B[0;33m';
 | 
						||
     COLOR_STR_NAVY    = '\x1B[0;34m';
 | 
						||
     COLOR_STR_PURPLE  = '\x1B[0;35m';
 | 
						||
     COLOR_STR_TEAL    = '\x1B[0;36m';
 | 
						||
     COLOR_STR_SILVER  = '\x1B[0;37m';
 | 
						||
     COLOR_STR_GREY    = '\x1B[1;30m';
 | 
						||
     COLOR_STR_RED     = '\x1B[1;31m';
 | 
						||
     COLOR_STR_LIME    = '\x1B[1;32m';
 | 
						||
     COLOR_STR_YELLOW  = '\x1B[1;33m';
 | 
						||
     COLOR_STR_BLUE    = '\x1B[1;34m';
 | 
						||
     COLOR_STR_MAGENTA = '\x1B[1;35m';
 | 
						||
     COLOR_STR_CYAN    = '\x1B[1;36m';
 | 
						||
     COLOR_STR_WHITE   = '\x1B[1;37m';
 | 
						||
 | 
						||
     COLOR_STR_NORMAL  = COLOR_STR_SILVER;  // dim/unhighlighted white
 | 
						||
     COLOR_STR_GRAY    = COLOR_STR_GREY;
 | 
						||
  { attributes for OutputToScreenWithAttributes(); cf. HTML color names  }
 | 
						||
 | 
						||
     COLOR_ATTR_NONE   = 0;            // black, no color at all
 | 
						||
     COLOR_ATTR_NAVY   = 1;            // dim blue
 | 
						||
     COLOR_ATTR_BLUE   = $01 or 8;
 | 
						||
     COLOR_ATTR_GREEN  = 2;
 | 
						||
     COLOR_ATTR_LIME   = 2 or 8;       // bright green
 | 
						||
     COLOR_ATTR_TEAL   = 3;            // dim cyan
 | 
						||
     COLOR_ATTR_CYAN   = 3 or 8;
 | 
						||
     COLOR_ATTR_MAROON = 4;            // dim red
 | 
						||
     COLOR_ATTR_RED    = 4 or 8;
 | 
						||
     COLOR_ATTR_PURPLE = 5;
 | 
						||
     COLOR_ATTR_MAGENTA= 5 or 8;       // bright purple
 | 
						||
     COLOR_ATTR_OLIVE  = 6;            // brown, dim yellow
 | 
						||
     COLOR_ATTR_YELLOW = 6 or 8;
 | 
						||
     COLOR_ATTR_SILVER = 7;            // normal white, dim/unhighlighted
 | 
						||
     COLOR_ATTR_GREY   = 8;            // dimmed white
 | 
						||
     COLOR_ATTR_WHITE  = 15;           // bright, highlighted white
 | 
						||
 | 
						||
  const
 | 
						||
//     OutputToScreenWithVaList = OutputToScreenWithPointer;
 | 
						||
  { return and default values for Prompt functions...  }
 | 
						||
     SCR_PROMPT_ANSWER_NO   = 0;
 | 
						||
     SCR_PROMPT_ANSWER_YES  = 1;
 | 
						||
     SCR_PROMPT_ANSWER_SKIP = 2;
 | 
						||
     SCR_PROMPT_ANSWER_ALL  = 3;
 | 
						||
 | 
						||
  { cursor types...  }
 | 
						||
     CURSOR_NORMAL = $0C0B;
 | 
						||
     CURSOR_THICK  = $0C09;
 | 
						||
     CURSOR_BLOCK  = $0C00;
 | 
						||
     CURSOR_TOP    = $0400;
 | 
						||
  { screen types...  }
 | 
						||
     SCREEN_TYPE_TTY         = $00000000;
 | 
						||
     SCREEN_TYPE_MONOCHROME  = $00000001;
 | 
						||
     SCREEN_TYPE_DUAL_MODE   = $00000002;
 | 
						||
     SCREEN_TYPE_CGA         = $00000003;
 | 
						||
     SCREEN_TYPE_EGA         = $00000004;
 | 
						||
     SCREEN_TYPE_VGA         = $00000005;
 | 
						||
  { screen modes...  }
 | 
						||
     SCREEN_MODE_TTY         = $00000000;
 | 
						||
     SCREEN_MODE_80X25       = $00000001;
 | 
						||
     SCREEN_MODE_80X43       = $00000002;
 | 
						||
     SCREEN_MODE_80X50       = $00000003;
 | 
						||
     SCREEN_MODE_D           = $0000000D;
 | 
						||
     SCREEN_MODE_E           = $0000000E;
 | 
						||
     SCREEN_MODE_F           = $0000000F;
 | 
						||
     SCREEN_MODE_10          = $00000010;
 | 
						||
     SCREEN_MODE_11          = $00000011;
 | 
						||
     SCREEN_MODE_12          = $00000012;
 | 
						||
     SCREEN_MODE_13          = $00000013;
 | 
						||
  { voracious for memory!  }
 | 
						||
     SCREEN_MODE_SCROLLABLE  = $80000000;
 | 
						||
  { screen state...  }
 | 
						||
     SCREEN_NON_SWITCHABLE   = $00000001;
 | 
						||
     SCREEN_DUMMY            = $00000100;
 | 
						||
     SCREEN_HIDDEN           = $00000200;
 | 
						||
 | 
						||
procedure clearscreen;cdecl;external libc_nlm name 'clearscreen';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function consoleprintf(txt:Pchar; args:array of const):longint;cdecl;external libc_nlm name 'consoleprintf';
 | 
						||
function consoleprintf(txt:Pchar):longint;cdecl;external libc_nlm name 'consoleprintf';
 | 
						||
{$endif}
 | 
						||
function __consoleprintfl1(txt:Pchar;p1:longint):longint;cdecl;external libc_nlm name 'consoleprintf';
 | 
						||
function __consoleprintfl2(txt:Pchar;p1,p2:longint):longint;cdecl;external libc_nlm name 'consoleprintf';
 | 
						||
function __consoleprintfl3(txt:Pchar;p1,p2,p3:longint):longint;cdecl;external libc_nlm name 'consoleprintf';
 | 
						||
function getscreenmode(mode:Pdword):longint;cdecl;external libc_nlm name 'getscreenmode';
 | 
						||
function getscreenmode(var mode:dword):longint;cdecl;external libc_nlm name 'getscreenmode';
 | 
						||
function getcharacter:longint;cdecl;external libc_nlm name 'getcharacter';
 | 
						||
function getkey(keytype,modifer,scancode:Plongint):longint;cdecl;external libc_nlm name 'getkey';
 | 
						||
function getkey(var keytype, modifer, scancode:longint):longint;cdecl;external libc_nlm name 'getkey';
 | 
						||
function getalternateconsole:scr_t;cdecl;external libc_nlm name 'getalternateconsole';
 | 
						||
function getnetwareconsole:scr_t;cdecl;external libc_nlm name 'getnetwareconsole';
 | 
						||
function getnetwarelogger:scr_t;cdecl;external libc_nlm name 'getnetwarelogger';
 | 
						||
 | 
						||
function getpassword(prompt,password:Pchar; maxlen:size_t):Pchar;cdecl;external libc_nlm name 'getpassword';
 | 
						||
function getscreenhandle:scr_t;cdecl;external libc_nlm name 'getscreenhandle';
 | 
						||
function getstring(_string:Pchar; max:size_t; display:longint):Pchar;cdecl;external libc_nlm name 'getstring';
 | 
						||
function gotorowcol(row, col:longint):longint;cdecl;external libc_nlm name 'gotorowcol';
 | 
						||
function kbhit:longint;cdecl;external libc_nlm name 'kbhit';
 | 
						||
function pressanykey:longint;cdecl;external libc_nlm name 'pressanykey';
 | 
						||
function pressanykeytocontinue:longint;cdecl;external libc_nlm name 'pressanykey';
 | 
						||
function pressescape:longint;cdecl;external libc_nlm name 'pressescape';
 | 
						||
function pressenter:longint;cdecl;external libc_nlm name 'pressenter';
 | 
						||
function putcharacter(ch:longint):longint;cdecl;external libc_nlm name 'putcharacter';
 | 
						||
 | 
						||
function putstring(_string:Pchar):longint;cdecl;external libc_nlm name 'putstring';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function screenprintf(_para1:scr_t; _para2:Pchar; args:array of const):longint;cdecl;external libc_nlm name 'screenprintf';
 | 
						||
{$endif}
 | 
						||
function screenprintf(_para1:scr_t; _para2:Pchar):longint;cdecl;external libc_nlm name 'screenprintf';
 | 
						||
function screenprintf(_para1:scr_t; _para2:Pchar; l1:longint):longint;cdecl;external libc_nlm name 'screenprintf';
 | 
						||
function screenprintf(_para1:scr_t; _para2:Pchar; l1,l2:longint):longint;cdecl;external libc_nlm name 'screenprintf';
 | 
						||
function screenprintf(_para1:scr_t; _para2:Pchar; l1,l2,l3:longint):longint;cdecl;external libc_nlm name 'screenprintf';
 | 
						||
 | 
						||
function setscreenmode(mode:dword):longint;cdecl;external libc_nlm name 'setscreenmode';
 | 
						||
 | 
						||
function renamescreen(name:Pchar):longint;cdecl;external libc_nlm name 'renamescreen';
 | 
						||
procedure ringbell;cdecl;external libc_nlm name 'ringbell';
 | 
						||
function ungetcharacter(ch:longint):longint;cdecl;external libc_nlm name 'ungetcharacter';
 | 
						||
function ungetkey(keytype:longint; modifer:longint; scancode:longint):longint;cdecl;external libc_nlm name 'ungetkey';
 | 
						||
 | 
						||
function vconsoleprintf(_para1:Pchar; _para2:va_list):longint;cdecl;external libc_nlm name 'vconsoleprintf';
 | 
						||
 | 
						||
function vscreenprintf(_para1:scr_t; _para2:Pchar; _para3:va_list):longint;cdecl;external libc_nlm name 'vscreenprintf';
 | 
						||
function wherecol:longint;cdecl;external libc_nlm name 'wherecol';
 | 
						||
function whererow:longint;cdecl;external libc_nlm name 'whererow';
 | 
						||
function whererowcol(row,col:Plongint):longint;cdecl;external libc_nlm name 'whererowcol';
 | 
						||
function whererowcol(var row,col:longint):longint;cdecl;external libc_nlm name 'whererowcol';
 | 
						||
{ obsolete...  }
 | 
						||
function getconsolehandle:scr_t;cdecl;external libc_nlm name 'getconsolehandle';
 | 
						||
{ direct NetWare OS interfaces...  }
 | 
						||
type
 | 
						||
 | 
						||
   Pscroll_t = ^scroll_t;
 | 
						||
   scroll_t =  Longint;
 | 
						||
   Const
 | 
						||
     SCROLL_DOWN = 0;
 | 
						||
     SCROLL_UP   = 1;
 | 
						||
     SCROLL_NONE = 2147483647;
 | 
						||
 | 
						||
 | 
						||
procedure ActivatePopUpScreen(scrID:scr_t);cdecl;external libc_nlm name 'ActivatePopUpScreen';
 | 
						||
procedure ActivateScreen(scrID:scr_t);cdecl;external libc_nlm name 'ActivateScreen';
 | 
						||
procedure ChangeToSystemConsoleScreen;cdecl;external libc_nlm name 'ChangeToSystemConsoleScreen';
 | 
						||
function CheckIfScreenActive(scrID:scr_t; waitFlag:dword):longint;cdecl;external libc_nlm name 'CheckIfScreenActive';
 | 
						||
function CheckKeyStatus(scrID:scr_t):longint;cdecl;external libc_nlm name 'CheckKeyStatus';
 | 
						||
procedure ClearScreen(scrID:scr_t);cdecl;external libc_nlm name 'ClearScreen';
 | 
						||
procedure CloseScreen(scrID:scr_t);cdecl;external libc_nlm name 'CloseScreen';
 | 
						||
procedure ConsoleHungMenu;cdecl;external libc_nlm name 'ConsoleHungMenu';
 | 
						||
procedure DisableInputCursor(scrID:scr_t);cdecl;external libc_nlm name 'DisableInputCursor';
 | 
						||
function DisplayScreenLine(scrID:scr_t; line:dword; col:dword; length:dword; textAndAttr:Pbyte):longint;cdecl;external libc_nlm name 'DisplayScreenLine';
 | 
						||
function DisplayScreenText(scrID:scr_t; line:dword; col:dword; length:dword; text:Pchar):longint;cdecl;external libc_nlm name 'DisplayScreenText';
 | 
						||
function DisplayScreenTextWithAttribute(scrID:scr_t; line:dword; col:dword; length:dword; lineAttr:byte;
 | 
						||
           text:Pchar):longint;cdecl;external libc_nlm name 'DisplayScreenTextWithAttribute';
 | 
						||
procedure EnableInputCursor(scrID:scr_t);cdecl;external libc_nlm name 'EnableInputCursor';
 | 
						||
procedure EndPopUpScreen(scr:scr_t);cdecl;external libc_nlm name 'EndPopUpScreen';
 | 
						||
function FillScreenArea(scrID:scr_t; line:dword; col:dword; height:dword; width:dword;
 | 
						||
           character:char; attr:byte):longint;cdecl;external libc_nlm name 'FillScreenArea';
 | 
						||
function FillScreenAreaAttribute(scrID:scr_t; line:dword; col:dword; height:dword; width:dword;
 | 
						||
           attr:byte):longint;cdecl;external libc_nlm name 'FillScreenAreaAttribute';
 | 
						||
function GetActiveScreen:scr_t;cdecl;external system_nlm name 'GetActiveScreen';
 | 
						||
function GetActualScreenSize(scrID:scr_t; height:Pdword; width:Pdword; bufferSize:Psize_t):longint;cdecl;external system_nlm name 'GetActualScreenSize';
 | 
						||
function GetConsoleSecuredFlag:longint;cdecl;external libc_nlm name 'GetConsoleSecuredFlag';
 | 
						||
procedure GetCursorStyle(scrID:scr_t; cursorStyle:Pword);cdecl;external system_nlm name 'GetCursorStyle';
 | 
						||
procedure GetCursorStyle(scrID:scr_t; var cursorStyle:word);cdecl;external system_nlm name 'GetCursorStyle';
 | 
						||
procedure GetInputCursorPosition(scrID:scr_t; row:Pword; col:Pword);cdecl;external system_nlm name 'GetInputCursorPosition';
 | 
						||
procedure GetKey(scrID:scr_t; _type,value,status,scancode:Pbyte;linesToProtect:size_t);cdecl;external system_nlm name 'GetKey';
 | 
						||
procedure GetKey(scrID:scr_t; var _type,value,status,scancode:byte;linesToProtect:size_t);cdecl;external system_nlm name 'GetKey';
 | 
						||
procedure GetOutputCursorPosition(scrID:scr_t; row,col:Pword);cdecl;external system_nlm name 'GetOutputCursorPosition';
 | 
						||
procedure GetOutputCursorPosition(scrID:scr_t; var row,col:word);cdecl;external system_nlm name 'GetOutputCursorPosition';
 | 
						||
function GetRawKeyWithScreen(scrID:scr_t; _type,value,status,scancode:Pbyte):longint;cdecl;external libc_nlm name 'GetRawKeyWithScreen';
 | 
						||
function GetRawKeyWithScreen(scrID:scr_t; var _type,value,status,scancode:byte):longint;cdecl;external libc_nlm name 'GetRawKeyWithScreen';
 | 
						||
function GetScreenAddress:pointer;cdecl;external system_nlm name 'GetScreenAddress';  // not in protected mode
 | 
						||
function GetScreenName(scrID:scr_t; nameBuffer:Pchar):longint;cdecl;external system_nlm name 'GetScreenName';
 | 
						||
function GetScreenPhysicalAddress:pointer;cdecl;external libc_nlm name 'GetScreenPhysicalAddress';
 | 
						||
procedure GetScreenSize(height,width:Pword);cdecl;external system_nlm name 'GetScreenSize';
 | 
						||
procedure GetScreenSize(var height,width:word);cdecl;external system_nlm name 'GetScreenSize';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function InputFromScreen(scrID:scr_t; allowedCharacterSet:Pchar; bufferLength:size_t; editWidth:size_t; buffer:Pchar;
 | 
						||
           linesToProtect:longint; hasDefaultString:longint; defaultString:Pchar; promptText:Pchar; args:array of const):longint;cdecl;external libc_nlm name 'InputFromScreen';
 | 
						||
{$endif}
 | 
						||
function InputFromScreen(scrID:scr_t; allowedCharacterSet:Pchar; bufferLength:size_t; editWidth:size_t; buffer:Pchar;
 | 
						||
           linesToProtect:longint; hasDefaultString:longint; defaultString:Pchar; promptText:Pchar):longint;cdecl;external libc_nlm name 'InputFromScreen';
 | 
						||
function IsScreenModeSupported(screenMode:dword):longint;cdecl;external system_nlm name 'IsScreenModeSupported';
 | 
						||
 | 
						||
function OpenCustomScreen(name:Pchar; rTag:rtag_t; newScrID:Pscr_t; mode:longint):longint;cdecl;external libc_nlm name 'OpenCustomScreen';
 | 
						||
 | 
						||
function OpenPopUpScreen(name:Pchar; rTag:rtag_t; newScrID:Pscr_t):longint;cdecl;external libc_nlm name 'OpenPopUpScreen';
 | 
						||
 | 
						||
function OpenScreen(name:Pchar; rTag:rtag_t; newScrID:Pscr_t):longint;cdecl;external system_nlm name 'OpenScreen';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function OutputToScreen(scrID:scr_t; format:Pchar; args:array of const):longint;cdecl;external system_nlm name 'OutputToScreen';
 | 
						||
{$endif}
 | 
						||
function OutputToScreen(scrID:scr_t; format:Pchar):longint;cdecl;external system_nlm name 'OutputToScreen';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function OutputToScreenWithAttribute(scrID:scr_t; attr:byte; format:Pchar; args:array of const):longint;cdecl;external system_nlm name 'OutputToScreenWithAttribute';
 | 
						||
{$endif}
 | 
						||
function OutputToScreenWithAttribute(scrID:scr_t; attr:byte; format:Pchar):longint;cdecl;external system_nlm name 'OutputToScreenWithAttribute';
 | 
						||
 | 
						||
 | 
						||
function OutputToScreenWithPointer(scrID:scr_t; format:Pchar; arguments:va_list):longint;cdecl;external system_nlm name 'OutputToScreenWithPointer';
 | 
						||
procedure Pause(scrID:scr_t);cdecl;external system_nlm name 'Pause';
 | 
						||
function PauseWithEscape(scrID:scr_t):longint;cdecl;external system_nlm name 'PauseWithEscape';
 | 
						||
procedure PositionInputCursor(scrID:scr_t; row:word; col:word);cdecl;external system_nlm name 'PositionInputCursor';
 | 
						||
function PositionOutputCursor(scrID:scr_t; row:word; col:word):longint;cdecl;external system_nlm name 'PositionOutputCursor';
 | 
						||
 | 
						||
function PromptForString(scr:scr_t; length:size_t; editWidth:size_t; _string:Pchar; hasDefaultValue:longint;
 | 
						||
           defaultValue:Pchar; linesToProtect:longint; promptText:pointer):Pchar;cdecl;external libc_nlm name 'PromptForString';
 | 
						||
 | 
						||
function PromptForPassword(scr:scr_t; prompt:Pchar; blotOutChar:longint; password:Pchar; maxlen:size_t):Pchar;cdecl;external libc_nlm name 'PromptForPassword';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function PromptForUnsignedNumber(scrID:scr_t; result:Pdword; minValue:dword; maxValue:dword; radix:longint;
 | 
						||
           linesToProtect:longint; hasDefaultValue:byte; defaultValue:dword; promptText:Pchar; args:array of const):longint;cdecl;external libc_nlm name 'PromptForUnsignedNumber';
 | 
						||
{$endif}
 | 
						||
function PromptForUnsignedNumber(scrID:scr_t; result:Pdword; minValue:dword; maxValue:dword; radix:longint;
 | 
						||
           linesToProtect:longint; hasDefaultValue:byte; defaultValue:dword; promptText:Pchar):longint;cdecl;external libc_nlm name 'PromptForUnsignedNumber';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function PromptForYesOrNo(scrID:scr_t; linesToProtect,defaultValue:longint; promptText:pointer; args:array of const):longint;cdecl;external libc_nlm name 'PromptForYesOrNo';
 | 
						||
{$endif}
 | 
						||
function PromptForYesOrNo(scrID:scr_t; linesToProtect,defaultValue:longint; promptText:pointer):longint;cdecl;external libc_nlm name 'PromptForYesOrNo';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function PromptForYesNoAllOrSkip(scrID:scr_t; linesToProtect:longint; defaultValue:dword; promptText:Pchar; args:array of const):longint;cdecl;external libc_nlm name 'PromptForYesNoAllOrSkip';
 | 
						||
{$endif}
 | 
						||
function PromptForYesNoAllOrSkip(scrID:scr_t; linesToProtect:longint; defaultValue:dword; promptText:Pchar):longint;cdecl;external libc_nlm name 'PromptForYesNoAllOrSkip';
 | 
						||
function ReadScreenCharacter(scrID:scr_t; line,col:dword; character:Pchar):longint;cdecl;external system_nlm name 'ReadScreenCharacter';
 | 
						||
 | 
						||
function RenameScreen(scrID:scr_t; name:Pchar):longint;cdecl;external system_nlm name 'RenameScreen';
 | 
						||
function RestoreFullScreen(scrID:scr_t; buffer:pointer):longint;cdecl;external system_nlm name 'RestoreFullScreen';
 | 
						||
function RestoreScreenArea(scrID:scr_t; line,col,height,width:dword; buffer:pointer):longint;cdecl;external system_nlm name 'RestoreScreenArea';
 | 
						||
procedure ReturnScreenType(_type,colorFlag:Pdword);cdecl;external system_nlm name 'ReturnScreenType';
 | 
						||
procedure ReturnScreenType(var _type,colorFlag:dword);cdecl;external system_nlm name 'ReturnScreenType';
 | 
						||
procedure RingTheBell;cdecl;external system_nlm name 'RingTheBell';
 | 
						||
function SaveFullScreen(scrID:scr_t; buffer:pointer):longint;cdecl;external system_nlm name 'SaveFullScreen';
 | 
						||
function SaveScreenArea(scrID:scr_t; line,col,height,width:dword; buffer:pointer):longint;cdecl;external system_nlm name 'SaveScreenArea';
 | 
						||
procedure SetConsoleSecuredFlag(value:byte);cdecl;external system_nlm name 'SetConsoleSecuredFlag';
 | 
						||
procedure SetCursorStyle(scrID:scr_t; newStyle:word);cdecl;external system_nlm name 'SetCursorStyle';
 | 
						||
procedure SetInputToOutputCursorPosition(scrID:scr_t);cdecl;external system_nlm name 'SetInputToOutputCursorPosition';
 | 
						||
function ScrollScreenArea(scrID:scr_t; line,col,height,width,count:dword; newLineAttribute:byte; direction:scroll_t):longint;cdecl;external system_nlm name 'ScrollScreenArea';
 | 
						||
 | 
						||
procedure ShowTitleBarText(screenMemoryAddress:pointer; titleBarText:Pchar; textLength:size_t);cdecl;external system_nlm name 'ShowTitleBarText';
 | 
						||
function UngetKey(scrID:scr_t; _type,value,status,scancode:byte):longint;cdecl;external system_nlm name 'UngetKey';
 | 
						||
function ValidateScreenHandle(scrID:scr_t):longint;cdecl;external system_nlm name 'ValidateScreenHandle';
 | 
						||
procedure WaitForKey(scrID:scr_t);cdecl;external system_nlm name 'WaitForKey';
 | 
						||
function WriteScreenCharacter(scrID:scr_t; line,col:dword; character:char):longint;cdecl;external system_nlm name 'WriteScreenCharacter';
 | 
						||
function WriteScreenCharacterAttribute(scrID:scr_t; line,col:dword; character:char; attr:byte):longint;cdecl;external system_nlm name 'WriteScreenCharacterAttribute';
 | 
						||
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
 | 
						||
 | 
						||
{ file server event notification interfaces...  }
 | 
						||
const
 | 
						||
     EVENT_VOL_SYS_MOUNT = 0;
 | 
						||
     EVENT_VOL_SYS_DISMOUNT = 1;
 | 
						||
     EVENT_ANY_VOL_MOUNT = 2;
 | 
						||
     EVENT_ANY_VOL_DISMOUNT = 3;
 | 
						||
     EVENT_DOWN_SERVER = 4;        { (see EVENT_PRE_DOWN_SERVER)  }
 | 
						||
     EVENT_EXIT_TO_DOS = 7;
 | 
						||
     EVENT_MODULE_UNLOAD = 8;
 | 
						||
     EVENT_MODULE_UNLOAD_POST_EXIT = 115;
 | 
						||
     EVENT_CLEAR_CONNECTION = 9;
 | 
						||
     EVENT_LOGIN_USER = 10;
 | 
						||
     EVENT_CREATE_BINDERY_OBJ = 11;
 | 
						||
     EVENT_DELETE_BINDERY_OBJ = 12;
 | 
						||
     EVENT_CHANGE_SECURITY = 13;
 | 
						||
     EVENT_CHANGE_SECURITY_ADD_EQUIVALENCE = 1;
 | 
						||
     EVENT_ACTIVATE_SCREEN = 14;
 | 
						||
     EVENT_UPDATE_SCREEN = 15;
 | 
						||
     EVENT_UPDATE_CURSOR = 16;
 | 
						||
     EVENT_KEY_WAS_PRESSED = 17;
 | 
						||
     EVENT_DEACTIVATE_SCREEN = 18;
 | 
						||
     EVENT_TRUSTEE_CHANGE = 19;
 | 
						||
     EVENT_NO_RELINQUISH_CONTROL = 23;
 | 
						||
     EVENT_THREAD_SWITCH = 25;
 | 
						||
     EVENT_MODULE_LOAD = 27;
 | 
						||
     EVENT_CREATE_PROCESS = 28;
 | 
						||
     EVENT_DESTROY_PROCESS = 29;
 | 
						||
     EVENT_NEW_PUBLIC = 32;
 | 
						||
     EVENT_PROTOCOL_BIND = 33;
 | 
						||
     EVENT_PROTOCOL_UNBIND = 34;
 | 
						||
     EVENT_ALLOCATE_CONNECTION = 37;
 | 
						||
     EVENT_LOGOUT_CONNECTION = 38;
 | 
						||
     EVENT_MLID_REGISTER = 39;
 | 
						||
     EVENT_MLID_DEREGISTER = 40;
 | 
						||
     EVENT_DATA_MIGRATION = 41;
 | 
						||
     EVENT_DATA_DEMIGRATION = 42;
 | 
						||
     EVENT_CREATE_OBJECT = 46;
 | 
						||
     EVENT_DELETE_OBJECT = 47;
 | 
						||
     EVENT_RENAME_OBJECT = 48;
 | 
						||
     EVENT_VALUE_CHANGE = 49;
 | 
						||
     EVENT_MOVE_OBJECT = 52;
 | 
						||
     EVENT_VALUE_ADD = 53;
 | 
						||
     EVENT_VALUE_DEL = 54;
 | 
						||
     EVENT_CHANGE_TIME = 51;
 | 
						||
     EVENT_DM_KEY_MODIFIED = 55;
 | 
						||
     EVENT_MODULE_UNLOADED = 56;
 | 
						||
     EVENT_REMOVE_PUBLIC = 57;
 | 
						||
     EVENT_UNICODE = 59;
 | 
						||
     EVENT_SFT3_SERVER_STATE = 60;
 | 
						||
     EVENT_SFT3_IMAGE_STATE = 61;
 | 
						||
     EVENT_SFT3_PRESYNC_STATE = 62;
 | 
						||
     EVENT_ALTERNATE_MOUNT_VOLUME = 63;
 | 
						||
     EVENT_CONSOLE_CONFIG_COMMAND = 64;
 | 
						||
     EVENT_CONSOLE_VERSION_COMMAND = 65;
 | 
						||
     EVENT_PRE_LOAD_NLM = 66;
 | 
						||
     EVENT_LOW_MEMORY = 67;
 | 
						||
     EVENT_PRE_DOWN_SERVER = 129;     // called before NDS disappears
 | 
						||
     EVENT_GET_KEY_INFORMATION = 148;
 | 
						||
     EGKStructVersion =  $00000001;
 | 
						||
     EVENT_PRIORITY_APPLICATION = 20;
 | 
						||
     EVENT_PRIORITY_DEVICE = 40;      // lowest
 | 
						||
 | 
						||
  {** A consumer registering for an event sets this flag in the event type to
 | 
						||
   ** denote that the consumer is multiprocessor safe. This allows us to
 | 
						||
   ** distinguish multiprocessor safe consumers from unsafe ones. }
 | 
						||
     EVENT_CONSUMER_MT_SAFE     = $40000000;
 | 
						||
  { ** Values for fields of EventNetWareAlertStruct_t. }
 | 
						||
     QueueThisAlertMask         = $00000001;
 | 
						||
     AlertIDValidMask           = $00000002;
 | 
						||
     AlertLocusValidMask        = $00000004;
 | 
						||
     AlertEventNotifyOnlyMask   = $00000008;
 | 
						||
     AlertNoEventNotifyMask     = $00000010;
 | 
						||
     AlertMessageNumberValid    = $00010000;
 | 
						||
     NoDisplayAlertUID          = $00200000;
 | 
						||
     AlertNoRingBell            = $00400000;
 | 
						||
     AlertIDNotUniqueBit        = $00800000;
 | 
						||
     OldStyleSystemAlertMask    = $01000000;
 | 
						||
     OldStyleINWSystemAlertMask = $02000000;
 | 
						||
  { can be pointer or number  }
 | 
						||
     OverloadMessageNumFieldBit = $04000000;
 | 
						||
     NoDisplayLocusBit          = $10000000;
 | 
						||
     NoDisplayAlertIDBit        = $20000000;
 | 
						||
     OverrideNotificationBits   = $40000000;
 | 
						||
     TargetStationIsAPointer    = $80000000;
 | 
						||
     Alert300Mask = (AlertIDValidMask or AlertLocusValidMask) or OldStyleSystemAlertMask;
 | 
						||
     Alert311Mask = AlertIDValidMask or OldStyleINWSystemAlertMask;
 | 
						||
     //Alert320Mask = ((AlertIDValidMask or AlertMessageNumberValid) or AlertLocusValidMask) or NoDisp
 | 
						||
     //QAlertMask = ((AlertIDValidMask or AlertLocusValidMask) or NoDisplayAlertIDBit) or QueueThisAle
 | 
						||
     //QAlert320Mask = Alert320Mask or QueueThisAlertMask;
 | 
						||
 { allotted ModuleNumbers for 'alertID' in EventNetWareAlertStruct_t...  }
 | 
						||
     ALERT_BINDERY    = $01020000;   // Bindary
 | 
						||
     ALERT_OS         = $01030000;   // OS Event Subject
 | 
						||
     ALERT_LLC        = $01040000;   // LLC
 | 
						||
     ALERT_SDLC       = $01050000;   // SDLC Stack
 | 
						||
     ALERT_REMOTE     = $01060000;   // RConsole
 | 
						||
     ALERT_MLID       = $01070000;   // MLID Lan Drivers
 | 
						||
     ALERT_QLLC       = $01080000;   // QLLC
 | 
						||
     ALERT_UPS        = $01090000;   // UPS Monitor
 | 
						||
     ALERT_DS         = $010a0000;   // Directory Service
 | 
						||
     ALERT_RSPX       = $010c0000;   // RSPX
 | 
						||
     ALERT_R232       = $010d0000;   // Serial
 | 
						||
     ALERT_TIME_SYNC  = $010e0000;   // TimeSync
 | 
						||
     ALERT_CLIB       = $010f0000;   // Clib
 | 
						||
     ALERT_PRINT      = $01100000;   // Print
 | 
						||
     ALERT_NRS        = $01200000;   // Novell Replication Services
 | 
						||
     ALERT_DNS        = $01300000;   // IP/Domain Name Services
 | 
						||
     ALERT_DHCP       = $01400000;   // DHCP Services
 | 
						||
     ALERT_MM         = $01500000;   // Media Manager
 | 
						||
{
 | 
						||
  ** OS-defined AlertNumber values for 'alertID' in EventNetWareAlertStruct_t
 | 
						||
  ** structure.
 | 
						||
   }
 | 
						||
  { starting with NetWare 4...  }
 | 
						||
     nmAllocFailed = 1;
 | 
						||
     nmErrWrtExtDir = 2;
 | 
						||
     nmSysErrWrtDSnoFN = 3;
 | 
						||
     nmStaErrWrtDSnoFN = 4;
 | 
						||
     nmSysErrWrtDSwithFN = 5;
 | 
						||
     nmStaErrWrtDSwithFN = 6;
 | 
						||
     nmSysErrRdDSnoFN = 7;
 | 
						||
     nmStaErrRdDSnoFN = 8;
 | 
						||
     nmSysErrRdDSwithFN = 9;
 | 
						||
     nmStaErrRdDSwithFN = 10;
 | 
						||
     nmSysWrtPreRDnoFN = 11;
 | 
						||
     nmStaWrtPreRDnoFN = 12;
 | 
						||
     nmSysWrtPreRDwithFN = 13;
 | 
						||
     nmStaWrtPreRDwithFN = 14;
 | 
						||
     nmCacheMemLimitExceded = 15;
 | 
						||
     nmCacheMemOutOfMem = 16;
 | 
						||
     nmCacheBufsGetLo = 17;
 | 
						||
     nmDskSpcNoDelFiles = 18;
 | 
						||
     nmDskSpcNoLimbo = 19;
 | 
						||
     nmVolSpcAlmostGone = 20;
 | 
						||
     nmFATWrtErr = 21;
 | 
						||
     nmDirWrtErr = 22;
 | 
						||
     nmDirCopyRdErr = 23;
 | 
						||
     nmDirDblRdErr = 24;
 | 
						||
     nmAllocDirWrtErr = 25;
 | 
						||
     nmDirExpansionErr = 26;
 | 
						||
     nmDirTooLarge = 27;
 | 
						||
     nmErrExpandingDir = 28;
 | 
						||
     nmErrExpandingMem = 29;
 | 
						||
     nmErrDirGetTooLarge = 30;
 | 
						||
     nmDskBottleneck = 31;
 | 
						||
     nmWDClearedConn = 32;
 | 
						||
     nmCpyrtViolation = 33;
 | 
						||
     nmReadFault = 35;
 | 
						||
     nmPktTooSmall = 36;
 | 
						||
     nmCreatingVolLog = 37;
 | 
						||
     nmWrtVolLog = 38;
 | 
						||
     nmVolDmtDevDeact = 39;
 | 
						||
     nmLoginDisabled = 40;
 | 
						||
     nmLoginEnabled = 41;
 | 
						||
     nmClrSta = 42;
 | 
						||
     nmClrStaByUsr = 43;
 | 
						||
     nmFSDownByUser = 44;
 | 
						||
     nmRIPAlreadyOpn = 45;
 | 
						||
     nmRouterConfigErr = 46;
 | 
						||
     nmLANLoopbackErr = 47;
 | 
						||
     nmRouterConfigErrNoInfo = 48;
 | 
						||
     nmIPXUnreachable = 49;
 | 
						||
     nmIPXUnbind = 50;
 | 
						||
     nmSAPAlreadyOpn = 51;
 | 
						||
     nmRouterConfigErrNameInfo = 52;
 | 
						||
     nmSpuriousInt = 53;
 | 
						||
     nmChecksumInvalidAlert = 54;
 | 
						||
     nmPrimaryPicLostInt = 55;
 | 
						||
     nmSecondaryPicLostInt = 56;
 | 
						||
     nmCompErrHoleCountMismatch = 57;
 | 
						||
     nmInvalidScreen = 58;
 | 
						||
     nmRelinquishControl = 59;
 | 
						||
     nmFSUserDeleted = 60;
 | 
						||
     nmAccDelByUser = 61;
 | 
						||
     nmInvalidRTag = 62;
 | 
						||
     nmDeactUnknown = 63;
 | 
						||
     nmDeactDriveUnld = 64;
 | 
						||
     nmDeactDevFailure = 65;
 | 
						||
     nmDeactUsrRequest = 66;
 | 
						||
     nmDeactMediaDismount = 67;
 | 
						||
     nmDeactMediaEject = 68;
 | 
						||
     nmDeactServerDown = 69;
 | 
						||
     nmDeactServerFailure = 70;
 | 
						||
     nmResourceRelErr = 71;
 | 
						||
     nmMirrorsNotSync = 72;
 | 
						||
     nmMirrorsSyncUp = 73;
 | 
						||
     nmPartMirrorSync = 74;
 | 
						||
     nmPartMirrorNotSync = 75;
 | 
						||
     nmReMirroringPart = 76;
 | 
						||
     nmReMirroringPartAborted = 77;
 | 
						||
     nmLogPartMirrorInconsist = 78;
 | 
						||
     nmSysFileLockThresh = 79;
 | 
						||
     nmStaFileLockThresh = 80;
 | 
						||
     nmSysRecLockThresh = 81;
 | 
						||
     nmStaRecLockThresh = 82;
 | 
						||
     nmOpnNETACCTFailed = 83;
 | 
						||
     nmNCPSearchLimitSys = 84;
 | 
						||
     nmNCPSearchLimitSta = 85;
 | 
						||
     nmInsMediaAck = 86;
 | 
						||
     nmInsMediaAborted = 87;
 | 
						||
     nmRemMediaAck = 88;
 | 
						||
     nmRemMediaAbort = 89;
 | 
						||
     nmInsMediaInto = 90;
 | 
						||
     nmRemMediaFrom = 91;
 | 
						||
     nmReDirectedBlockPart = 92;
 | 
						||
     nmReDirectedBlockPartErr = 93;
 | 
						||
     nmOutOfHotFixBlocks = 94;
 | 
						||
     nmLowWarningHotFixBlocks = 95;
 | 
						||
     nmReDirectInconsistNoFix = 96;
 | 
						||
     nmReDirectInconsistFixed = 97;
 | 
						||
     nmInvalidRTagHOptions = 98;
 | 
						||
     nmCheckAndAddHWNoGetRTag = 99;
 | 
						||
     nmRemHWBadPtr = 100;
 | 
						||
     nmErrUnldNLM = 101;
 | 
						||
     nmIvldRTagCrProc = 102;
 | 
						||
     nmCrProcStkTooSmall = 103;
 | 
						||
     nmCrProcNoPCB = 104;
 | 
						||
     nmDelToLimboFileErr = 105;
 | 
						||
     nmDelToLimboNoSpace = 106;
 | 
						||
     nmMLIDResetLanBd = 107;
 | 
						||
     nmRouterReset = 108;
 | 
						||
     nmVolWrongDOSType = 109;
 | 
						||
     nmNoOwnerNSfound = 110;
 | 
						||
     nmRTDMDefSMchanged = 111;
 | 
						||
     nmErrOpnTTSLOG = 112;
 | 
						||
     nmErrWrtTTSLOG = 113;
 | 
						||
     nmTTSdownVolDismount = 114;
 | 
						||
     nmTTSdisableByStaUsr = 115;
 | 
						||
     nmTTSdisByOp = 116;
 | 
						||
     nmTTSdisErrRdBackFile = 117;
 | 
						||
     nmTTSdisErrWrBackFile = 118;
 | 
						||
     nmTTSdisTooManyDefVol = 119;
 | 
						||
     nmTTSdisWrtVolDefInfo = 120;
 | 
						||
     nmTTSdisErrRdBkFlRecGen = 121;
 | 
						||
     nmTTSdisGrowMemTables = 122;
 | 
						||
     nmTTSdisErrAllDiskSp = 123;
 | 
						||
     nmTTSdisDirErrOnBkFile = 124;
 | 
						||
     nmTTSEnableByStaUsr = 125;
 | 
						||
     nmTTStransAbortedForSta = 126;
 | 
						||
     nmTTStooManyTransDelaying = 127;
 | 
						||
     nmTTSNoMemForExpTransNodes = 128;
 | 
						||
     nmAuditEvent = 129;
 | 
						||
     nmAuditDisNoAuditCfg = 130;
 | 
						||
     nmInvldConnTypeToAllocConn = 131;
 | 
						||
     nmInvldRTagToAllocConn = 132;
 | 
						||
     nmOutOfServerConns = 133;
 | 
						||
     nmConnTermAfter5Min = 134;
 | 
						||
     nmUsrAccDisableBySta = 135;
 | 
						||
     nmUnEncryptPwdNotAllowed = 136;
 | 
						||
     nmSuperAccLockedByConsole = 137;
 | 
						||
     nmSystemTimeChangedByCon = 138;
 | 
						||
     nmSystemTimeChangedBySta = 139;
 | 
						||
     nmVolStillActWithError = 140;
 | 
						||
     nmRouterFalsehood = 141;
 | 
						||
     nmServerAddressChanged = 142;
 | 
						||
     nmExtFileNoOwnerCharge = 143;
 | 
						||
     nmRouterConfigErrNode = 144;
 | 
						||
     nmRouterConfigErrMyAddr = 145;
 | 
						||
     nmNoMigratorLd = 146;
 | 
						||
     nmNoSMLd = 147;
 | 
						||
     nmNotEnoughRamForCompression = 148;
 | 
						||
     nmDiskErrorCompressing = 149;
 | 
						||
     nmUnknownErrorCompressing = 150;
 | 
						||
     nmInsufficientSpaceForDeCompression = 151;
 | 
						||
     nmDecompressUnknownCompressionVersion = 152;
 | 
						||
     nmUnknownDecompressError = 153;
 | 
						||
     nmInsufficientRAMToDecompress = 154;
 | 
						||
     nmCompressedFileIsCorrupt = 155;
 | 
						||
     nmStaAttemptedToUseBadPckt = 156;
 | 
						||
     nmStaUsedABadPckt = 157;
 | 
						||
     nmStaAttemptedToUseBadSFL = 158;
 | 
						||
     nmStaUsedABadSFL = 159;
 | 
						||
     nmCorruptCompFileWithName = 160;
 | 
						||
     nmCorruptCompFileWithNameAndStation = 161;
 | 
						||
     nmLowPriThreadsNotRun = 162;
 | 
						||
     nmWorkToDoNotRun = 163;
 | 
						||
     nmCompressErrorTempFileError = 164;
 | 
						||
     nmCompressErrorLengthTotalsMismatch = 165;
 | 
						||
     nmCompressErrorOffsetTotalsMismatch = 166;
 | 
						||
     nmCompressErrorDataCodeCountMismatch = 167;
 | 
						||
     nmCompressErrorLengthCountMismatch = 168;
 | 
						||
     nmCompressErrorLargeLengthCountMismatch = 169;
 | 
						||
     nmCompressErrorReadZeroBytesOrg = 170;
 | 
						||
     nmCompressErrorTreeTooBig = 171;
 | 
						||
     nmCompressErrorMatchSizeFail = 172;
 | 
						||
     nmSignatureInvalidAlert = 173;
 | 
						||
     nmLicenseIsInvalid = 174;
 | 
						||
     nmDeactHotFixError = 175;
 | 
						||
     nmUnknownDecompressErrorFN = 176;
 | 
						||
     nmInsufficientRAMToDecompressFN = 177;
 | 
						||
     nmDecompressUnderFreePercentage = 178;
 | 
						||
     nmNegPktTriedLargeBuffer = 179;
 | 
						||
     nmLoginDisabledByConsole = 180;
 | 
						||
     nmLoginEnabledByConsole = 181;
 | 
						||
     nmGrwStkNotAvail = 182;
 | 
						||
     nmLicenseFileIsMissing = 183;
 | 
						||
     nmFailedToDeletedMigratedFile = 184;
 | 
						||
     nmNoMemForAuditing = 185;
 | 
						||
     nmAuditFileWriteError = 186;
 | 
						||
     nmAuditFileFull = 187;
 | 
						||
     nmAuditFileThresholdOverflow = 188;
 | 
						||
     nmCompressErrorReadZeroBytesInt = 189;
 | 
						||
     nmEASpaceLimit = 190;
 | 
						||
     nmThreadAreaNotEmpty = 191;
 | 
						||
     nmErrMovingLogToMSEngine = 192;
 | 
						||
     nmFaultInConsoleCmdHandler = 193;
 | 
						||
     nmServerToServerComLinkActivated = 194;
 | 
						||
     nmServerToServerComLinkFailure = 195;
 | 
						||
     nmServerToServerComLinkDeact = 196;
 | 
						||
     nmOtherServerAttemptedToSync = 197;
 | 
						||
     nmServerToServerComLinkBrokeOK = 198;
 | 
						||
     nmServerSyncStartingIAmSecondary = 199;
 | 
						||
     nmBadSvrInitMsgFromOtherSvr = 200;
 | 
						||
     nmSvrToSvrCommLinkInitFailed = 201;
 | 
						||
     nmFailedDuringSyncWithReason = 202;
 | 
						||
     nmCommDrvLdDuringActivateWait = 203;
 | 
						||
     nmErrWritingStatusDump = 204;
 | 
						||
     nmComDrvFailureOnPrimary = 205;
 | 
						||
     nmComDrvFailureOnSecondary = 206;
 | 
						||
     nmErrFinishingGenStatusDump = 207;
 | 
						||
     nmSFTIIWhatToDoWithReasonString = 208;
 | 
						||
     nmSFTIIErrorUnexpected = 209;
 | 
						||
     nmSyncErrFromCustomServerNLM = 210;
 | 
						||
     nmSvrLinkHasPluggedPacket = 211;
 | 
						||
     nmSvrToBeRevived = 212;
 | 
						||
     nmServersAreSyncPri = 213;
 | 
						||
     nmSvrCantRouteIPXSec = 214;
 | 
						||
     nmSrvIPXRouteInfoSec = 215;
 | 
						||
     nmErrGivingRAMtoMS = 216;
 | 
						||
     nmMoreRAMgivenToMS = 217;
 | 
						||
     nmServersAreSyncSec = 218;
 | 
						||
     nmSvrCantRouteIPXPri = 219;
 | 
						||
     nmSrvIPXRouteInfoPri = 220;
 | 
						||
     nmPriSvrFailedButSecDown = 221;
 | 
						||
     nmPriSvrFailedNewPri = 222;
 | 
						||
     nmNumMemSegsExceedLimit = 223;
 | 
						||
     nmNumScreenExceedsLimit = 224;
 | 
						||
     nmIOVersionMismatch = 225;
 | 
						||
     nmOtherSvrProtectLvlNoMatch = 226;
 | 
						||
     nmOtherSvrScrAddrMismatch = 227;
 | 
						||
     nmIOEngNotAtSameAddr = 228;
 | 
						||
     nmBothSvrHaveMSEng = 229;
 | 
						||
     nmNoMSEngOnServers = 230;
 | 
						||
     nmSecSvrMissingRAM = 231;
 | 
						||
     nmBothSrvHaveSameIPXAddr = 232;
 | 
						||
     nmIOEngIPXAddrMatchMSEng = 233;
 | 
						||
     nmIOEngsMismatchRxSizes = 234;
 | 
						||
     nmIOEngsHaveSameName = 235;
 | 
						||
     nmNoMemForIOEngName = 236;
 | 
						||
     nmSrvToSvrLinkBeginSync = 237;
 | 
						||
     nmMSEngActivated = 238;
 | 
						||
     nmMSEngActNowSyncOther = 239;
 | 
						||
     nmIOtoMSComMisMatchUnload = 240;
 | 
						||
     nmSFTIIIOutOfMsgCodes = 241;
 | 
						||
     nmErrXferDumpToSystem = 242;
 | 
						||
     nmFailureChkPrimary = 243;
 | 
						||
     nmNoMemForOtherIOEngScr = 244;
 | 
						||
     nmErrStarting2ndProc = 245;
 | 
						||
     nmSrvFailureMsg = 246;
 | 
						||
     nmSecIOEngSupModNotLd = 247;
 | 
						||
     nmMSLBdNumHasConn = 248;
 | 
						||
     nmSecSvrLANIsBetter = 249;
 | 
						||
     nmIPXrtnStatusPckts = 250;
 | 
						||
     nmIPXnotRtnStatChkPckts = 251;
 | 
						||
     nmIPXnotRtnStatLANJam = 252;
 | 
						||
     nmFailReasonByOtherSrv = 253;
 | 
						||
     nmIPXMayBeTooSlowForSecSrv = 254;
 | 
						||
     nmIPXToOtherSrvTooManyHops = 255;
 | 
						||
     nmIPXappearsDown = 256;
 | 
						||
     nmIPXFoundRouteToOtherSrv = 257;
 | 
						||
     nmIPXLostRoute = 258;
 | 
						||
     nmSecSrvGoingToDie = 259;
 | 
						||
     nmPriSrcDyingTimerStart = 260;
 | 
						||
     nmPriSrvDying = 261;
 | 
						||
     nmIPXInternetIsJammed = 262;
 | 
						||
     nmIPXNewRouteToSecSvr = 263;
 | 
						||
     nmSrvsSyncing = 264;
 | 
						||
     nmFSHookRegistered = 265;
 | 
						||
     nmFSHookDeRegistered = 266;
 | 
						||
     nmIOEngCantBorrowMemory = 267;
 | 
						||
     nmDecompressNoCompressionOnVolume = 268;
 | 
						||
     nmMkProcessUsingTooSmallStk = 269;
 | 
						||
     nmQueueEventReportNoMemory = 270;
 | 
						||
     nmServerPartMirrorNotSync = 271;
 | 
						||
     nmStaWithoutRightsConsoleRPC = 272;
 | 
						||
     nmAuditOverflowFileThreshold = 273;
 | 
						||
     nmAuditOverflowFileFull = 274;
 | 
						||
     nmSwitchStacksGrwStk = 275;
 | 
						||
     nmConsoleCommandProcRestarted = 276;
 | 
						||
     nmGrowableStackGrew = 278;
 | 
						||
     nmOtherSvrIOLogSpaceNoMatch = 279;
 | 
						||
     nmDFSLogicalStackRead = 280;
 | 
						||
     nmDFSLogicalStackWrite = 281;
 | 
						||
     nmSecureEraseFailure = 282;
 | 
						||
     nmDropBadPktBurstConn = 283;
 | 
						||
     nmOutOfIPXSockets = 284;
 | 
						||
     nmVolumeObjectIDChanged = 285;
 | 
						||
     nmAbendRecovery = 286;
 | 
						||
     nmOpLockTimeout = 287;
 | 
						||
     nmAbendRecovered = 288;
 | 
						||
     nmUnknownSetCmd = 289;    { starting with NetWare 5...  }
 | 
						||
     nmAddressSpaceProtectionFault = 290;
 | 
						||
     nmAddressSpaceFailedToRestart = 291;
 | 
						||
     nmAddressSpaceRestarted = 292;
 | 
						||
     nmCorruptMemoryNodeDetected = 293;
 | 
						||
     nmAddressSpaceCleanupFailure = 294;
 | 
						||
     nmInvalidParameter = 295;
 | 
						||
     nmInvalidObjectHandle = 296;
 | 
						||
     nmNullPointer = 297;
 | 
						||
     nmVolDmtMedDmt = 298;
 | 
						||
     nmVolDmtmedChgd = 299;
 | 
						||
     nmAccDelByUsrActConn = 300;
 | 
						||
     nmResourcesRelErr = 301;
 | 
						||
     nmDemoVersion = 302;
 | 
						||
     nmDemoVersionTooLong = 303;
 | 
						||
     nmLicenseReSellerFileIsMissing = 304;
 | 
						||
     nmLicenseUpgradeIsMissing = 305;
 | 
						||
     nmLicenseVersionInvalid = 306;
 | 
						||
     nmLicenseProductInvalid = 307;
 | 
						||
     nmLicenseNoMoreFiles = 308;
 | 
						||
     nmLicensePIDInvalid = 309;
 | 
						||
     nmLicenseContentInalid = 310;
 | 
						||
     nmLicenseBadUpgrade = 311;
 | 
						||
     nmLicensePrevMaxConnMisMatch = 312;
 | 
						||
     nmLicenseContentResellerBad = 313;
 | 
						||
     nmLicenseSNMisMatch = 314;
 | 
						||
     nmLicenseUIDMisMatch = 315;
 | 
						||
     nmLicenseOpenError = 316;
 | 
						||
     nmLicenseCompanionErr = 317;
 | 
						||
     nmLicenseSNUpgradeMisMatch = 318;
 | 
						||
     nmLicenseUnableToRemMSL = 319;
 | 
						||
     nmLicenseUnableToRemULF = 320;
 | 
						||
     nmLicenseUnableToRemRLF = 321;
 | 
						||
     nmLicenseUnableToGetFileSize = 322;
 | 
						||
     nmLicenseUnkLicenseType = 323;
 | 
						||
     nmLicenseReadErr = 324;
 | 
						||
     nmLicenseFileSizeMisMatch = 325;
 | 
						||
     nmLicenseDupServerLic = 326;
 | 
						||
     nmLicenseNeedUpgrade = 327;
 | 
						||
     nmLicenseMirrorNeedUpgrade = 328;
 | 
						||
     nmLicenseDupLicDiscovered = 329;
 | 
						||
     nmLicenseDupLicDiscoveredDel = 330;
 | 
						||
     nmLicenseCpyRightViolated = 331;
 | 
						||
     nmLicenseExpired = 332;
 | 
						||
     nmVolDmtDevMedChgd = 333;
 | 
						||
     nmVolDmtDevMedDmt = 334;
 | 
						||
     nmInsMediaAckDS = 335;
 | 
						||
     nmInsMediaAckMag = 336;
 | 
						||
     nmInsMediaAbortedDS = 337;
 | 
						||
     nmInsMediaAbortedMag = 338;
 | 
						||
     nmRemMediaAckDS = 339;
 | 
						||
     nmRemMediaAckMag = 340;
 | 
						||
     nmRemMediaAbortDS = 341;
 | 
						||
     nmRemMediaAbortMag = 342;
 | 
						||
     nmInsMediaIntoDS = 343;
 | 
						||
     nmInsMediaIntoMag = 344;
 | 
						||
     nmRemMediaFromDS = 345;
 | 
						||
     nmRemMediaFromMag = 346;
 | 
						||
     nmServAddr = 347;
 | 
						||
     nmSwapInError = 348;
 | 
						||
     nmSwapOutError = 349;
 | 
						||
     nmAveragePageInThresholdExceeded = 350;
 | 
						||
     nmIllegalRequest = 351;
 | 
						||
     nmTTSThrottleDelayError = 352;
 | 
						||
     nmTTSLackOfResourcesError = 353;
 | 
						||
     nmTTSLackOfResourcesNoReason = 354;
 | 
						||
     nmDelayedWTDNotRunning = 355;
 | 
						||
     nmInvalidCharacterInName = 356;
 | 
						||
  { starting with NetWare 6...  }
 | 
						||
     nmMPKBadThreadState = 357;
 | 
						||
     nmPoolSeriousError = 358;
 | 
						||
     nmPoolSeriousReadError = 359;
 | 
						||
     nmVolSeriousError = 360;
 | 
						||
     nmVolSeriousReadError = 361;
 | 
						||
     nmVolDeactSeriousIOError = 362;
 | 
						||
     nmVolDeactSeriousNonIOError = 363;
 | 
						||
     nmPoolDeactSeriousIOError = 364;
 | 
						||
     nmPoolDeactSeriousNonIOError = 365;
 | 
						||
     nmTaskZeroCheck = 366;
 | 
						||
  { values for 'alertLocus' in EventNetWareAlertStruct_t...  }
 | 
						||
     LOCUS_UNKNOWN = 0;
 | 
						||
     LOCUS_MEMORY = 1;
 | 
						||
     LOCUS_FILESYSTEM = 2;
 | 
						||
     LOCUS_DISKS = 3;
 | 
						||
     LOCUS_LANBOARDS = 4;
 | 
						||
     LOCUS_COMSTACKS = 5;
 | 
						||
     LOCUS_TTS = 7;
 | 
						||
     LOCUS_BINDERY = 8;
 | 
						||
     LOCUS_STATION = 9;
 | 
						||
     LOCUS_ROUTER = 10;
 | 
						||
     LOCUS_LOCKS = 11;
 | 
						||
     LOCUS_KERNEL = 12;
 | 
						||
     LOCUS_UPS = 13;
 | 
						||
     LOCUS_SERVICE_PROTOCOL = 14;
 | 
						||
     LOCUS_SFT_III = 15;
 | 
						||
     LOCUS_RESOURCE_TRACKING = 16;
 | 
						||
     LOCUS_NLM = 17;
 | 
						||
     LOCUS_OS_INFORMATION = 18;
 | 
						||
     LOCUS_CACHE = 19;
 | 
						||
  { values for 'alertClass' in EventNetWareAlertStruct_t...  }
 | 
						||
     CLASS_UNKNOWN = 0;
 | 
						||
     CLASS_OUT_OF_RESOURCE = 1;
 | 
						||
     CLASS_TEMP_SITUATION = 2;
 | 
						||
     CLASS_AUTHORIZATION_FAILURE = 3;
 | 
						||
     CLASS_INTERNAL_ERROR = 4;
 | 
						||
     CLASS_HARDWARE_FAILURE = 5;
 | 
						||
     CLASS_SYSTEM_FAILURE = 6;
 | 
						||
     CLASS_REQUEST_ERROR = 7;
 | 
						||
     CLASS_NOT_FOUND = 8;
 | 
						||
     CLASS_BAD_FORMAT = 9;
 | 
						||
     CLASS_LOCKED = 10;
 | 
						||
     CLASS_MEDIA_FAILURE = 11;
 | 
						||
     CLASS_ITEM_EXISTS = 12;
 | 
						||
     CLASS_STATION_FAILURE = 13;
 | 
						||
     CLASS_LIMIT_EXCEEDED = 14;
 | 
						||
     CLASS_CONFIGURATION_ERROR = 15;
 | 
						||
     CLASS_LIMIT_ALMOST_EXCEEDED = 16;
 | 
						||
     CLASS_SECURITY_AUDIT_INFO = 17;
 | 
						||
     CLASS_DISK_INFORMATION = 18;
 | 
						||
     CLASS_GENERAL_INFORMATION = 19;
 | 
						||
     CLASS_FILE_COMPRESSION = 20;
 | 
						||
     CLASS_PROTECTION_VIOLATION = 21;
 | 
						||
     CLASS_VIRTUAL_MEMORY = 22;
 | 
						||
  { values for 'alertSeverity' in EventNetWareAlertStruct_t...  }
 | 
						||
  { counters reached thresholds          }
 | 
						||
     SEVERITY_INFORMATIONAL = 0;
 | 
						||
  { config errors, etc. no damage        }
 | 
						||
     SEVERITY_WARNING = 1;
 | 
						||
  { hot fix disk, etc. worked around     }
 | 
						||
     SEVERITY_RECOVERABLE = 2;
 | 
						||
  { disk mirror failure, etc. fix-up attempted  }
 | 
						||
     SEVERITY_CRITICAL = 3;
 | 
						||
  { resource fatally affected--shut down }
 | 
						||
     SEVERITY_FATAL = 4;
 | 
						||
  { cannot complete--result unknown      }
 | 
						||
     SEVERITY_OPERATION_ABORTED = 5;
 | 
						||
  { cannot complete--will not affect OS  }
 | 
						||
     SEVERITY_NONOS_UNRECOVERABLE = 6;
 | 
						||
  { values for 'targetNotificationBits' in EventNetWareAlertStruct_t...  }
 | 
						||
     NOTIFY_CONNECTION_BIT = $00000001;
 | 
						||
     NOTIFY_EVERYONE_BIT = $00000002;
 | 
						||
     NOTIFY_ERROR_LOG_BIT = $00000004;
 | 
						||
     NOTIFY_CONSOLE_BIT = $00000008;
 | 
						||
  { use if alert to be queued  }
 | 
						||
     NOTIFY_QUEUE_MESSAGE = $10000000;
 | 
						||
     NOTIFY_DONT_NOTIFY_NMAGENT = $80000000;
 | 
						||
 | 
						||
type
 | 
						||
  TnwAlertDataFreeProc = procedure (nwAlertDataPtr:pointer);cdecl;
 | 
						||
  PNetWareAlertStructure  = ^TNetWareAlertStructure;
 | 
						||
  TNetWareAlertStructure = record
 | 
						||
    pNetworkManagementAttribute  : pointer;
 | 
						||
    nwAlertFlags,
 | 
						||
    nwTargetStation,
 | 
						||
    nwTargetNotificationBits,
 | 
						||
    nwAlertID,
 | 
						||
    nwAlertLocus,
 | 
						||
    nwAlertClass,
 | 
						||
    nwAlertSeverity              : longint;
 | 
						||
    nwAlertDataPtr               : pointer;
 | 
						||
    nwAlertDataFree              : TnwAlertDataFreeProc;
 | 
						||
    nwControlString              : pchar;
 | 
						||
    nwControlStringMessageNumber : longint;
 | 
						||
  end;
 | 
						||
 | 
						||
{$ifndef INCLUDED_FROM_SYSTEM}
 | 
						||
procedure NetWareAlert(nlmHandle      : TNLMHandle;
 | 
						||
                       nwAlert        : PNetWareAlertStructure;
 | 
						||
                       parameterCount : longint;
 | 
						||
                       args           : array of const); cdecl; external system_nlm name 'NetWareAlert';
 | 
						||
{$endif}
 | 
						||
 | 
						||
procedure NetWareAlert(nlmHandle      : TNLMHandle;
 | 
						||
                       nwAlert        : PNetWareAlertStructure;
 | 
						||
                       parameterCount : longint); cdecl; external system_nlm name 'NetWareAlert';
 | 
						||
 | 
						||
type
 | 
						||
 | 
						||
   PEventSecurityChange_t = ^EventSecurityChange_t;
 | 
						||
   EventSecurityChange_t = record
 | 
						||
        objectID : dword;
 | 
						||
        equivalentID : dword;
 | 
						||
        changeFlags : dword;
 | 
						||
     end;
 | 
						||
 | 
						||
   PEventTrusteeChange_t = ^EventTrusteeChange_t;
 | 
						||
   EventTrusteeChange_t = record
 | 
						||
        objectID : dword;
 | 
						||
        entryID : dword;
 | 
						||
        volumeNumber : longint;
 | 
						||
        changeFlags : dword;
 | 
						||
        newRights : dword;
 | 
						||
     end;
 | 
						||
 | 
						||
   PEventModifyDirEntry_t = ^EventModifyDirEntry_t;
 | 
						||
   EventModifyDirEntry_t = record
 | 
						||
        primaryDirectoryEntry : dword;
 | 
						||
        nameSpace : longint;
 | 
						||
        modifyBits : dword;
 | 
						||
        modifyVector : pointer;
 | 
						||
        volumeNumber : longint;
 | 
						||
        directoryEntry : dword;
 | 
						||
     end;
 | 
						||
 | 
						||
   PEventProtocolBind_t = ^EventProtocolBind_t;
 | 
						||
   EventProtocolBind_t = record
 | 
						||
        boardNumber : longint;
 | 
						||
        protocolNumber : longint;
 | 
						||
     end;
 | 
						||
 | 
						||
   PEventDateMigrationInfo_t = ^EventDateMigrationInfo_t;
 | 
						||
   EventDateMigrationInfo_t = record
 | 
						||
        FileSystemTypeID : dword;
 | 
						||
        Volume : longint;
 | 
						||
        DOSDirEntry : dword;
 | 
						||
        OwnerDirEntry : dword;
 | 
						||
        OwnerNameSpace : longint;
 | 
						||
        OwnerFileName : array[0..(1 + 255)-1] of char;
 | 
						||
     end;
 | 
						||
 | 
						||
   PEventQueueNote_t = ^EventQueueNote_t;
 | 
						||
   EventQueueNote_t = record
 | 
						||
        QAction : longint;
 | 
						||
        QID : dword;
 | 
						||
        QName : array[0..(49 + 1)-1] of char;
 | 
						||
     end;
 | 
						||
 | 
						||
   PEventNetWareAlert_t = ^EventNetWareAlert_t;
 | 
						||
   EventNetWareAlert_t = record
 | 
						||
        alertFlags : dword;
 | 
						||
        alertId : dword;
 | 
						||
        alertLocus : dword;
 | 
						||
        alertClass : dword;
 | 
						||
        alertSeverity : dword;
 | 
						||
        targetStationCount : longint;
 | 
						||
        targetStationList : array[0..31] of dword;
 | 
						||
        targetNotificationBits : dword;
 | 
						||
        alertParmCount : longint;
 | 
						||
        alertDataPtr : pointer;
 | 
						||
        NetWorkManagementAttributePointer : pointer;
 | 
						||
        alertUnused : array[0..1] of dword;
 | 
						||
        alertControlStringMessageNumber : longint;
 | 
						||
        alertControlString : array[0..255] of char;
 | 
						||
        alertParameters : array[0..(256 + 256)-1] of char;
 | 
						||
        alertModuleName : array[0..35] of char;
 | 
						||
        alertModuleMajorVersion : longint;
 | 
						||
        alertModuleMinorVersion : longint;
 | 
						||
        alertModuleRevision : longint;
 | 
						||
     end;
 | 
						||
 | 
						||
   PEventBinderyObject_t = ^EventBinderyObject_t;
 | 
						||
   EventBinderyObject_t = record
 | 
						||
        EventObjectSignature : dword;
 | 
						||
        ObjectID : dword;
 | 
						||
        ObjectType : dword;
 | 
						||
     end;
 | 
						||
 | 
						||
function DSAllocateEventTag(signature:dword):pointer;cdecl;external libc_nlm name 'DSAllocateEventTag';
 | 
						||
 | 
						||
type
 | 
						||
 | 
						||
   PEventDSObject_t = ^EventDSObject_t;
 | 
						||
   EventDSObject_t = record
 | 
						||
        EventObjectSignature : dword;
 | 
						||
        EventType : dword;
 | 
						||
        entry : pointer;
 | 
						||
     end;
 | 
						||
 | 
						||
   PEventCloseFileInfo_t = ^EventCloseFileInfo_t;
 | 
						||
   EventCloseFileInfo_t = record
 | 
						||
        fileHandle : dword;
 | 
						||
        station : longint;
 | 
						||
        task : longint;
 | 
						||
        fileHandleFlags : dword;
 | 
						||
        completionCode : longint;
 | 
						||
     end;
 | 
						||
 | 
						||
   PEventCheckKeyInfo_t = ^EventCheckKeyInfo_t;
 | 
						||
   EventCheckKeyInfo_t = record
 | 
						||
        structVersion : dword;
 | 
						||
        keyData : dword;
 | 
						||
        scrID : scr_t;
 | 
						||
     end;
 | 
						||
{
 | 
						||
** A consumer registering for an event sets this flag in the event type to
 | 
						||
** denote that the consumer is multiprocessor safe. This allows us to
 | 
						||
** distinguish multiprocessor safe consumers from unsafe ones.
 | 
						||
 }
 | 
						||
{
 | 
						||
** Values for fields of EventNetWareAlertStruct_t.
 | 
						||
 }
 | 
						||
{
 | 
						||
** Values for 'alertID' in EventNetWareAlertStruct_t comprised of two parts,
 | 
						||
** the ModuleNumber (upper 16 bits) and AlertNumber (lower 16 bits).
 | 
						||
** AlertNumber is under the control of the module specified by ModuleNumber.
 | 
						||
**
 | 
						||
** ModuleNumber specifies which module is generating the alert and AlertNumber
 | 
						||
** can then be used for a specific alert generated by that module.
 | 
						||
**
 | 
						||
** Any ModuleNumber in the range 0x8000xxxx to 0xFFFFxxxx. Range 0x0001xxxx
 | 
						||
** through 0x7fffxxxx is reserved for Novell. Value 0x0000xxxx is considered
 | 
						||
** invalid and is used for all legacy alerts.
 | 
						||
 }
 | 
						||
{ allotted ModuleNumbers for 'alertID' in EventNetWareAlertStruct_t...  }
 | 
						||
{
 | 
						||
** OS-defined AlertNumber values for 'alertID' in EventNetWareAlertStruct_t
 | 
						||
** structure. }
 | 
						||
 | 
						||
   Pevent_handle_t = ^event_handle_t;
 | 
						||
   event_handle_t = longint;
 | 
						||
 | 
						||
   Report_t = procedure (parm:pointer; userParm:pointer);cdecl;
 | 
						||
 | 
						||
   Warn_t = function (printf:pointer; parm:pointer; userParm:pointer):longint;cdecl;
 | 
						||
 | 
						||
function RegisterForEventNotification(rtag:rtag_t; _type:longint; priority:longint; warn:Warn_t; report:Report_t;
 | 
						||
           userParm:pointer):event_handle_t;cdecl;external system_nlm name 'RegisterForEventNotification';
 | 
						||
function UnRegisterEventNotification(handle:event_handle_t):longint;cdecl;external system_nlm name 'UnRegisterEventNotification';
 | 
						||
function CanEventBlock(_type:longint):longint;cdecl;external system_nlm name 'CanEventBlock';
 | 
						||
function CheckForRegisteredEvent(_type:longint):longint;cdecl;external system_nlm name 'CheckForRegisteredEvent';
 | 
						||
function EventCheck(_type:longint; printf:pointer; parm:pointer):longint;cdecl;external system_nlm name 'EventCheck';
 | 
						||
function EventReport(_type:longint; parm:pointer):longint;cdecl;external system_nlm name 'EventReport';
 | 
						||
 | 
						||
 | 
						||
{ server interfaces...  }
 | 
						||
{ ShutdownServer() 'flags'...  }
 | 
						||
 | 
						||
    const
 | 
						||
       NW_POST65_MAX_CMDLINE_LEN = 2048 + 1;
 | 
						||
       SHUTDOWN_RESET            = $00000001;   { ShutdownServer() 'flags'...  }
 | 
						||
       SHUTDOWN_POWEROFF         = $00000002;   { unimplemented }
 | 
						||
 | 
						||
 | 
						||
procedure RestartServer(commandLine:Pchar);cdecl;external system_nlm name 'RestartServer';
 | 
						||
function ShutdownServer(scrID:scr_t; forceDown:byte; alternateMessage:Pchar; flags:dword):longint;cdecl;external system_nlm name 'ShutdownServer';
 | 
						||
function ShutdownServer(scrID:scr_t; forceDown:boolean; alternateMessage:Pchar; flags:dword):longint;cdecl;external system_nlm name 'ShutdownServer';
 | 
						||
function StopServer(scrID:scr_t; forceDown:byte; reserved1:dword; reserved2:pointer; alternateMessage:Pchar;
 | 
						||
           reserved3:dword):longint;cdecl;external system_nlm name 'StopServer';
 | 
						||
function StopServer(scrID:scr_t; forceDown:boolean; reserved1:dword; reserved2:pointer; alternateMessage:Pchar;
 | 
						||
           reserved3:dword):longint;cdecl;external system_nlm name 'StopServer';
 | 
						||
 | 
						||
{ resource tag interfaces...  }
 | 
						||
const
 | 
						||
  AllocSignature               = $54524C41;
 | 
						||
  BreakpointSignature          = $54504B42;
 | 
						||
  ConsoleCommandSignature      = $4D4F4343;
 | 
						||
  CommandLineServicesSignature = $5043574E;
 | 
						||
  DebugCommandSignature        = $53504344;
 | 
						||
  DebuggerSignature            = $47554244;
 | 
						||
  EventSignature               = $544E5645;
 | 
						||
  ScreenSignature              = $4E524353;
 | 
						||
  SettableParameterSignature   = $4D505453;
 | 
						||
  RTAG_DESC_LEN                = 63;
 | 
						||
 | 
						||
 | 
						||
type
 | 
						||
   Cleanup_t = procedure (rTag:rtag_t; forceFlag:longint);cdecl;
 | 
						||
 | 
						||
   Prtag_info = ^rtag_info;
 | 
						||
   rtag_info = record
 | 
						||
        tag         : rtag_t;
 | 
						||
        signature   : dword;
 | 
						||
        NLMHandle   : TNLMHandle;
 | 
						||
        use_count   : longint;
 | 
						||
        description : array[0..(63 + 1)-1] of char;
 | 
						||
     end;
 | 
						||
   rtag_info_t  = rtag_info;
 | 
						||
   Prtag_info_t = ^rtag_info_t;
 | 
						||
 | 
						||
 | 
						||
function AllocateResourceTag(NLMHandle:TNLMHandle; description:Pchar; signature:dword):rtag_t;cdecl;external system_nlm name 'AllocateResourceTag';
 | 
						||
function GetModuleResourceTagInfo(rTag:rtag_t; NLMHandle:TNLMHandle; info:Prtag_info_t):longint;cdecl;external system_nlm name 'GetModuleResourceTagInfo';
 | 
						||
function ReturnResourceTag(rTag:rtag_t; displayErrorsFlag:longint):longint;cdecl;external system_nlm name 'ReturnResourceTag';
 | 
						||
function RegisterTrackedResource(NLMHandle:TNLMHandle; signature:dword; cleanup:Cleanup_t; description:Pchar):longint;cdecl;external system_nlm name 'RegisterTrackedResource';
 | 
						||
function UnRegisterTrackedResource(NLMHandle:TNLMHandle; signature:dword):longint;cdecl;external system_nlm name 'UnRegisterTrackedResource';
 | 
						||
function AddPollingProcedureRTag(proc:TCDeclProcedure ; rTag:rtag_t):longint;cdecl;external system_nlm name 'AddPollingProcedureRTag';
 | 
						||
procedure RemovePollingProcedure(proc:TCDeclProcedure);cdecl;external system_nlm name 'RemovePollingProcedure';
 | 
						||
 | 
						||
{ NetWare-loader interfaces...  }
 | 
						||
const
 | 
						||
  MAX_SYMBOL_NAME_LEN = 80;
 | 
						||
 | 
						||
function ExportPublicObject(NLMHandle:TNLMHandle; name:Pchar; _object:pointer):longint;cdecl;external system_nlm name 'ExportPublicObject';
 | 
						||
function ImportPublicObject(NLMHandle:TNLMHandle; name:Pchar):pointer;cdecl;external system_nlm name 'ImportPublicObject';
 | 
						||
 | 
						||
    const
 | 
						||
       LO_NORMAL = $00000000;
 | 
						||
       LO_PROTECT = $00000002;
 | 
						||
       LO_LOAD_LOW = $00000020;
 | 
						||
       LO_RETURN_HANDLE = $00000040;
 | 
						||
       LO_LOAD_SILENT = $00000080;
 | 
						||
       LO_RESTART = $00000200;
 | 
						||
       LO_DONT_DISPLAY_ERROR = $00002000;
 | 
						||
       LO_MEMORY_DEBUG = $00010000;          { debug only; no production use  }
 | 
						||
       LO_RELAXED_MEMORY_DEBUG = $00020000;  { debug only; no production use  }
 | 
						||
       ERR_LOADER_COULD_NOT_FIND_FILE = 1;   { error returns from LoadModule()  }
 | 
						||
       ERR_LOADER_ERROR_READING_FILE = 2;
 | 
						||
       ERR_LOADER_NOT_NLM_FILE_FORMAT = 3;
 | 
						||
       ERR_LOADER_WRONG_NLM_FILE_VERSION = 4;
 | 
						||
       ERR_LOADER_REENTRANT_INITIALIZE_FAILURE = 5;
 | 
						||
       ERR_LOADER_CAN_NOT_LOAD_MULTIPLE_COPIES = 6;
 | 
						||
       ERR_LOADER_ALREADY_IN_PROGRESS = 7;
 | 
						||
       ERR_LOADER_NOT_ENOUGH_MEMORY = 8;
 | 
						||
       ERR_LOADER_INITIALIZE_FAILURE = 9;
 | 
						||
       ERR_LOADER_INCONSISTENT_FILE_FORMAT = 10;
 | 
						||
       ERR_LOADER_CAN_NOT_LOAD_AT_STARTUP = 11;
 | 
						||
       ERR_LOADER_AUTO_LOAD_MODULES_NOT_LOADED = 12;
 | 
						||
       ERR_LOADER_UNRESOLVED_EXTERNAL = 13;
 | 
						||
       ERR_LOADER_PUBLIC_ALREADY_DEFINED = 14;
 | 
						||
       ERR_LOADER_XDC_DATA_ERROR = 15;
 | 
						||
       ERR_LOADER_NOT_KERNEL = 16;
 | 
						||
       ERR_LOADER_NIOS_ONLY_NLM = 17;
 | 
						||
       ERR_LOADER_ADDRESS_SPACE_CREATION = 18;
 | 
						||
       ERR_LOADER_INITIALIZE_FAULT = 19;
 | 
						||
type
 | 
						||
  TLoadModulePath = record
 | 
						||
    case longint of
 | 
						||
      0 : (NLMHandle : TNLMHandle);
 | 
						||
      1 : (path      : array [0..1024] of char);
 | 
						||
    end;
 | 
						||
 | 
						||
 | 
						||
function GetNLMNames(NLMHandle:TNLMHandle; name:Pchar; description:Pchar):longint;cdecl;external system_nlm name 'GetNLMNames';
 | 
						||
procedure KillMe(NLMHandle:TNLMHandle);cdecl;external system_nlm name 'KillMe';
 | 
						||
function ReturnMessageInformation(NLMHandle:TNLMHandle; table:PPPchar; stringCount:Psize_t; languageID:Plongint; helpFile:pointer):longint;cdecl;external system_nlm name 'ReturnMessageInformation';
 | 
						||
function SetAutoUnloadFlag(NLMHandle:TNLMHandle):longint;cdecl;external system_nlm name 'SetAutoUnloadFlag';
 | 
						||
 | 
						||
function UnImportPublicObject(NLMHandle:TNLMHandle; name:Pchar):longint;cdecl;external system_nlm name 'UnImportPublicObject';
 | 
						||
function AddSearchPathAtEnd(scrID:scr_t; path:Pchar):longint;cdecl;external system_nlm name 'AddSearchPathAtEnd';
 | 
						||
function DeleteSearchPath(scrID:scr_t; searchPathNumber:longint):longint;cdecl;external system_nlm name 'DeleteSearchPath';
 | 
						||
function GetSearchPathElement(index:longint; isDOSFlag:Pdword; path:Pchar):longint;cdecl;external system_nlm name 'GetSearchPathElement';
 | 
						||
function GetSearchPathElement(index:longint; var isDOSFlag:dword; path:Pchar):longint;cdecl;external system_nlm name 'GetSearchPathElement';
 | 
						||
function GetSearchPathElement(index:longint; var isDOSFlag:longint; path:Pchar):longint;cdecl;external system_nlm name 'GetSearchPathElement';
 | 
						||
function InsertSearchPath(scrID:scr_t; searchPathNumber:longint; path:Pchar):longint;cdecl;external system_nlm name 'InsertSearchPath';
 | 
						||
function LoadModule(scrID:scr_t; path:Pchar; options:dword):longint;cdecl;external system_nlm name 'LoadModule';
 | 
						||
function LoadModule(scrID:scr_t; var path:TLoadModulePath; options:dword):longint;cdecl;external system_nlm name 'LoadModule';
 | 
						||
function UnloadModule(scrID:scr_t; commandline:Pchar):longint;cdecl;external system_nlm name 'UnloadModule';
 | 
						||
{ memory management interfaces }
 | 
						||
function _Alloc(size:size_t; rTag:rtag_t):pointer;cdecl;external system_nlm name 'Alloc';
 | 
						||
function Alloc(size:size_t; rTag:rtag_t):pointer;cdecl;external system_nlm name 'Alloc';
 | 
						||
function _AllocSleepOK(size:size_t; rTag:rtag_t; slept:Plongint):pointer;cdecl;external system_nlm name 'AllocSleepOK';
 | 
						||
function AllocSleepOK(size:size_t; rTag:rtag_t; slept:Plongint):pointer;cdecl;external system_nlm name 'AllocSleepOK';
 | 
						||
function _AllocSleepOK(size:size_t; rTag:rtag_t; var slept:longint):pointer;cdecl;external system_nlm name 'AllocSleepOK';
 | 
						||
function AllocSleepOK(size:size_t; rTag:rtag_t; var slept:longint):pointer;cdecl;external system_nlm name 'AllocSleepOK';
 | 
						||
procedure NWGarbageCollect(NLMHandle:TNLMHandle);cdecl;external system_nlm name 'NWGarbageCollect';
 | 
						||
function NWGetAvailableMemory:size_t;cdecl;external system_nlm name 'NWGetAvailableMemory';
 | 
						||
function NWGetPageSize:size_t;cdecl;external system_nlm name 'NWGetPageSize';
 | 
						||
function NWMemorySizeAddressable(addr:pointer; size:size_t):longint;cdecl;external system_nlm name 'NWMemorySizeAddressable';
 | 
						||
function _ReallocSleepOK(addr:pointer; size:size_t; rTag:rtag_t; slept:Plongint):pointer;cdecl;external system_nlm name 'ReallocSleepOK';
 | 
						||
function _ReallocSleepOK(addr:pointer; size:size_t; rTag:rtag_t; var slept:longint):pointer;cdecl;external system_nlm name 'ReallocSleepOK';
 | 
						||
function ReallocSleepOK(addr:pointer; size:size_t; rTag:rtag_t; slept:Plongint):pointer;cdecl;external system_nlm name 'ReallocSleepOK';
 | 
						||
function ReallocSleepOK(addr:pointer; size:size_t; rTag:rtag_t; var slept:longint):pointer;cdecl;external system_nlm name 'ReallocSleepOK';
 | 
						||
procedure _Free(addr:pointer);cdecl;external system_nlm name 'Free';
 | 
						||
 | 
						||
 const
 | 
						||
       CMD_CONFIG_INFO     = $00000001;
 | 
						||
       CMD_CONVERT_UPPER   = $00000002;   { convert command line to upper case?  }
 | 
						||
       CMD_SERVER_RUNNING  = $00000004;   { server need to be running?  }
 | 
						||
       CMD_LEGAL_SERVER    = $00000008;   { command legal on regular server?  }
 | 
						||
       CMD_HIDDEN_CMD      = $00200000;   { don't display this command  }
 | 
						||
       CMD_SUB_CMDS_AVAIL  = $00100000;   { command has sub commands  }
 | 
						||
       CMD_NO_CMD_CHAIN    = $00010000;   { disallow chaining of command keyword  }
 | 
						||
       CMD_PASS_ON_ERROR   = $00020000;   { ignore error  }
 | 
						||
       CMD_ANY_PROCESS     = $80000000;   { can run on any process with keyboard  }
 | 
						||
    { keyword flags for RegisterCommand()...  }
 | 
						||
       CMD_MSG_NUMBER      = $80000000;   { pointer to keyword is number  }
 | 
						||
       CMD_LENGTH_PREC     = $40000000;   { keyword is length-preceeded  }
 | 
						||
    { insertion flags for RegisterCommand()...  }
 | 
						||
       CMD_INSERT_AT_HEAD  = $00000001;   { insert at head  }
 | 
						||
       CMD_INSERT_AT_TAIL  = $00000002;   { insert at tail  }
 | 
						||
       CMD_PERM_POSITION   = $80000000;   { leave in place (head or tail)  }
 | 
						||
    { valid error returns from command handler...  }
 | 
						||
       CMD_CMD_EXECUTED    = $00000000;   { processed, go to next handler  }
 | 
						||
       CMD_HALT_CMD_CHAIN  = $70000000;   { processed, but don't go on to next  }
 | 
						||
       CMD_BAD_CMD_SYNTAX  = $70000010;   { not processed, syntax error  }
 | 
						||
       CMD_NOT_RUNNING     = $70000011;   { won't execute until server up  }
 | 
						||
       CMD_LINE_FAULT      = $70000012;   { command line fault--no error display  }
 | 
						||
       CMD_BAD_MOD_HANDLE  = $70000021;   { NLM handle is invalid  }
 | 
						||
       CMD_BAD_RTAG        = $70000022;   { invalid resource tag  }
 | 
						||
       CMD_BAD_KEY         = $70000023;   { keyword is invalid  }
 | 
						||
       CMD_RTAG_AND_MOD    = $70000024;   { resource tag doesn't match NLM  }
 | 
						||
       CMD_NO_HANDLER      = $70000025;   { handler is missing  }
 | 
						||
       CMD_KEY_TOO_LONG    = $70000026;   { keyword is too long  }
 | 
						||
       CMD_INVAL_PERM      = $70000027;   { invalid syntax to make permanent  }
 | 
						||
       CMD_NO_MEMORY       = $70000028;   { unable to allocate memory  }
 | 
						||
       CMD_NOT_REGISTERED  = $70000029;   { unregistered command  }
 | 
						||
       CMD_HAS_CHAIN       = $7000002A;   { command has a chain  }
 | 
						||
       CMD_CANT_MAKE_HEAD  = $7000002B;   { cannot make command permanent head  }
 | 
						||
       CMD_CANT_MAKE_TAIL  = $7000002C;   { cannot make command permanent tail  }
 | 
						||
       CMD_PASS_TO_NEXT    = $7000002D;   { not processed, go to next handler  }
 | 
						||
       CMD_PRIV_ON_ALT     = $7000002E;   { no privilege on alternate handler  }
 | 
						||
       CMD_STOP_CMDS       = $7000002F;   { system no longer parsing commands  }
 | 
						||
    { simplified versions of returns from command handler...  }
 | 
						||
       CMD_PROCESSED_OK    = CMD_HALT_CMD_CHAIN;
 | 
						||
       CMD_CHAIN_NEXT_CMD  = CMD_CMD_EXECUTED;
 | 
						||
       CMD_SYNTAX_ERROR    = CMD_BAD_CMD_SYNTAX;
 | 
						||
       CMD_NOT_MY_COMMAND  = CMD_PASS_TO_NEXT;
 | 
						||
    { command handler function codes...  }
 | 
						||
       CMD_HELP_ON_CMD     = $00000000;
 | 
						||
       CMD_GET_SUB_CMDS    = $00000001;
 | 
						||
       CMD_PROCESS_CMD     = $00000002;
 | 
						||
       //CMD_MAX_HELP_CMDS = ProcessCommand;
 | 
						||
    { error codes...  }
 | 
						||
       ERR_INVALID_MODULE     = $00000001;
 | 
						||
       ERR_INVALID_RTAG       = $00000002;
 | 
						||
       ERR_INVALID_KEYWORD    = $00000003;
 | 
						||
       ERR_MODULE_RTAG_MIX    = $00000004;
 | 
						||
       ERR_MISSING_HANDLER    = $00000005;
 | 
						||
       ERR_KEYWORD_TOO_LONG   = $00000006;
 | 
						||
       ERR_INVALID_REQUEST    = $00000007;
 | 
						||
       ERR_OUT_OF_MEMORY      = $00000008;
 | 
						||
       ERR_FAILED_TO_REGISTER = $00000009;
 | 
						||
       ERR_ALREADY_REGISTERED = $0000000A;
 | 
						||
       ERR_CANT_GRANT_TOP     = $0000000B;
 | 
						||
       ERR_CANT_GRANT_END     = $0000000C;
 | 
						||
 | 
						||
function SizeOfAllocBlock(addr:pointer):size_t;cdecl;external system_nlm name 'SizeOfAllocBlock';
 | 
						||
 | 
						||
type
 | 
						||
   CommandHandler_t = function (funcCode:longint; scrID:pointer; command:Pchar; upperCaseCommand:Pchar; callerReference:pointer):longint;cdecl;
 | 
						||
 | 
						||
 | 
						||
function DeRegisterCommand(NLMHandle:TNLMHandle; rTag:rtag_t; keywordFlags:dword; keyword:Pchar):longint;cdecl;external system_nlm name 'DeRegisterCommand';
 | 
						||
 | 
						||
function RegisterCommand(NLMHandle:TNLMHandle; rTag:rtag_t; keywordFlags:dword; keyword:Pchar; handlerFlags:dword;
 | 
						||
           insertionFlags:dword; handler:CommandHandler_t; callerReference:pointer):longint;cdecl;external system_nlm name 'RegisterCommand';
 | 
						||
{ legacy command parsing; uses ConsoleCommandSignature...  }
 | 
						||
 | 
						||
type
 | 
						||
   TCommandParserFunc = function (scrID:scr_t; commandline:Pchar):longint;cdecl;
 | 
						||
 | 
						||
{ allocate with ConsoleCommandSignature  }
 | 
						||
 | 
						||
   PCommandParserStructure = ^TCommandParserStructure;
 | 
						||
   TCommandParserStructure = record
 | 
						||
        link   : pointer;
 | 
						||
        case longint of
 | 
						||
          0 : (parser : TCommandParserFunc; rTag : rtag_t);
 | 
						||
          1 : (parseRoutine : TCommandParserFunc; rTag2 : rtag_t);
 | 
						||
     end;
 | 
						||
   TCommandParser = TCommandParserStructure;
 | 
						||
   PCommandParser = PCommandParserStructure;
 | 
						||
 | 
						||
const
 | 
						||
  HANDLEDCOMMAND  = 0;
 | 
						||
  NOTMYCOMMAND    = 1;
 | 
						||
 | 
						||
function ParseCommand(commandLine:Pchar):longint;cdecl;external system_nlm name 'ParseCommand';
 | 
						||
function RegisterConsoleCommand(cmdParser:PCommandParser):longint;cdecl;external system_nlm name 'RegisterConsoleCommand';
 | 
						||
function RegisterConsoleCommand(var cmdParser:TCommandParser):longint;cdecl;external system_nlm name 'RegisterConsoleCommand';
 | 
						||
function UnRegisterConsoleCommand(cmdParser:PCommandParser):longint;cdecl;external libc_nlm name 'UnRegisterConsoleCommand';
 | 
						||
function UnRegisterConsoleCommand(var cmdParser:TCommandParser):longint;cdecl;external libc_nlm name 'UnRegisterConsoleCommand';
 | 
						||
 | 
						||
    const
 | 
						||
       SP_TYPE_NUMBER = 0;
 | 
						||
    { 'value' points to DWORD (0 or !0) }
 | 
						||
       SP_TYPE_BOOLEAN = 1;
 | 
						||
       SP_TYPE_TICKS = 2;
 | 
						||
       SP_TYPE_BLOCK_SHIFT = 3;
 | 
						||
    { [+|-]hh:mm:ss converted to seconds  }
 | 
						||
       SP_TYPE_TIME_OFFSET = 4;
 | 
						||
    { 'value' points to char buffer  }
 | 
						||
       SP_TYPE_STRING = 5;
 | 
						||
       SP_TYPE_TRIGGER = 6;
 | 
						||
    { settable parameter flags...  }
 | 
						||
       SP_STARTUP_ONLY = $01;
 | 
						||
       SP_HIDE = $02;
 | 
						||
       SP_ADVANCED = $04;
 | 
						||
       SP_STARTUP_OR_LATER = $08;
 | 
						||
    { can't be done on secured console  }
 | 
						||
       SP_NOT_SECURED_CONSOLE = $10;
 | 
						||
    { lock console RPC from changing value  }
 | 
						||
       SP_RPC_LOCKOUT = $20;
 | 
						||
    { settable parameter categories...  }
 | 
						||
       SP_COMMUNICATIONS = 0;
 | 
						||
       SP_MEMORY = 1;
 | 
						||
       SP_FILE_CACHE = 2;
 | 
						||
       SP_DIR_CACHE = 3;
 | 
						||
       SP_FILE_SYSTEM = 4;
 | 
						||
       SP_LOCKS = 5;
 | 
						||
       SP_TRANS_TRACKING = 6;
 | 
						||
       SP_DISK = 7;
 | 
						||
       SP_TIME = 8;
 | 
						||
       SP_NCP = 9;
 | 
						||
    { recommended most common  }
 | 
						||
       SP_MISCELLANEOUS = 10;
 | 
						||
       SP_ERRORS = 11;
 | 
						||
       SP_DIRECTORY_SERVICES = 12;
 | 
						||
       SP_MULTIPROCESSOR = 13;
 | 
						||
    { type depends on 'type' field  }
 | 
						||
    { for parameter name  }
 | 
						||
    { for parameter description  }
 | 
						||
 | 
						||
 | 
						||
type
 | 
						||
 | 
						||
   Psettableparms_t = ^Tsettableparms;
 | 
						||
   Tsettableparms = record
 | 
						||
        link        : pointer;
 | 
						||
        value       : pointer;
 | 
						||
        rTag        : rtag_t;
 | 
						||
        name        : Pchar;
 | 
						||
        _type       : byte;
 | 
						||
        flags       : byte;
 | 
						||
        category    : byte;
 | 
						||
        reserved    : byte;
 | 
						||
        lower_limit : dword;
 | 
						||
        upper_limit : dword;
 | 
						||
        callback    : procedure (oldValue:dword);cdecl;
 | 
						||
        description : Pchar;
 | 
						||
        msg_namenum : word;
 | 
						||
        msg_descnum : word;
 | 
						||
     end;
 | 
						||
    Psettableparms = Psettableparms_t;
 | 
						||
 | 
						||
function RegisterSetableParameter(setparms:Psettableparms_t):longint;cdecl;external system_nlm name 'RegisterSetableParameter';
 | 
						||
function RegisterSetableParameter(var setparms:Tsettableparms):longint;cdecl;external system_nlm name 'RegisterSetableParameter';
 | 
						||
function DeRegisterSetableParameter(setparms:Psettableparms_t):longint;cdecl;external system_nlm name 'DeRegisterSetableParameter';
 | 
						||
function DeRegisterSetableParameter(var setparms:Tsettableparms):longint;cdecl;external system_nlm name 'DeRegisterSetableParameter';
 | 
						||
 | 
						||
function GetSetableParameterValue(slot:longint; name:Pchar; value:pointer):longint;cdecl;external system_nlm name 'GetSetableParameterValue';
 | 
						||
function GetSetableParameterValue(slot:longint; name:Pchar; var value):longint;cdecl;external system_nlm name 'GetSetableParameterValue';
 | 
						||
 | 
						||
function ScanSetableParameters(scanCategory:longint; scanSequence:Pdword; name:Pchar; _type:Plongint; flags:Pdword;
 | 
						||
           category:Plongint; description:pointer; value:pointer; lowerLimit:Plongint; upperLimit:Plongint):longint;cdecl;external system_nlm name 'ScanSetableParameters';
 | 
						||
function ScanSetableParameters(scanCategory:longint; var scanSequence:dword; name:Pchar; var _type:longint; var flags:dword;
 | 
						||
           var category:longint; var description, value; var lowerLimit,upperLimit:longint):longint;cdecl;external system_nlm name 'ScanSetableParameters';
 | 
						||
 | 
						||
function SetSetableParameterValue(slot:longint; name:Pchar; newValue:pointer):longint;cdecl;external system_nlm name 'SetSetableParameterValue';
 | 
						||
function SetSetableParameterValue(slot:longint; name:Pchar; var newValue):longint;cdecl;external system_nlm name 'SetSetableParameterValue';
 | 
						||
{ NLM start-up synchronization...  }
 | 
						||
procedure SynchronizeStart;cdecl;external system_nlm name 'SynchronizeStart';
 | 
						||
{ message table loading...  }
 | 
						||
function LoadLanguageMessageTable(table:PPPchar; count:Plongint; languageID:Plongint):longint;cdecl;external system_nlm name 'LoadLanguageMessageTable';
 | 
						||
{ timer interfaces...  }
 | 
						||
function GetHighResolutionTimer:dword;cdecl;external system_nlm name 'GetHighResolutionTimer';
 | 
						||
function GetSuperHighResolutionTimer:dword;cdecl;external system_nlm name 'GetSuperHighResolutionTimer';
 | 
						||
 | 
						||
{ spin locks for use in the kernel (not from a protected address space)...  }
 | 
						||
type
 | 
						||
   Pspinlock_t = ^spinlock_t;
 | 
						||
   spinlock_t  = pointer;
 | 
						||
   TSpinlock = spinlock_T;
 | 
						||
   PSpinlock = Pspinlock_t;
 | 
						||
 | 
						||
function KernelSpinLockInit(lock:Pspinlock_t):longint;cdecl;external system_nlm name 'KernelSpinLockInit';
 | 
						||
procedure KernelSpinLock(lock:Pspinlock_t);cdecl;external system_nlm name 'KernelSpinLock';
 | 
						||
function KernelSpinTryLock(lock:Pspinlock_t):longint;cdecl;external system_nlm name 'KernelSpinTryLock';
 | 
						||
procedure KernelSpinUnlock(lock:Pspinlock_t);cdecl;external system_nlm name 'KernelSpinUnlock';
 | 
						||
function KernelSpinLockDisable(lock:Pspinlock_t):dword;cdecl;external system_nlm name 'KernelSpinLockDisable';
 | 
						||
function KernelSpinTryLockDisable(lock:Pspinlock_t; flags:Pdword):longint;cdecl;external system_nlm name 'KernelSpinTryLockDisable';
 | 
						||
procedure KernelSpinUnlockRestore(lock:Pspinlock_t; flags:dword);cdecl;external system_nlm name 'KernelSpinUnlockRestore';
 | 
						||
 | 
						||
function KernelSpinLockInit(var lock:spinlock_t):longint;cdecl;external system_nlm name 'KernelSpinLockInit';
 | 
						||
procedure KernelSpinLock(var lock:spinlock_t);cdecl;external system_nlm name 'KernelSpinLock';
 | 
						||
function KernelSpinTryLock(var lock:spinlock_t):longint;cdecl;external system_nlm name 'KernelSpinTryLock';
 | 
						||
procedure KernelSpinUnlock(var lock:spinlock_t);cdecl;external system_nlm name 'KernelSpinUnlock';
 | 
						||
function KernelSpinLockDisable(var lock:spinlock_t):dword;cdecl;external system_nlm name 'KernelSpinLockDisable';
 | 
						||
function KernelSpinTryLockDisable(var lock:spinlock_t; flags:Pdword):longint;cdecl;external system_nlm name 'KernelSpinTryLockDisable';
 | 
						||
procedure KernelSpinUnlockRestore(var lock:spinlock_t; flags:dword);cdecl;external system_nlm name 'KernelSpinUnlockRestore';
 | 
						||
 | 
						||
 | 
						||
{ nonpreferred locale interfaces...  }
 | 
						||
type
 | 
						||
   Pcountryinfo_t = ^Tcountryinfo;
 | 
						||
   Tcountryinfo = record
 | 
						||
        infoID : byte;
 | 
						||
        size : word;
 | 
						||
        countryID : word;
 | 
						||
        codePage : word;
 | 
						||
        dateFormat : word;
 | 
						||
        currencySymbol : array[0..4] of char;
 | 
						||
        thousandSeparator : array[0..1] of char;
 | 
						||
        decimalSeparator : array[0..1] of char;
 | 
						||
        dateSeparator : array[0..1] of char;
 | 
						||
        timeSeparator : array[0..1] of char;
 | 
						||
        currencyFormatFlags : char;
 | 
						||
        digitsInCurrency : char;
 | 
						||
        timeFormat : char;
 | 
						||
        UpperCase : procedure ;cdecl;
 | 
						||
        dataListSeparator : array[0..1] of char;
 | 
						||
        spare : array[0..9] of char;
 | 
						||
     end;
 | 
						||
   Pcountryinfo = Pcountryinfo_t;
 | 
						||
 | 
						||
function OSGetCodePage:longint;cdecl;external libc_nlm name 'OSGetCodePage';
 | 
						||
procedure OSGetCountryInfo(_para1:Pcountryinfo_t);cdecl;external system_nlm name 'OSGetCountryInfo';
 | 
						||
procedure OSGetCountryInfo(var _para1:Tcountryinfo);cdecl;external system_nlm name 'OSGetCountryInfo';
 | 
						||
 | 
						||
    const
 | 
						||
       EXCEPTION_HANDLED     = 0;
 | 
						||
       EXCEPTION_NOT_HANDLED = 1;     // chain to next handler
 | 
						||
       { registered debugger parser returns:  }
 | 
						||
       NEXT_DEBUG_PARSER     = -(2);  // call next debug parser
 | 
						||
       NEXT_ALT_DEBUG_PARSER = -(1);  // call next registered debug parser
 | 
						||
       COMMAND_HANDLED       = 0;     // call no other parser
 | 
						||
       INTERNAL_DEBUGGER     = 1;     // pass to NetWare System Debugger
 | 
						||
 | 
						||
 | 
						||
type
 | 
						||
   Pexceptionframe = ^exceptionframe;
 | 
						||
   exceptionframe = record
 | 
						||
        xfReserved : array[0..6] of dword;
 | 
						||
        xfCR3 : Pdword;
 | 
						||
        xfEIP : dword;
 | 
						||
        xfSystemFlags : dword;
 | 
						||
        xfEAX : dword;
 | 
						||
        xfECX : dword;
 | 
						||
        xfEDX : dword;
 | 
						||
        xfEBX : dword;
 | 
						||
        xfESP : dword;
 | 
						||
        xfEBP : dword;
 | 
						||
        xfESI : dword;
 | 
						||
        xfEDI : dword;
 | 
						||
        xfES : array[0..1] of word;
 | 
						||
        xfCS : array[0..1] of word;
 | 
						||
        xfSS : array[0..1] of word;
 | 
						||
        xfDS : array[0..1] of word;
 | 
						||
        xfFS : array[0..1] of word;
 | 
						||
        xfGS : array[0..1] of word;
 | 
						||
        xfLDT : array[0..1] of word;
 | 
						||
        xfSpecial : array[0..1] of word;
 | 
						||
        xfNumber : dword;
 | 
						||
        xfDescription : Pchar;
 | 
						||
        xfFlags : dword;
 | 
						||
        xfErrorCode : dword;
 | 
						||
        xfPageFaultCR2 : dword;
 | 
						||
        xfFPUState : dword;
 | 
						||
        xfHistogram : dword;
 | 
						||
        xfProcessorID : dword;
 | 
						||
     end;
 | 
						||
   xframe_t = exceptionframe;
 | 
						||
   Pxframe_t = ^xframe_t;
 | 
						||
 | 
						||
   SoftBPHandler_t = function (number:longint; address:pointer; frame:Pxframe_t):longint;cdecl;
 | 
						||
   DebugParser_t = function (scr:scr_t; command:Pchar; frame:Pxframe_t):longint;cdecl;
 | 
						||
 | 
						||
 | 
						||
procedure Abend(message:Pchar);cdecl;external system_nlm name 'Abend';
 | 
						||
function AddressOfSoftBreakpoint(number:longint):pointer;cdecl;external system_nlm name 'AddressOfSoftBreakpoint';
 | 
						||
function AddSoftBreakpoint(addr:pointer; handler:SoftBPHandler_t):longint;cdecl;external system_nlm name 'AddSoftBreakpoint';
 | 
						||
function CSetABreakpoint(number:longint; addr:pointer; _type:byte; length:byte):longint;cdecl;external system_nlm name 'CSetABreakpoint';
 | 
						||
procedure EnterDebugger;cdecl;external system_nlm name 'EnterDebugger';
 | 
						||
function GetDebuggerActiveCount:longint;cdecl;external system_nlm name 'GetDebuggerActiveCount';
 | 
						||
function RegisterDebugCommandParser(parseRoutine:DebugParser_t; rTag:rtag_t):longint;cdecl;external system_nlm name 'RegisterDebugCommandParser';
 | 
						||
function RemoveSoftBreakpoint(number:longint):longint;cdecl;external system_nlm name 'RemoveSoftBreakpoint';
 | 
						||
function ReserveABreakpointRTag(_para1:rtag_t):longint;cdecl;external system_nlm name 'ReserveABreakpointRTag';
 | 
						||
function UnRegisterDebugCommandParser(parseRoutine:DebugParser_t):longint;cdecl;external system_nlm name 'UnRegisterDebugCommandParser';
 | 
						||
function UnReserveABreakpoint(_para1:longint):longint;cdecl;external system_nlm name 'UnReserveABreakpoint';
 | 
						||
 | 
						||
 | 
						||
//?? dont know what this is: (exported by system)
 | 
						||
//var preferredModule : pointer;cvar;external;
 | 
						||
 | 
						||
{ Prototypes for libraries and drivers writing their own start-up and shut-
 | 
						||
  down code. (DllMain() is also part of this list and defined in windows.h.)
 | 
						||
  These are not interfaces, but only prototypes for code furnished by the
 | 
						||
  NLM application, library, driver, etc. }
 | 
						||
 | 
						||
function _NonAppCheckUnload:longint;cdecl;external libc_nlm name '_NonAppCheckUnload';
 | 
						||
 | 
						||
type TReadRoutine = function (conn:longint; fileHandle:pointer; offset,nbytes,bytesRead:Psize_t; buffer:pointer):longint; cdecl;
 | 
						||
function _NonAppStart(NLMHandle:TNLMHandle; errorScreen:pointer; commandLine:Pchar; loadDirPath:Pchar; uninitializedDataLength:size_t;
 | 
						||
           NLMFileHandle:pointer; readRoutineP:TReadRoutine; customDataOffset:size_t; customDataSize:size_t; messageCount:longint;
 | 
						||
           messages:PPchar):longint;cdecl;external libc_nlm name '_NonAppStart';
 | 
						||
procedure _NonAppStop;cdecl;external libc_nlm name '_NonAppStop';
 | 
						||
 | 
						||
  const
 | 
						||
     CTX_ACTUAL_CWD = $01;
 | 
						||
  { for set_pathname_format(), namespace appellations...  }
 | 
						||
     SHORT_NAMES     = 0;    { 8.3 format  }
 | 
						||
     MACINTOSH_NAMES = 1;
 | 
						||
     NFS_NAMES       = 2;
 | 
						||
     FTAM_NAMES      = 3;
 | 
						||
     LONG_NAMES      = 4;    { default long-name format  }
 | 
						||
     NT_NAMES        = 5;
 | 
						||
  { definitions useful to fshooks.h (attribute-match) and others...  }
 | 
						||
 | 
						||
     ATTR_NORMAL             = $00000000;  { no read/write restrictions  }
 | 
						||
     ATTR_READ_ONLY          = $00000001;  { read-only file }
 | 
						||
     ATTR_HIDDEN             = $00000002;  { hidden file }
 | 
						||
     ATTR_SYSTEM             = $00000004;  { system file }
 | 
						||
     ATTR_EXECUTE            = $00000008;  { execute only file }
 | 
						||
     ATTR_VOLUME_ID          = $00000008;  { file system label           }
 | 
						||
     ATTR_DIRECTORY          = $00000010;  { subdirectory                }
 | 
						||
     ATTR_ARCHIVE            = $00000020;  { archive file                }
 | 
						||
     ATTR_SHARE              = $00000080;  { Sharable file               }
 | 
						||
     ATTR_NO_SUBALLOC        = $00000800;  { don't sub allocate file     }
 | 
						||
     ATTR_TRANS              = $00001000;  { trans'l file, TTS-usable    }
 | 
						||
     ATTR_READAUD            = $00004000;  { read audit                  }
 | 
						||
     ATTR_WRITAUD            = $00008000;  { write audit                 }
 | 
						||
     ATTR_IMMPURG            = $00010000;  { immediate purge             }
 | 
						||
     ATTR_NORENAM            = $00020000;  { rename inhibit              }
 | 
						||
     ATTR_NODELET            = $00040000;  { delete inhibit              }
 | 
						||
     ATTR_NOCOPY             = $00080000;  { copy inhibit                }
 | 
						||
 | 
						||
     ATTR_FILE_MIGRATED      = $00400000;  { file has been migrated      }
 | 
						||
     ATTR_DONT_MIGRATE       = $00800000;  { don't migrate this file     }
 | 
						||
     ATTR_IMMEDIATE_COMPRESS = $02000000;  { compress file immediately   }
 | 
						||
     ATTR_FILE_COMPRESSED    = $04000000;  { file is compressed          }
 | 
						||
     ATTR_DONT_COMPRESS      = $08000000;  { don't compress this file    }
 | 
						||
     ATTR_CANT_COMPRESS      = $20000000;  { can't compress this file    }
 | 
						||
     ATTR_ATTR_ARCHIVE       = $40000000;  { entry has been modified     }
 | 
						||
  { Faster, better when getstat() or fgetstat() used with request bit map...  }
 | 
						||
     ST_NONE        = $00000000;
 | 
						||
     ST_FLAGS_BIT   = $00000001;
 | 
						||
     ST_MODE_BIT    = $00000002;
 | 
						||
     ST_GEN_BIT     = $00000004;
 | 
						||
     ST_INO_BIT     = $00000008;
 | 
						||
     ST_DEV_BIT     = $00000010;
 | 
						||
     ST_RDEV_BIT    = $00000020;
 | 
						||
     ST_SIZE_BIT    = $00000040;
 | 
						||
     ST_BLOCKS_BIT  = $00000080;
 | 
						||
     ST_BLKSIZE_BIT = $00000100;
 | 
						||
     ST_NLINK_BIT   = $00000200;
 | 
						||
     ST_UID_BIT     = $00000400;
 | 
						||
     ST_GID_BIT     = $00000800;
 | 
						||
     ST_BID_BIT     = $00001000;
 | 
						||
     ST_MID_BIT     = $00002000;
 | 
						||
     ST_ATIME_BIT   = $00004000;
 | 
						||
     ST_MTIME_BIT   = $00008000;
 | 
						||
     ST_CTIME_BIT   = $00010000;
 | 
						||
     ST_BTIME_BIT   = $00020000;
 | 
						||
     ST_STAT_BITS   = $0003FFFF;        { bits for normal stat call }
 | 
						||
  { the following are not returned by a normal stat call }
 | 
						||
     ST_RIGHTS_BIT  = $00040000;
 | 
						||
     ST_NAME_BIT    = $00080000;
 | 
						||
     ST_NS_BIT      = $00100000;        { return name in specified namespace }
 | 
						||
  { path analysis/parsing 'type' and 'flags' arguments for [de]construct() }
 | 
						||
     PATH_UNDEF     = $00000000;
 | 
						||
 | 
						||
     PATH_DOS       = PATH_UNDEF;       { indicates potential DOS path }
 | 
						||
     PATH_UNC       = $00000001;        { double slash found at beginning }
 | 
						||
     PATH_UNIX      = $00000002;        { forward slashes only }
 | 
						||
     PATH_NETWARE   = $00000004;        { slash and colon followed by slashes }
 | 
						||
     PATH_MACINTOSH = $00000008;        { only colons }
 | 
						||
     PATH_ROOTED    = $00000010;        { starts with delimiter }
 | 
						||
     PATH_VOLROOTED = $00000020;        { volume plus colon appears }
 | 
						||
     PATH_EXTENSION = $00000040;        { contains period }
 | 
						||
     PATH_HIERARCHY = $00000080;        { at least one subdirectory element }
 | 
						||
     PATH_SHORTNAME = $00000100;        { 8.3 names only }
 | 
						||
     PATH_LONGNAME  = $00000200;        { at least one element greater than 8.3 }
 | 
						||
     PATH_ENDED     = $00000400;        { ends in delimiter }
 | 
						||
     PATH_DOSDRIVE  = $00001000;        { single-letter drive, colon and path }
 | 
						||
     PATH_MIXEDCASE = $00002000;        { at least one element in mixed case }
 | 
						||
     PATH_DOTS      = $00004000;        { path contains dots }
 | 
						||
     PATH_SLASH     = $00008000;        { path contains a slash }
 | 
						||
     PATH_BACKSLASH = $00010000;        { path contains a backslash }
 | 
						||
     PATH_COLON     = $00020000;        { path contains a colon }
 | 
						||
     PATH_ILLEGAL   = $80000000;        { illegal character or combination }
 | 
						||
     //PATH_MIXED = PATH_SHORT or PATH_LONG;
 | 
						||
{     d_cdatetime = d_cdatetim.tv_sec;
 | 
						||
     d_adatetime = d_adatetim.tv_sec;
 | 
						||
     d_bdatetime = d_bdatetim.tv_sec;
 | 
						||
     d_ddatetime = d_ddatetim.tv_sec;}
 | 
						||
       FSKEY_NONE = -(1);
 | 
						||
       FSKEY_TRAD = 0;
 | 
						||
       FSKEY_NSS  = 1;
 | 
						||
    { values returned by _fildes_type(): see sys/mode.h  }
 | 
						||
    { values returned by _fs_type()...  }
 | 
						||
    { 'fildes' is not a file                        }
 | 
						||
       FS_NOT_FS  = $00000000;
 | 
						||
       FS_LFS     = $00000100;  { file in local, traditional file system }
 | 
						||
       FS_REMOTE  = $00000200;  { file in remote file system }
 | 
						||
       FS_DOS     = $00000400;  { file in local, DOS file system }
 | 
						||
       FS_NSS     = $00000800;  { file in Novell Storage Services }
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 | 
						||
{ for getcwdpath(), get NKS context for current working directory...  }
 | 
						||
{ for set_pathname_format(), namespace appellations...  }
 | 
						||
{ definitions useful to fshooks.h (attribute-match) and others...  }
 | 
						||
{ Faster, better when getstat() or fgetstat() used with request bit map...  }
 | 
						||
{ the following are not returned by a normal stat call                       }
 | 
						||
{ path analysis/parsing 'type' and 'flags' arguments for [de]construct()     }
 | 
						||
{ d_ddatetim & d_deletedID valid only in scanerasedfiles                     }
 | 
						||
{ c.f. these fields in struct dirent...  }
 | 
						||
{ untouched by scanerasedfiles()         }
 | 
						||
 | 
						||
type
 | 
						||
   Pnwdirent = ^Tnwdirent;
 | 
						||
   Tnwdirent = record
 | 
						||
        d_userspec : dword;
 | 
						||
        d_flags : dword;                         // flags for this entry
 | 
						||
        d_type : mode_t;                         // type of entry
 | 
						||
        d_mode : mode_t;                         // emulated file mode
 | 
						||
        d_ino : ino_t;                           // directory entry number of d_name
 | 
						||
        d_size : off64_t;                        // size of file
 | 
						||
        d_spare : array[0..38] of dword;
 | 
						||
        d_cdatetim : timespec_t;                 // creation date and time
 | 
						||
        d_adatetim : timespec_t;                 // last access date--files only
 | 
						||
        d_bdatetim : timespec_t;                 // last archive date and time
 | 
						||
        d_ddatetim : timespec_t;                 // deleted date/time
 | 
						||
        d_uid : uid_t;                           // owner id (object id)
 | 
						||
        d_archivedID : uid_t;                    // object ID that last archived file
 | 
						||
        d_updatedID : uid_t;                     // object ID that last updated file
 | 
						||
        d_deletedID : uid_t;                     // deleted ID
 | 
						||
        d_pad1 : byte;
 | 
						||
        d_pad2 : byte;
 | 
						||
        d_pad3 : byte;
 | 
						||
        d_namelen : byte;                        // lenght of following name:
 | 
						||
        d_name : array[0..(255 + 1)-1] of char;  // only portable field in this structure
 | 
						||
     end;
 | 
						||
   TNWDIR = Tnwdirent;
 | 
						||
   PNWDIR = ^TNWDIR;
 | 
						||
{ sizeof(struct nwdirent)==0x200 (512.)  }
 | 
						||
{ extensions of unistd.h path parsing functions...  }
 | 
						||
 | 
						||
 | 
						||
function deconstruct(path:Pchar; server:Pchar; volume:Pchar; directory:Pchar; name:Pchar;
 | 
						||
           extension:Pchar; elements:Plongint; flags:Plongint):longint;cdecl;external libc_nlm name 'deconstruct';
 | 
						||
function construct(path:Pchar; server:Pchar; volume:Pchar; directory:Pchar; name:Pchar;
 | 
						||
           extension:Pchar; flags:longint):longint;cdecl;external libc_nlm name 'construct';
 | 
						||
{ extensions of client.h identity functions...  }
 | 
						||
function get_identity(pathctx:NXPathCtx_t; identity:Plongint):longint;cdecl;external libc_nlm name 'get_identity';
 | 
						||
{ extensions of unistd.h current working directory I/O functions...  }
 | 
						||
function getcwdpath(buf:Pchar; pathCtx:PNXPathCtx_t; flags:dword):Pchar;cdecl;external libc_nlm name 'getcwdpath';
 | 
						||
 | 
						||
function chdir2(path:Pchar):longint;cdecl;external libc_nlm name 'chdir2';
 | 
						||
function setcwd(pathCtx:NXPathCtx_t):longint;cdecl;external libc_nlm name 'setcwd';
 | 
						||
function setcwd2(pathCtx:NXPathCtx_t):longint;cdecl;external libc_nlm name 'setcwd2';
 | 
						||
{ extensions of unistd.h file I/O functions...  }
 | 
						||
function Fpeof(fildes:longint):longint;cdecl;external libc_nlm name 'eof';
 | 
						||
function tell(fildes:longint):off_t;cdecl;external libc_nlm name 'tell';
 | 
						||
function Fptell(fildes:longint):off_t;cdecl;external libc_nlm name 'tell';
 | 
						||
{ extensions of sys/stat.h functions...  }
 | 
						||
function fgetstat(fildes:longint; buf:Pstat; requestmap:dword):longint;cdecl;external libc_nlm name 'fgetstat';
 | 
						||
 | 
						||
function getstat(ctx:NXPathCtx_t; path:Pchar; buf:Pstat; requestmap:dword):longint;cdecl;external libc_nlm name 'getstat';
 | 
						||
function fgetstat_with_namespace(fildes:longint; buf:Pstat; requestmap:dword; _namespace:longint):longint;cdecl;external libc_nlm name 'fgetstat_with_namespace';
 | 
						||
 | 
						||
function getstat_with_namespace(ctx:NXPathCtx_t; path:Pchar; buf:Pstat; requestmap:dword; _namespace:longint):longint;cdecl;external libc_nlm name 'getstat_with_namespace';
 | 
						||
{ pathname format (namespace) state...  }
 | 
						||
function set_pathname_format(newformat:longint; oldformat:Plongint):longint;cdecl;external libc_nlm name 'set_pathname_format';
 | 
						||
{ for use with Novell Clustering...  }
 | 
						||
 | 
						||
function isclusteredvirtualserver(servername:Pchar):longint;cdecl;external libc_nlm name 'isclusteredvirtualserver';
 | 
						||
{ equivalent to CLib's FileServerFileCopy()...  }
 | 
						||
function fscopy(fildes1:longint; fildes2:longint; offset1:off64_t; offset2:off64_t; length:size_t;
 | 
						||
           nbytes:Psize_t):longint;cdecl;external libc_nlm name 'fscopy';
 | 
						||
{ equivalent to similarly named calls in CLib...  }
 | 
						||
 | 
						||
function purgeerasedfile(path:Pchar; sequence:longint):longint;cdecl;external libc_nlm name 'purgeerasedfile';
 | 
						||
 | 
						||
 | 
						||
function salvageerasedfile(pathName:Pchar; sequence:longint; newFileName:Pchar):longint;cdecl;external libc_nlm name 'salvageerasedfile';
 | 
						||
 | 
						||
function scanerasedfiles(path:Pchar; nextEntryNumber:Plongint; deletedFileInfo:PNWDIR):longint;cdecl;external libc_nlm name 'scanerasedfiles';
 | 
						||
function _fs_type(fildes:longint):longint;cdecl;external libc_nlm name '_fs_type';
 | 
						||
function _fildes_type(fildes:longint):longint;cdecl;external libc_nlm name '_fildes_type';
 | 
						||
function _fildes_from_nsskey(key:Tuint64; oflag:longint):longint;cdecl;external libc_nlm name '_fildes_from_nsskey';
 | 
						||
function _key_from_fildes(fildes:longint; _type:Plongint; err:Plongint):Tuint64;cdecl;external libc_nlm name '_key_from_fildes';
 | 
						||
{ fast type of a file descriptor--st_mode in fstat()...  }
 | 
						||
{ equates to move between NKS file handles and POSIX descriptors...  }
 | 
						||
{ derivation of POSIX descriptor from NSS open file key...  }
 | 
						||
{ back-derivation of file system key...  }
 | 
						||
{ types returned in back-derivation...  }
 | 
						||
{ values returned by _fildes_type(): see sys/mode.h  }
 | 
						||
{ values returned by _fs_type()...  }
 | 
						||
{ attributes for NXDirAttrWin_t 'dwFileAttributes' field...  }
 | 
						||
 | 
						||
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
  const
 | 
						||
     FILE_ATTRIBUTE_READONLY            = $00000001;
 | 
						||
     FILE_ATTRIBUTE_HIDDEN              = $00000002;
 | 
						||
     FILE_ATTRIBUTE_SYSTEM              = $00000004;
 | 
						||
     FILE_ATTRIBUTE_DIRECTORY           = $00000010;
 | 
						||
     FILE_ATTRIBUTE_ARCHIVE             = $00000020;
 | 
						||
     FILE_ATTRIBUTE_ENCRYPTED           = $00000040;
 | 
						||
     FILE_ATTRIBUTE_NORMAL              = $00000080;
 | 
						||
     FILE_ATTRIBUTE_TEMPORARY           = $00000100;
 | 
						||
     FILE_ATTRIBUTE_SPARSE_FILE         = $00000200;
 | 
						||
     FILE_ATTRIBUTE_REPARSE_POINT       = $00000400;
 | 
						||
     FILE_ATTRIBUTE_COMPRESSED          = $00000800;
 | 
						||
     FILE_ATTRIBUTE_OFFLINE             = $00001000;
 | 
						||
     FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = $00002000;
 | 
						||
 | 
						||
 | 
						||
type
 | 
						||
   PNXDirAttrDos_t = ^NXDirAttrDos_t;
 | 
						||
   NXDirAttrDos_t = record                    { DOS/FAT32 (NX_PNF_DOS) attributes    }
 | 
						||
        xdeHeader : NXDeHeader_t;
 | 
						||
        xdeFid : NXFid_t;
 | 
						||
        xdeEffectiveRights : dword;
 | 
						||
                                              { FAT32 File System Spec., p. 22       }
 | 
						||
        xdeAttr : dword;
 | 
						||
        xdeCrtDate : word;
 | 
						||
        xdeCrtTime : word;
 | 
						||
        xdeCrtTimeTenth : word;
 | 
						||
        xdeLastAccDate : word;
 | 
						||
        xdeWrtDate : word;
 | 
						||
        xdeWrtTime : word;
 | 
						||
        xdeFileSize : dword;
 | 
						||
        Reserved1 : dword;
 | 
						||
        Reserved2 : dword;
 | 
						||
     end;
 | 
						||
{ DOS/FAT32 (NX_PNF_DOS) information.. }
 | 
						||
{ ...including name                    }
 | 
						||
{ maximum length is 255 characters     }
 | 
						||
 | 
						||
   PNXDirEnumDos_t = ^NXDirEnumDos_t;
 | 
						||
   NXDirEnumDos_t = record
 | 
						||
        deDosDirAttr : NXDirAttrDos_t;
 | 
						||
        deDirMark : NXDirMark_t;
 | 
						||
        deShortName : array[0..15] of char;
 | 
						||
        deName : pointer;
 | 
						||
     end;
 | 
						||
{ Win32 (NX_PNF_WIN) attributes        }
 | 
						||
{ see WIN32_FIND_DATA...               }
 | 
						||
{ FILE_ATTRIBUTE_NORMAL, etc.          }
 | 
						||
{ date and time of creation or -1      }
 | 
						||
{ date and time of last access         }
 | 
						||
{ date and time of last modification   }
 | 
						||
{ date and time of last attr change    }
 | 
						||
{ see BY_HANDLE_FILE_INFORMATION...    }
 | 
						||
{ always 1 for FAT                     }
 | 
						||
{ unique identifier                    }
 | 
						||
{ CIFS Specification 0.9, 4.2.16.8...  }
 | 
						||
{ file system block size               }
 | 
						||
{ (currently) Ramesh-invented fields... }
 | 
						||
{ not in Win32 docs, but exists        }
 | 
						||
{ Boolean flag fields for CIFS         }
 | 
						||
{ total size of extended attributes    }
 | 
						||
{ size of compressed file           }
 | 
						||
{ format of of compression           }
 | 
						||
 | 
						||
   PNXDirAttrWin_t = ^NXDirAttrWin_t;
 | 
						||
   NXDirAttrWin_t = record
 | 
						||
        xdeHeader : NXDeHeader_t;
 | 
						||
        xdeFid : NXFid_t;
 | 
						||
        xdeEffectiveRights : dword;
 | 
						||
        xdeFileAttributes : dword;
 | 
						||
        xdeCreateTime : Tuint64;
 | 
						||
        xdeLastAccessTime : Tuint64;
 | 
						||
        xdeLastWriteTime : Tuint64;
 | 
						||
        xdeLastChangeTime : Tuint64;
 | 
						||
        xdeFileSize : Tuint64;
 | 
						||
        Reserved0 : dword;
 | 
						||
        Reserved1 : dword;
 | 
						||
        Reserved2 : dword;
 | 
						||
        Reserved3 : dword;
 | 
						||
        xdeNumberOfLinks : dword;
 | 
						||
        xdeVolumeSerialNumber : dword;
 | 
						||
        Reserved4 : dword;
 | 
						||
        Reserved5 : dword;
 | 
						||
        xdeFileIndex : Tuint64;
 | 
						||
        Reserved6 : Tuint64;
 | 
						||
        xdeAllocationSize : dword;
 | 
						||
        xdeAccessFlags : dword;
 | 
						||
        xdeMiscFlags : dword;
 | 
						||
        Reserved7 : dword;
 | 
						||
        xdeEaSize : Tuint64;
 | 
						||
        xdeCompressedFileSize : Tuint64;
 | 
						||
        xdeCompressionFormat : word;
 | 
						||
        Reserved8 : word;
 | 
						||
        Reserved9 : dword;
 | 
						||
        Reserved10 : Tuint64;
 | 
						||
     end;
 | 
						||
{ Win32 (NX_PNF_WIN) information...    }
 | 
						||
{ ...including name                    }
 | 
						||
{ see WIN32_FIND_DATA...               }
 | 
						||
{ maximum length is 255 characters     }
 | 
						||
 | 
						||
   PNXDirEnumWin_t = ^NXDirEnumWin_t;
 | 
						||
   NXDirEnumWin_t = record
 | 
						||
        deWinDirAttr : NXDirAttrWin_t;
 | 
						||
        deDirMark : NXDirMark_t;
 | 
						||
        deAlternativeFileName : array[0..15] of char;
 | 
						||
        deName : pointer;
 | 
						||
     end;
 | 
						||
 | 
						||
// nks/errno.h
 | 
						||
 | 
						||
  const
 | 
						||
     NX_EOF = -(1);
 | 
						||
     NX_ENOENT = 1;        { no such file or directory                      }
 | 
						||
     NX_E2BIG = 2;         { argument list too big                          }
 | 
						||
     NX_ENOEXEC = 3;       { exec format error                              }
 | 
						||
     NX_EBADF = 4;         { bad file number (descriptor or handle)         }
 | 
						||
     NX_ENOMEM = 5;        { not enough memory                              }
 | 
						||
     NX_EACCES = 6;        { permission denied                              }
 | 
						||
     NX_EEXIST = 7;        { file exists                                    }
 | 
						||
     NX_EXDEV = 8;         { cross-device link                              }
 | 
						||
     NX_EINVAL = 9;        { invalid argument                               }
 | 
						||
     NX_ENFILE = 10;       { file table overflow                            }
 | 
						||
     NX_EMFILE = 11;       { too many open files                            }
 | 
						||
     NX_ENOSPC = 12;       { no space left on device                        }
 | 
						||
     NX_ERANGE = 14;       { result too large                               }
 | 
						||
     NX_EDEADLK = 15;      { resource deadlock would occur                  }
 | 
						||
     NX_EINUSE = 16;       { resource(s) in use                             }
 | 
						||
     NX_ESERVER = 17;      { server error (memory out, I/O error, etc.)     }
 | 
						||
     NX_ENOSERVR = 18;     { no server (queue server, file server, etc.)    }
 | 
						||
     NX_EWRNGKND = 19;     { wrong kind--an operation is being...           }
 | 
						||
                           {  ...attempted on the wrong kind of object      }
 | 
						||
     NX_ETRNREST = 20;     { transaction restarted                          }
 | 
						||
     NX_ERESOURCE = 21;    { resources unavailable (maybe permanently)      }
 | 
						||
     NX_EBADHNDL = 22;     { bad non-file handle (screen, semaphore, etc.)  }
 | 
						||
     NX_EAGAIN = 24;       { resource temporarily unavailable               }
 | 
						||
     NX_EIO = 28;          { physical I/O error                             }
 | 
						||
     NX_EPIPE = 32;        { broken pipe                                    }
 | 
						||
     NX_EALREADY = 37;     { operation already in progress                  }
 | 
						||
     NX_ETIMEDOUT = 60;    { connection timed out                           }
 | 
						||
     NX_EBUSY = 62;        { resource busy                                  }
 | 
						||
     NX_EINTR = 63;        { interrupted function call                      }
 | 
						||
     NX_EISDIR = 64;       { is a directory (not a file)                    }
 | 
						||
     NX_ENAMETOOLONG = 65; { filename too long                              }
 | 
						||
     NX_ENOSYS = 66;       { function not implemented                       }
 | 
						||
     NX_ENOTDIR = 67;      { not a directory                                }
 | 
						||
     NX_ENOTEMPTY = 68;    { directory is not empty                         }
 | 
						||
     NX_EPERM = 69;        { operation not permitted                        }
 | 
						||
     NX_ECHILD = 70;       { no child process                               }
 | 
						||
     NX_EFBIG = 71;        { file too large                                 }
 | 
						||
     NX_EMLINK = 72;       { too many links                                 }
 | 
						||
     NX_ENOLCK = 74;       { no locks available                             }
 | 
						||
     NX_ESRCH = 77;        { no such object                                 }
 | 
						||
     NX_ENOTSUP = 79;      { this optional functionality not supported      }
 | 
						||
     NX_EBADTYPE = 80;     { bad type for operation                         }
 | 
						||
     NX_EOVERFLOW = 81;    { operation would overflow                       }
 | 
						||
     NX_EHOSTDOWN = 82;    { host is down                                   }
 | 
						||
     NX_EHOSTUNREACH = 83; { no route to host                               }
 | 
						||
     NX_EPROCLIM = 84;     { too many processes                             }
 | 
						||
     NX_EUNKNOWN = 99;     { unknown error occurring                        }
 | 
						||
     NX_ENLMDATA = 100;    { anomaly in NLM data structure                  }
 | 
						||
     NX_EILSEQ = 101;      { illegal character sequence in multibyte        }
 | 
						||
     NX_EINCONSIS = 102;   { internal library inconsistency                 }
 | 
						||
     NX_EDOSTEXTEOL = 103; { DOS-text file inconsistency--no newline...     }
 | 
						||
                           { ...after carriage return                       }
 | 
						||
     NX_ENONEXTANT = 104;  { object doesn't exist                           }
 | 
						||
     NX_ENOCONTEXT = 105;  { the caller is not an NKS thread                }
 | 
						||
     NX_ENAMESPACE = 106;  { invalid namespace or namespace operation       }
 | 
						||
     NX_EBADCONN = 107;    { invalid connection                             }
 | 
						||
     NX_EEXHAUSTED = 108;  { end of search                                  }
 | 
						||
     NX_EFILESYS = 111;    { generic file system error                      }
 | 
						||
     NX_ESUFFICIENT = 112; { insufficient space for any operation result    }
 | 
						||
     NX_EPARTONLY = 113;   { partial result only  for lack of space         }
 | 
						||
     NX_EBADIDENT = 114;   { invalid user or other identity                 }
 | 
						||
     { aliases...  }
 | 
						||
     NX_ENOSUPPORT = NX_ENOTSUP;
 | 
						||
     //NX_ENORESOURCE = NX_BADIDENT;
 | 
						||
 | 
						||
 | 
						||
procedure NXGetNKSVersion(major:Plongint; minor:Plongint; revision:Plongint; platformName:pointer; maxNameLength:size_t);cdecl;external libc_nlm name 'NXGetNKSVersion';
 | 
						||
procedure NXGetNKSVersion(var major, minor, revision:longint; platformName:pchar; maxNameLength:size_t);cdecl;external libc_nlm name 'NXGetNKSVersion';
 | 
						||
function NXStrError(errornumber:longint):Pchar;cdecl;external libc_nlm name 'NXStrError';
 | 
						||
 | 
						||
 | 
						||
// nks/mac.h
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
  { values for 'fdFlags' (Inside Macintosh IV-105)...  }
 | 
						||
 | 
						||
const
 | 
						||
  fOnDesk    = 1;
 | 
						||
  fHasBundle = 8192;
 | 
						||
  fInvisible = 16384;
 | 
						||
  { values for 'fdLocation' (Inside Macintosh IV-105)...  }
 | 
						||
  fDisk      = 0;
 | 
						||
  fDesktop   = -(2);
 | 
						||
  fTrash     = -(3);
 | 
						||
  { 'ioFlAttrib' values...  }
 | 
						||
  flLocked   = $01;
 | 
						||
  flResOpen  = $04;
 | 
						||
  flDatOpen  = $08;
 | 
						||
  flIsDir    = $10;
 | 
						||
  flBothOpen = $80;
 | 
						||
 | 
						||
type
 | 
						||
   POSType = ^OSType;
 | 
						||
   OSType = char;
 | 
						||
{ (Inside Macintosh II-373)  }
 | 
						||
{ (Inside Macintosh I-139)  }
 | 
						||
 | 
						||
   PPoint = ^Point;
 | 
						||
   Point = record
 | 
						||
        v : word;
 | 
						||
        h : word;
 | 
						||
     end;
 | 
						||
{ (Inside Macintosh I-141)  }
 | 
						||
 | 
						||
   PRect = ^Rect;
 | 
						||
   Rect = record
 | 
						||
       case longint of
 | 
						||
          0 : ( corner : record
 | 
						||
               topLeft : Point;
 | 
						||
               botRight : Point;
 | 
						||
            end );
 | 
						||
          1 : ( point : record
 | 
						||
               top : word;
 | 
						||
               left : word;
 | 
						||
               bottom : word;
 | 
						||
               right : word;
 | 
						||
            end );
 | 
						||
       end;
 | 
						||
{ (Inside Macintosh IV-104)  }
 | 
						||
{ window  }
 | 
						||
 | 
						||
   PFInfo = ^FInfo;
 | 
						||
   FInfo = record
 | 
						||
        fdType : OSType;
 | 
						||
        fdCreator : OSType;
 | 
						||
        fdFlags : word;
 | 
						||
        fdLocation : Point;
 | 
						||
        fdFldr : word;
 | 
						||
     end;
 | 
						||
{ (Inside Macintosh IV-105)  }
 | 
						||
{ Finder (Desktop) comment ID  }
 | 
						||
{ home directory ID  }
 | 
						||
 | 
						||
   PFXInfo = ^FXInfo;
 | 
						||
   FXInfo = record
 | 
						||
        fdIconID : word;
 | 
						||
        fdUnused : array[0..3] of word;
 | 
						||
        fdComment : word;
 | 
						||
        fdPutAway : dword;
 | 
						||
     end;
 | 
						||
{ (Inside Macintosh IV-105)  }
 | 
						||
{ folder's rectangle  }
 | 
						||
 | 
						||
   PDInfo = ^DInfo;
 | 
						||
   DInfo = record
 | 
						||
        frRect : Rect;
 | 
						||
        frFlags : word;
 | 
						||
        frLocation : Point;
 | 
						||
        frView : word;
 | 
						||
     end;
 | 
						||
{ scroll position                            }
 | 
						||
{ directory ID chain of open folders         }
 | 
						||
{ directory ID                               }
 | 
						||
 | 
						||
   PDXInfo = ^DXInfo;
 | 
						||
   DXInfo = record
 | 
						||
        frScroll : Point;
 | 
						||
        frOpenChain : dword;
 | 
						||
        frUnused : word;
 | 
						||
        frComment : word;
 | 
						||
        frPutAway : dword;
 | 
						||
     end;
 | 
						||
{ information used by the Finder             }
 | 
						||
{ directory ID or file number                }
 | 
						||
{ first allocation block of data fork        }
 | 
						||
{ logical end-of-file of data fork           }
 | 
						||
{ physical end-of-file of data fork          }
 | 
						||
{ first allocation block of resource fork    }
 | 
						||
{ logical end-of-file of resource fork       }
 | 
						||
{ physical end-of-file of resource fork      }
 | 
						||
{ date and time of creation                  }
 | 
						||
{ date and time of last modification         }
 | 
						||
{ date and time of last back-up              }
 | 
						||
{ additional information used by the Finder  }
 | 
						||
{ file's parent directory ID                 }
 | 
						||
{ file's clump size                          }
 | 
						||
 | 
						||
   PhFileInfo = ^hFileInfo;
 | 
						||
   hFileInfo = record
 | 
						||
        ioFlFndrInfo : FInfo;
 | 
						||
        ioDirID : dword;
 | 
						||
        ioFlStBlk : word;
 | 
						||
        ioFlLgLen : dword;
 | 
						||
        ioFlPyLen : dword;
 | 
						||
        ioFlRStBlk : word;
 | 
						||
        ioFlRLgLen : dword;
 | 
						||
        ioFlRPyLen : dword;
 | 
						||
        ioFlCrDat : dword;
 | 
						||
        ioFlMdDat : dword;
 | 
						||
        ioFlBkDat : dword;
 | 
						||
        ioFlXFndrInfo : FXInfo;
 | 
						||
        ioFlParID : dword;
 | 
						||
        ioFlClpSiz : dword;
 | 
						||
     end;
 | 
						||
{ information used by the Finder             }
 | 
						||
{ number of files in directory               }
 | 
						||
{ date and time of creation                  }
 | 
						||
{ date and time of last modification         }
 | 
						||
{ date and time of last backup               }
 | 
						||
{ additional information used by the Finder  }
 | 
						||
{ directory's parent directory ID            }
 | 
						||
 | 
						||
   PdirInfo = ^dirInfo;
 | 
						||
   dirInfo = record
 | 
						||
        ioDrUsrWds : DInfo;
 | 
						||
        ioDrDirID : dword;
 | 
						||
        ioDrNmFls : word;
 | 
						||
        filler3 : array[0..8] of word;
 | 
						||
        ioDrCrDat : dword;
 | 
						||
        ioDrMdDat : dword;
 | 
						||
        ioDrBkDat : dword;
 | 
						||
        ioDrFndrInfo : DXInfo;
 | 
						||
        ioDrParID : dword;
 | 
						||
     end;
 | 
						||
 | 
						||
   PCInfoPBRec = ^CInfoPBRec;
 | 
						||
   CInfoPBRec = record
 | 
						||
       case longint of
 | 
						||
          0 : ( _file : hFileInfo );
 | 
						||
          1 : ( dir : dirInfo );
 | 
						||
       end;
 | 
						||
{ Macintosh (NX_PNF_MAC) attributes          }
 | 
						||
{ (Inside Macintosh IV-125)  }
 | 
						||
{ path reference number  }
 | 
						||
 | 
						||
   PNXDirAttrMac_t = ^NXDirAttrMac_t;
 | 
						||
   NXDirAttrMac_t = record
 | 
						||
        xdeHeader : NXDeHeader_t;
 | 
						||
        xdeFid : NXFid_t;
 | 
						||
        xdeEffectRights : dword;
 | 
						||
        xdeIoFRefNum : word;
 | 
						||
        xdeIofVersNum : int8_t;
 | 
						||
        filler1 : int8_t;
 | 
						||
        xdeIoFDirIndex : word;
 | 
						||
        xdeIoFlAttrib : int8_t;
 | 
						||
        filler2 : int8_t;
 | 
						||
        filler3 : dword;
 | 
						||
        xdeInfo : CInfoPBRec;
 | 
						||
     end;
 | 
						||
{ Macintosh (NX_PNF_MAC) information...      }
 | 
						||
{ ...including                               }
 | 
						||
{ maximum length is 255 characters     }
 | 
						||
 | 
						||
   PNXDirEnumMac_t = ^NXDirEnumMac_t;
 | 
						||
   NXDirEnumMac_t = record
 | 
						||
        deMacDirAttr : NXDirAttrMac_t;
 | 
						||
        deDirMark : NXDirMark_t;
 | 
						||
        deName : pointer;
 | 
						||
     end;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
 | 
						||
// nks/memory.h
 | 
						||
 | 
						||
  { deprecated values for memory control flags...  }
 | 
						||
 | 
						||
  const
 | 
						||
     NX_PAGE_UNLOCK       = $00000000;
 | 
						||
     NX_PAGE_LOCK         = $00000001;
 | 
						||
     NX_PAGE_RESERVE      = $00000020;
 | 
						||
     NX_PAGE_COMMIT       = $00000040;
 | 
						||
     NX_PAGE_PHYSICAL     = $00000080;
 | 
						||
     NX_PAGE_RESERVE_ONLY = $00000100;
 | 
						||
  { final values for memory control flags...  }
 | 
						||
     NX_MEM_UNLOCK        = $00000000;
 | 
						||
     NX_MEM_LOCK          = $00000001;
 | 
						||
     NX_MEM_DECOMMIT      = $00000020;
 | 
						||
     NX_MEM_COMMIT        = $00000040;
 | 
						||
     NX_MEM_RESERVE       = $00000100;
 | 
						||
 | 
						||
function NXMemAlloc(size:size_t; alignment:size_t):pointer;cdecl;external libc_nlm name 'NXMemAlloc';
 | 
						||
function NXMemCtl(start:pointer; size:size_t; flags:dword):longint;cdecl;external libc_nlm name 'NXMemCtl';
 | 
						||
procedure NXMemFree(memory:pointer);cdecl;external libc_nlm name 'NXMemFree';
 | 
						||
function NXMemRealloc(old:pointer; newSize:size_t; alignment:size_t):pointer;cdecl;external libc_nlm name 'NXMemRealloc';
 | 
						||
function NXPageAlloc(pageCount:size_t; flags:dword):pointer;cdecl;external libc_nlm name 'NXPageAlloc';
 | 
						||
procedure NXPageFree(memory:pointer);cdecl;external libc_nlm name 'NXPageFree';
 | 
						||
 | 
						||
 | 
						||
{ nks/netware.h =============================================================}
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
type
 | 
						||
 | 
						||
   PnxTrustees_t = ^nxTrustees_t;
 | 
						||
   nxTrustees_t = record
 | 
						||
        trObjectID,
 | 
						||
        trRights   : dword;
 | 
						||
     end;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
{----------------------------------------------------------------------------
 | 
						||
 The following are unofficial NKS interfaces and can only be used on NetWare.
 | 
						||
 ----------------------------------------------------------------------------}
 | 
						||
 | 
						||
procedure nxCancelCheck;cdecl;external libc_nlm name 'nxCancelCheck';
 | 
						||
procedure nxCancelDisable;cdecl;external libc_nlm name 'nxCancelDisable';
 | 
						||
procedure nxCancelEnable;cdecl;external libc_nlm name 'nxCancelEnable';
 | 
						||
function nxContextFlushName(context:PNXContext_t):longint;cdecl;external libc_nlm name 'nxContextFlushName';
 | 
						||
 | 
						||
function nxExportInterface(funcAddr:pointer; funcName:Pchar):longint;cdecl;external libc_nlm name 'nxExportInterface';
 | 
						||
 | 
						||
function nxExportInterfaceWrapped(funcAddr:pointer; stackWords:longint; funcName:Pchar; reference:Ppointer):longint;cdecl;external libc_nlm name 'nxExportInterfaceWrapped';
 | 
						||
function nxGetEnviron:PPchar;cdecl;external libc_nlm name 'nxGetEnviron';
 | 
						||
function nxIsLoadedProtected:NXBool_t;cdecl;external libc_nlm name 'nxIsLoadedProtected';
 | 
						||
function nxIsProtectedAddress(_para1:pointer):NXBool_t;cdecl;external libc_nlm name 'nxIsProtectedAddress';
 | 
						||
function nxMemGetSize(block:pointer):size_t;cdecl;external libc_nlm name 'nxMemGetSize';
 | 
						||
procedure nxUnexportInterfaceWrapped(reference:pointer);cdecl;external libc_nlm name 'nxUnexportInterfaceWrapped';
 | 
						||
{ NetWare trustees...  }
 | 
						||
 | 
						||
function nxAddTrustee(pathCtx:NXPathCtx_t; pathname:Pchar; objectID:dword; rights:dword):longint;cdecl;external libc_nlm name 'nxAddTrustee';
 | 
						||
function nxDeleteTrustee(pathCtx:NXPathCtx_t; pathname:Pchar; objectID:dword):longint;cdecl;external libc_nlm name 'nxDeleteTrustee';
 | 
						||
function nxScanTrustees(pathCtx:NXPathCtx_t; pathname:Pchar; sequence:dword; count:Pdword; trusteeVector:PnxTrustees_t;
 | 
						||
           nextSequence:Pdword):longint;cdecl;external libc_nlm name 'nxScanTrustees';
 | 
						||
{ wrap/unwrap sobriquets...  }
 | 
						||
// nks/synch.h
 | 
						||
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
type
 | 
						||
   PNXHierarchy_t = ^NXHierarchy_t;
 | 
						||
   NXHierarchy_t = longint;
 | 
						||
 | 
						||
   PNXMutex_t = ^NXMutex_t;
 | 
						||
   NXMutex_t = record
 | 
						||
        reserved1 : Tuint64;
 | 
						||
        reserved2 : array[0..9] of pointer;
 | 
						||
     end;
 | 
						||
 | 
						||
   PNXRwLock_t = ^NXRwLock_t;
 | 
						||
   NXRwLock_t = record
 | 
						||
        reserved1 : Tuint64;
 | 
						||
        reserved2 : array[0..9] of pointer;
 | 
						||
     end;
 | 
						||
 | 
						||
   PNXSema_t = ^NXSema_t;
 | 
						||
   NXSema_t = record
 | 
						||
        reserved1 : Tuint64;
 | 
						||
        reserved2 : array[0..4] of pointer;
 | 
						||
     end;
 | 
						||
 | 
						||
   PNXCond_t = ^NXCond_t;
 | 
						||
   NXCond_t = record
 | 
						||
        reserved1 : Tuint64;
 | 
						||
        reserved2 : array[0..4] of pointer;
 | 
						||
     end;
 | 
						||
 | 
						||
   PNXLockInfo_t = ^NXLockInfo_t;
 | 
						||
   NXLockInfo_t = record
 | 
						||
        liName : array[0..(31 + 1)-1] of char;
 | 
						||
        liFlags : dword;
 | 
						||
        liPad : array[0..1] of dword;
 | 
						||
     end;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
{ Mutexes...  }
 | 
						||
 | 
						||
 | 
						||
function NXMutexAlloc(flags:dword; hierarchy:NXHierarchy_t; info:PNXLockInfo_t):PNXMutex_t;cdecl;external libc_nlm name 'NXMutexAlloc';
 | 
						||
procedure NXMutexDeinit(mutex:PNXMutex_t);cdecl;external libc_nlm name 'NXMutexDeinit';
 | 
						||
function NXMutexDepth(mutex:PNXMutex_t):longint;cdecl;external libc_nlm name 'NXMutexDepth';
 | 
						||
procedure NXMutexFree(mutex:PNXMutex_t);cdecl;external libc_nlm name 'NXMutexFree';
 | 
						||
function NXMutexInit(mutex:PNXMutex_t; flags:dword; hierarchy:NXHierarchy_t; info:PNXLockInfo_t):longint;cdecl;external libc_nlm name 'NXMutexInit';
 | 
						||
function NXMutexIsOwned(mutex:PNXMutex_t):NXBool_t;cdecl;external libc_nlm name 'NXMutexIsOwned';
 | 
						||
function NXMutexTestFlag(mutex:PNXMutex_t; flag:dword):NXBool_t;cdecl;external libc_nlm name 'NXMutexTestFlag';
 | 
						||
function NXLock(mutex:PNXMutex_t):longint;cdecl;external libc_nlm name 'NXLock';
 | 
						||
function NXTryLock(mutex:PNXMutex_t):NXBool_t;cdecl;external libc_nlm name 'NXTryLock';
 | 
						||
function NXUnlock(mutex:PNXMutex_t):longint;cdecl;external libc_nlm name 'NXUnlock';
 | 
						||
 | 
						||
{ Reader-writer locks...  }
 | 
						||
function NXRwLockAlloc(hierarchy:NXHierarchy_t; info:PNXLockInfo_t):PNXRwLock_t;cdecl;external libc_nlm name 'NXRwLockAlloc';
 | 
						||
procedure NXRwLockDeinit(lock:PNXRwLock_t);cdecl;external libc_nlm name 'NXRwLockDeinit';
 | 
						||
procedure NXRwLockFree(lock:PNXRwLock_t);cdecl;external libc_nlm name 'NXRwLockFree';
 | 
						||
function NXRwLockInit(lock:PNXRwLock_t; hierarchy:NXHierarchy_t; info:PNXLockInfo_t):longint;cdecl;external libc_nlm name 'NXRwLockInit';
 | 
						||
function NXRwLockIsOwned(lock:PNXRwLock_t; mode:dword):NXBool_t;cdecl;external libc_nlm name 'NXRwLockIsOwned';
 | 
						||
procedure NXRdLock(lock:PNXRwLock_t);cdecl;external libc_nlm name 'NXRdLock';
 | 
						||
procedure NXWrLock(lock:PNXRwLock_t);cdecl;external libc_nlm name 'NXWrLock';
 | 
						||
function NXTryRdLock(lock:PNXRwLock_t):NXBool_t;cdecl;external libc_nlm name 'NXTryRdLock';
 | 
						||
function NXTryWrLock(lock:PNXRwLock_t):NXBool_t;cdecl;external libc_nlm name 'NXTryWrLock';
 | 
						||
procedure NXRwUnlock(lock:PNXRwLock_t);cdecl;external libc_nlm name 'NXRwUnlock';
 | 
						||
function NXRwLockUpgrade(lock:PNXRwLock_t):longint;cdecl;external libc_nlm name 'NXRwLockUpgrade';
 | 
						||
function NXRwLockDowngrade(lock:PNXRwLock_t):longint;cdecl;external libc_nlm name 'NXRwLockDowngrade';
 | 
						||
{ Semaphores...  }
 | 
						||
function NXSemaAlloc(count:dword; arg:pointer):PNXSema_t;cdecl;external libc_nlm name 'NXSemaAlloc';
 | 
						||
procedure NXSemaDeinit(sema:PNXSema_t);cdecl;external libc_nlm name 'NXSemaDeinit';
 | 
						||
procedure NXSemaFree(sema:PNXSema_t);cdecl;external libc_nlm name 'NXSemaFree';
 | 
						||
function NXSemaInit(sema:PNXSema_t; count:dword; arg:pointer):longint;cdecl;external libc_nlm name 'NXSemaInit';
 | 
						||
procedure NXSemaPost(sema:PNXSema_t);cdecl;external libc_nlm name 'NXSemaPost';
 | 
						||
function NXSemaTryWait(sema:PNXSema_t):NXBool_t;cdecl;external libc_nlm name 'NXSemaTryWait';
 | 
						||
procedure NXSemaWait(sema:PNXSema_t);cdecl;external libc_nlm name 'NXSemaWait';
 | 
						||
{ Condition variables...  }
 | 
						||
function NXCondAlloc(arg:pointer):PNXCond_t;cdecl;external libc_nlm name 'NXCondAlloc';
 | 
						||
procedure NXCondBroadcast(cond:PNXCond_t);cdecl;external libc_nlm name 'NXCondBroadcast';
 | 
						||
procedure NXCondDeinit(cond:PNXCond_t);cdecl;external libc_nlm name 'NXCondDeinit';
 | 
						||
procedure NXCondFree(cond:PNXCond_t);cdecl;external libc_nlm name 'NXCondFree';
 | 
						||
function NXCondInit(cond:PNXCond_t; arg:pointer):longint;cdecl;external libc_nlm name 'NXCondInit';
 | 
						||
procedure NXCondSignal(cond:PNXCond_t);cdecl;external libc_nlm name 'NXCondSignal';
 | 
						||
function NXCondWait(cond:PNXCond_t; mutex:PNXMutex_t):longint;cdecl;external libc_nlm name 'NXCondWait';
 | 
						||
function NXCondTimedWait(cond:PNXCond_t; mutex:PNXMutex_t; interval:dword):longint;cdecl;external libc_nlm name 'NXCondTimedWait';
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 | 
						||
//  assert.h
 | 
						||
 | 
						||
procedure _assert(_para1,_para2, _para3:Pchar; ActionCode:longint);cdecl;external libc_nlm name '_assert';
 | 
						||
procedure FpAssert(_para1,_para2, _para3:Pchar; ActionCode:longint);cdecl;external libc_nlm name '_assert';
 | 
						||
 | 
						||
type
 | 
						||
   Taction_code =  Longint;
 | 
						||
Const                         // modifications to behavior of assert()
 | 
						||
  __IGNORE = -(1);            // assert() prints but returns -1
 | 
						||
  __NOERR = 0;                // (value returned for no assertion)
 | 
						||
  __ABORT = 1;                // assert() aborts (normal, default action)
 | 
						||
  __DEBUGGER = 2;             // assert() prints and drops into the debugger
 | 
						||
 | 
						||
function assert_action(_para1:Taction_code):longint;cdecl;external libc_nlm name 'assert_action';
 | 
						||
function _assert_expr(_para1:longint; _para2,_para3,_para4:Pchar; _para5:longint):longint;cdecl;external libc_nlm name '_assert_expr';
 | 
						||
 | 
						||
// nks/unix.h
 | 
						||
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
{ UNIX (NX_PNF_UNIX) attributes           }
 | 
						||
{ file mode                               }
 | 
						||
{ number of links                         }
 | 
						||
{ last access time (files only)           }
 | 
						||
{ last modify time                        }
 | 
						||
{ last archive time                       }
 | 
						||
{ last attribute change time (or 0)       }
 | 
						||
{ generation; bumped when file modified   }
 | 
						||
{ entry serial number                     }
 | 
						||
{ file system (device) containing entry   }
 | 
						||
{ ID of raw device containing this entry  }
 | 
						||
{ user ID of the owner of this entry      }
 | 
						||
{ group ID of the group of this entry     }
 | 
						||
{ length of file in bytes                 }
 | 
						||
{ number of 512-byte blocks allocated     }
 | 
						||
{ preferred I/O block size                }
 | 
						||
type
 | 
						||
 | 
						||
   PNXDirAttrUnix_t = ^NXDirAttrUnix_t;
 | 
						||
   NXDirAttrUnix_t = record
 | 
						||
        xdeHeader : NXDeHeader_t;
 | 
						||
        xdeFid : NXFid_t;
 | 
						||
        xdeEffectiveRights : dword;
 | 
						||
        xde_mode : dword;
 | 
						||
        xde_nlink : dword;
 | 
						||
        spare1 : dword;
 | 
						||
        xde_atime : time_t;
 | 
						||
        xde_mtime : time_t;
 | 
						||
        xde_btime : time_t;
 | 
						||
        xde_ctime : time_t;
 | 
						||
        xde_change : Tuint64;
 | 
						||
        xde_ino : Tuint64;
 | 
						||
        xde_dev : array[0..1] of Tuint64;
 | 
						||
        xde_rdev : array[0..1] of Tuint64;
 | 
						||
        xde_uid : Tuint64;
 | 
						||
        xde_gid : Tuint64;
 | 
						||
        xde_size : Tuint64;
 | 
						||
        xde_blocks : Tuint64;
 | 
						||
        xde_blksize : dword;
 | 
						||
        spare2 : dword;
 | 
						||
        spare3 : Tuint64;
 | 
						||
        spare4 : Tuint64;
 | 
						||
        spare5 : Tuint64;
 | 
						||
        spare6 : Tuint64;
 | 
						||
        spare7 : Tuint64;
 | 
						||
        spare8 : Tuint64;
 | 
						||
     end;
 | 
						||
{ UNIX (NX_PNF_UNIX) information...       }
 | 
						||
{ ...including name                       }
 | 
						||
{ maximum length is 255 characters        }
 | 
						||
 | 
						||
   PNXDirEnumUnix_t = ^NXDirEnumUnix_t;
 | 
						||
   NXDirEnumUnix_t = record
 | 
						||
        deUnixDirAttr : NXDirAttrUnix_t;
 | 
						||
        deDirMark : NXDirMark_t;
 | 
						||
        deName : pointer;
 | 
						||
     end;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
//  nks/vm.h
 | 
						||
 | 
						||
{ value for 'wait_for' in NXVmJoin()...  }
 | 
						||
{ values for 'flags' in NXVmSpawn()...  }
 | 
						||
{ returned in newVm if NXVmSpawn() is passed NX_VM_DETACHED or if it fails  }
 | 
						||
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
type
 | 
						||
   PNXStrType_t = ^NXStrType_t;
 | 
						||
   NXStrType_t  =  Longint;
 | 
						||
Const
 | 
						||
   NX_STR_ASCII   = $FFFFFFFF;
 | 
						||
   NX_STR_UTF8    = $00000000;
 | 
						||
   NX_STR_UNICODE = $00000001;
 | 
						||
 | 
						||
{ NX_OBJ_FILE, NX_OBJ_CONSOLE, NX_OBJ_FIFO, etc. }
 | 
						||
{ set to 0                                       }
 | 
						||
{ ancestor of 'ssPath'                           }
 | 
						||
{ relative to 'ssPathCtx'                        }
 | 
						||
type
 | 
						||
   PNXNameSpec_t = ^NXNameSpec_t;
 | 
						||
   NXNameSpec_t = record
 | 
						||
        ssType : NXObjType_t;
 | 
						||
        ssReserved : longint;
 | 
						||
        ssPathCtx : NXPathCtx_t;
 | 
						||
        ssPath : pointer;
 | 
						||
     end;
 | 
						||
   NXStreamSpec_t = NXNameSpec_t;
 | 
						||
   PNXStreamSpec_t = ^NXStreamSpec_t;
 | 
						||
{ unused; set to 0                               }
 | 
						||
{ count of arguments in 'esArgv'                 }
 | 
						||
{ command-line arguments to spawned VM           }
 | 
						||
{ starting environment of spawned VM             }
 | 
						||
{ wiring of standard input for spawned VM        }
 | 
						||
{ wiring of standard output for spawned VM       }
 | 
						||
{ wiring of standard error for spawned VM        }
 | 
						||
 | 
						||
   PNXExecEnvSpec_t = ^NXExecEnvSpec_t;
 | 
						||
   NXExecEnvSpec_t = record
 | 
						||
        esFlags : longint;
 | 
						||
        esArgc : longint;
 | 
						||
        esArgv : ^pointer;
 | 
						||
        esEnv : ^pointer;
 | 
						||
        esStdin : NXStreamSpec_t;
 | 
						||
        esStdout : NXStreamSpec_t;
 | 
						||
        esStderr : NXStreamSpec_t;
 | 
						||
     end;
 | 
						||
{ maxmimum number of threads in worker pool      }
 | 
						||
{ implementation-reserved                        }
 | 
						||
 | 
						||
   PNXVmWorkerThreadConfig_t = ^NXVmWorkerThreadConfig_t;
 | 
						||
   NXVmWorkerThreadConfig_t = record
 | 
						||
        wtcThreads : size_t;
 | 
						||
        reserved : array[0..4] of longint;
 | 
						||
     end;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
{ Virtual machine management...  }
 | 
						||
 | 
						||
function  NXVmDestroy(id:NXVmId_t):longint;cdecl;external libc_nlm name 'NXVmDestroy';
 | 
						||
procedure NXVmExit(status:longint);cdecl;external libc_nlm name 'NXVmExit';
 | 
						||
function  NXVmGetId:NXVmId_t;cdecl;external libc_nlm name 'NXVmGetId';
 | 
						||
function  NXVmGetWorkerThreadConfig(reserved:pointer; config:PNXVmWorkerThreadConfig_t):longint;cdecl;external libc_nlm name 'NXVmGetWorkerThreadConfig';
 | 
						||
function  NXVmGetStringType(_type:PNXStrType_t):longint;cdecl;external libc_nlm name 'NXVmGetStringType';
 | 
						||
function  NXVmJoin(wait_for:NXVmId_t; departed_vm:PNXVmId_t; status:Plongint):longint;cdecl;external libc_nlm name 'NXVmJoin';
 | 
						||
function  NXVmRegisterExitHandler(cleanup:TCDeclProc1PtrArg; arg:pointer):longint;cdecl;external libc_nlm name 'NXVmRegisterExitHandler';
 | 
						||
function  NXVmSetWorkerThreadConfig(reserved:pointer; config:PNXVmWorkerThreadConfig_t):longint;cdecl;external libc_nlm name 'NXVmSetWorkerThreadConfig';
 | 
						||
function  NXVmSpawn(name:PNXNameSpec_t; envSpec:PNXExecEnvSpec_t; flags:dword; newVm:PNXVmId_t):longint;cdecl;external libc_nlm name 'NXVmSpawn';
 | 
						||
function  NXVmUnregisterExitHandler(func:TCDeclProc1PtrArg; arg:pointer):longint;cdecl;external libc_nlm name 'NXVmUnregisterExitHandler';
 | 
						||
 | 
						||
 | 
						||
// alloca.h
 | 
						||
{ Non-standard functions from stdlib.h }
 | 
						||
//** void   *alloca( size_t );
 | 
						||
 | 
						||
 | 
						||
// client.h
 | 
						||
 | 
						||
// stdbool.h
 | 
						||
 | 
						||
{ origin flags...  }
 | 
						||
{ address type flags (used in combination with ORIGIN_ADDRESS)...  }
 | 
						||
{ transport type flags...  }
 | 
						||
{ NMAS sequence passed...  }
 | 
						||
{ string format flags...  }
 | 
						||
{ suggested maximum lengths (in characters)...  }
 | 
						||
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
  const
 | 
						||
     ORIGIN_NAME    = $0010;
 | 
						||
     ORIGIN_ADDRESS = $0020;    { interpret 'server' as 'netaddr_t'      }
 | 
						||
  { address type flags (used in combination with ORIGIN_ADDRESS)...  }
 | 
						||
  { address is IPX                         }
 | 
						||
     ADDR_IPX = $0100;
 | 
						||
     ADDR_IP = $0200;           { address is Internet Protocol           }
 | 
						||
     ADDR_IPV6 = $0400;         { address is Internet Protocol version 6 }
 | 
						||
  { transport type flags...  }
 | 
						||
  { transport type unspecified             }
 | 
						||
     XPORT_WILD = $0000;
 | 
						||
  { prefer Novell IPX                      }
 | 
						||
     XPORT_IPX = $0001;
 | 
						||
  { prefer TCP                             }
 | 
						||
     XPORT_TCP = $0002;
 | 
						||
  { NMAS sequence passed...  }
 | 
						||
  { alternative NMAS-based authentication  }
 | 
						||
     NMAS_SEQUENCE = $8000;
 | 
						||
  { string format flags...  }
 | 
						||
     USERNAME_ASCII = $00000;
 | 
						||
     USERNAME_UTF8 = $10000;
 | 
						||
     USERNAME_UNICODE = $20000;
 | 
						||
  { suggested maximum lengths (in characters)...  }
 | 
						||
  { ASCII, Unicode or UTF-8                }
 | 
						||
     MAX_USERNAME_LEN = 255;
 | 
						||
  { (always in ASCII characters)           }
 | 
						||
     MAX_PASSWORD_LEN = 255;
 | 
						||
     MAX_TREENAME_LEN = 48;
 | 
						||
     MAX_SERVERNAME_LEN = 48;
 | 
						||
 | 
						||
 | 
						||
type
 | 
						||
 | 
						||
   Pnetaddr_t = ^netaddr_t;
 | 
						||
   netaddr_t = record
 | 
						||
        _type : longint;
 | 
						||
        length : size_t;
 | 
						||
        address : array[0..47] of byte;
 | 
						||
     end;
 | 
						||
 | 
						||
   Pfrag_t = ^frag_t;
 | 
						||
   frag_t = record
 | 
						||
        data : pointer;
 | 
						||
        length : size_t;
 | 
						||
     end;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
{ managing user identity...  }
 | 
						||
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function build_username(max:size_t; flags:dword; username:Pchar; user:Pchar; args:array of const):longint;cdecl;external libc_nlm name 'build_username';
 | 
						||
{$endif}
 | 
						||
function build_username(max:size_t; flags:dword; username:Pchar; user:Pchar):longint;cdecl;external libc_nlm name 'build_username';
 | 
						||
 | 
						||
 | 
						||
function create_identity(treename:Pchar; username:pointer; password:Pchar; nmas_sequence:pointer; flags:dword;
 | 
						||
           identity:Plongint):longint;cdecl;external libc_nlm name 'create_identity';
 | 
						||
function create_server_identity(identity:Plongint):longint;cdecl;external libc_nlm name 'create_server_identity';
 | 
						||
function is_valid_identity(identity:longint; error:Plongint):longint;cdecl;external libc_nlm name 'is_valid_identity';
 | 
						||
procedure delete_identity(identity:longint);cdecl;external libc_nlm name 'delete_identity';
 | 
						||
{ managing NCP sessions with a remote server...  }
 | 
						||
 | 
						||
function open_ncp_session(identity:longint; flags:dword; servername:Pchar; session:Plongint):longint;cdecl;external libc_nlm name 'open_ncp_session';
 | 
						||
function close_ncp_session(session:longint):longint;cdecl;external libc_nlm name 'close_ncp_session';
 | 
						||
function send_ncp(session:longint; requestCode:longint; sendFragCount:longint; sendFrags:array of frag_t; replyFragCount:longint;
 | 
						||
           replyFrags:array of frag_t; replyFragsUsed:Plongint; ncp_error:Plongint):longint;cdecl;external libc_nlm name 'send_ncp';
 | 
						||
 | 
						||
// complex.h
 | 
						||
 | 
						||
{ not presently supported  }
 | 
						||
 | 
						||
 | 
						||
// ctype.h
 | 
						||
//  var __ctype : array of byte;cvar;external;
 | 
						||
{ standard prototypes...  }
 | 
						||
 | 
						||
function isalnum(_para1:longint):longint;cdecl;external libc_nlm name 'isalnum';
 | 
						||
function isalpha(_para1:longint):longint;cdecl;external libc_nlm name 'isalpha';
 | 
						||
function isblank(_para1:longint):longint;cdecl;external libc_nlm name 'isblank';
 | 
						||
function iscntrl(_para1:longint):longint;cdecl;external libc_nlm name 'iscntrl';
 | 
						||
function isdigit(_para1:longint):longint;cdecl;external libc_nlm name 'isdigit';
 | 
						||
function isgraph(_para1:longint):longint;cdecl;external libc_nlm name 'isgraph';
 | 
						||
function islower(_para1:longint):longint;cdecl;external libc_nlm name 'islower';
 | 
						||
function isprint(_para1:longint):longint;cdecl;external libc_nlm name 'isprint';
 | 
						||
function ispunct(_para1:longint):longint;cdecl;external libc_nlm name 'ispunct';
 | 
						||
function isspace(_para1:longint):longint;cdecl;external libc_nlm name 'isspace';
 | 
						||
function isupper(_para1:longint):longint;cdecl;external libc_nlm name 'isupper';
 | 
						||
function isxdigit(_para1:longint):longint;cdecl;external libc_nlm name 'isxdigit';
 | 
						||
function tolower(_para1:longint):longint;cdecl;external libc_nlm name 'tolower';
 | 
						||
function toupper(_para1:longint):longint;cdecl;external libc_nlm name 'toupper';
 | 
						||
function isascii(_para1:longint):longint;cdecl;external libc_nlm name 'isascii';
 | 
						||
function toascii(_para1:longint):longint;cdecl;external libc_nlm name 'toascii';
 | 
						||
function ismultibyte(_para1:Pchar):longint;cdecl;external libc_nlm name 'ismultibyte';
 | 
						||
function Lisalnum(_para1:Pchar):longint;cdecl;external libc_nlm name 'Lisalnum';
 | 
						||
function Lisalpha(_para1:Pchar):longint;cdecl;external libc_nlm name 'Lisalpha';
 | 
						||
function Lisblank(_para1:Pchar):longint;cdecl;external libc_nlm name 'Lisblank';
 | 
						||
function Liscntrl(_para1:Pchar):longint;cdecl;external libc_nlm name 'Liscntrl';
 | 
						||
function Lisdigit(_para1:Pchar):longint;cdecl;external libc_nlm name 'Lisdigit';
 | 
						||
function Lisgraph(_para1:Pchar):longint;cdecl;external libc_nlm name 'Lisgraph';
 | 
						||
function Lislower(_para1:Pchar):longint;cdecl;external libc_nlm name 'Lislower';
 | 
						||
function Lisprint(_para1:Pchar):longint;cdecl;external libc_nlm name 'Lisprint';
 | 
						||
function Lispunct(_para1:Pchar):longint;cdecl;external libc_nlm name 'Lispunct';
 | 
						||
function Lisspace(_para1:Pchar):longint;cdecl;external libc_nlm name 'Lisspace';
 | 
						||
function Lisupper(_para1:Pchar):longint;cdecl;external libc_nlm name 'Lisupper';
 | 
						||
function Lisxdigit(_para1:Pchar):longint;cdecl;external libc_nlm name 'Lisxdigit';
 | 
						||
 | 
						||
 | 
						||
// dfs.h
 | 
						||
 | 
						||
{===========================================================
 | 
						||
  Traditional direct file system
 | 
						||
  These were interfaced by CLib in its NDK header, nwdfs.h
 | 
						||
============================================================}
 | 
						||
 | 
						||
  const
 | 
						||
     DFS_FAILURE = -(1);
 | 
						||
     DFS_SUCCESS = 0;
 | 
						||
     DFS_ERR_INSUFFICIENT_SPACE = 1;
 | 
						||
     DFS_ERR_VOLUME_SEGMENT_DEACTIVATED = 4;
 | 
						||
     DFS_ERR_TRUNCATION_FAILURE = 16;
 | 
						||
     DFS_ERR_HOLE_IN_FILE = 17;
 | 
						||
     DFS_ERR_PARAMETER = 18;
 | 
						||
     DFS_ERR_OVERLAP = 19;
 | 
						||
     DFS_ERR_SEGMENT = 20;
 | 
						||
     DFS_ERR_BOUNDARY = 21;
 | 
						||
     DFS_ERR_INSUFFICIENT_LIMBO_FILE_SPACE = 22;
 | 
						||
     DFS_ERR_NOT_IN_DIRECT_FILE_MODE = 23;
 | 
						||
     DFS_ERR_OPERATION_BEYOND_EOF = 24;
 | 
						||
     DFS_ERR_OUT_OF_FILDES = 129;
 | 
						||
     DFS_ERR_HARD_IO = 131;
 | 
						||
     DFS_ERR_EBADF = 136;
 | 
						||
     DFS_ERR_CANT_READ = 147;
 | 
						||
     DFS_ERR_CANT_WRITE = 148;
 | 
						||
     DFS_ERR_FILE_DETACHED = 149;
 | 
						||
     DFS_ERR_ENOMEM = 150;
 | 
						||
     DFS_ERR_INVALID_VOLUME = 152;
 | 
						||
     DFS_ERR_IO_LOCK = 162;
 | 
						||
  { setSizeFlags  }
 | 
						||
 | 
						||
     DFS_SETSIZE_NON_SPARSE_FILE = $00000001;    { to extend the file  }
 | 
						||
     DFS_SETSIZE_NO_ZERO_FILL    = $00000002;    { do not zero fill  }
 | 
						||
     DFS_SETSIZE_UNDO_ON_ERROR   = $00000004;    { truncate to original eof  }
 | 
						||
     DFS_SETSIZE_PHYSICAL_ONLY   = $00000008;    { change physical EOF only  }
 | 
						||
     DFS_SETSIZE_LOGICAL_ONLY    = $00000010;    { change only the logical EOF  }
 | 
						||
 | 
						||
 | 
						||
{ type definitions...  }
 | 
						||
type
 | 
						||
 | 
						||
   Pdfs_filemap_t = ^dfs_filemap_t;
 | 
						||
   dfs_filemap_t = record
 | 
						||
        FileBlock : longint;
 | 
						||
        VolumeBlock : longint;
 | 
						||
        NumberOfBlocks : longint;
 | 
						||
     end;
 | 
						||
 | 
						||
   Pdfs_volinfo_t = ^dfs_volinfo_t;
 | 
						||
   dfs_volinfo_t = record
 | 
						||
        VolumeAllocationUnitSizeInBytes : size_t;
 | 
						||
        VolumeSizeInAllocationUnits : size_t;
 | 
						||
        VolumeSectorSize : size_t;
 | 
						||
        AllocationUnitsUsed : longint;
 | 
						||
        AllocationUnitsFreelyAvailable : longint;
 | 
						||
        AllocationUnitsInDeletedFilesNotAvailable : longint;
 | 
						||
        AllocationUnitsInAvailableDeletedFiles : longint;
 | 
						||
        NumberOfPhysicalSegmentsInVolume : longint;
 | 
						||
        PhysicalSegmentSizeInAllocationUnits : array[0..63] of size_t;
 | 
						||
     end;
 | 
						||
 | 
						||
   Pdfs_cbparms_t = ^dfs_cbparms_t;
 | 
						||
   dfs_cbparms_t = record
 | 
						||
        sema : pointer;
 | 
						||
        ccode : longint;
 | 
						||
     end;
 | 
						||
{  dlfcn.h
 | 
						||
==============================================================================
 | 
						||
=  Interfaces from the Single UNIX Specification of the Open Group for the
 | 
						||
=  management of imported symbols and shared (dynamic) libraries. The imple-
 | 
						||
=  mentation on NetWare is narrower as noted by the number of features that
 | 
						||
=  are ignored or unsupported.
 | 
						||
==============================================================================}
 | 
						||
  const
 | 
						||
     RTLD_LAZY = $01;
 | 
						||
     RTLD_NOW = $02;               { ignored }
 | 
						||
     RTLD_GLOBAL = $04;            { ignored }
 | 
						||
     RTLD_LOCAL = $08;             { ignored }
 | 
						||
     RTLD_MULTIPLE = $10;          { NetWare: force-load multiple times  }
 | 
						||
     MAX_DLL_NAME_LEN = 8;         { special purpose value for 'handle' in dlsym()...  }
 | 
						||
     MAX_SYMNAME_LEN = 255;        { maximim length of 'name' in dlsym()...  }
 | 
						||
 | 
						||
 | 
						||
function dlopen(path:Pchar; mode:longint):pointer;cdecl;external libc_nlm name 'dlopen';
 | 
						||
function dlsym(handle:pointer; name:Pchar):pointer;cdecl;external libc_nlm name 'dlsym';
 | 
						||
function dlclose(handle:pointer):longint;cdecl;external libc_nlm name 'dlclose';
 | 
						||
function dlerror:Pchar;cdecl;external libc_nlm name 'dlerror';
 | 
						||
 | 
						||
 | 
						||
// endian.h
 | 
						||
{ defines `__BYTE_ORDER' for the hosting environment...  }
 | 
						||
{ some environments use a different "endianness" for floating point values  }
 | 
						||
 | 
						||
  const
 | 
						||
     __LITTLE_ENDIAN = 1234;
 | 
						||
     __BIG_ENDIAN = 4321;
 | 
						||
     __PDP_ENDIAN = 3412;
 | 
						||
  { defines `__BYTE_ORDER' for the hosting environment...  }
 | 
						||
     __BYTE_ORDER = __LITTLE_ENDIAN;
 | 
						||
     __FLOAT_WORD_ORDER = __BYTE_ORDER;
 | 
						||
     LITTLE_ENDIAN = __LITTLE_ENDIAN;
 | 
						||
     BIG_ENDIAN = __BIG_ENDIAN;
 | 
						||
     PDP_ENDIAN = __PDP_ENDIAN;
 | 
						||
     BYTE_ORDER = __BYTE_ORDER;
 | 
						||
 | 
						||
 | 
						||
 | 
						||
// err.h
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
procedure err(_para1:longint; _para2:Pchar; args:array of const);cdecl;external libc_nlm name 'err';
 | 
						||
{$endif}
 | 
						||
procedure err(_para1:longint; _para2:Pchar);cdecl;external libc_nlm name 'err';
 | 
						||
procedure verr(_para1:longint; _para2:Pchar; _para3:va_list);cdecl;external libc_nlm name 'verr';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
procedure errx(_para1:longint; _para2:Pchar; args:array of const);cdecl;external libc_nlm name 'errx';
 | 
						||
{$endif}
 | 
						||
procedure errx(_para1:longint; _para2:Pchar);cdecl;external libc_nlm name 'errx';
 | 
						||
procedure verrx(_para1:longint; _para2:Pchar; _para3:va_list);cdecl;external libc_nlm name 'verrx';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
procedure warn(_para1:Pchar; args:array of const);cdecl;external libc_nlm name 'warn';
 | 
						||
{$endif}
 | 
						||
procedure warn(_para1:Pchar);cdecl;external libc_nlm name 'warn';
 | 
						||
procedure vwarn(_para1:Pchar; _para2:va_list);cdecl;external libc_nlm name 'vwarn';
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
procedure warnx(_para1:Pchar; args:array of const);cdecl;external libc_nlm name 'warnx';
 | 
						||
{$endif}
 | 
						||
procedure warnx(_para1:Pchar);cdecl;external libc_nlm name 'warnx';
 | 
						||
procedure vwarnx(_para1:Pchar; _para2:va_list);cdecl;external libc_nlm name 'vwarnx';
 | 
						||
 | 
						||
 | 
						||
 | 
						||
// errno.h
 | 
						||
 | 
						||
  const
 | 
						||
     ENOENT = 1;
 | 
						||
     E2BIG = 2;           { arg list too big                               }
 | 
						||
     ENOEXEC = 3;         { exec format error                              }
 | 
						||
     EBADF = 4;           { bad file number                                }
 | 
						||
     ENOMEM = 5;          { not enough memory                              }
 | 
						||
     EACCES = 6;          { permission denied                              }
 | 
						||
     EEXIST = 7;          { file exists                                    }
 | 
						||
     EXDEV = 8;           { cross-device link                              }
 | 
						||
     EINVAL = 9;          { invalid argument                               }
 | 
						||
     ENFILE = 10;         { file table overflow                            }
 | 
						||
     EMFILE = 11;         { too many open files                            }
 | 
						||
     ENOSPC = 12;         { no space left on device                        }
 | 
						||
     EDOM = 13;           { argument too large                             }
 | 
						||
     ERANGE = 14;         { result too large                               }
 | 
						||
     EDEADLK = 15;        { resource deadlock would occur                  }
 | 
						||
  { -------------------------- Miscellaneous NLM Library constants ----------  }
 | 
						||
     EINUSE = 16;         { resource(s) in use                             }
 | 
						||
     ESERVER = 17;        { server error (memory out, I/O error, etc.)     }
 | 
						||
     ENOSERVR = 18;       { no server (queue server, file server, etc.)    }
 | 
						||
     EWRNGKND = 19;       { wrong kind--an operation is being...           }
 | 
						||
                          {  ...attempted on the wrong kind of object      }
 | 
						||
     ETRNREST = 20;       { transaction restarted                          }
 | 
						||
     ERESOURCE = 21;      { resources unavailable (maybe permanently)      }
 | 
						||
     EBADHNDL = 22;       { bad non-file handle (screen, semaphore, etc.)  }
 | 
						||
     ENO_SCRNS = 23;      { screen I/O attempted when no screens           }
 | 
						||
  { -------------------------- Additional POSIX / traditional UNIX constants   }
 | 
						||
     EAGAIN = 24;         { resource temporarily unavailable               }
 | 
						||
     ENXIO = 25;          { no such device or address                      }
 | 
						||
     EBADMSG = 26;        { not a data message                             }
 | 
						||
     EFAULT = 27;         { bad address                                    }
 | 
						||
     EIO = 28;            { physical I/O error                             }
 | 
						||
     ENODATA = 29;        { no data                                        }
 | 
						||
     ENOSTRMS = 30;       { streams not available                          }
 | 
						||
  { Berkeley sockets constants ------------------  }
 | 
						||
     EPROTO = 31;         { fatal protocol error                           }
 | 
						||
     EPIPE = 32;          { broken pipe                                    }
 | 
						||
     ESPIPE = 33;         { illegal seek                                   }
 | 
						||
  { Non-blocking and interrupt I/O constants ----  }
 | 
						||
     ETIME = 34;          { ioctl acknowledge timeout                      }
 | 
						||
     EWOULDBLOCK = 35;    { operation would block                          }
 | 
						||
     EINPROGRESS = 36;    { operation now in progress                      }
 | 
						||
     EALREADY = 37;       { operation already in progress                  }
 | 
						||
  { IPC network argument constants --------------  }
 | 
						||
     ENOTSOCK = 38;       { socket operation on non-socket                 }
 | 
						||
     EDESTADDRREQ = 39;   { destination address required                   }
 | 
						||
     EMSGSIZE = 40;       { message too long                               }
 | 
						||
     EPROTOTYPE = 41;     { protocol wrong type for socket                 }
 | 
						||
     ENOPROTOOPT = 42;    { protocol not available                         }
 | 
						||
     EPROTONOSUPPORT = 43;{ protocol not supported                         }
 | 
						||
     ESOCKTNOSUPPORT = 44;{ socket type not supported                      }
 | 
						||
     EOPNOTSUPP = 45;     { operation not supported on socket              }
 | 
						||
     EPFNOSUPPORT = 46;   { protocol family not supported                  }
 | 
						||
     EAFNOSUPPORT = 47;   { address family unsupported by protocol family  }
 | 
						||
     EADDRINUSE = 48;     { address already in use                         }
 | 
						||
     EADDRNOTAVAIL = 49;  { can't assign requested address                 }
 | 
						||
  { Operational constants -----------------------  }
 | 
						||
     ENETDOWN = 50;       { network is down                                }
 | 
						||
     ENETUNREACH = 51;    { network is unreachable                         }
 | 
						||
     ENETRESET = 52;      { network dropped connection on reset            }
 | 
						||
     ECONNABORTED = 53;   { software caused connection abort               }
 | 
						||
     ECONNRESET = 54;     { connection reset by peer                       }
 | 
						||
     ENOBUFS = 55;        { no buffer space available                      }
 | 
						||
     EISCONN = 56;        { socket is already connected                    }
 | 
						||
     ENOTCONN = 57;       { socket is not connected                        }
 | 
						||
     ESHUTDOWN = 58;      { can't send after socket shutdown               }
 | 
						||
     ETOOMANYREFS = 59;   { too many references: can't splice              }
 | 
						||
     ETIMEDOUT = 60;      { connection timed out                           }
 | 
						||
     ECONNREFUSED = 61;   { connection refused                             }
 | 
						||
  { -------------------------- Additional POSIX-mandated constants ----------  }
 | 
						||
     EBUSY = 62;          { resource busy                                  }
 | 
						||
     EINTR = 63;          { interrupted function call                      }
 | 
						||
     EISDIR = 64;         { is a directory                                 }
 | 
						||
     ENAMETOOLONG = 65;   { filename too long                              }
 | 
						||
     ENOSYS = 66;         { function not implemented                       }
 | 
						||
     ENOTDIR = 67;        { not a directory                                }
 | 
						||
     ENOTEMPTY = 68;      { directory not empty                            }
 | 
						||
     EPERM = 69;          { operation not permitted                        }
 | 
						||
     ECHILD = 70;         { no child process                               }
 | 
						||
     EFBIG = 71;          { file too large                                 }
 | 
						||
     EMLINK = 72;         { too many links                                 }
 | 
						||
     ENODEV = 73;         { no such device                                 }
 | 
						||
     ENOLCK = 74;         { no locks available                             }
 | 
						||
     ENOTTY = 75;         { inappropriate I/O control operation            }
 | 
						||
     EFTYPE = ENOTTY;     { inappropriate operation for file type       }
 | 
						||
     EROFS = 76;          { read-only file system                          }
 | 
						||
     ESRCH = 77;          { no such process                                }
 | 
						||
     ECANCELED = 78;      { operation was cancelled                        }
 | 
						||
     ENOTSUP = 79;        { this optional functionality not supported      }
 | 
						||
     ECANCELLED = ECANCELED;
 | 
						||
     EBADTYPE = 80;       { bad type for operation                         }
 | 
						||
     EOVERFLOW = 81;      { operation would overflow                       }
 | 
						||
     EHOSTDOWN = 82;      { host is down                                   }
 | 
						||
     EHOSTUNREACH = 83;   { no route to host                               }
 | 
						||
     EPROCLIM = 84;       { too many processes                             }
 | 
						||
  { -------------------------- Additional POSIX / traditional UNIX constants   }
 | 
						||
     ENOMSG = 90;         { message does not exist                         }
 | 
						||
  { -------------------------- LibC-implementation-specific constants -------  }
 | 
						||
     ENLMDATA = 100;      { anomaly in NLM data structure                  }
 | 
						||
     EILSEQ = 101;        { illegal character sequence in multibyte        }
 | 
						||
     EINCONSIS = 102;     { internal library inconsistency                 }
 | 
						||
     EDOSTEXTEOL = 103;   { DOS-text file inconsistency--no newline...     }
 | 
						||
                          { ...after carriage return                       }
 | 
						||
     ENONEXTANT = 104;    { object doesn't exist                           }
 | 
						||
     ENOCONTEXT = 105;    { no thread library context present              }
 | 
						||
     ENAMESPACE = 106;    { invalid namespace or operation                 }
 | 
						||
     EBADCONN = 107;      { invalid connection                             }
 | 
						||
     ENAMEINVAL = 108;    { invalid NDS name                               }
 | 
						||
     EPASSINVAL = 109;    { invalid password                               }
 | 
						||
     ENCPINVAL = 110;     { invalid or erroneous NCP                       }
 | 
						||
     EFILESYS = 111;      { generic file system error, see 'filesyserrno'  }
 | 
						||
     ESUFFICIENT = 112;   { insufficient space for any operation result    }
 | 
						||
     EPARTONLY = 113;     { partial result only  for lack of space         }
 | 
						||
     EBADIDENT = 114;     { invalid user or other identity                 }
 | 
						||
     ENDS = 115;          { generic eDirectory error, see 'h_errno'        }
 | 
						||
     ENCP = 116;          { generic NCP error, see 'h_errno'               }
 | 
						||
     ELOOKUP = 117;       { generic look-up error, see 'h_errno'           }
 | 
						||
     ELASTERR = ELOOKUP;
 | 
						||
 | 
						||
 | 
						||
function ___errno:Plongint;cdecl;external libc_nlm name '___errno';
 | 
						||
function __errno_location:Plongint;cdecl;external libc_nlm name '___errno';
 | 
						||
function ___lastClientErrno:Plongint;cdecl;external libc_nlm name '___lastClientErrno';
 | 
						||
function ___lastFileSysErrno:Plongint;cdecl;external libc_nlm name '___lastFileSysErrno';
 | 
						||
 | 
						||
 | 
						||
// esm.h
 | 
						||
 | 
						||
  const
 | 
						||
     ERR_ESM_AVAL = 1;
 | 
						||
     ERR_SIZE_ZERO = 2;           { ESMAlloc size requested is zero          }
 | 
						||
     ERR_TABLE_FULL = 3;          { allocation table is full                 }
 | 
						||
     ERR_NOT_CONTIGUOUS = 4;      { ESMAlloc request cannot be continguous   }
 | 
						||
     ERR_INVAL_ADDRESS = 5;       { already free or out of range             }
 | 
						||
     ERR_INVAL_SRC_ADDR = 6;      { bad source address (ESMCopy)             }
 | 
						||
     ERR_INVAL_DEST_ADDR = 7;     { bad destination address(ESMCopy/ESMFill) }
 | 
						||
     ERR_SRC_DEST_OVERLAP = 8;    { buffer overlap (ESMCopy)                 }
 | 
						||
  { (will be obsolete when the overlapping buffer copy implemented...)         }
 | 
						||
     ERR_MAP_4M_PAGE = 9;         { mapping particular 4M page failed        }
 | 
						||
     ERR_BUFFER_SIZE = 10;        { buffer passed too small (ESMQuery)       }
 | 
						||
     ERR_LOGICAL_SPACE = 11;      { adequate logical/window not available    }
 | 
						||
     ERR_ACQUIRING_LOCK = 12;     { failed to acquire lock (please retry)    }
 | 
						||
 | 
						||
type
 | 
						||
   Paddr64_t = ^addr64_t;
 | 
						||
   addr64_t = Tuint64;
 | 
						||
 | 
						||
   PESMQueryInfo_t = ^ESMQueryInfo_t;
 | 
						||
   ESMQueryInfo_t = record
 | 
						||
        TotalExtendedMemory : size64_t;
 | 
						||
        RemainingExtendedMemory : size64_t;
 | 
						||
        TotalMemoryBelow4G : size_t;
 | 
						||
     end;
 | 
						||
 | 
						||
function ESMAlloc(size:size64_t; options:dword; esmAddress:Paddr64_t):longint;cdecl;external libc_nlm name 'ESMAlloc';
 | 
						||
function ESMAllocWindow(size:size_t; logicalAddress:Ppointer; callerID:pointer):longint;cdecl;external libc_nlm name 'ESMAllocWindow';
 | 
						||
function ESMCopy(source:addr64_t; destination:addr64_t; length:size64_t):longint;cdecl;external libc_nlm name 'ESMCopy';
 | 
						||
function ESMFill(pattern:dword; destination:addr64_t; length:size64_t):longint;cdecl;external libc_nlm name 'ESMFill';
 | 
						||
function ESMFree(esmAddress:addr64_t):longint;cdecl;external libc_nlm name 'ESMFree';
 | 
						||
function ESMFreeWindow(logicalAddress:pointer; callerID:pointer):longint;cdecl;external libc_nlm name 'ESMFreeWindow';
 | 
						||
function ESMMapMemory(windowAddress:pointer; memoryAddress:addr64_t; size:size_t):longint;cdecl;external libc_nlm name 'ESMMapMemory';
 | 
						||
function ESMQuery(bufferSize:size_t; buffer:PESMQueryInfo_t):longint;cdecl;external libc_nlm name 'ESMQuery';
 | 
						||
 | 
						||
 | 
						||
 | 
						||
// float.h
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
{
 | 
						||
typedef union __fp_u
 | 
						||
 | 
						||
   unsigned char __uc[16];
 | 
						||
   float         __f;
 | 
						||
   double        __d;
 | 
						||
   long double   __ld;
 | 
						||
 __fp_u;
 | 
						||
 }
 | 
						||
{
 | 
						||
typedef struct __fp_s
 | 
						||
 | 
						||
   int    __MANT_DIG;
 | 
						||
   int    __DIG;
 | 
						||
   int    __MIN_EXP;
 | 
						||
   int    __MIN_10_EXP;
 | 
						||
   int    __MAX_EXP;
 | 
						||
   int    __MAX_10_EXP;
 | 
						||
   __fp_u __EPSILON[2];
 | 
						||
   __fp_u __MIN[2];
 | 
						||
   __fp_u __MAX[2];
 | 
						||
 __fp_s;
 | 
						||
 }
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
{ extern const __fp_s __fp_characteristics[3]; }
 | 
						||
 | 
						||
 | 
						||
// fenv.h
 | 
						||
 | 
						||
{ these interfaces not presently supported!  }
 | 
						||
{ floating-point exception bits for 'excepts' argument  }
 | 
						||
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
  { these interfaces not presently supported!  }
 | 
						||
 | 
						||
 const
 | 
						||
   _MAX_FPFLAGS  = 8;
 | 
						||
  { floating-point exception bits for 'excepts' argument  }
 | 
						||
   FE_DIVBYZERO  = $00000001;
 | 
						||
   FE_INEXACT    = $00000002;
 | 
						||
   FE_INVALID    = $00000004;
 | 
						||
   FE_OVERFLOW   = $00000008;
 | 
						||
   FE_UNDERFLOW  = $00000010;
 | 
						||
   FE_ALL_EXCEPT = $00000020;
 | 
						||
   FE_DOWNWARD   = $00000040;
 | 
						||
   FE_TONEAREST  = $00000080;
 | 
						||
   FE_TOWARDZERO = $00000100;
 | 
						||
   FE_UPWARD     = $00000200;
 | 
						||
   FE_DFL_ENV    = $00000400;
 | 
						||
 | 
						||
 | 
						||
type
 | 
						||
   Pfexcept_t = ^fexcept_t;
 | 
						||
   fexcept_t = dword;
 | 
						||
 | 
						||
   Pfenv_t = ^fenv_t;
 | 
						||
   fenv_t = record
 | 
						||
        excepts : longint;
 | 
						||
        flagp : fexcept_t;
 | 
						||
     end;
 | 
						||
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
{ not presently supported...  }
 | 
						||
 | 
						||
procedure feclearexcept(excepts:longint);cdecl;external libc_nlm name 'feclearexcept';
 | 
						||
procedure fegetexceptflag(flagp:Pfexcept_t; excepts:longint);cdecl;external libc_nlm name 'fegetexceptflag';
 | 
						||
procedure feraiseexceptflag(flagp:Pfexcept_t; excepts:longint);cdecl;external libc_nlm name 'feraiseexceptflag';
 | 
						||
procedure fesetexceptflag(flagp:Pfexcept_t; excepts:longint);cdecl;external libc_nlm name 'fesetexceptflag';
 | 
						||
function fetestexcept(excepts:longint):longint;cdecl;external libc_nlm name 'fetestexcept';
 | 
						||
function fegetround(round:longint):longint;cdecl;external libc_nlm name 'fegetround';
 | 
						||
function fesetround:longint;cdecl;external libc_nlm name 'fesetround';
 | 
						||
function fegetenv(envp:Pfenv_t):longint;cdecl;external libc_nlm name 'fegetenv';
 | 
						||
function feholdexcept(envp:Pfenv_t):longint;cdecl;external libc_nlm name 'feholdexcept';
 | 
						||
procedure fesetenv(envp:Pfenv_t);cdecl;external libc_nlm name 'fesetenv';
 | 
						||
procedure feupdateenv(envp:Pfenv_t);cdecl;external libc_nlm name 'feupdateenv';
 | 
						||
 | 
						||
 | 
						||
 | 
						||
// fnmatch.h
 | 
						||
 | 
						||
  const
 | 
						||
     FNM_NOMATCH = -(1);     { string fails to match pattern  }
 | 
						||
  { values for field 'flags'...  }
 | 
						||
     FNM_NOSYS       = $01;  { reserved (unused)                              }
 | 
						||
     FNM_PATHNAME    = $02;  { slash in string must match in pattern          }
 | 
						||
     FNM_PERIOD      = $04;  { leading period in string must match in pattern }
 | 
						||
     FNM_NOESCAPE    = $08;  { disable backslash escaping                     }
 | 
						||
     FNM_CASEFOLD    = $10;  { ignore case                                    }
 | 
						||
     FNM_LEADING_DIR = $20;  { Ignore `/...' after a match                    }
 | 
						||
     FNM_FILE_NAME   = FNM_PATHNAME;
 | 
						||
 | 
						||
 | 
						||
 | 
						||
function fnmatch(pattern, _string:Pchar; flags:longint):longint;cdecl;external libc_nlm name 'fnmatch';
 | 
						||
 | 
						||
 | 
						||
 | 
						||
// fshooks.h
 | 
						||
 | 
						||
  const
 | 
						||
     FSHOOK_MAY_NOT_SLEEP_BIT    = $00000001;
 | 
						||
     FSHOOK_SORT_LOW_TO_HIGH_BIT = $00000002;
 | 
						||
     FSHOOK_CONSUMABLE_BIT       = $00000004;
 | 
						||
     FSHOOK_NO_SA_BIT            = $00000008;
 | 
						||
     FSHOOK_NO_AUDITOR_BIT       = $00000010;
 | 
						||
     FSHOOK_NO_CHECK_BIT         = $00000020;
 | 
						||
     FSHOOK_NESL_DATA_BIT        = $00000040;
 | 
						||
     FSHOOK_NESL_SHIM_BIT        = $00000080;
 | 
						||
     FSHOOK_DATA_FILTERED_BIT    = $80000000;
 | 
						||
 | 
						||
     FSHOOK_TYPE_DELETE_WARN               = 0;
 | 
						||
     FSHOOK_TYPE_DELETE_REPORT             = 1;
 | 
						||
     FSHOOK_TYPE_CREATE_WARN               = 2;
 | 
						||
     FSHOOK_TYPE_CREATE_REPORT             = 3;
 | 
						||
     FSHOOK_TYPE_OPEN_WARN                 = 4;
 | 
						||
     FSHOOK_TYPE_OPEN_REPORT               = 5;
 | 
						||
     FSHOOK_TYPE_CLOSE_WARN                = 6;
 | 
						||
     FSHOOK_TYPE_CLOSE_REPORT              = 7;
 | 
						||
     FSHOOK_TYPE_RENAME_WARN               = 8;
 | 
						||
     FSHOOK_TYPE_RENAME_REPORT             = 9;
 | 
						||
     FSHOOK_TYPE_MODIFYINFO_WARN           = 10;
 | 
						||
     FSHOOK_TYPE_MODIFYINFO_REPORT         = 11;
 | 
						||
     FSHOOK_TYPE_SETDATASIZE_WARN          = 12;
 | 
						||
     FSHOOK_TYPE_SETDATASIZE_REPORT        = 13;
 | 
						||
     FSHOOK_TYPE_ADDTRUSTEE_WARN           = 14;
 | 
						||
     FSHOOK_TYPE_ADDTRUSTEE_REPORT         = 15;
 | 
						||
     FSHOOK_TYPE_REMOVETRUSTEE_WARN        = 16;
 | 
						||
     FSHOOK_TYPE_REMOVETRUSTEE_REPORT      = 17;
 | 
						||
     FSHOOK_TYPE_SETINHERITEDRIGHTS_WARN   = 18;
 | 
						||
     FSHOOK_TYPE_SETINHERITEDRIGHTS_REPORT = 19;
 | 
						||
     FSHOOK_TYPE_CHANGEVOLSTATE_WARN       = 20;
 | 
						||
     FSHOOK_TYPE_CHANGEVOLSTATE_REPORT     = 21;
 | 
						||
     FSHOOK_TYPE_CHANGEPOOLSTATE_WARN      = 22;
 | 
						||
     FSHOOK_TYPE_CHANGEPOOLSTATE_REPORT    = 23;
 | 
						||
 | 
						||
 | 
						||
{==========================================================
 | 
						||
  NSS file system hooks
 | 
						||
  These are based on the Novell Event Bus, supported by NSS
 | 
						||
==========================================================}
 | 
						||
type
 | 
						||
   Pfse_info = ^fse_info;
 | 
						||
   fse_info = record
 | 
						||
        version   : longint;                  // event block version
 | 
						||
        reserved1 : longint;                  // do not modify
 | 
						||
        reserved2 : pointer;                  // do not modify
 | 
						||
        rtag      : rtag_t;                   // registerer's resource tag
 | 
						||
        link      : Pfse_info;                // used by registerer to link blocks
 | 
						||
        regID     : pointer;                  // registerer of the event
 | 
						||
        regSpace  : pointer;                  // scratch space for registerer's use
 | 
						||
        consID    : pointer;                  // consumer of event if relevant
 | 
						||
        length    : size_t;                   // in bytes of event data
 | 
						||
        data      : pointer;                  // pointer to data
 | 
						||
        reserved3 : array[0..3] of pointer;   // do not modify
 | 
						||
        _type     : longint;                  // one of NSS_FSTYPE_-...
 | 
						||
        userParm  : pointer;                  // specified at time of registration
 | 
						||
        parm0     : pointer;                  // value depends on event type
 | 
						||
        parm1     : pointer;                  // ibid
 | 
						||
        flags     : dword;                    // as noted above
 | 
						||
     end;
 | 
						||
   fsevent_info_t = fse_info;
 | 
						||
   Pfsevent_info_t = ^fsevent_info_t;
 | 
						||
   Pfsevent_info = Pfsevent_info_t;
 | 
						||
   Tfsevent_info = fsevent_info_t;
 | 
						||
 | 
						||
   Pzkey_t = ^zkey_t;
 | 
						||
   zkey_t = Tuint64;
 | 
						||
 | 
						||
   Pzid_t = ^zid_t;
 | 
						||
   zid_t = Tuint64;
 | 
						||
 | 
						||
   Pvolid_t = ^volid_t;
 | 
						||
   volid_t = record
 | 
						||
        timeLow : dword;
 | 
						||
        timeMid : word;
 | 
						||
        timeHighAndVersion : word;
 | 
						||
        clockSeqHighAndReserved : byte;
 | 
						||
        clockSeqLow : byte;
 | 
						||
        node : array[0..5] of byte;
 | 
						||
     end;
 | 
						||
   userid_t = volid_t;
 | 
						||
   Puserid_t = ^userid_t;
 | 
						||
   TVolId = volid_t;
 | 
						||
   PVolId = pvolid_t;
 | 
						||
   TUserId = userid_t;
 | 
						||
   PUserId = puserid_t;
 | 
						||
 | 
						||
   Ptimeinfo_t = ^timeinfo_t;
 | 
						||
   timeinfo_t = record
 | 
						||
        accessedTime,                    // last time file was accessed
 | 
						||
        createdTime,                     // time file was created
 | 
						||
        modifiedTime,                    // last time data was changed
 | 
						||
        metaDataModifiedTime : time_t;   // last time metadata was changed
 | 
						||
     end;
 | 
						||
   Ttimeinfo = timeinfo_t;
 | 
						||
   Ptimeinfo = Ptimeinfo_t;
 | 
						||
 | 
						||
{ commonlity in call-back structures...  }
 | 
						||
{ NSS (NetWare 6) filesystem hooks events and call-back data structures...  }
 | 
						||
 | 
						||
   Pdel_warn_t = ^del_warn_t;
 | 
						||
   del_warn_t = record
 | 
						||
        enterExitID,
 | 
						||
        slotID,
 | 
						||
        taskID : dword;
 | 
						||
        zid    : zid_t;
 | 
						||
        volID  : volid_t;
 | 
						||
     end;
 | 
						||
   Tdel_warn = del_warn_t;
 | 
						||
   Pdel_warn = Pdel_warn_t;
 | 
						||
 | 
						||
 | 
						||
   Pdel_report_t = ^del_report_t;
 | 
						||
   del_report_t = record
 | 
						||
        enterExitID    : dword;
 | 
						||
        enterRetStatus,
 | 
						||
        opRetCode      : longint;
 | 
						||
     end;
 | 
						||
   Tdel_report = del_report_t;
 | 
						||
   Pdel_report = Pdel_report_t;
 | 
						||
 | 
						||
   Pcreate_warn_t = ^create_warn_t;
 | 
						||
   create_warn_t = record
 | 
						||
        enterExitID,
 | 
						||
        slotID,
 | 
						||
        taskID          : dword;
 | 
						||
        zid             : zid_t;
 | 
						||
        volID           : volid_t;
 | 
						||
        name            : Punicode_t;
 | 
						||
        fileType,
 | 
						||
        fileAttributes,
 | 
						||
        createFlags     : dword;
 | 
						||
        createParms     : pointer;
 | 
						||
        requestedRights,
 | 
						||
        createAndOpen   : dword;
 | 
						||
     end;
 | 
						||
   Tcreate_warn = create_warn_t;
 | 
						||
   Pcreate_warn = Pcreate_warn_t;
 | 
						||
 | 
						||
   Pcreate_report_t = ^create_report_t;
 | 
						||
   create_report_t = record
 | 
						||
        enterExitID : dword;
 | 
						||
        enterRetStatus : longint;
 | 
						||
        opRetCode : longint;
 | 
						||
        retOpenCreateAction : dword;
 | 
						||
        retKey : zkey_t;
 | 
						||
        retZid : zid_t;
 | 
						||
        retVolID : volid_t;
 | 
						||
        times : timeinfo_t;
 | 
						||
     end;
 | 
						||
   Tcreate_report = create_report_t;
 | 
						||
   Pcreate_report = Pcreate_report_t;
 | 
						||
 | 
						||
   Popen_warn_t = ^open_warn_t;
 | 
						||
   open_warn_t = record
 | 
						||
        enterExitID : dword;
 | 
						||
        slotID : dword;
 | 
						||
        taskID : dword;
 | 
						||
        zid : zid_t;
 | 
						||
        volID : volid_t;
 | 
						||
        requestedRights : dword;
 | 
						||
        openParms : pointer;
 | 
						||
     end;
 | 
						||
   Topen_warn = open_warn_t;
 | 
						||
   Popen_warn = Popen_warn_t;
 | 
						||
 | 
						||
   Popen_report_t = ^open_report_t;
 | 
						||
   open_report_t = record
 | 
						||
        enterExitID : dword;
 | 
						||
        enterRetStatus : longint;
 | 
						||
        opRetCode : longint;
 | 
						||
        retKey : zkey_t;
 | 
						||
        retZid : zid_t;
 | 
						||
        retVolID : volid_t;
 | 
						||
        times : timeinfo_t;
 | 
						||
     end;
 | 
						||
   Topen_report = open_report_t;
 | 
						||
   Popen_report = Popen_report_t;
 | 
						||
 | 
						||
   Pclose_warn_t = ^close_warn_t;
 | 
						||
   close_warn_t = record
 | 
						||
        enterExitID : dword;
 | 
						||
        slotID : dword;
 | 
						||
        key : zkey_t;
 | 
						||
        fhState : dword;
 | 
						||
        times : timeinfo_t;
 | 
						||
     end;
 | 
						||
   Tclose_warn = close_warn_t;
 | 
						||
   Pclose_warn = Pclose_warn_t;
 | 
						||
 | 
						||
   Pclose_report_t = ^close_report_t;
 | 
						||
   close_report_t = record
 | 
						||
        enterExitID : dword;
 | 
						||
        enterRetStatus : longint;
 | 
						||
        opRetCode : longint;
 | 
						||
        fileDeleted : dword;
 | 
						||
     end;
 | 
						||
   Tclose_report = close_report_t;
 | 
						||
   Pclose_report = Pclose_report_t;
 | 
						||
 | 
						||
   Pren_warn_t = ^ren_warn_t;
 | 
						||
   ren_warn_t = record
 | 
						||
        enterExitID : dword;
 | 
						||
        slotID : dword;
 | 
						||
        taskID : dword;
 | 
						||
        zid : zid_t;
 | 
						||
        volID : volid_t;
 | 
						||
        destZid : zid_t;
 | 
						||
        destName : Punicode_t;
 | 
						||
        renameFlags : dword;
 | 
						||
     end;
 | 
						||
   Tren_warn = ren_warn_t;
 | 
						||
   Pren_warn = Pren_warn_t;
 | 
						||
 | 
						||
   Pren_report_t = ^ren_report_t;
 | 
						||
   ren_report_t = record
 | 
						||
        enterExitID : dword;
 | 
						||
        enterRetStatus : longint;
 | 
						||
        opRetCode : longint;
 | 
						||
     end;
 | 
						||
   Tren_report = ren_report_t;
 | 
						||
   Pren_report = Pren_report_t;
 | 
						||
 | 
						||
 | 
						||
   Pzinfo_t = ^zinfo_t;
 | 
						||
   zinfo_t = record
 | 
						||
        version : dword;
 | 
						||
        totalBytes : size_t;
 | 
						||
        nextByte : size_t;
 | 
						||
        padding : dword;
 | 
						||
        retMask : Tuint64;
 | 
						||
        std : record
 | 
						||
             zid : zid_t;
 | 
						||
             dataStreamZid : zid_t;
 | 
						||
             parentZid : zid_t;
 | 
						||
             logicalEOF : off64_t;
 | 
						||
             volumeID : volid_t;
 | 
						||
             fileType : dword;
 | 
						||
             fileAttributes : dword;
 | 
						||
             fileAttributesModMask : dword;
 | 
						||
             padding : dword;
 | 
						||
          end;
 | 
						||
        storageUsed : record
 | 
						||
             physicalEOF : size64_t;
 | 
						||
             dataBytes : size64_t;
 | 
						||
             metaDataBytes : size64_t;
 | 
						||
          end;
 | 
						||
        primaryNameSpaceID : longint;
 | 
						||
        nameStart : off_t;
 | 
						||
        names : record
 | 
						||
             numEntries : size_t;
 | 
						||
             fileNameArray : off_t;
 | 
						||
          end;
 | 
						||
        time : record
 | 
						||
             created : Tuint64;
 | 
						||
             archived : Tuint64;
 | 
						||
             modified : Tuint64;
 | 
						||
             accessed : Tuint64;
 | 
						||
             metaDataModified : Tuint64;
 | 
						||
          end;
 | 
						||
        id : record
 | 
						||
             owner : userid_t;
 | 
						||
             archiver : userid_t;
 | 
						||
             modifier : userid_t;
 | 
						||
             metaDataModifier : userid_t;
 | 
						||
          end;
 | 
						||
        blockSize : record
 | 
						||
             size : size_t;
 | 
						||
             sizeShift : off_t;
 | 
						||
          end;
 | 
						||
        count : record
 | 
						||
             open : longint;
 | 
						||
             hardLink : longint;
 | 
						||
          end;
 | 
						||
        dataStream : record
 | 
						||
             count : longint;
 | 
						||
             totalNameSize : size_t;
 | 
						||
             totalDataSize : size64_t;
 | 
						||
          end;
 | 
						||
        extAttr : record
 | 
						||
             count : size_t;
 | 
						||
             totalNameSize : size_t;
 | 
						||
             totalDataSize : size64_t;
 | 
						||
          end;
 | 
						||
        deleted : record
 | 
						||
             time : Tuint64;
 | 
						||
             id : userid_t;
 | 
						||
          end;
 | 
						||
        macNS : record
 | 
						||
             finderInfo : record
 | 
						||
                 case longint of
 | 
						||
                    0 : ( generic : array[0..31] of byte );
 | 
						||
                    1 : ( macintosh : record
 | 
						||
                         FInfo : record
 | 
						||
                              fdType : longint;
 | 
						||
                              fdCreator : longint;
 | 
						||
                              fdFlags : Tint16;
 | 
						||
                              fdLocation : record
 | 
						||
                                   v : Tint16;
 | 
						||
                                   h : Tint16;
 | 
						||
                                end;
 | 
						||
                              fdFldr : Tint16;
 | 
						||
                           end;
 | 
						||
                         extended : record
 | 
						||
                             case longint of
 | 
						||
                                0 : ( FXInfo : record
 | 
						||
                                     fdIconID : Tint16;
 | 
						||
                                     fdUnused : Tint16;
 | 
						||
                                     fdScript : int8_t;
 | 
						||
                                     fdFlags : int8_t;
 | 
						||
                                     fdComment : Tint16;
 | 
						||
                                     fdPutAway : longint;
 | 
						||
                                  end );
 | 
						||
                                1 : ( DXInfo : record
 | 
						||
                                     frScroll : record
 | 
						||
                                          v : Tint16;
 | 
						||
                                          h : Tint16;
 | 
						||
                                       end;
 | 
						||
                                     frOpenChain : longint;
 | 
						||
                                     fdScript : int8_t;
 | 
						||
                                     fdFlags : int8_t;
 | 
						||
                                     fdComment : Tint16;
 | 
						||
                                     fdPutAway : longint;
 | 
						||
                                  end );
 | 
						||
                             end;
 | 
						||
                      end );
 | 
						||
                 end;
 | 
						||
             proDOSInfo : array[0..5] of byte;
 | 
						||
             filler : array[0..1] of byte;
 | 
						||
             dirRightsMask : dword;
 | 
						||
          end;
 | 
						||
        unixNS : record
 | 
						||
             fMode : dword;
 | 
						||
             rDev : dword;
 | 
						||
             myFlags : dword;
 | 
						||
             nfsUID : dword;
 | 
						||
             nfsGID : dword;
 | 
						||
             nwUID : dword;
 | 
						||
             nwGID : dword;
 | 
						||
             nwEveryone : dword;
 | 
						||
             nwUIDRights : dword;
 | 
						||
             nwGIDRights : dword;
 | 
						||
             nwEveryoneRights : dword;
 | 
						||
             acsFlags : byte;
 | 
						||
             firstCreated : byte;
 | 
						||
             variableSize : size_t;
 | 
						||
             offsetToData : off_t;
 | 
						||
          end;
 | 
						||
        volumeID : volid_t;
 | 
						||
        ndsObjectID : userid_t;
 | 
						||
        volumeState : dword;
 | 
						||
        nameSpaceMask : dword;
 | 
						||
        features : record
 | 
						||
             enabled : Tuint64;
 | 
						||
             enableModMask : Tuint64;
 | 
						||
             supported : Tuint64;
 | 
						||
          end;
 | 
						||
        maximumFileSize : size64_t;
 | 
						||
        totalSpaceQuota : size64_t;
 | 
						||
        numUsedBytes : size64_t;
 | 
						||
        numObjects : size64_t;
 | 
						||
        numFiles : size64_t;
 | 
						||
        authModelID : dword;
 | 
						||
        dataShreddingCount : size_t;
 | 
						||
        salvage : record
 | 
						||
             purgeableBytes : size64_t;
 | 
						||
             nonPurgeableBytes : size64_t;
 | 
						||
             numDeletedFiles : size64_t;
 | 
						||
             oldestDeletedTime : Tuint64;
 | 
						||
             minKeepSeconds : size_t;
 | 
						||
             maxKeepSeconds : size_t;
 | 
						||
             lowWaterMark : size_t;
 | 
						||
             highWaterMark : size_t;
 | 
						||
          end;
 | 
						||
        comp : record
 | 
						||
             numCompressedFiles : size64_t;
 | 
						||
             numCompDelFiles : size64_t;
 | 
						||
             numUncompressibleFiles : size64_t;
 | 
						||
             numPreCompressedBytes : size64_t;
 | 
						||
             numCompressedBytes : size64_t;
 | 
						||
          end;
 | 
						||
        pool : record
 | 
						||
             poolID : volid_t;
 | 
						||
             ndsObjectID : userid_t;
 | 
						||
             poolState : dword;
 | 
						||
             nameSpaceMask : dword;
 | 
						||
             features : record
 | 
						||
                  enabled : Tuint64;
 | 
						||
                  enableModMask : Tuint64;
 | 
						||
                  supported : Tuint64;
 | 
						||
               end;
 | 
						||
             totalSpace : size64_t;
 | 
						||
             numUsedBytes : size64_t;
 | 
						||
             purgeableBytes : size64_t;
 | 
						||
             nonPurgeableBytes : size64_t;
 | 
						||
          end;
 | 
						||
        extAttrUserFlags : dword;
 | 
						||
        variableData : array[0..0] of byte;
 | 
						||
     end;
 | 
						||
   Tzinfo = zinfo_t;
 | 
						||
   Pzinfo = Pzinfo_t;
 | 
						||
 | 
						||
   Pmod_warn_t = ^mod_warn_t;
 | 
						||
   mod_warn_t = record
 | 
						||
        enterExitID : dword;
 | 
						||
        slotID : dword;
 | 
						||
        taskID : dword;
 | 
						||
        zid : zid_t;
 | 
						||
        volID : volid_t;
 | 
						||
        modifyInfoMask : dword;
 | 
						||
        modifyTypeInfoMask : dword;
 | 
						||
        modifyInfo : Pzinfo_t;
 | 
						||
        modifyTypeInfo : pointer;
 | 
						||
     end;
 | 
						||
   Tmod_warn = mod_warn_t;
 | 
						||
   Pmod_warn = Pmod_warn_t;
 | 
						||
 | 
						||
   Pmod_report_t = ^mod_report_t;
 | 
						||
   mod_report_t = record
 | 
						||
        enterExitID : dword;
 | 
						||
        enterRetStatus : longint;
 | 
						||
        opRetCode : longint;
 | 
						||
     end;
 | 
						||
   Tmod_report = mod_report_t;
 | 
						||
   Pmod_report = Pmod_report_t;
 | 
						||
 | 
						||
   Psetsize_warn_t = ^setsize_warn_t;
 | 
						||
   setsize_warn_t = record
 | 
						||
        enterExitID : dword;
 | 
						||
        slotID : dword;
 | 
						||
        key : zkey_t;
 | 
						||
        curEOF : Tuint64;
 | 
						||
        newEOF : Tuint64;
 | 
						||
        setSizeFlags : dword;
 | 
						||
     end;
 | 
						||
   Tsetsize_warn = setsize_warn_t;
 | 
						||
   Psetsize_warn = Psetsize_warn_t;
 | 
						||
 | 
						||
   Psetsize_report_t = ^setsize_report_t;
 | 
						||
   setsize_report_t = record
 | 
						||
        enterExitID : dword;
 | 
						||
        enterRetStatus : longint;
 | 
						||
        opRetCode : longint;
 | 
						||
        newEOF : Tuint64;
 | 
						||
     end;
 | 
						||
   Tsetsize_report = setsize_report_t;
 | 
						||
   Psetsize_report = Psetsize_report_t;
 | 
						||
 | 
						||
   Paddtrustee_warn_t = ^addtrustee_warn_t;
 | 
						||
   addtrustee_warn_t = record
 | 
						||
        enterExitID : dword;
 | 
						||
        slotID : dword;
 | 
						||
        taskID : dword;
 | 
						||
        zid : zid_t;
 | 
						||
        volID : volid_t;
 | 
						||
        trusteeID : userid_t;
 | 
						||
        rights : dword;
 | 
						||
        attributes : dword;
 | 
						||
     end;
 | 
						||
   Taddtrustee_warn = addtrustee_warn_t;
 | 
						||
   Paddtrustee_warn = Paddtrustee_warn_t;
 | 
						||
 | 
						||
   Paddtrustee_report_t = ^addtrustee_report_t;
 | 
						||
   addtrustee_report_t = record
 | 
						||
        enterExitID : dword;
 | 
						||
        enterRetStatus : longint;
 | 
						||
        opRetCode : longint;
 | 
						||
     end;
 | 
						||
 | 
						||
   Taddtrustee_report = addtrustee_report_t;
 | 
						||
   Paddtrustee_report = Paddtrustee_report_t;
 | 
						||
 | 
						||
   Premtrustee_warn_t = ^remtrustee_warn_t;
 | 
						||
   remtrustee_warn_t = record
 | 
						||
        enterExitID : dword;
 | 
						||
        slotID : dword;
 | 
						||
        taskID : dword;
 | 
						||
        zid : zid_t;
 | 
						||
        volID : volid_t;
 | 
						||
        trusteeID : userid_t;
 | 
						||
        purgedFileFlag : dword;
 | 
						||
     end;
 | 
						||
   Tremtrustee_warn = remtrustee_warn_t;
 | 
						||
   Premtrustee_warn = Premtrustee_warn_t;
 | 
						||
 | 
						||
   Premtrustee_report_t = ^remtrustee_report_t;
 | 
						||
   remtrustee_report_t = record
 | 
						||
        enterExitID : dword;
 | 
						||
        enterRetStatus : longint;
 | 
						||
        opRetCode : longint;
 | 
						||
     end;
 | 
						||
   Tremtrustee_report = remtrustee_report_t;
 | 
						||
   Premtrustee_report = Premtrustee_report_t;
 | 
						||
 | 
						||
   Psetrights_warn_t = ^setrights_warn_t;
 | 
						||
   setrights_warn_t = record
 | 
						||
        enterExitID : dword;
 | 
						||
        slotID : dword;
 | 
						||
        taskID : dword;
 | 
						||
        zid : zid_t;
 | 
						||
        volID : volid_t;
 | 
						||
        inheritedRights : dword;
 | 
						||
        authorizeFlag : longint;
 | 
						||
     end;
 | 
						||
   Tsetrights_warn = setrights_warn_t;
 | 
						||
   Psetrights_warn = Psetrights_warn_t;
 | 
						||
 | 
						||
   Psetrights_report_t = ^setrights_report_t;
 | 
						||
   setrights_report_t = record
 | 
						||
        enterExitID : dword;
 | 
						||
        enterRetStatus : longint;
 | 
						||
        opRetCode : longint;
 | 
						||
     end;
 | 
						||
   Tsetrights_report = setrights_report_t;
 | 
						||
   Psetrights_report = Psetrights_report_t;
 | 
						||
 | 
						||
   Pxvolstate_warn_t = ^xvolstate_warn_t;
 | 
						||
   xvolstate_warn_t = record
 | 
						||
        enterExitID : dword;
 | 
						||
        oldState : word;
 | 
						||
        newState : word;
 | 
						||
        mode : dword;
 | 
						||
        volID : volid_t;
 | 
						||
        poolID : volid_t;
 | 
						||
     end;
 | 
						||
   Txvolstate_warn = xvolstate_warn_t;
 | 
						||
   Pxvolstate_warn = Pxvolstate_warn_t;
 | 
						||
 | 
						||
   Pxvolstate_report_t = ^xvolstate_report_t;
 | 
						||
   xvolstate_report_t = record
 | 
						||
        enterExitID : dword;
 | 
						||
        enterRetStatus : longint;
 | 
						||
        opRetCode : longint;
 | 
						||
        oldState : word;
 | 
						||
        newState : word;
 | 
						||
        mode : dword;
 | 
						||
        volID : volid_t;
 | 
						||
        poolID : volid_t;
 | 
						||
     end;
 | 
						||
   Txvolstate_report = xvolstate_report_t;
 | 
						||
   Pxvolstate_report = Pxvolstate_report_t;
 | 
						||
 | 
						||
   Pxpoolstate_warn_t = ^xpoolstate_warn_t;
 | 
						||
   xpoolstate_warn_t = record
 | 
						||
        enterExitID : dword;
 | 
						||
        oldState : word;
 | 
						||
        newState : word;
 | 
						||
        mode : dword;
 | 
						||
        poolID : volid_t;
 | 
						||
     end;
 | 
						||
   Txpoolstate_warn = xpoolstate_warn_t;
 | 
						||
   Pxpoolstate_warn = Pxpoolstate_warn_t;
 | 
						||
 | 
						||
 | 
						||
   Pxpoolstate_report_t = ^xpoolstate_report_t;
 | 
						||
   xpoolstate_report_t = record
 | 
						||
        enterExitID : dword;
 | 
						||
        enterRetStatus : longint;
 | 
						||
        opRetCode : longint;
 | 
						||
        oldState : word;
 | 
						||
        newState : word;
 | 
						||
        mode : dword;
 | 
						||
        poolID : volid_t;
 | 
						||
     end;
 | 
						||
   Txpoolstate_report = xpoolstate_report_t;
 | 
						||
   Pxpoolstate_report = Pxpoolstate_report_t;
 | 
						||
 | 
						||
{============================================================
 | 
						||
 Traditional file system hooks
 | 
						||
 These were interfaced by CLib in its NDK header, nwfshook.h.
 | 
						||
============================================================}
 | 
						||
 | 
						||
   PEraseFileCallBackStruct = ^TEraseFileCallBackStruct;
 | 
						||
   TEraseFileCallBackStruct = record
 | 
						||
     case longint of
 | 
						||
      0: (slot : longint);
 | 
						||
      1: (connection : longint;
 | 
						||
          task : longint;
 | 
						||
          volume : longint;
 | 
						||
          dirBase : longint;
 | 
						||
          pathString : Pchar;
 | 
						||
          pathComponentCount : longint;
 | 
						||
          nameSpace : longint;
 | 
						||
          attributeMatchBits : dword);
 | 
						||
     end;
 | 
						||
{ (see fsio.h)  }
 | 
						||
 | 
						||
   POpenFileCallBackStruct = ^TOpenFileCallBackStruct;
 | 
						||
   TOpenFileCallBackStruct = record
 | 
						||
        case longint of
 | 
						||
          0: (slot : longint);
 | 
						||
          1: (connection : longint;
 | 
						||
              task : longint;
 | 
						||
              volume : longint;
 | 
						||
              dirBase : longint;
 | 
						||
              pathString : Pchar;
 | 
						||
              pathComponentCount : longint;
 | 
						||
              nameSpace : longint;
 | 
						||
              attributeMatchBits : dword;
 | 
						||
              requestedAccessRights : dword;
 | 
						||
              dataStreamNumber : longint;
 | 
						||
              fileHandle : Plongint);
 | 
						||
     end;
 | 
						||
 | 
						||
   PCreateFileCallBackStruct = ^TCreateFileCallBackStruct;
 | 
						||
   TCreateFileCallBackStruct = record
 | 
						||
      case integer of
 | 
						||
        0: (connection : longint);
 | 
						||
        1: (slot : longint;
 | 
						||
            task : longint;
 | 
						||
            volume : longint;
 | 
						||
            dirBase : longint;
 | 
						||
            pathString : Pchar;
 | 
						||
            pathComponentCount : longint;
 | 
						||
            nameSpace : longint;
 | 
						||
            createAttributeBits : dword;
 | 
						||
            createFlagBits : dword;
 | 
						||
            dataStreamNumber : longint;
 | 
						||
            fileHandle : Plongint);
 | 
						||
     end;
 | 
						||
 | 
						||
   PCreateAndOpenCallBackStruct = ^TCreateAndOpenCallBackStruct;
 | 
						||
   TCreateAndOpenCallBackStruct = record
 | 
						||
     case longint of
 | 
						||
       0: (connection : longint);
 | 
						||
       1: (slot : longint;
 | 
						||
           task : longint;
 | 
						||
           volume : longint;
 | 
						||
           dirBase : longint;
 | 
						||
           pathString : Pchar;
 | 
						||
           pathComponentCount : longint;
 | 
						||
           nameSpace : longint;
 | 
						||
           createAttributeBits : dword;
 | 
						||
           requestedAccessRights : dword;
 | 
						||
           createFlagBits : dword;
 | 
						||
           dataStreamNumber : longint;
 | 
						||
           fileHandle : Plongint);
 | 
						||
     end;
 | 
						||
 | 
						||
   PRenameMoveEntryCallBackStruct = ^TRenameMoveEntryCallBackStruct;
 | 
						||
   TRenameMoveEntryCallBackStruct = record
 | 
						||
     case longint of
 | 
						||
       0: (connection : longint);
 | 
						||
       1: (slot : longint;
 | 
						||
           task : longint;
 | 
						||
           volume : longint;
 | 
						||
           dirBase : longint;
 | 
						||
           pathString : Pchar;
 | 
						||
           pathComponentCount : longint;
 | 
						||
           nameSpace : longint;
 | 
						||
           attributeMatchBits : dword;
 | 
						||
           subDirsOnlyFlag : longint;
 | 
						||
           newDirBase : longint;
 | 
						||
           newPathString : Pchar;
 | 
						||
           originalNewCount : longint;
 | 
						||
           compatibilityFlag : dword;
 | 
						||
           allowRenamesToMyselfFlag : longint);
 | 
						||
     end;
 | 
						||
 | 
						||
   PCloseFileCallBackStruct = ^TCloseFileCallBackStruct;
 | 
						||
   TCloseFileCallBackStruct = record
 | 
						||
     case integer of
 | 
						||
       0: (connection : longint);
 | 
						||
       1: (slot : longint;
 | 
						||
           task : longint;
 | 
						||
           fileHandle : longint);
 | 
						||
     end;
 | 
						||
 | 
						||
   PCreateDirCallBackStruct = ^TCreateDirCallBackStruct;
 | 
						||
   TCreateDirCallBackStruct = record
 | 
						||
     case integer of
 | 
						||
       0: (connection : longint);
 | 
						||
       1: (slot : longint;
 | 
						||
           volume : longint;
 | 
						||
           dirBase : longint;
 | 
						||
           pathString : Pchar;
 | 
						||
           pathComponentCount : longint;
 | 
						||
           nameSpace : longint;
 | 
						||
           directoryAccessMask : dword);
 | 
						||
     end;
 | 
						||
 | 
						||
   PDeleteDirCallBackStruct = ^TDeleteDirCallBackStruct;
 | 
						||
   TDeleteDirCallBackStruct = record
 | 
						||
     case longint of
 | 
						||
       0: (connection : longint);
 | 
						||
       1: (slot : longint;
 | 
						||
           volume : longint;
 | 
						||
           dirBase : longint;
 | 
						||
           pathString : Pchar;
 | 
						||
           pathComponentCount : longint;
 | 
						||
           nameSpace : longint);
 | 
						||
     end;
 | 
						||
 | 
						||
   Tmodifyvector = record
 | 
						||
             MModifyName : Pchar;
 | 
						||
             MFileAttributes : dword;
 | 
						||
             MFileAttributesMask : dword;
 | 
						||
             MCreateDate : word;
 | 
						||
             MCreateTime : word;
 | 
						||
             MOwnerID : dword;
 | 
						||
             MLastArchivedDate : word;
 | 
						||
             MLastArchivedTime : word;
 | 
						||
             MLastArchivedID : dword;
 | 
						||
             MLastUpdatedDate : word;
 | 
						||
             MLastUpdatedTime : word;
 | 
						||
             MLastUpdatedID : dword;
 | 
						||
             MLastAccessedDate : word;
 | 
						||
             MInheritanceGrantMask : word;
 | 
						||
             MInheritanceRevokeMask : word;
 | 
						||
             MMaximumSpace : size_t;
 | 
						||
             MLastUpdatedInSeconds : time_t;
 | 
						||
          end;
 | 
						||
   Pmodifyvector = ^Tmodifyvector;
 | 
						||
 | 
						||
   PModifyDirEntryCallBackStruct = ^TModifyDirEntryCallBackStruct;
 | 
						||
   TModifyDirEntryCallBackStruct = record
 | 
						||
     case longint of
 | 
						||
       0: (connection : longint);
 | 
						||
       1: (slot : longint;
 | 
						||
           task : longint;
 | 
						||
           volume : longint;
 | 
						||
           dirBase : longint;
 | 
						||
           pathString : Pchar;
 | 
						||
           pathComponentCount : longint;
 | 
						||
           nameSpace : longint;
 | 
						||
           attributeMatchBits : dword;
 | 
						||
           targetNameSpace : longint;
 | 
						||
           modifyVector : Pmodifyvector;
 | 
						||
           modifyBits : dword;
 | 
						||
           allowWildCardsFlag : longint);
 | 
						||
     end;
 | 
						||
 | 
						||
   PSalvageDeletedCallBackStruct = ^TSalvageDeletedCallBackStruct;
 | 
						||
   TSalvageDeletedCallBackStruct = record
 | 
						||
     case longint of
 | 
						||
       0: (connection : longint);
 | 
						||
       1: (slot : longint;
 | 
						||
           volume : longint;
 | 
						||
           dirBase : longint;
 | 
						||
           toBeSalvagedDirBase : longint;
 | 
						||
           nameSpace : longint;
 | 
						||
           newName : Pchar);
 | 
						||
     end;
 | 
						||
 | 
						||
   PPurgeDeletedCallBackStruct = ^TPurgeDeletedCallBackStruct;
 | 
						||
   TPurgeDeletedCallBackStruct = record
 | 
						||
     case longint of
 | 
						||
       0: (connection : longint);
 | 
						||
       1: (slot : longint;
 | 
						||
           volume : longint;
 | 
						||
           dirBase : longint;
 | 
						||
           toBePurgedDirBase : longint;
 | 
						||
           nameSpace : longint);
 | 
						||
     end;
 | 
						||
 | 
						||
   PRenameNSEntryCallBackStruct = ^TRenameNSEntryCallBackStruct;
 | 
						||
   TRenameNSEntryCallBackStruct = record
 | 
						||
     case longint of
 | 
						||
       0: (connection : longint);
 | 
						||
       1: (slot : longint;
 | 
						||
           task : longint;
 | 
						||
           volume : longint;
 | 
						||
           dirBase : longint;
 | 
						||
           pathString : Pchar;
 | 
						||
           pathComponentCount : longint;
 | 
						||
           nameSpace : longint;
 | 
						||
           matchBits : dword;
 | 
						||
           newName : Pchar);
 | 
						||
     end;
 | 
						||
 | 
						||
   PGenericSalvageDeletedCBStruct = ^TGenericSalvageDeletedCBStruct;
 | 
						||
   TGenericSalvageDeletedCBStruct = record
 | 
						||
     case longint of
 | 
						||
       0: (connection : longint);
 | 
						||
       1: (slot : longint;
 | 
						||
           nameSpace : longint;
 | 
						||
           sequence : longint;
 | 
						||
           volume : longint;
 | 
						||
           dirBase : longint;
 | 
						||
           newName : Pchar);
 | 
						||
     end;
 | 
						||
 | 
						||
   PGenericPurgeDeletedCBStruct = ^TGenericPurgeDeletedCBStruct;
 | 
						||
   TGenericPurgeDeletedCBStruct = record
 | 
						||
     case longint of
 | 
						||
       0: (connection : longint);
 | 
						||
       1: (slot : longint;
 | 
						||
           nameSpace : longint;
 | 
						||
           sequence : longint;
 | 
						||
           volume : longint;
 | 
						||
           dirBase : longint);
 | 
						||
     end;
 | 
						||
 | 
						||
   PGenericOpenCreateCBStruct = ^TGenericOpenCreateCBStruct;
 | 
						||
   TGenericOpenCreateCBStruct = record
 | 
						||
     case longint of
 | 
						||
       0: (connection : longint);
 | 
						||
       1: (slot : longint;
 | 
						||
           task : longint;
 | 
						||
           volume : longint;
 | 
						||
           pathComponentCount : longint;
 | 
						||
           dirBase : longint;
 | 
						||
           pathString : Pchar;
 | 
						||
           nameSpace : longint;
 | 
						||
           dataStreamNumber : longint;
 | 
						||
           openCreateFlags : dword;
 | 
						||
           searchAttributes : dword;
 | 
						||
           createAttributes : dword;
 | 
						||
           requestedAccessRights : dword;
 | 
						||
           returnInfoMask : dword;
 | 
						||
           fileHandle : Plongint;
 | 
						||
           openCreateAction : Pchar);
 | 
						||
     end;
 | 
						||
 | 
						||
   PGenericRenameCBStruct = ^TGenericRenameCBStruct;
 | 
						||
   TGenericRenameCBStruct = record
 | 
						||
     case longint of
 | 
						||
       0: (connection : longint);
 | 
						||
       1: (slot : longint;
 | 
						||
           task : longint;
 | 
						||
           nameSpace : longint;
 | 
						||
           renameFlag : longint;
 | 
						||
           searchAttributes : dword;
 | 
						||
           srcVolume : longint;
 | 
						||
           srcPathComponentCount : longint;
 | 
						||
           srcDirBase : longint;
 | 
						||
           srcPathString : Pchar;
 | 
						||
           dstVolume : longint;
 | 
						||
           dstPathComponentCount : longint;
 | 
						||
           dstDirBase : longint;
 | 
						||
           dstPathString : Pchar);
 | 
						||
     end;
 | 
						||
 | 
						||
   PGenericEraseFileCBStruct = ^TGenericEraseFileCBStruct;
 | 
						||
   TGenericEraseFileCBStruct = record
 | 
						||
     case longint of
 | 
						||
       0: (connection : longint);
 | 
						||
       1: (slot : longint;
 | 
						||
           task : longint;
 | 
						||
           volume : longint;
 | 
						||
           pathComponentCount : longint;
 | 
						||
           dirBase : longint;
 | 
						||
           pathString : Pchar;
 | 
						||
           nameSpace : longint;
 | 
						||
           searchAttributes : dword);
 | 
						||
     end;
 | 
						||
 | 
						||
   PGenericModifyDOSInfoCBStruct = ^TGenericModifyDOSInfoCBStruct;
 | 
						||
   TGenericModifyDOSInfoCBStruct = record
 | 
						||
     case longint of
 | 
						||
       0: (connection : longint);
 | 
						||
       1: (slot : longint;
 | 
						||
           task : longint;
 | 
						||
           volume : longint;
 | 
						||
           pathComponentCount : longint;
 | 
						||
           dirBase : longint;
 | 
						||
           pathString : Pchar;
 | 
						||
           nameSpace : longint;
 | 
						||
           searchAttributes : dword;
 | 
						||
           modifyMask : dword;
 | 
						||
           modifyInfo : pointer);
 | 
						||
     end;
 | 
						||
 | 
						||
   PGenericModifyNSInfoCBStruct = ^TGenericModifyNSInfoCBStruct;
 | 
						||
   TGenericModifyNSInfoCBStruct = record
 | 
						||
     case longint of
 | 
						||
       0: (connection : longint);
 | 
						||
       1: (slot : longint;
 | 
						||
           task : longint;
 | 
						||
           dataLength : size_t;
 | 
						||
           srcNameSpace : longint;
 | 
						||
           dstNameSpace : longint;
 | 
						||
           volume : longint;
 | 
						||
           dirBase : longint;
 | 
						||
           modifyMask : dword;
 | 
						||
           modifyInfo : pointer);
 | 
						||
     end;
 | 
						||
{============================================================================
 | 
						||
** NSS file system hook prototypes...
 | 
						||
 }
 | 
						||
 | 
						||
//type TCdeclPfsEventFunc = function (info:Pfsevent_info_t):longint; cdecl;
 | 
						||
type TCdeclPfsEventFunc = function (var info:Tfsevent_info):longint; cdecl;
 | 
						||
 | 
						||
function fs_register(_type:longint; cbFunc:TCdeclPfsEventFunc; userParm:pointer):longint;cdecl;external libc_nlm name 'fs_register';
 | 
						||
function fs_unregister(_type:longint; cbFunc:TCdeclPfsEventFunc):longint;cdecl;external libc_nlm name 'fs_unregister';
 | 
						||
 | 
						||
function fs_mapkeytopath(key:zkey_t; path:Punicode_t; maxpathlen:Psize_t; want_volume:longint):longint;cdecl;external libc_nlm name 'fs_mapkeytopath';
 | 
						||
function fs_mapkeytopath(key:zkey_t; path:Punicode_t; maxpathlen:Psize_t; want_volume:longbool):longint;cdecl;external libc_nlm name 'fs_mapkeytopath';
 | 
						||
function fs_mapkeytopath(key:zkey_t; path:Punicode_t; var maxpathlen:longint; want_volume:longint):longint;cdecl;external libc_nlm name 'fs_mapkeytopath';
 | 
						||
function fs_mapkeytopath(key:zkey_t; path:Punicode_t; var maxpathlen:longint; want_volume:longbool):longint;cdecl;external libc_nlm name 'fs_mapkeytopath';
 | 
						||
 | 
						||
function fs_mapzidtopath(zid:zid_t; volId:Pvolid_t; path:Punicode_t; maxpathlen:Psize_t; want_volume:longint):longint;cdecl;external libc_nlm name 'fs_mapzidtopath';
 | 
						||
function fs_mapzidtopath(zid:zid_t; volId:Pvolid_t; path:Punicode_t; maxpathlen:Psize_t; want_volume:longbool):longint;cdecl;external libc_nlm name 'fs_mapzidtopath';
 | 
						||
function fs_mapzidtopath(zid:zid_t; var volId:volid_t; path:Punicode_t; var maxpathlen:longint; want_volume:longint):longint;cdecl;external libc_nlm name 'fs_mapzidtopath';
 | 
						||
function fs_mapzidtopath(zid:zid_t; var volId:volid_t; path:Punicode_t; var maxpathlen:longint; want_volume:longbool):longint;cdecl;external libc_nlm name 'fs_mapzidtopath';
 | 
						||
 | 
						||
function fs_read(key:zkey_t; buf:pointer; off:off64_t; len:size_t; bytes:Pssize_t):longint;cdecl;external libc_nlm name 'fs_read';
 | 
						||
function fs_read(key:zkey_t; var buf; off:off64_t; len:size_t; var bytes:ssize_t):longint;cdecl;external libc_nlm name 'fs_read';
 | 
						||
 | 
						||
function fs_write(key:zkey_t; buf:pointer; off:off64_t; len:size_t; bytes:Pssize_t):longint;cdecl;external libc_nlm name 'fs_write';
 | 
						||
function fs_write(key:zkey_t; var buf; off:off64_t; len:size_t; var bytes:ssize_t):longint;cdecl;external libc_nlm name 'fs_write';
 | 
						||
 | 
						||
 | 
						||
{============================================================================
 | 
						||
 Generic information (NEB and traditional) based on connection slot. This
 | 
						||
 has little to do with file system hooks, but in LibC, there is no way to
 | 
						||
 get a hold of a connection slot except through file system hook interfaces.}
 | 
						||
function fs_getslotinfo(slot:longint;
 | 
						||
                        name:Pchar;
 | 
						||
                        objectType:PWord;
 | 
						||
                        objectId:Pdword;
 | 
						||
                        loginTime:Pointer):longint;cdecl;external libc_nlm name 'fs_getslotinfo';
 | 
						||
function fs_getslotinfo(slot:longint;
 | 
						||
                        name:Pchar;
 | 
						||
                        var objectType:word;
 | 
						||
                        var objectId:dword;
 | 
						||
                        var loginTime):longint;cdecl;external libc_nlm name 'fs_getslotinfo';
 | 
						||
 | 
						||
// Clib compatible function name:
 | 
						||
function GetConnectionInformation (connectionNumber:longint;
 | 
						||
                                   objectName      :Pchar;
 | 
						||
                                   objectType      :PWORD;
 | 
						||
                                   objectID        :Plongint;
 | 
						||
                                   loginTime       :pointer):longint;cdecl;external libc_nlm name 'fs_getslotinfo';
 | 
						||
function GetConnectionInformation (connectionNumber:longint;
 | 
						||
                                   objectName      :Pchar;
 | 
						||
                               var objectType      :word;
 | 
						||
                               var objectID        :longint;
 | 
						||
                               var loginTime):longint;cdecl;external libc_nlm name 'fs_getslotinfo';
 | 
						||
 | 
						||
 | 
						||
 | 
						||
{==========================================
 | 
						||
 Traditional file system hook prototypes... }
 | 
						||
 | 
						||
type TCDeclFunc1PtrArgLongint = function (info:pointer):longint; cdecl;
 | 
						||
 | 
						||
function fst_register(_type:longint; cbFunc:pointer):longint;cdecl;external libc_nlm name 'fst_register';
 | 
						||
function fst_unregister(_type:longint; cbFunc:pointer):longint;cdecl;external libc_nlm name 'fst_unregister';
 | 
						||
function fst_getvoldir(slot:longint; fileHandle:longint; namespace:longint; volNum:Plongint; dirBase:Plongint):longint;cdecl;external libc_nlm name 'fst_getvoldir';
 | 
						||
function fst_getvoldir(slot, fileHandle, namespace:longint; var volNum, dirBase:longint):longint;cdecl;external libc_nlm name 'fst_getvoldir';
 | 
						||
function fst_getorignamespace(volNum, dirBase:longint; namespace:Plongint):longint;cdecl;external libc_nlm name 'fst_getorignamespace';
 | 
						||
function fst_getorignamespace(volNum, dirBase:longint; var namespace:longint):longint;cdecl;external libc_nlm name 'fst_getorignamespace';
 | 
						||
function fst_mapvoldirtopath(volNum,dirBase,namespace:longint; path:Pchar; maxPathLen:longint):longint;cdecl;external libc_nlm name 'fst_mapvoldirtopath';
 | 
						||
function fst_mapvoltoname(volNum:longint; name:Pchar):longint;cdecl;external libc_nlm name 'fst_mapvoltoname';
 | 
						||
function fst_read(slot,fileHandle:longint; buffer:pointer; offset:off64_t; length:size_t;
 | 
						||
           bytes:Plongint):longint;cdecl;external libc_nlm name 'fst_read';
 | 
						||
function fst_read(slot,fileHandle:longint; buffer:pointer; offset:off64_t; length:size_t;
 | 
						||
           var bytes:longint):longint;cdecl;external libc_nlm name 'fst_read';
 | 
						||
function fst_write(slot, fileHandle:longint; buffer:pointer; offset:off64_t; length:size_t;
 | 
						||
           bytes:Plongint):longint;cdecl;external libc_nlm name 'fst_write';
 | 
						||
function fst_write(slot, fileHandle:longint; buffer:pointer; offset:off64_t; length:size_t;
 | 
						||
           var bytes:longint):longint;cdecl;external libc_nlm name 'fst_write';
 | 
						||
function fst_size(slot, fileHandle:longint; length:Poff64_t):longint;cdecl;external libc_nlm name 'fst_size';
 | 
						||
function fst_flush(slot, fileHandle:longint):longint;cdecl;external libc_nlm name 'fst_flush';
 | 
						||
 | 
						||
 | 
						||
type
 | 
						||
   Pfst_info_t = ^fst_info_t;
 | 
						||
   fst_info_t = record
 | 
						||
        volNum,
 | 
						||
        DosBase,
 | 
						||
        dirBase,
 | 
						||
        namespace,
 | 
						||
        datastream : longint;
 | 
						||
        flags : dword;
 | 
						||
     end;
 | 
						||
    Tfst_info = fst_info_t;
 | 
						||
    Pfst_info = Pfst_info_t;
 | 
						||
 | 
						||
function fst_getinfo(slot,fileHandle:longint; info:Pfst_info_t):longint;cdecl;external libc_nlm name 'fst_getinfo';
 | 
						||
function fst_getinfo(slot,fileHandle:longint; var info:fst_info_t):longint;cdecl;external libc_nlm name 'fst_getinfo';
 | 
						||
 | 
						||
 | 
						||
// getopt.h
 | 
						||
 | 
						||
{ values for 'has_arg'...  }
 | 
						||
const
 | 
						||
  no_argument = 0;
 | 
						||
  required_argument = 1;
 | 
						||
  optional_argument = 2;
 | 
						||
 | 
						||
{ definition for getopt_long() and getopt_long_only()...  }
 | 
						||
 | 
						||
type
 | 
						||
   Poption = ^option;
 | 
						||
   option = record
 | 
						||
        name    : Pchar;
 | 
						||
        has_arg : longint;
 | 
						||
        flag    : Plongint;
 | 
						||
        val     : longint;
 | 
						||
     end;
 | 
						||
 | 
						||
function getopt_long(argc:longint; argv:array of Pchar; optstring:Pchar; longopts:Poption; longindex:Plongint):longint;cdecl;external libc_nlm name 'getopt_long';
 | 
						||
function getopt_long_only(argc:longint; argv:array of Pchar; optstring:Pchar; longopts:Poption; longindex:Plongint):longint;cdecl;external libc_nlm name 'getopt_long_only';
 | 
						||
 | 
						||
// err.h
 | 
						||
 | 
						||
  const
 | 
						||
     GLOB_APPEND = $0001;
 | 
						||
     GLOB_DOOFFS = $0002;        { use gl_offs                                }
 | 
						||
     GLOB_ERR = $0004;           { return on error                            }
 | 
						||
     GLOB_MARK = $0008;          { append / to matching directories           }
 | 
						||
     GLOB_NOCHECK = $0010;       { return pattern itself if nothing matches   }
 | 
						||
     GLOB_NOSORT = $0020;        { don't sort                                 }
 | 
						||
     GLOB_ALTDIRFUNC = $0040;    { use alternately specified directory funcs  }
 | 
						||
     GLOB_BRACE = $0080;         { expand braces ala csh                      }
 | 
						||
     GLOB_MAGCHAR = $0100;       { pattern had globbing characters            }
 | 
						||
     GLOB_NOMAGIC = $0200;       { GLOB_NOCHECK without magic chars (csh)     }
 | 
						||
     GLOB_QUOTE = $0400;         { quote special chars with \                 }
 | 
						||
     GLOB_TILDE = $0800;         { expand tilde names from the passwd file    }
 | 
						||
     GLOB_NOESCAPE = $1000;      { disable backslash escaping                 }
 | 
						||
     GLOB_LIMIT = $2000;         { limit pattern match output to ARG_MAX      }
 | 
						||
  { error values returned by glob(3)  }
 | 
						||
     GLOB_NOSPACE = -(1);        { malloc call failed                         }
 | 
						||
     GLOB_ABORTED = -(2);        { unignored error                            }
 | 
						||
     GLOB_NOMATCH = -(3);        { no match and GLOB_NOCHECK not set          }
 | 
						||
  { function not supported }
 | 
						||
     GLOB_NOSYS = -(4);
 | 
						||
     GLOB_ABEND = GLOB_ABORTED;
 | 
						||
 | 
						||
type
 | 
						||
   Pglob_t = ^glob_t;
 | 
						||
   glob_t = record
 | 
						||
        gl_pathc : longint;
 | 
						||
        gl_matchc : longint;
 | 
						||
        gl_offs : longint;
 | 
						||
        gl_flags : longint;
 | 
						||
        gl_pathv : ^Pchar;
 | 
						||
        gl_errfunc : function (_para1:Pchar; _para2:longint):longint;cdecl;
 | 
						||
        gl_closedir : procedure (_para1:pointer);
 | 
						||
        gl_readdir : function (_para1:pointer):Pdirent;
 | 
						||
        gl_opendir : function (_para1:Pchar):pointer;
 | 
						||
        gl_lstat : function (_para1:Pchar; _para2:Pstat):longint;
 | 
						||
        gl_stat : function (_para1:Pchar; _para2:Pstat):longint;
 | 
						||
     end;
 | 
						||
 | 
						||
// grp.h
 | 
						||
 | 
						||
type
 | 
						||
   Pgroup = ^group;
 | 
						||
   group = record
 | 
						||
        gr_name : Pchar;
 | 
						||
        gr_passwd : Pchar;
 | 
						||
        gr_gid : gid_t;
 | 
						||
        gr_spare : gid_t;
 | 
						||
        gr_mem : ^Pchar;
 | 
						||
     end;
 | 
						||
 | 
						||
function getgrgid(gid:gid_t):Pgroup;cdecl;external libc_nlm name 'getgrgid';
 | 
						||
function getgrnam(name:Pchar):Pgroup;cdecl;external libc_nlm name 'getgrnam';
 | 
						||
 | 
						||
// guid.h
 | 
						||
// iconv.h
 | 
						||
 | 
						||
type
 | 
						||
   Piconv_t = ^iconv_t;
 | 
						||
   iconv_t = longint;
 | 
						||
 | 
						||
function iconv_open(tocode:Pchar; fromcode:Pchar):iconv_t;cdecl;external libc_nlm name 'iconv_open';
 | 
						||
function iconv(cd:iconv_t; inbuf:PPchar; inbytesleft:Psize_t; outbuf:PPchar; outbytesleft:Psize_t):size_t;cdecl;external libc_nlm name 'iconv';
 | 
						||
function iconv_close(cd:iconv_t):longint;cdecl;external libc_nlm name 'iconv_close';
 | 
						||
 | 
						||
 | 
						||
// inttypes.h
 | 
						||
 | 
						||
{ printf-style macros for signed and unsigned integers...  }
 | 
						||
{ scanf-style macros for signed and unsigned integers...  }
 | 
						||
 | 
						||
 | 
						||
// iso646.h
 | 
						||
 | 
						||
// nl_types.h
 | 
						||
 | 
						||
  const
 | 
						||
     NL_SETD = 1;
 | 
						||
  { 'oflag' value for catopen()...  }
 | 
						||
  { base on value of environment variable "LANG"  }
 | 
						||
     NL_CAT_DEFAULT = 0;
 | 
						||
  { base on LC_MESSAGES in effect  }
 | 
						||
     NL_CAT_LOCALE = 1;
 | 
						||
{$define _NL_ITEM}
 | 
						||
 | 
						||
type
 | 
						||
   Pnl_item = ^nl_item;
 | 
						||
   nl_item = longint;
 | 
						||
   Pnl_catd = ^nl_catd;
 | 
						||
   nl_catd = longint;
 | 
						||
 | 
						||
function catclose(catd:nl_catd):longint;cdecl;external libc_nlm name 'catclose';
 | 
						||
function catgets(catd:nl_catd; set_id:longint; msg_id:longint; _string:Pchar):Pchar;cdecl;external libc_nlm name 'catgets';
 | 
						||
function catopen(name:Pchar; oflag:longint):nl_catd;cdecl;external libc_nlm name 'catopen';
 | 
						||
 | 
						||
// langinfo.h
 | 
						||
 | 
						||
  const
 | 
						||
     DAY_1 = 1;    // Sunday
 | 
						||
     DAY_2 = 2;    // Monday
 | 
						||
     DAY_3 = 3;    // Tuesday
 | 
						||
     DAY_4 = 4;    // Wednesday
 | 
						||
     DAY_5 = 5;    // Thursday
 | 
						||
     DAY_6 = 6;    // Friday
 | 
						||
     DAY_7 = 7;    // Saturday
 | 
						||
     ABDAY_1 = 8;  // Sun
 | 
						||
     ABDAY_2 = 9;  // Mon
 | 
						||
     ABDAY_3 = 10; // Tue
 | 
						||
     ABDAY_4 = 11; // Wed
 | 
						||
     ABDAY_5 = 12; // Thu
 | 
						||
     ABDAY_6 = 13; // Fri
 | 
						||
     ABDAY_7 = 14; // Sat
 | 
						||
     MON_1 = 15;   // January
 | 
						||
     MON_2 = 16;   // February
 | 
						||
     MON_3 = 17;   // March
 | 
						||
     MON_4 = 18;   // April
 | 
						||
     MON_5 = 19;   // May
 | 
						||
     MON_6 = 20;   // June
 | 
						||
     MON_7 = 21;   // July
 | 
						||
     MON_8 = 22;   // August
 | 
						||
     MON_9 = 23;   // September
 | 
						||
     MON_10 = 24;  // October
 | 
						||
     MON_11 = 25;  // November
 | 
						||
     MON_12 = 26;  // December
 | 
						||
     ABMON_1 = 27; // Jan
 | 
						||
     ABMON_2 = 28; // Feb
 | 
						||
     ABMON_3 = 29;     // Mar
 | 
						||
     ABMON_4 = 30;     // Apr
 | 
						||
     ABMON_5 = 31;     // May
 | 
						||
     ABMON_6 = 32;     // Jun
 | 
						||
     ABMON_7 = 33;     // Jul
 | 
						||
     ABMON_8 = 34;     // Aug
 | 
						||
     ABMON_9 = 35;     // Sep
 | 
						||
     ABMON_10 = 36;    // Oct
 | 
						||
     ABMON_11 = 37;    // Nov
 | 
						||
     ABMON_12 = 38;    // Dec
 | 
						||
     RADIXCHAR = 39;   // radix character (not supported)
 | 
						||
     THOUSEP = 40;     // separator for thousand
 | 
						||
     CRNCYSTR = 43;    // currency symbol
 | 
						||
     D_T_FMT = 44;     // string for formatting date and time
 | 
						||
     D_FMT = 45;       // date format
 | 
						||
     T_FMT = 46;       // time format
 | 
						||
     AM_STR = 47;      // am string
 | 
						||
     PM_STR = 48;      // pm string
 | 
						||
     CODESET = 49;     // code set name
 | 
						||
     T_FMT_AMPM = 50;  // a.m. or p.m. time format string (not supported)
 | 
						||
     ERA = 51;         //era description segments (not supported)
 | 
						||
     ERA_D_FMT = 52;   // era date format string (not supported)
 | 
						||
     ERA_D_T_FMT = 53; // era date and time format string (not supported)
 | 
						||
     ERA_T_FMT = 54;   // era time format string (not supported)
 | 
						||
     ALT_DIGITS = 55;  // alternative symbols for digits  (not supported)
 | 
						||
     _MAXSTRMSG = 57;  // maximum number of strings in langinfo
 | 
						||
 | 
						||
 | 
						||
function nl_langinfo(item:nl_item):Pchar;cdecl;external libc_nlm name 'nl_langinfo';
 | 
						||
 | 
						||
 | 
						||
// libgen.h
 | 
						||
 | 
						||
function basename(path:Pchar):Pchar;cdecl;external libc_nlm name 'basename';
 | 
						||
function dirname(path:Pchar):Pchar;cdecl;external libc_nlm name 'dirname';
 | 
						||
 | 
						||
 | 
						||
// library.h
 | 
						||
 | 
						||
{ return flags for get_app_type()...  }
 | 
						||
  const
 | 
						||
     LIBRARY_UNKNOWN = $01;
 | 
						||
     LIBRARY_LIBC    = $02;  { thread has specific NKS/LibC context    }
 | 
						||
     LIBRARY_CLIB    = $04;  { thread has CLib context                 }
 | 
						||
     LIBRARY_JAVA    = $08;  { thread belongs to Java Virtual Machine  }
 | 
						||
 | 
						||
type
 | 
						||
   Paddrsp_t = ^addrsp_t;
 | 
						||
   addrsp_t = void;
 | 
						||
{ O_RDONLY, etc. from fcntl.h...  }
 | 
						||
 | 
						||
   Predirect_t = ^redirect_t;
 | 
						||
   redirect_t = record
 | 
						||
        pathname : Pchar;
 | 
						||
        oflag : longint;
 | 
						||
     end;
 | 
						||
{ traditional NetWare solution for libraries...  }
 | 
						||
 | 
						||
function get_app_data(lib_id:longint):pointer;cdecl;external libc_nlm name 'get_app_data';
 | 
						||
function get_app_type:longint;cdecl;external libc_nlm name 'get_app_type';
 | 
						||
function register_library(cleanupFunc:TCDeclFunc1PtrArgLongint):longint;cdecl;external libc_nlm name 'register_library';
 | 
						||
function register_destructor(libid:longint; cleanupFunc:TCDeclFunc1PtrArgLongint):longint;cdecl;external libc_nlm name 'register_destructor';
 | 
						||
function set_app_data(lib_id:longint; data_area:pointer):longint;cdecl;external libc_nlm name 'set_app_data';
 | 
						||
function unregister_library(lib_id:longint):longint;cdecl;external libc_nlm name 'unregister_library';
 | 
						||
{ more prototypes for library creators, debugging and other uses...  }
 | 
						||
function cleardontunloadflag(handle:pointer):longint;cdecl;external libc_nlm name 'cleardontunloadflag';
 | 
						||
function findnlmhandle(name:Pchar; space:addrsp_t):TNLMHandle;cdecl;external libc_nlm name 'findnlmhandle';
 | 
						||
function getaddressspace:addrsp_t;cdecl;external libc_nlm name 'getaddressspace';
 | 
						||
function getaddressspacename(space:addrsp_t; name:Pchar):Pchar;cdecl;external libc_nlm name 'getaddressspacename';
 | 
						||
function getallocresourcetag:rtag_t;cdecl;external libc_nlm name 'getallocresourcetag';
 | 
						||
function getnativethread:pointer;cdecl;external libc_nlm name 'getnativethread';
 | 
						||
{ (current process)  }
 | 
						||
function getnlmhandle:TNLMHandle;cdecl;external libc_nlm name 'getnlmhandle';
 | 
						||
function getnlmhandlefromthread(thread:pointer):TNLMHandle;cdecl;external libc_nlm name 'getnlmhandlefromthread';
 | 
						||
function getnlmname(handle:TNLMHandle; name:Pchar):Pchar;cdecl;external libc_nlm name 'getnlmname';
 | 
						||
function getnlmloadpath(loadpath:Pchar):Pchar;cdecl;external libc_nlm name 'getnlmloadpath';
 | 
						||
function getthreadname(threadid:pointer; name:Pchar; maxlen:size_t):longint;cdecl;external libc_nlm name 'getthreadname';
 | 
						||
function _getthreadid:pointer;cdecl;external libc_nlm name 'getthreadid';
 | 
						||
function library_calloc(handle:pointer; size:size_t; count:size_t):pointer;cdecl;external libc_nlm name 'library_calloc';
 | 
						||
procedure library_free(addr:pointer);cdecl;external libc_nlm name 'library_free';
 | 
						||
function library_malloc(handle:pointer; size:size_t):pointer;cdecl;external libc_nlm name 'library_malloc';
 | 
						||
function library_msize(addr:pointer):size_t;cdecl;external libc_nlm name 'library_msize';
 | 
						||
function library_realloc(handle:pointer; old:pointer; size:size_t):pointer;cdecl;external libc_nlm name 'library_realloc';
 | 
						||
function nlmisloadedprotected:longint;cdecl;external libc_nlm name 'nlmisloadedprotected';
 | 
						||
function setdontunloadflag(handle:pointer):longint;cdecl;external libc_nlm name 'setdontunloadflag';
 | 
						||
function setthreadname(threadid:pointer; name:Pchar):longint;cdecl;external libc_nlm name 'setthreadname';
 | 
						||
//!! function uname2(handle:pointer; info:Putsname; bits:dword):longint;cdecl;external libc_nlm name 'uname2';
 | 
						||
function validateaddressrange(addr:pointer; bytes:size_t):longint;cdecl;external libc_nlm name 'validateaddressrange';
 | 
						||
function verifynlmhandle(handle:pointer):pointer;cdecl;external libc_nlm name 'verifynlmhandle';
 | 
						||
function construct_argc_argv(command_line:Pchar; argv0:Pchar; argc:Plongint; argv:array of Pchar):longint;cdecl;external libc_nlm name 'construct_argc_argv';
 | 
						||
type TRedirectSpecs = array [0..2] of redirect_t;
 | 
						||
function detect_redirection(r:TRedirectSpecs; argc:Plongint; argv:array of Pchar):longint;cdecl;external libc_nlm name 'detect_redirection';
 | 
						||
{ name-logical additions to library_malloc...  }
 | 
						||
 | 
						||
 | 
						||
// locale.h
 | 
						||
 | 
						||
{ locale categories...  }
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
  { for use with LC_ALL                          }
 | 
						||
 | 
						||
const
 | 
						||
   MAX_LOCNAME_LEN = 31 + 1;
 | 
						||
  { locale categories...  }
 | 
						||
   LC_CTYPE    = 0;  { character classification (unsupported) }
 | 
						||
   LC_COLLATE  = 1;  { the locale's collation table (unsupported) }
 | 
						||
   LC_NUMERIC  = 2;  { the numeric part of struct lconv }
 | 
						||
   LC_MONETARY = 3;  { the monetary part of struct lconv }
 | 
						||
   LC_TIME     = 4;  { the time and date part of struct lconv }
 | 
						||
   LC_MESSAGES = 5;  { new starting in NetWare v4.11 (unsupported) }
 | 
						||
   LC_ALL      = 6;
 | 
						||
 | 
						||
 | 
						||
 | 
						||
{ for the current locale...                    }
 | 
						||
{ internal representations...                  }
 | 
						||
{ ibid                                         }
 | 
						||
{ as returned from setlocale(LC_ALL, NULL)     }
 | 
						||
{ -------------------------- [Numeric Conventions] ---------------------  }
 | 
						||
{ decimal point                                }
 | 
						||
{ separator for digits left of decimal         }
 | 
						||
{ digit grouping size                          }
 | 
						||
{ -------------------------- [Monetary Conventions] --------------------  }
 | 
						||
{ currency symbol                              }
 | 
						||
{ decimal point                                }
 | 
						||
{ separator for digits left of decimal         }
 | 
						||
{ digit grouping sizes                         }
 | 
						||
{ string indicating positive quantities        }
 | 
						||
{ string indicating negative quantities        }
 | 
						||
{ count of digits right of decimal             }
 | 
						||
{ for positive monetary quantities:            }
 | 
						||
{   currency symbol precedes quantity          }
 | 
						||
{   currency symbol separated by blank         }
 | 
						||
{   position of positive symbol                }
 | 
						||
{ for negative monetary quantities:            }
 | 
						||
{   currency symbol precedes quantity          }
 | 
						||
{   currency symbol separated by blank         }
 | 
						||
{   position of negative symbol                }
 | 
						||
{ (reserved for future use)                    }
 | 
						||
{ -------------------------- [International Monetary Conventions] ------  }
 | 
						||
{ international currency symbol and separator  }
 | 
						||
{ (international) digits right of decimal      }
 | 
						||
{ -------------------------- [Time and Date Conventions] ---------------  }
 | 
						||
{ always enforce 24-hour display (Boolean)     }
 | 
						||
{ hour and seconds separator                   }
 | 
						||
{ hour separator when no seconds displayed     }
 | 
						||
{ month/day/year separator                     }
 | 
						||
{ hours:minutes:seconds format (hh:mm:ss)      }
 | 
						||
{ month/day/year format (mm/dd/yyyy)           }
 | 
						||
{ weekday, month, day and year format          }
 | 
						||
{ delimited string indicating am and pm        }
 | 
						||
{ delimited string indicating AM and PM        }
 | 
						||
{ delimited string of day names                }
 | 
						||
{ delimited string of abbreviated day names    }
 | 
						||
{ delimited string of month names              }
 | 
						||
{ delimited string of abbreviated month names  }
 | 
						||
type
 | 
						||
   Plconv = ^lconv;
 | 
						||
   lconv = record
 | 
						||
        country : longint;//cdecl;
 | 
						||
        language : longint;
 | 
						||
        name : array[0..7] of char;
 | 
						||
        decimal_point : array[0..3] of char;
 | 
						||
        thousands_sep : array[0..3] of char;
 | 
						||
        grouping : array[0..3] 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;
 | 
						||
        frac_digits : char;
 | 
						||
        p_cs_precedes : char;
 | 
						||
        p_sep_by_space : char;
 | 
						||
        p_sign_posn : char;
 | 
						||
        n_cs_precedes : char;
 | 
						||
        n_sep_by_space : char;
 | 
						||
        n_sign_posn : char;
 | 
						||
        reserved : char;
 | 
						||
        int_curr_symbol : array[0..14] of char;
 | 
						||
        int_frac_digits : char;
 | 
						||
        always_24 : longint;
 | 
						||
        hour_sep : array[0..3] of char;
 | 
						||
        hour_sans_sec_sep : array[0..3] of char;
 | 
						||
        date_sep : array[0..3] of char;
 | 
						||
        time_fmt : array[0..15] of char;
 | 
						||
        date_fmt : array[0..15] of char;
 | 
						||
        full_date_fmt : array[0..31] of char;
 | 
						||
        ampm : array[0..31] of char;
 | 
						||
        _AMPM : array[0..31] of char;
 | 
						||
        days : array[0..159] of char;
 | 
						||
        day_abbrevs : array[0..159] of char;
 | 
						||
        months : array[0..159] of char;
 | 
						||
        month_abbrevs : array[0..159] of char;
 | 
						||
     end;
 | 
						||
 | 
						||
{ sizeof(struct lconv) == 0x360 (864.)         }
 | 
						||
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
{ prototypes for functions standard and nonstandard...  }
 | 
						||
 | 
						||
function localeconv:Plconv;cdecl;external libc_nlm name 'localeconv';
 | 
						||
function setlocale(_para1:longint; _para2:Pchar):Pchar;cdecl;external libc_nlm name 'setlocale';
 | 
						||
//!! function derivelocale(_para1:Pchar; _para2:Pchar; _para3:array[0..(31 + 1)-1] of char):Pchar;cdecl;external libc_nlm name 'derivelocale';
 | 
						||
function setlocale_r(_para1:longint; _para2:Pchar; _para3:Plconv; _para4:Pchar):Pchar;cdecl;external libc_nlm name 'setlocale_r';
 | 
						||
 | 
						||
 | 
						||
// malloc.h
 | 
						||
{
 | 
						||
** According to ISO/IEC (ANSI) 9899:1990 and 1999, memory allocation and
 | 
						||
** management functions are properly the domain of stdlib.h:
 | 
						||
** void   *calloc ( size_t, size_t );
 | 
						||
** void    free   ( void * );
 | 
						||
** void   *malloc ( size_t );
 | 
						||
** void   *realloc( void *, size_t );
 | 
						||
**
 | 
						||
** Non-standard functions from stdlib.h (don't define __STDC__ or these
 | 
						||
** disappear):
 | 
						||
** void   *alloca        ( size_t );
 | 
						||
** size_t  msize         ( void * );
 | 
						||
** int     mvalidate     ( void * );
 | 
						||
** size_t  stackavail    ( void );
 | 
						||
** void   *stackbase     ( void );
 | 
						||
** size_t  stackwatermark( void );
 | 
						||
 }
 | 
						||
 | 
						||
 | 
						||
// math.h
 | 
						||
 | 
						||
{ constants for type exception using matherr()       }
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
  const
 | 
						||
     DOMAIN = 1;
 | 
						||
     SING = 2;      { argument singularity }
 | 
						||
     OVERFLOW = 3;  { overflow range error }
 | 
						||
     UNDERFLOW = 4; { underflow range error  }
 | 
						||
     TLOSS = 5;     { total loss of significance }
 | 
						||
     PLOSS = 6;     { partial loss of significance  }
 | 
						||
 | 
						||
 | 
						||
{ for C++, __fp_exception; for C, exception  }
 | 
						||
type
 | 
						||
   Pexception = ^Texception;
 | 
						||
   Texception = record
 | 
						||
        _type : longint;
 | 
						||
        name : Pchar;
 | 
						||
        arg1 : double;
 | 
						||
        arg2 : double;
 | 
						||
        retval : double;
 | 
						||
     end;
 | 
						||
 | 
						||
{ for C++, __COMPLEX; for C, complex  }
 | 
						||
   Pcomplex = ^complex;
 | 
						||
   complex = record
 | 
						||
        real : double;
 | 
						||
        imag : double;
 | 
						||
     end;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
//var
 | 
						||
//  ___nan_float : double;cvar;external;
 | 
						||
//  ___huge_float : double;cvar;external;
 | 
						||
//  ___huge_double : double;cvar;external;
 | 
						||
//  ___huge_long_double : double;cvar;external;
 | 
						||
 | 
						||
function acos(_para1:double):double;cdecl;external libc_nlm name 'acos';
 | 
						||
function asin(_para1:double):double;cdecl;external libc_nlm name 'asin';
 | 
						||
function atan(_para1:double):double;cdecl;external libc_nlm name 'atan';
 | 
						||
function atan2(_para1:double; _para2:double):double;cdecl;external libc_nlm name 'atan2';
 | 
						||
function cbrt(_para1:double):double;cdecl;external libc_nlm name 'cbrt';
 | 
						||
function ceil(_para1:double):double;cdecl;external libc_nlm name 'ceil';
 | 
						||
function cos(_para1:double):double;cdecl;external libc_nlm name 'cos';
 | 
						||
function cosh(_para1:double):double;cdecl;external libc_nlm name 'cosh';
 | 
						||
function exp(_para1:double):double;cdecl;external libc_nlm name 'exp';
 | 
						||
function fabs(_para1:double):double;cdecl;external libc_nlm name 'fabs';
 | 
						||
function floor(_para1:double):double;cdecl;external libc_nlm name 'floor';
 | 
						||
function fmod(_para1:double; _para2:double):double;cdecl;external libc_nlm name 'fmod';
 | 
						||
function frexp(_para1:double; _para2:Plongint):double;cdecl;external libc_nlm name 'frexp';
 | 
						||
function hypot(_para1:double; _para2:double):double;cdecl;external libc_nlm name 'hypot';
 | 
						||
function ldexp(_para1:double; _para2:longint):double;cdecl;external libc_nlm name 'ldexp';
 | 
						||
function log(_para1:double):double;cdecl;external libc_nlm name 'log';
 | 
						||
function log10(_para1:double):double;cdecl;external libc_nlm name 'log10';
 | 
						||
function modf(_para1:double; _para2:Pdouble):double;cdecl;external libc_nlm name 'modf';
 | 
						||
function pow(_para1:double; _para2:double):double;cdecl;external libc_nlm name 'pow';
 | 
						||
function remainder(_para1:double; _para2:double):double;cdecl;external libc_nlm name 'remainder';
 | 
						||
function rint(_para1:double):double;cdecl;external libc_nlm name 'rint';
 | 
						||
function sin(_para1:double):double;cdecl;external libc_nlm name 'sin';
 | 
						||
function sinh(_para1:double):double;cdecl;external libc_nlm name 'sinh';
 | 
						||
function sqrt(_para1:double):double;cdecl;external libc_nlm name 'sqrt';
 | 
						||
function tan(_para1:double):double;cdecl;external libc_nlm name 'tan';
 | 
						||
function tanh(_para1:double):double;cdecl;external libc_nlm name 'tanh';
 | 
						||
function cabs(_para1:complex):double;cdecl;external libc_nlm name 'cabs';
 | 
						||
function finite(_para1:double):longint;cdecl;external libc_nlm name 'finite';
 | 
						||
function j0(_para1:double):double;cdecl;external libc_nlm name 'j0';
 | 
						||
function j1(_para1:double):double;cdecl;external libc_nlm name 'j1';
 | 
						||
function jn(_para1:longint; _para2:double):double;cdecl;external libc_nlm name 'jn';
 | 
						||
function y0(_para1:double):double;cdecl;external libc_nlm name 'y0';
 | 
						||
function y1(_para1:double):double;cdecl;external libc_nlm name 'y1';
 | 
						||
function yn(_para1:longint; _para2:double):double;cdecl;external libc_nlm name 'yn';
 | 
						||
function matherr(_para1:Pexception):longint;cdecl;external libc_nlm name 'matherr';
 | 
						||
type TmathErrHandlerFunc = function (_para1:Pexception):longint; cdecl;
 | 
						||
function matherr_handler(_para1:TmathErrHandlerFunc):longint;cdecl;external libc_nlm name 'matherr_handler';
 | 
						||
function ___fpclassify_f(_para1:double):longint;cdecl;external libc_nlm name '___fpclassify_f';
 | 
						||
function ___fpclassify_d(_para1:double):longint;cdecl;external libc_nlm name '___fpclassify_d';
 | 
						||
function ___fpclassify_ld(double:longint):longint;cdecl;external libc_nlm name '___fpclassify_ld';
 | 
						||
function ___isfinite_f(_para1:double):longint;cdecl;external libc_nlm name '___isfinite_f';
 | 
						||
function ___isfinite_d(_para1:double):longint;cdecl;external libc_nlm name '___isfinite_d';
 | 
						||
function ___isfinite_ld(double:longint):longint;cdecl;external libc_nlm name '___isfinite_ld';
 | 
						||
function ___signbit_f(_para1:double):longint;cdecl;external libc_nlm name '___signbit_f';
 | 
						||
function ___signbit_d(_para1:double):longint;cdecl;external libc_nlm name '___signbit_d';
 | 
						||
function ___signbit_ld(double:longint):longint;cdecl;external libc_nlm name '___signbit_ld';
 | 
						||
 | 
						||
 | 
						||
// monitor.h
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
type
 | 
						||
   Pconn_info = ^Tconn_info;
 | 
						||
   Tconn_info = record
 | 
						||
        codepage : longint;
 | 
						||
        spares   : array[0..507] of byte;
 | 
						||
     end;
 | 
						||
 | 
						||
{ additional processor information that may be available...  }
 | 
						||
{ (may not equal 'ThreadsOnProcessor' when totalled:)  }
 | 
						||
   Pcpu_info = ^Tcpu_info;
 | 
						||
   Tcpu_info = record
 | 
						||
        which : longint;
 | 
						||
        CurrentProcessor : longint;
 | 
						||
        ProcessorUtilization : dword;
 | 
						||
        ThreadsOnProcessor : dword;
 | 
						||
        reserved1 : dword;
 | 
						||
        Family : dword;
 | 
						||
        Model : dword;
 | 
						||
        Stepping : dword;
 | 
						||
        Revision : dword;
 | 
						||
        FeatureFlags : dword;
 | 
						||
        SerialNumber : Tuint64;
 | 
						||
        Speed : dword;
 | 
						||
        L1CacheSize : dword;
 | 
						||
        L2CacheSize : dword;
 | 
						||
        L3CacheSize : dword;
 | 
						||
        ReadyThreads : dword;
 | 
						||
        RunningThreads : dword;
 | 
						||
        SuspendedThreads : dword;
 | 
						||
        reserved2 : dword;
 | 
						||
        ThreadCPUTime : Tuint64;
 | 
						||
        reserved3 : Tuint64;
 | 
						||
        reserved4 : array[0..7] of dword;
 | 
						||
     end;
 | 
						||
 | 
						||
   Pfilesystem_info = ^Tfilesystem_info;
 | 
						||
   Tfilesystem_info = record
 | 
						||
        OpenFileCount : longint;
 | 
						||
        CurrentDiskRequests : longint;
 | 
						||
        reserved : array[0..61] of dword;
 | 
						||
     end;
 | 
						||
 | 
						||
   Prestag_info = ^Trestag_info;
 | 
						||
   Trestag_info = record                      { per-NLM resource-allocation information  }
 | 
						||
        tag_count : longint;                  { count of discrete resource tags  }
 | 
						||
        res_count : size_t;                   { total number of resources across tags  }
 | 
						||
        reserved1 : longint;                  { used only by 'ALRT' tags  }
 | 
						||
        signature : dword;                    { type of resource (see netware.h)  }
 | 
						||
        description : array[0..79] of char;   { resource tag description string  }
 | 
						||
     end;
 | 
						||
 | 
						||
   Pmem_restag_info = ^Tmem_restag_info;
 | 
						||
   Tmem_restag_info = record                  { per-NLM memory information  }
 | 
						||
        tag_count   : longint;                { discrete memory allocation resource tags  }
 | 
						||
        total_bytes : size_t;                 { total number of bytes allocated across tags  }
 | 
						||
        allocations : longint;                { total actual calls to allocator  }
 | 
						||
        reserved2   : dword;                  { always signature ('ALRT')  }
 | 
						||
        description : array[0..79] of char;   { resource tag description string  }
 | 
						||
     end;
 | 
						||
 | 
						||
   Pmemory_info = ^Tmemory_info;
 | 
						||
   Tmemory_info = record
 | 
						||
        AllocatedMemoryPool    : size64_t;
 | 
						||
        CacheBufferSize        : size64_t;
 | 
						||
        CacheBufferMemory      : size64_t;
 | 
						||
        CacheMoveableMemory    : size64_t;
 | 
						||
        CacheNonmoveableMemory : size64_t;
 | 
						||
        CodeMemory             : size64_t;
 | 
						||
        DataMemory             : size64_t;
 | 
						||
        TotalWorkMemory        : size64_t;
 | 
						||
        OtherCachePagesMemory  : size64_t;
 | 
						||
        reserved1              : size64_t;
 | 
						||
        TotalKnownSystemMemoryUnder4Gb : size64_t;
 | 
						||
        TotalKnownSystemMemory : size64_t;
 | 
						||
        reserved               : array[0..11] of dword;
 | 
						||
     end;
 | 
						||
 | 
						||
   Pvmemory_info = ^Tvmemory_info;
 | 
						||
   Tvmemory_info = record
 | 
						||
        PageInCount : Tuint64;
 | 
						||
        PageOutCount : Tuint64;
 | 
						||
        SwapResvCount : Tuint64;
 | 
						||
        SwapPageCount : Tuint64;
 | 
						||
        SwapFreeCount : Tuint64;
 | 
						||
        PageFaultCount : Tuint64;
 | 
						||
        freeCachePages : Tuint64;
 | 
						||
        freeCleanPages : Tuint64;
 | 
						||
        freeDirtyPages : Tuint64;
 | 
						||
        VMPhysicalPageCount : Tuint64;
 | 
						||
        reserved : array[0..19] of dword;
 | 
						||
     end;
 | 
						||
 | 
						||
   Pnet_info = ^Tnet_info;
 | 
						||
   Tnet_info = record
 | 
						||
        MaximumConnections : longint;
 | 
						||
        spare0 : array[0..11] of dword;
 | 
						||
        IPXAddr : array[0..5] of byte;
 | 
						||
        spare1 : array[0..1] of byte;
 | 
						||
        MaximumBoards : dword;
 | 
						||
        spare3 : array[0..11] of dword;
 | 
						||
        IPAddrsBound : array[0..11] of dword;
 | 
						||
        spare4 : array[0..23] of dword;
 | 
						||
     end;
 | 
						||
 | 
						||
   Pos_info = ^Tos_info;
 | 
						||
   Tos_info = record
 | 
						||
        AbendedProcessCount    : longint;
 | 
						||
        CurrentServerProcesses : longint;
 | 
						||
        reserved               : array[0..61] of dword;
 | 
						||
     end;
 | 
						||
 | 
						||
{ includes namespace list  }
 | 
						||
   Pvolume_info = ^Tvolume_info;
 | 
						||
   Tvolume_info = record
 | 
						||
        which : longint;
 | 
						||
        flags : dword;
 | 
						||
        name : array[0..(31 + 1)-1] of char;
 | 
						||
        SectorSize : dword;
 | 
						||
        SectorsPerCluster : dword;
 | 
						||
        VolumeSizeInClusters : dword;
 | 
						||
        FreedClusters : dword;
 | 
						||
        SubAllocFreeableClusters : dword;
 | 
						||
        FreeableLimboSectors : dword;
 | 
						||
        NonFreeableLimboSectors : dword;
 | 
						||
        NonFreeableAvailableSubAllocSectors : dword;
 | 
						||
        NotUsableSubAllocSectors : dword;
 | 
						||
        SubAllocClusters : dword;
 | 
						||
        DataStreamsCount : dword;
 | 
						||
        LimboDataStreamsCount : dword;
 | 
						||
        OldestDeletedFileAgeInTicks : dword;
 | 
						||
        CompressedDataStreamsCount : dword;
 | 
						||
        CompressedLimboDataStreamsCount : dword;
 | 
						||
        UnCompressableDataStreamsCount : dword;
 | 
						||
        PreCompressedSectors : dword;
 | 
						||
        CompressedSectors : dword;
 | 
						||
        MigratedFiles : dword;
 | 
						||
        MigratedSectors : dword;
 | 
						||
        ClustersUsedByFAT : dword;
 | 
						||
        ClustersUsedByDirectories : dword;
 | 
						||
        ClustersUsedByExtendedDirectories : dword;
 | 
						||
        TotalDirectoryEntries : dword;
 | 
						||
        UnUsedDirectoryEntries : dword;
 | 
						||
        TotalExtendedDirectoryExtants : dword;
 | 
						||
        UnUsedExtendedDirectoryExtants : dword;
 | 
						||
        ExtendedAttributesDefined : dword;
 | 
						||
        ExtendedAttributeExtantsUsed : dword;
 | 
						||
        DirectoryServicesObjectID : dword;
 | 
						||
        VolumeLastModifiedDateAndTime : dword;
 | 
						||
        mounted : longint;
 | 
						||
        BlockCount : Tuint64;
 | 
						||
        BlocksFree : Tuint64;
 | 
						||
        BlockSize : dword;
 | 
						||
        reserved : array[0..57] of dword;
 | 
						||
     end;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
{ prototypes...  }
 | 
						||
 | 
						||
function netware_conn_info(info:Pconn_info; sequence:Plongint):longint;cdecl;external libc_nlm name 'netware_conn_info';
 | 
						||
function netware_conn_info_from_slot(info:Pconn_info; slot:longint):longint;cdecl;external libc_nlm name 'netware_conn_info_from_slot';
 | 
						||
function netware_cpu_info(info:Pcpu_info; sequence:Plongint):longint;cdecl;external libc_nlm name 'netware_cpu_info';
 | 
						||
function netware_fs_info(info:Pfilesystem_info):longint;cdecl;external libc_nlm name 'netware_fs_info';
 | 
						||
function netware_net_info(info:Pnet_info):longint;cdecl;external libc_nlm name 'netware_net_info';
 | 
						||
//!! function netware_net_macaddr(board:longint; macAddr:array[0..5] of byte):longint;cdecl;external libc_nlm name 'netware_net_macaddr';
 | 
						||
function netware_mem_info(info:Pmemory_info):longint;cdecl;external libc_nlm name 'netware_mem_info';
 | 
						||
function netware_mem_info_for_nlm(info:Pmem_restag_info; handle:pointer):longint;cdecl;external libc_nlm name 'netware_mem_info_for_nlm';
 | 
						||
function netware_os_info(info:Pos_info):longint;cdecl;external libc_nlm name 'netware_os_info';
 | 
						||
function netware_vmem_info(info:Pvmemory_info):longint;cdecl;external libc_nlm name 'netware_vmem_info';
 | 
						||
function netware_vol_info(info:Pvolume_info; sequence:Plongint):longint;cdecl;external libc_nlm name 'netware_vol_info';
 | 
						||
function netware_vol_info_from_number(info:Pvolume_info; volNum:longint):longint;cdecl;external libc_nlm name 'netware_vol_info_from_number';
 | 
						||
function netware_vol_info_from_name(info:Pvolume_info; name:Pchar):longint;cdecl;external libc_nlm name 'netware_vol_info_from_name';
 | 
						||
function netware_restag_info_for_nlm(info:Prestag_info; handle:pointer; signature:dword; which:longint):longint;cdecl;external libc_nlm name 'netware_restag_info_for_nlm';
 | 
						||
 | 
						||
function netware_conn_info(var info:Tconn_info; var sequence:longint):longint;cdecl;external libc_nlm name 'netware_conn_info';
 | 
						||
function netware_conn_info_from_slot(var info:Tconn_info; slot:longint):longint;cdecl;external libc_nlm name 'netware_conn_info_from_slot';
 | 
						||
function netware_cpu_info(var info:Tcpu_info; var sequence:longint):longint;cdecl;external libc_nlm name 'netware_cpu_info';
 | 
						||
function netware_fs_info(var info:Tfilesystem_info):longint;cdecl;external libc_nlm name 'netware_fs_info';
 | 
						||
function netware_net_info(var info:Tnet_info):longint;cdecl;external libc_nlm name 'netware_net_info';
 | 
						||
//!! function netware_net_macaddr(board:longint; macAddr:array[0..5] of byte):longint;cdecl;external libc_nlm name 'netware_net_macaddr';
 | 
						||
function netware_mem_info(var info:Tmemory_info):longint;cdecl;external libc_nlm name 'netware_mem_info';
 | 
						||
function netware_mem_info_for_nlm(var info:Tmem_restag_info; handle:pointer):longint;cdecl;external libc_nlm name 'netware_mem_info_for_nlm';
 | 
						||
function netware_os_info(var info:Tos_info):longint;cdecl;external libc_nlm name 'netware_os_info';
 | 
						||
function netware_vmem_info(var info:Tvmemory_info):longint;cdecl;external libc_nlm name 'netware_vmem_info';
 | 
						||
function netware_vol_info(var info:Tvolume_info; var sequence:longint):longint;cdecl;external libc_nlm name 'netware_vol_info';
 | 
						||
function netware_vol_info_from_number(var info:Tvolume_info; volNum:longint):longint;cdecl;external libc_nlm name 'netware_vol_info_from_number';
 | 
						||
function netware_vol_info_from_name(var info:Tvolume_info; name:Pchar):longint;cdecl;external libc_nlm name 'netware_vol_info_from_name';
 | 
						||
function netware_restag_info_for_nlm(var info:Trestag_info; handle:pointer; signature:dword; which:longint):longint;cdecl;external libc_nlm name 'netware_restag_info_for_nlm';
 | 
						||
 | 
						||
 | 
						||
// ncpx.h
 | 
						||
 | 
						||
const
 | 
						||
     MAX_NCPX_NAMELEN = 33;
 | 
						||
     NCPX_BEGIN_SCAN = $FFFFFFFF;
 | 
						||
     NCPX_REPLY_IS_FRAGGED = $FFFFFFFF;
 | 
						||
     NCPX_BEING_RESTARTED = $01101001;
 | 
						||
     NCPX_BEING_KILLED = $02202002;
 | 
						||
     NCPX_BEING_LOGGED_OUT = $03303003;
 | 
						||
     NCPX_BEING_FREED = $04404004;
 | 
						||
 | 
						||
type
 | 
						||
 | 
						||
   Pncpx_id_t = ^ncpx_id_t;
 | 
						||
   ncpx_id_t = dword;
 | 
						||
 | 
						||
   Pncpx_client_t = ^ncpx_client_t;
 | 
						||
   ncpx_client_t = Tuint64;
 | 
						||
 | 
						||
   Pncpx_frag_element_t = ^ncpx_frag_element_t;
 | 
						||
   ncpx_frag_element_t = record
 | 
						||
        addr : pointer;
 | 
						||
        size : size_t;
 | 
						||
     end;
 | 
						||
 | 
						||
   Pncpx_msgfrag_t = ^ncpx_msgfrag_t;
 | 
						||
   ncpx_msgfrag_t = record
 | 
						||
        totalMessageSize : size_t;
 | 
						||
        fragCount : longint;
 | 
						||
        fragList : array[0..3] of ncpx_frag_element_t;
 | 
						||
     end;
 | 
						||
 | 
						||
   Pncpx_vers_t = ^ncpx_vers_t;
 | 
						||
   ncpx_vers_t = record
 | 
						||
        major : longint;
 | 
						||
        minor : longint;
 | 
						||
        revision : longint;
 | 
						||
     end;
 | 
						||
{ the handler that implements the extended NCP service... }
 | 
						||
 | 
						||
   ncpx_handler_t = function (client:Pncpx_client_t; request:pointer; requestLen:size_t; reply:pointer; replyLen:Psize_t):longint;cdecl;
 | 
						||
{ the call-back made when the session goes away for whatever reason... }
 | 
						||
 | 
						||
   sess_handler_t = procedure (session:longint; _type:longint);cdecl;
 | 
						||
{ the handler that replies to extended NCP requests (if any)... }
 | 
						||
 | 
						||
   reply_mgr_t = procedure (client:Pncpx_client_t; repBuffer:pointer);cdecl;
 | 
						||
{ server registering an extended NCP service...  }
 | 
						||
function NcpxRegister(name:Pchar; ncpHandler:ncpx_handler_t; sessionHandler:sess_handler_t; replyManager:reply_mgr_t; version:ncpx_vers_t;
 | 
						||
           queryData:Ppointer):longint;cdecl;external libc_nlm name 'NcpxRegister';
 | 
						||
function NcpxRegisterWithId(id:ncpx_id_t; name:Pchar; ncpHandler:ncpx_handler_t; sessionHandler:sess_handler_t; replyManager:reply_mgr_t;
 | 
						||
           version:ncpx_vers_t; queryData:Ppointer):longint;cdecl;external libc_nlm name 'NcpxRegisterWithId';
 | 
						||
function NcpxDeregister(queryData:pointer):longint;cdecl;external libc_nlm name 'NcpxDeregister';
 | 
						||
{ client getting information about extended NCP services...  }
 | 
						||
function NcpxGetInfoByName(name:Pchar; id:Pncpx_id_t; version:ncpx_vers_t; queryData:pointer):longint;cdecl;external libc_nlm name 'NcpxGetInfoByName';
 | 
						||
function NcpxGetInfoById(id:ncpx_id_t; name:Pchar; version:ncpx_vers_t; queryData:pointer):longint;cdecl;external libc_nlm name 'NcpxGetInfoById';
 | 
						||
function NcpxScan(id:Pncpx_id_t; name:Pchar; version:ncpx_vers_t; queryData:pointer):longint;cdecl;external libc_nlm name 'NcpxScan';
 | 
						||
{ for the client sending extended NCP packets to a service...  }
 | 
						||
 | 
						||
function NcpxSend(id:ncpx_id_t; request:pointer; requestLen:size_t; reply:pointer; replyLen:Psize_t):longint;cdecl;external libc_nlm name 'NcpxSend';
 | 
						||
function NcpxSendFragged(id:ncpx_id_t; reqFrag:Pncpx_msgfrag_t; repFrag:Pncpx_msgfrag_t):longint;cdecl;external libc_nlm name 'NcpxSendFragged';
 | 
						||
 | 
						||
// ndkvers.h
 | 
						||
{==============================================================================
 | 
						||
=  This is a timestamp offered by the NDK. Calling libcthreshold() with the
 | 
						||
=  defined value as first argument (the second argument returns that of the
 | 
						||
=  currently loaded libc.nlm), will ensure at least the functionality and
 | 
						||
=  semantics offered by the NDK this file accompanied or this function returns
 | 
						||
=  an error (ENOTSUP). Whether or not this function fails, it always returns
 | 
						||
=  the loaded library's threshold.
 | 
						||
==============================================================================}
 | 
						||
 | 
						||
  const
 | 
						||
     CURRENT_NDK_THRESHOLD = 406230000;
 | 
						||
  { timestamps for known releases of LibC on NetWare...  }
 | 
						||
     NETWARE_65_FCS = 306250000;        { 25 June 2003  }
 | 
						||
     NETWARE_65_SP1 = 310090000;        { 9 October 2003  }
 | 
						||
     NETWARE_CSP10  = 310070000;        { 7 October 2003  }
 | 
						||
     NETWARE_51_SP7 = NETWARE_CSP10;
 | 
						||
     NETWARE_60_SP4 = NETWARE_CSP10;
 | 
						||
     NETWARE_CSP11  = 405260000;        { 26 May 2004  }
 | 
						||
     NETWARE_60_SP5 = NETWARE_CSP11;
 | 
						||
     NETWARE_65_SP2 = NETWARE_CSP11;
 | 
						||
     NETWARE_CSP12  = 410310000;       { 31 October 2004 (just a guess)  }
 | 
						||
     NETWARE_51_SP8 = NETWARE_CSP12;
 | 
						||
     NETWARE_65_SP3 = NETWARE_CSP12;
 | 
						||
 | 
						||
 | 
						||
function libcthreshold(desiredthreshold:longint; libthreshold:Plongint):longint;cdecl;external libc_nlm name 'libcthreshold';
 | 
						||
function libcthreshold(desiredthreshold:longint; var libthreshold:longint):longint;cdecl;external libc_nlm name 'libcthreshold';
 | 
						||
 | 
						||
// netdb.h
 | 
						||
 | 
						||
  const
 | 
						||
     NETDB_INTERNAL = -(1);
 | 
						||
     NETDB_SUCCESS = 0;      { no problem  }
 | 
						||
     HOST_NOT_FOUND = 1;     { authoritative answer host not found  }
 | 
						||
     TRY_AGAIN = 2;          { non authoritative host not found or SERVERFAIL  }
 | 
						||
     NO_RECOVERY = 3;        { non recoverable: FORMERR, REFUSED, NOTIMP  }
 | 
						||
     NO_DATA = 4;            { valid name, no data record of requested type  }
 | 
						||
     NO_ADDRESS = NO_DATA;   { no address, look for MX record  }
 | 
						||
 | 
						||
 | 
						||
{ Addresses are supplied in host order and returned in network order. }
 | 
						||
type
 | 
						||
   Phostent = ^hostent;
 | 
						||
   hostent = record
 | 
						||
        h_name      : Pchar;     { official name of host }
 | 
						||
        h_aliases   : PPchar;    { alias list }
 | 
						||
        h_addrtype  : smallint;  { host address type }
 | 
						||
        h_length    : smallint;  { length of address }
 | 
						||
        h_addr_list : PPchar;    { list of addresses }
 | 
						||
     end;
 | 
						||
 | 
						||
{ It is assumed here that a network number fits in 32 bits. }
 | 
						||
   Pnetent = ^netent;
 | 
						||
   netent = record
 | 
						||
        n_name     : Pchar;      { official name of net }
 | 
						||
        n_aliases  : PPchar;     { alias list }
 | 
						||
        n_addrtype : smallint;   { net address type }
 | 
						||
        n_net      : u_long;     { network number }
 | 
						||
     end;
 | 
						||
 | 
						||
   Pservent = ^servent;
 | 
						||
   servent = record
 | 
						||
        s_name    : Pchar;       { official service name }
 | 
						||
        s_aliases : PPchar;      { alias list }
 | 
						||
        s_port    : smallint;    { port number }
 | 
						||
        s_proto   : Pchar;       { protocol to use }
 | 
						||
     end;
 | 
						||
 | 
						||
   Pprotoent = ^protoent;
 | 
						||
   protoent = record
 | 
						||
        p_name    : Pchar;       { official protocol name }
 | 
						||
        p_aliases : PPchar;      { alias list }
 | 
						||
        p_proto   : smallint;    { protocol number }
 | 
						||
     end;
 | 
						||
 | 
						||
 | 
						||
function gethostbyaddr(_para1:Pchar; _para2:longint; _para3:longint):Phostent;cdecl;external libc_nlm name 'gethostbyaddr';
 | 
						||
function gethostbyname(_para1:Pchar):Phostent;cdecl;external libc_nlm name 'gethostbyname';
 | 
						||
function gethostname(_para1:Pchar; _para2:longint):longint;cdecl;external libc_nlm name 'gethostname';
 | 
						||
function getprotobyname(_para1:Pchar):Pprotoent;cdecl;external libc_nlm name 'getprotobyname';
 | 
						||
function getprotobynumber(_para1:longint):Pprotoent;cdecl;external libc_nlm name 'getprotobynumber';
 | 
						||
function getservbyname(_para1:Pchar; _para2:Pchar):Pservent;cdecl;external libc_nlm name 'getservbyname';
 | 
						||
function getservbyport(_para1:longint; _para2:Pchar):Pservent;cdecl;external libc_nlm name 'getservbyport';
 | 
						||
function ___h_errno:Plongint;cdecl;external libc_nlm name '___h_errno';
 | 
						||
 | 
						||
 | 
						||
// nks/nksapi.h
 | 
						||
// nlmformat.h
 | 
						||
 | 
						||
{ 0x002E --------------------------- }
 | 
						||
{ 0x0032 --------------------------- }
 | 
						||
{ 0x0036 --------------------------- }
 | 
						||
{ 0x003A --------------------------- }
 | 
						||
{ 0x003E --------------------------- }
 | 
						||
{ 0x0042 --------------------------- }
 | 
						||
{ 0x0046 --------------------------- }
 | 
						||
{ 0x004A --------------------------- }
 | 
						||
{ 0x004E --------------------------- }
 | 
						||
{ 0x0052 --------------------------- }
 | 
						||
{ 0x0056 --------------------------- }
 | 
						||
{ 0x005A --------------------------- }
 | 
						||
{ 0x005E --------------------------- }
 | 
						||
{ 0x0062 --------------------------- }
 | 
						||
{ 0x0066 --------------------------- }
 | 
						||
{ 0x006A --------------------------- }
 | 
						||
{ 0x006E --------------------------- }
 | 
						||
{ 0x0072 --------------------------- }
 | 
						||
{ 0x0076 --------------------------- }
 | 
						||
{ 0x007A --------------------------- }
 | 
						||
{ 0x007E --------------------------- }
 | 
						||
{ 0x0082 --------------------------- }
 | 
						||
{ -------------------------------------------------------------------------
 | 
						||
   ** NB: Here begins the variable part of this structure's format; what is
 | 
						||
   ** shown here are the maximums. Consequently, sizeof(NLM_HEADER) is almost
 | 
						||
   ** always meaningless--the 400 bytes of 'otherData' actually referring to
 | 
						||
   ** the original size of the scratch buffer in NLMLINK set up to hold the
 | 
						||
   ** data before writing it to the binary file.
 | 
						||
   ** -------------------------------------------------------------------------
 | 
						||
    }
 | 
						||
 | 
						||
const
 | 
						||
 MAX_DESCRIPTION_LENGTH   = 127;
 | 
						||
 OLD_THREAD_NAME_LENGTH   = 5;    // (exactly " LONG")
 | 
						||
 MAX_SCREEN_NAME_LENGTH   = 71;
 | 
						||
 MAX_THREAD_NAME_LENGTH   = 71;
 | 
						||
 | 
						||
 | 
						||
{ 0x0083 --------------------------- }
 | 
						||
{ 0x0103 --------------------------- }
 | 
						||
{ 0x0107 --------------------------- }
 | 
						||
{ 0x010B --------------------------- }
 | 
						||
{ 0x0110 --------------------------- }
 | 
						||
{ 0x0111 --------------------------- }
 | 
						||
{ 0x0158 --------------------------- }
 | 
						||
{ 0x015C --------------------------- }
 | 
						||
{ 0x01A3 --------------------------- }
 | 
						||
type
 | 
						||
 | 
						||
   PNLM_HEADER = ^NLM_HEADER;
 | 
						||
   NLM_HEADER = record                                       { offset in structure -------------- }
 | 
						||
        signature                  : array[0..23] of char;   { "NetWare Loadable Modulex\1A" }
 | 
						||
        version                    : dword;               { 0x0018 --------------------------- }
 | 
						||
        moduleName                 : array[0..13] of char;   { 0x001C --------------------------- }
 | 
						||
        codeImageOffset            : dword;               { 0x002A --------------------------- }
 | 
						||
        codeImageSize              : dword;
 | 
						||
        dataImageOffset            : dword;
 | 
						||
        dataImageSize              : dword;
 | 
						||
        uninitializedDataSize      : dword;
 | 
						||
        customDataOffset           : dword;
 | 
						||
        customDataSize             : dword;
 | 
						||
        moduleDependencyOffset     : dword;
 | 
						||
        numberOfModuleDependencies : dword;
 | 
						||
        relocationFixupOffset      : dword;
 | 
						||
        numberOfRelocationFixups   : dword;
 | 
						||
        externalReferencesOffset   : dword;
 | 
						||
        numberOfExternalReferences : dword;
 | 
						||
        publicsOffset              : dword;
 | 
						||
        numberOfPublics            : dword;
 | 
						||
        debugInfoOffset            : dword;
 | 
						||
        numberOfDebugRecords       : dword;
 | 
						||
        codeStartOffset            : dword;
 | 
						||
        exitProcedureOffset        : dword;
 | 
						||
        checkUnloadProcedureOffset : dword;
 | 
						||
        moduleType                 : dword;
 | 
						||
        flags                      : dword;
 | 
						||
        descriptionLength          : byte;
 | 
						||
        descriptionText            : array[0..126] of char;
 | 
						||
        stackSize                  : dword;
 | 
						||
        reserved                   : dword;
 | 
						||
        reserved2                  : array[0..4] of byte;
 | 
						||
        screenNameLength           : byte;
 | 
						||
        screenName                 : array[0..70] of char;
 | 
						||
        threadNameLength           : byte;
 | 
						||
        threadName                 : array[0..70] of char;
 | 
						||
        otherData                  : array[0..399] of byte;
 | 
						||
     end;
 | 
						||
{ (note: length not actually 0x0333) }
 | 
						||
{ starts 'otherData' of NLM_HEADER }
 | 
						||
{ offset in structure -------------- }
 | 
						||
{ 0x0000 (exactly "VeRsIoN#") }
 | 
						||
{ 0x0008 --------------------------- }
 | 
						||
{ 0x000C --------------------------- }
 | 
						||
{ 0x0010 --------------------------- }
 | 
						||
{ 0x0014 --------------------------- }
 | 
						||
{ 0x0018 --------------------------- }
 | 
						||
{ 0x001A --------------------------- }
 | 
						||
 | 
						||
   PVERSION_MASK = ^VERSION_MASK;
 | 
						||
   VERSION_MASK = record
 | 
						||
        VeRsIoN : array[0..7] of char;
 | 
						||
        majorVersion : dword;
 | 
						||
        minorVersion : dword;
 | 
						||
        revision : dword;
 | 
						||
        year : dword;
 | 
						||
        month : dword;
 | 
						||
        day : dword;
 | 
						||
     end;                                           { 0x0020 (structure length) }
 | 
						||
 | 
						||
 | 
						||
   PCOPYRIGHT_MASK = ^COPYRIGHT_MASK;               { immediately follows VERSION_MASK }
 | 
						||
   COPYRIGHT_MASK = record                          { offset in structure -------------- }
 | 
						||
        _CoPyRiGhT      : array[0..9] of char;      { 0x0000 (exactly "CoPyRiGhT=") }
 | 
						||
        copyrightLength : byte;                  { 0x000A --------------------------- }
 | 
						||
        copyright       : array[0..251] of char;    { 0x000B --------------------------- }
 | 
						||
     end;
 | 
						||
{ 0x0107 (structure length) }
 | 
						||
{ immediately follows COPYRIGHT_MASK }
 | 
						||
{ offset in structure -------------- }
 | 
						||
{ 0x0000 (exactly "MeSsAgEs") }
 | 
						||
{ 0x0008 --------------------------- }
 | 
						||
{ 0x000C --------------------------- }
 | 
						||
{ 0x0010 --------------------------- }
 | 
						||
{ 0x0014 --------------------------- }
 | 
						||
{ 0x0018 --------------------------- }
 | 
						||
{ 0x001C --------------------------- }
 | 
						||
{ 0x0020 --------------------------- }
 | 
						||
{ 0x0024 --------------------------- }
 | 
						||
{ 0x0028 (ignore to end of structure }
 | 
						||
{ 0x0030     ...all these are either }
 | 
						||
{ 0x0034     no longer used or never }
 | 
						||
{ 0x0038     really have been) }
 | 
						||
{ 0x003C --------------------------- }
 | 
						||
{ 0x0040 --------------------------- }
 | 
						||
{ 0x0044 --------------------------- }
 | 
						||
{ 0x0048 --------------------------- }
 | 
						||
{ 0x004C --------------------------- }
 | 
						||
{ 0x0050 --------------------------- }
 | 
						||
{ 0x0054 --------------------------- }
 | 
						||
{ 0x0058 --------------------------- }
 | 
						||
{ 0x0064 --------------------------- }
 | 
						||
{ 0x0068 --------------------------- }
 | 
						||
{ 0x006C --------------------------- }
 | 
						||
{ 0x0070 --------------------------- }
 | 
						||
{ 0x0074 --------------------------- }
 | 
						||
{ 0x0078 --------------------------- }
 | 
						||
{ 0x007C (* see CODEWARRIOR_LASTMOD) }
 | 
						||
 | 
						||
   PEXTENDED_HEADER = ^EXTENDED_HEADER;
 | 
						||
   EXTENDED_HEADER = record
 | 
						||
        MeSsAgEs : array[0..7] of char;
 | 
						||
        languageID : dword;
 | 
						||
        messageFileOffset : dword;
 | 
						||
        messageFileLength : dword;
 | 
						||
        messageCount : dword;
 | 
						||
        helpFileOffset : dword;
 | 
						||
        helpFileLength : dword;
 | 
						||
        RPCDataOffset : dword;
 | 
						||
        RPCDataLength : dword;
 | 
						||
        sharedCodeOffset : dword;
 | 
						||
        sharedCodeLength : dword;
 | 
						||
        sharedDataOffset : dword;
 | 
						||
        sharedDataLength : dword;
 | 
						||
        sharedRelocationFixupOffset : dword;
 | 
						||
        sharedRelocationFixupLength : dword;
 | 
						||
        sharedExternalReferenceOffset : dword;
 | 
						||
        sharedExternalReferenceCount : dword;
 | 
						||
        sharedPublicsOffset : dword;
 | 
						||
        sharedPublicsCount : dword;
 | 
						||
        sharedDebugRecordOffset : dword;
 | 
						||
        sharedDebugRecordCount : dword;
 | 
						||
        sharedInitializationOffset : function :dword;cdecl;
 | 
						||
        sharedExitProcedureOffset : procedure ;
 | 
						||
        productID : dword;
 | 
						||
        reserved0 : dword;
 | 
						||
        reserved1 : dword;
 | 
						||
        reserved2 : dword;
 | 
						||
        reserved3 : dword;
 | 
						||
        reserved4 : dword;
 | 
						||
        reserved5 : dword;
 | 
						||
     end;
 | 
						||
{ 0x0080 (structure length) }
 | 
						||
{
 | 
						||
** The following syntagm appears only in NLMs linked with Metrowerks
 | 
						||
** Code Warrior. In the hexadecimal dump, it appears starting at 'reserved5'
 | 
						||
** in EXTENDED_HEADER above and appears thus (purely for example):
 | 
						||
**
 | 
						||
** 1C0: 4C 61 53 74  4D 6F 44 69  20 54 68 75  20 4F 63 74   "LaStMoDi Thu Oct"
 | 
						||
** 1D0: 20 20 39 20  31 35 3A 30  33 3A 33 30  20 32 30 30   "  9 19:22:31 200"
 | 
						||
** 1E0: 33 0A 00                                             "3..             "
 | 
						||
**
 | 
						||
** The start point shown (1C0) is variable, but LASTMOD_MASK will appear at
 | 
						||
** very nearly this offset.
 | 
						||
 }
 | 
						||
{ at 'reserved5' in EXTENDED_HEADER }
 | 
						||
{ offset in structure }
 | 
						||
{ 0x0000 (exactly "LaStMoDi") }
 | 
						||
{ 0x0009 --------------------------- }
 | 
						||
{ 0x000A --------------------------- }
 | 
						||
{ 0x000D --------------------------- }
 | 
						||
{ 0x000E --------------------------- }
 | 
						||
{ 0x0011 --------------------------- }
 | 
						||
{ 0x0012 (blank-padded) ------------ }
 | 
						||
{ 0x0014 --------------------------- }
 | 
						||
{ 0x0015 --------------------------- }
 | 
						||
{ 0x0017 --------------------------- }
 | 
						||
{ 0x0018 --------------------------- }
 | 
						||
{ 0x001A --------------------------- }
 | 
						||
{ 0x001B --------------------------- }
 | 
						||
{ 0x001D --------------------------- }
 | 
						||
{ 0x001E --------------------------- }
 | 
						||
{ 0x0022 --------------------------- }
 | 
						||
{ 0x0023 --------------------------- }
 | 
						||
 | 
						||
   PLASTMOD_MASK = ^LASTMOD_MASK;
 | 
						||
   LASTMOD_MASK = record
 | 
						||
        LaStMoDi : array[0..7] of char;
 | 
						||
        space : char;
 | 
						||
        weekday : array[0..2] of char;
 | 
						||
        space2 : char;
 | 
						||
        month : array[0..2] of char;
 | 
						||
        space3 : char;
 | 
						||
        day : array[0..1] of char;
 | 
						||
        space4 : char;
 | 
						||
        hours24 : array[0..1] of char;
 | 
						||
        colon1 : char;
 | 
						||
        minutes : array[0..1] of char;
 | 
						||
        colon2 : char;
 | 
						||
        seconds : array[0..1] of char;
 | 
						||
        space5 : char;
 | 
						||
        year : array[0..3] of char;
 | 
						||
        newline : char;
 | 
						||
        null : char;
 | 
						||
     end;
 | 
						||
 | 
						||
 | 
						||
   PCUSTOM_HEADER_MASK = ^CUSTOM_HEADER_MASK;    { 0x0024 (structure length) }
 | 
						||
   CUSTOM_HEADER_MASK = record                   { offset in structure -------------- }
 | 
						||
        CuStHeAd : array[0..7] of byte;          { 0x0000 "CuStHeAd" }
 | 
						||
     end;                                        { (note: length is custom) }
 | 
						||
 | 
						||
// nwieeefp.h
 | 
						||
 | 
						||
type fp_except = longint;
 | 
						||
const
 | 
						||
  FP_X_INV  = $01;  { invalid operation exception }
 | 
						||
  FP_X_DNML = $02;  { denormal operation exception }
 | 
						||
  FP_X_DZ   = $04;  { divide by zero exception }
 | 
						||
  FP_X_OFL  = $08;  { overflow exception }
 | 
						||
  FP_X_UFL  = $10;  { underflow exception }
 | 
						||
  FP_X_IMP  = $20;  { inexact (precision) exception  }
 | 
						||
 | 
						||
type
 | 
						||
   Pfp_rnd = ^fp_rnd;
 | 
						||
   fp_rnd =  Longint;
 | 
						||
Const
 | 
						||
   FP_RN = 0;   { round to nearest representable number, tie -> even }
 | 
						||
   FP_RM = 1;   { round toward minus infinity }
 | 
						||
   FP_RP = 2;   { round toward plus infinity }
 | 
						||
   FP_RZ = 3;   { round toward zero (truncate) }
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
 | 
						||
function fpgetmask:longint;cdecl;external libc_nlm name 'fpgetmask';
 | 
						||
function fpgetround:fp_rnd;cdecl;external libc_nlm name 'fpgetround';
 | 
						||
function fpgetsticky:longint;cdecl;external libc_nlm name 'fpgetsticky';
 | 
						||
function fpsetmask(newmask:longint):longint;cdecl;external libc_nlm name 'fpsetmask';
 | 
						||
function fpsetround(newround:fp_rnd):fp_rnd;cdecl;external libc_nlm name 'fpsetround';
 | 
						||
function fpsetsticky(newsticky:longint):longint;cdecl;external libc_nlm name 'fpsetsticky';
 | 
						||
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
 | 
						||
 | 
						||
// paths.h
 | 
						||
 | 
						||
const
 | 
						||
  _PATH_DEFPATH = '/system';
 | 
						||
  _PATH_STDPATH = '/system';
 | 
						||
  _PATH_DEVNULL = '/dev/null';
 | 
						||
  _PATH_MAILDIR = '/mail';
 | 
						||
  _PATH_DEV     = '/system/';
 | 
						||
  _PATH_TMP     = '/tmp/';
 | 
						||
 | 
						||
 | 
						||
// proc.h
 | 
						||
 | 
						||
const
 | 
						||
  PROC_DETACHED = $00000001;
 | 
						||
  PROC_CURRENT_SPACE = $00000004;    { use current address space    }
 | 
						||
  PROC_MEMORY_DEBUG = $00000008;     { same as load -m              }
 | 
						||
  PROC_LOAD_SILENT = $00000010;      { no console messages          }
 | 
						||
  PROC_INHERIT_CWD = $00000020;      { child start in same CWD      }
 | 
						||
  PROC_INHERIT_ID = $00000040;       { child inherits identity      }
 | 
						||
  FD_UNUSED  = -1;                   { ignore: do not wire the console }
 | 
						||
 | 
						||
type
 | 
						||
   Pwiring_t = ^wiring_t;    { standard console wiring for process()... }
 | 
						||
   wiring_t = record
 | 
						||
        infd  : longint;     { new process' standard input, etc. }
 | 
						||
        outfd : longint;
 | 
						||
        errfd : longint;
 | 
						||
     end;
 | 
						||
   TWiring = wiring_t;
 | 
						||
   PWiring = Pwiring_t;
 | 
						||
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
//function procle(path:Pchar; flags:dword; env:array of Pchar; wiring:Pwiring_t; fds:Pfd_set;
 | 
						||
//           appdata:pointer; appdata_size:size_t; reserved:pointer; arg0:Pchar; args:array of const):pid_t;cdecl;external libc_nlm name 'procle';
 | 
						||
{$endif}
 | 
						||
{function procle(path:Pchar; flags:dword; env:array of Pchar; wiring:Pwiring_t; fds:Pfd_set;
 | 
						||
           appdata:pointer; appdata_size:size_t; reserved:pointer; arg0:Pchar):pid_t;cdecl;external libc_nlm name 'procle';
 | 
						||
function procve(path:Pchar; flags:dword; env:array of Pchar; wiring:Pwiring_t; fds:Pfd_set;
 | 
						||
           appdata:pointer; appdata_size:size_t; reserved:pointer; argv:array of Pchar):pid_t;cdecl;external libc_nlm name 'procve';}
 | 
						||
function procve(path:Pchar; flags:dword; env:pointer; wiring:Pwiring_t; fds:Pfd_set;
 | 
						||
           appdata:pointer; appdata_size:size_t; reserved:pointer; argv:ppchar):pid_t;cdecl;external libc_nlm name 'procve';
 | 
						||
function procle(path:Pchar; flags:dword; env:pointer; wiring:Pwiring_t; fds:Pfd_set;
 | 
						||
           appdata:pointer; appdata_size:size_t; reserved:pointer; arg0:Pchar; args:ppchar):pid_t;cdecl;external libc_nlm name 'procle';
 | 
						||
 | 
						||
// pthread.h
 | 
						||
// sched.h
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
const
 | 
						||
  SCHED_UNKNOWN = 0;
 | 
						||
  SCHED_FIFO = 1;         { first-in, first-out      (default NetWare MPK)  }
 | 
						||
  SCHED_RR = 2;           { round-robin                    (unimplemented)  }
 | 
						||
  SCHED_SPORADIC = 3;     { Single UNIX Specification      (unimplemented)  }
 | 
						||
  SCHED_OTHER = 4;        { "other" policy                 (unimplemented)  }
 | 
						||
 | 
						||
type
 | 
						||
   Psched_param = ^sched_param;
 | 
						||
   sched_param = record
 | 
						||
        sched_priority        : longint;    { for SPORADIC (unimplemented):   }
 | 
						||
        sched_ss_low_priority : longint;    { low scheduling priority         }
 | 
						||
        sched_ss_repl_period  : Ttimespec;  { replenishment period for        }
 | 
						||
        sched_ss_init_budget  : Ttimespec;  { initial budget                  }
 | 
						||
        sched_ss_max_repl     : longint;    { maximum pending replenishments  }
 | 
						||
        sched_policy          : longint;
 | 
						||
     end;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
 | 
						||
  const
 | 
						||
     PTHREAD_KEYS_MAX = 64;
 | 
						||
  { no actual maximum   }
 | 
						||
     PTHREAD_THREADS_MAX = 32767;
 | 
						||
     PTHREAD_STACK_MIN = 16384;
 | 
						||
  { pthread_setdetachstate, etc...  }
 | 
						||
     PTHREAD_CREATE_DETACHED = $00000010;
 | 
						||
     PTHREAD_CREATE_JOINABLE = 0;
 | 
						||
  { values for field 'attr_scope'...  }
 | 
						||
     PTHREAD_SCOPE_PROCESS = 0;
 | 
						||
  { as yet unsupported  }
 | 
						||
     PTHREAD_SCOPE_SYSTEM = 1;
 | 
						||
  { values for field 'mattr_flags', 'cattr_flags' and 'rwattr_flags'...  }
 | 
						||
     PTHREAD_PROCESS_PRIVATE = 0;
 | 
						||
  { as yet unsupported  }
 | 
						||
     PTHREAD_PROCESS_SHARED = 1;
 | 
						||
  { pthread_setcancelstate, etc...  }
 | 
						||
     PTHREAD_CANCELED = -(1);
 | 
						||
     PTHREAD_CANCEL_ASYNCHRONOUS = 1;
 | 
						||
     PTHREAD_CANCEL_DEFERRED = 2;
 | 
						||
     PTHREAD_CANCEL_DISABLE = 0;
 | 
						||
     PTHREAD_CANCEL_ENABLE = 1;
 | 
						||
  { values for field 'attr_flags'...  }
 | 
						||
     PTHREAD_EXPLICIT_SCHED = $0002;
 | 
						||
  { as yet unsupported  }
 | 
						||
     PTHREAD_INHERIT_SCHED = $0004;
 | 
						||
  { values for field 'mattr_protocol'...  }
 | 
						||
  { as yet unsupported  }
 | 
						||
     PTHREAD_PRIO_PROTECT = -(1);
 | 
						||
  { as yet unsupported  }
 | 
						||
     PTHREAD_PRIO_INHERIT = 1;
 | 
						||
  { as yet unsupported  }
 | 
						||
     PTHREAD_PRIO_NONE = 0;
 | 
						||
     PTHREAD_ONCE_INIT = 0;
 | 
						||
  { values for field 'mattr_kind'...  }
 | 
						||
     PTHREAD_MUTEX_NORMAL = $0000;
 | 
						||
     PTHREAD_MUTEX_RECURSIVE = $0010;
 | 
						||
  { as yet unsupported  }
 | 
						||
     PTHREAD_MUTEX_ERRORCHECK = $0020;
 | 
						||
  { as yet unsupported  }
 | 
						||
     PTHREAD_MUTEX_DEFAULT = $0040;
 | 
						||
 | 
						||
type
 | 
						||
   Ppthread_once_t = ^pthread_once_t;
 | 
						||
   pthread_once_t = longint;
 | 
						||
 | 
						||
   Ppthread_key_t = ^pthread_key_t;
 | 
						||
   pthread_key_t = longint;
 | 
						||
 | 
						||
   Ppthread_t = ^pthread_t;
 | 
						||
   pthread_t = pointer; // longint;
 | 
						||
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
   Ppthread_cond_t = ^pthread_cond_t;
 | 
						||
   pthread_cond_t = record
 | 
						||
        cond : pointer;
 | 
						||
        spares : array[0..5] of longint;
 | 
						||
     end;
 | 
						||
 | 
						||
   Ppthread_mutex_t = PRtlCriticalSection;
 | 
						||
   pthread_mutex_t = TRtlCriticalSection;
 | 
						||
   TpthreadMutex = TRtlCriticalSection;
 | 
						||
 | 
						||
   Ppthread_rwlock_t = ^pthread_rwlock_t;
 | 
						||
   pthread_rwlock_t = record
 | 
						||
        rwlock : pointer;
 | 
						||
        reserved : array[0..2] of dword;
 | 
						||
     end;
 | 
						||
 | 
						||
   Ppthread_attr_t = ^pthread_attr_t;
 | 
						||
   pthread_attr_t = record
 | 
						||
        attr_flags : dword;
 | 
						||
        attr_scope : longint;
 | 
						||
        attr_priority : longint;
 | 
						||
        attr_detachstate : longint;
 | 
						||
        attr_stackaddr : pointer;
 | 
						||
        attr_stacksize : size_t;
 | 
						||
        attr_policy : longint;
 | 
						||
        attr_name : array[0..19] of char;
 | 
						||
     end;
 | 
						||
 | 
						||
   Ppthread_condattr_t = ^pthread_condattr_t;
 | 
						||
   pthread_condattr_t = record
 | 
						||
        cattr_flags : dword;
 | 
						||
        cattr_arg : pointer;
 | 
						||
        cattr_spare1 : longint;
 | 
						||
        cattr_spare2 : longint;
 | 
						||
     end;
 | 
						||
 | 
						||
   Ppthread_mutexattr_t = ^pthread_mutexattr_t;
 | 
						||
   pthread_mutexattr_t = record
 | 
						||
        mattr_flags : dword;
 | 
						||
        mattr_kind : longint;
 | 
						||
        mattr_priority : longint;
 | 
						||
        mattr_prioceiling : longint;
 | 
						||
        mattr_protocol : longint;
 | 
						||
        mattr_spares2 : array[0..5] of longint;
 | 
						||
        mattr_name : array[0..31] of char;
 | 
						||
     end;
 | 
						||
   Ppthread_mutex_attr_t = Ppthread_mutexattr_t;
 | 
						||
   pthread_mutex_attr_t = pthread_mutexattr_t;
 | 
						||
   TMutexAttribute = pthread_mutex_attr_t;
 | 
						||
 | 
						||
   Ppthread_rwlockattr_t = ^pthread_rwlockattr_t;
 | 
						||
   pthread_rwlockattr_t = record
 | 
						||
        rwattr_flags : dword;
 | 
						||
        rwattr_spare1 : longint;
 | 
						||
        rwattr_priority : longint;
 | 
						||
        rwattr_prioceiling : longint;
 | 
						||
        rwattr_protocol : longint;
 | 
						||
        rwattr_spares2 : array[0..5] of longint;
 | 
						||
        rwattr_name : array[0..31] of char;
 | 
						||
     end;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
{ pthread functions...  }
 | 
						||
 | 
						||
 | 
						||
type TPTThreadStartFunction = function (_para1:pointer):pointer; cdecl;
 | 
						||
 | 
						||
function pthread_create(thread:Ppthread_t; attr:Ppthread_attr_t; start_routine:TPTThreadStartFunction; arg:pointer):longint;cdecl;external libc_nlm name 'pthread_create';
 | 
						||
function pthread_cancel(thread:pthread_t):longint;cdecl;external libc_nlm name 'pthread_cancel';
 | 
						||
function pthread_join(thread:pthread_t; status:Ppointer):longint;cdecl;external libc_nlm name 'pthread_join';
 | 
						||
procedure pthread_exit(status:pointer);cdecl;external libc_nlm name 'pthread_exit';
 | 
						||
function pthread_equal(t1:pthread_t; t2:pthread_t):longint;cdecl;external libc_nlm name 'pthread_equal';
 | 
						||
procedure pthread_yield;cdecl;external libc_nlm name 'pthread_yield';
 | 
						||
function pthread_kill(thread:pthread_t; sig:longint):longint;cdecl;external libc_nlm name 'pthread_kill';
 | 
						||
function pthread_detach(thread:pthread_t):longint;cdecl;external libc_nlm name 'pthread_detach';
 | 
						||
 | 
						||
function pthread_once(once_control:Ppthread_once_t; init_routine:TCDeclProcedure ):longint;cdecl;external libc_nlm name 'pthread_once';
 | 
						||
function pthread_self:pthread_t;cdecl;external libc_nlm name 'pthread_self';
 | 
						||
function pthread_key_create(_para1:Ppthread_key_t; _destructor:TCDeclProc1PtrArg):longint;cdecl;external libc_nlm name 'pthread_key_create';
 | 
						||
function pthread_key_delete(key:pthread_key_t):longint;cdecl;external libc_nlm name 'pthread_key_delete';
 | 
						||
function pthread_getspecific(key:pthread_key_t):pointer;cdecl;external libc_nlm name 'pthread_getspecific';
 | 
						||
 | 
						||
function pthread_setspecific(key:pthread_key_t; value:pointer):longint;cdecl;external libc_nlm name 'pthread_setspecific';
 | 
						||
function pthread_getschedparam(thread:pthread_t; policy:Plongint; param:Psched_param):longint;cdecl;external libc_nlm name 'pthread_getschedparam';
 | 
						||
 | 
						||
function pthread_setschedparam(thread:pthread_t; policy:longint; param:Psched_param):longint;cdecl;external libc_nlm name 'pthread_setschedparam';
 | 
						||
function pthread_setcancelstate(state:longint; oldstate:Plongint):longint;cdecl;external libc_nlm name 'pthread_setcancelstate';
 | 
						||
function pthread_setcanceltype(_type:longint; oldtype:Plongint):longint;cdecl;external libc_nlm name 'pthread_setcanceltype';
 | 
						||
procedure pthread_testcancel;cdecl;external libc_nlm name 'pthread_testcancel';
 | 
						||
 | 
						||
function pthread_sigmask(how:longint; _set:Psigset_t; oset:Psigset_t):longint;cdecl;external libc_nlm name 'pthread_sigmask';
 | 
						||
procedure pthread_cleanup_push(routine:TCDeclProc1PtrArg; arg:pointer);cdecl;external libc_nlm name 'pthread_cleanup_push';
 | 
						||
procedure pthread_cleanup_pop(execute:longint);cdecl;external libc_nlm name 'pthread_cleanup_pop';
 | 
						||
{ pthread attribute functions...  }
 | 
						||
function pthread_attr_init(attr:Ppthread_attr_t):longint;cdecl;external libc_nlm name 'pthread_attr_init';
 | 
						||
function pthread_attr_destroy(attr:Ppthread_attr_t):longint;cdecl;external libc_nlm name 'pthread_attr_destroy';
 | 
						||
 | 
						||
function pthread_attr_getdetachstate(attr:Ppthread_attr_t; detachstate:Plongint):longint;cdecl;external libc_nlm name 'pthread_attr_getdetachstate';
 | 
						||
function pthread_attr_setdetachstate(attr:Ppthread_attr_t; detachstate:longint):longint;cdecl;external libc_nlm name 'pthread_attr_setdetachstate';
 | 
						||
 | 
						||
function pthread_attr_getinheritsched(attr:Ppthread_attr_t; inheritsched:Plongint):longint;cdecl;external libc_nlm name 'pthread_attr_getinheritsched';
 | 
						||
function pthread_attr_setinheritsched(attr:Ppthread_attr_t; inheritsched:longint):longint;cdecl;external libc_nlm name 'pthread_attr_setinheritsched';
 | 
						||
function pthread_attr_getschedparam(attr:Ppthread_attr_t; param:Psched_param):longint;cdecl;external libc_nlm name 'pthread_attr_getschedparam';
 | 
						||
function pthread_attr_setschedparam(attr:Ppthread_attr_t; param:Psched_param):longint;cdecl;external libc_nlm name 'pthread_attr_setschedparam';
 | 
						||
function pthread_attr_getschedpolicy(attr:Ppthread_attr_t; policy:Plongint):longint;cdecl;external libc_nlm name 'pthread_attr_getschedpolicy';
 | 
						||
function pthread_attr_setschedpolicy(attr:Ppthread_attr_t; policy:longint):longint;cdecl;external libc_nlm name 'pthread_attr_setschedpolicy';
 | 
						||
function pthread_attr_getscope(attr:Ppthread_attr_t; contentionscope:Plongint):longint;cdecl;external libc_nlm name 'pthread_attr_getscope';
 | 
						||
function pthread_attr_setscope(attr:Ppthread_attr_t; contentionscope:longint):longint;cdecl;external libc_nlm name 'pthread_attr_setscope';
 | 
						||
function pthread_attr_getstackaddr(attr:Ppthread_attr_t; stackaddr:Ppointer):longint;cdecl;external libc_nlm name 'pthread_attr_getstackaddr';
 | 
						||
function pthread_attr_setstackaddr(attr:Ppthread_attr_t; stackaddr:pointer):longint;cdecl;external libc_nlm name 'pthread_attr_setstackaddr';
 | 
						||
function pthread_attr_getstacksize(attr:Ppthread_attr_t; stacksize:Psize_t):longint;cdecl;external libc_nlm name 'pthread_attr_getstacksize';
 | 
						||
function pthread_attr_setstacksize(attr:Ppthread_attr_t; stacksize:size_t):longint;cdecl;external libc_nlm name 'pthread_attr_setstacksize';
 | 
						||
function pthread_attr_getname_np(attr:Ppthread_attr_t; name:Pchar; len:size_t; mbz:Ppointer):longint;cdecl;external libc_nlm name 'pthread_attr_getname_np';
 | 
						||
function pthread_attr_setname_np(attr:Ppthread_attr_t; name:Pchar; mbz:pointer):longint;cdecl;external libc_nlm name 'pthread_attr_setname_np';
 | 
						||
{ condition variable functions...  }
 | 
						||
 | 
						||
function pthread_cond_init(cond:Ppthread_cond_t; attr:Ppthread_condattr_t):longint;cdecl;external libc_nlm name 'pthread_cond_init';
 | 
						||
function pthread_cond_destroy(cond:Ppthread_cond_t):longint;cdecl;external libc_nlm name 'pthread_cond_destroy';
 | 
						||
function pthread_cond_signal(cond:Ppthread_cond_t):longint;cdecl;external libc_nlm name 'pthread_cond_signal';
 | 
						||
function pthread_cond_broadcast(cond:Ppthread_cond_t):longint;cdecl;external libc_nlm name 'pthread_cond_broadcast';
 | 
						||
function pthread_cond_wait(cond:Ppthread_cond_t; mutex:Ppthread_mutex_t):longint;cdecl;external libc_nlm name 'pthread_cond_wait';
 | 
						||
 | 
						||
function pthread_cond_timedwait(cond:Ppthread_cond_t; mutex:Ppthread_mutex_t; abstime:Ptimespec):longint;cdecl;external libc_nlm name 'pthread_cond_timedwait';
 | 
						||
{ condition variable attribute functions...  }
 | 
						||
function pthread_condattr_init(attr:Ppthread_condattr_t):longint;cdecl;external libc_nlm name 'pthread_condattr_init';
 | 
						||
function pthread_condattr_destroy(attr:Ppthread_condattr_t):longint;cdecl;external libc_nlm name 'pthread_condattr_destroy';
 | 
						||
function pthread_condattr_getpshared(attr:Ppthread_condattr_t; pshared:Plongint):longint;cdecl;external libc_nlm name 'pthread_condattr_getpshared';
 | 
						||
function pthread_condattr_setpshared(attr:Ppthread_condattr_t; pshared:longint):longint;cdecl;external libc_nlm name 'pthread_condattr_setpshared';
 | 
						||
{ mutex functions...  }
 | 
						||
 | 
						||
function pthread_mutex_init(mutex:Ppthread_mutex_t; attr:Ppthread_mutexattr_t):longint;cdecl;external libc_nlm name 'pthread_mutex_init';
 | 
						||
function pthread_mutex_destroy(mutex:Ppthread_mutex_t):longint;cdecl;external libc_nlm name 'pthread_mutex_destroy';
 | 
						||
function pthread_mutex_lock(mutex:Ppthread_mutex_t):longint;cdecl;external libc_nlm name 'pthread_mutex_lock';
 | 
						||
function pthread_mutex_trylock(mutex:Ppthread_mutex_t):longint;cdecl;external libc_nlm name 'pthread_mutex_trylock';
 | 
						||
function pthread_mutex_unlock(mutex:Ppthread_mutex_t):longint;cdecl;external libc_nlm name 'pthread_mutex_unlock';
 | 
						||
{ mutex attribute functions...  }
 | 
						||
function pthread_mutexattr_init(attr:Ppthread_mutexattr_t):longint;cdecl;external libc_nlm name 'pthread_mutexattr_init';
 | 
						||
function pthread_mutexattr_destroy(attr:Ppthread_mutexattr_t):longint;cdecl;external libc_nlm name 'pthread_mutexattr_destroy';
 | 
						||
function pthread_mutexattr_getprioceiling(attr:Ppthread_mutexattr_t; prioceiling:Plongint):longint;cdecl;external libc_nlm name 'pthread_mutexattr_getprioceiling';
 | 
						||
function pthread_mutexattr_setprioceiling(attr:Ppthread_mutexattr_t; prioceiling:longint):longint;cdecl;external libc_nlm name 'pthread_mutexattr_setprioceiling';
 | 
						||
function pthread_mutexattr_getprotocol(attr:Ppthread_mutexattr_t; protocol:Plongint):longint;cdecl;external libc_nlm name 'pthread_mutexattr_getprotocol';
 | 
						||
function pthread_mutexattr_setprotocol(attr:Ppthread_mutexattr_t; protocol:longint):longint;cdecl;external libc_nlm name 'pthread_mutexattr_setprotocol';
 | 
						||
function pthread_mutexattr_getpshared(attr:Ppthread_mutexattr_t; pshared:Plongint):longint;cdecl;external libc_nlm name 'pthread_mutexattr_getpshared';
 | 
						||
function pthread_mutexattr_setpshared(attr:Ppthread_mutexattr_t; pshared:longint):longint;cdecl;external libc_nlm name 'pthread_mutexattr_setpshared';
 | 
						||
function pthread_mutexattr_gettype(attr:Ppthread_mutexattr_t; kind:Plongint):longint;cdecl;external libc_nlm name 'pthread_mutexattr_gettype';
 | 
						||
function pthread_mutexattr_settype(attr:Ppthread_mutexattr_t; kind:longint):longint;cdecl;external libc_nlm name 'pthread_mutexattr_settype';
 | 
						||
{ reader-writer lock functions...  }
 | 
						||
function pthread_rwlock_init(rwlp:Ppthread_rwlock_t; attr:Ppthread_rwlockattr_t):longint;cdecl;external libc_nlm name 'pthread_rwlock_init';
 | 
						||
function pthread_rwlock_destroy(rwlp:Ppthread_rwlock_t):longint;cdecl;external libc_nlm name 'pthread_rwlock_destroy';
 | 
						||
function pthread_rwlock_rdlock(rwlp:Ppthread_rwlock_t):longint;cdecl;external libc_nlm name 'pthread_rwlock_rdlock';
 | 
						||
function pthread_rwlock_wrlock(rwlp:Ppthread_rwlock_t):longint;cdecl;external libc_nlm name 'pthread_rwlock_wrlock';
 | 
						||
function pthread_rwlock_tryrdlock(rwlp:Ppthread_rwlock_t):longint;cdecl;external libc_nlm name 'pthread_rwlock_tryrdlock';
 | 
						||
function pthread_rwlock_trywrlock(rwlp:Ppthread_rwlock_t):longint;cdecl;external libc_nlm name 'pthread_rwlock_trywrlock';
 | 
						||
function pthread_rwlock_unlock(rwlp:Ppthread_rwlock_t):longint;cdecl;external libc_nlm name 'pthread_rwlock_unlock';
 | 
						||
function pthread_rwlock_timedrdlock(rwlock:Ppthread_rwlock_t; abs_timeout:Ptimespec):longint;cdecl;external libc_nlm name 'pthread_rwlock_timedrdlock';
 | 
						||
function pthread_rwlock_timedwrlock(rwlock:Ppthread_rwlock_t; abs_timeout:Ptimespec):longint;cdecl;external libc_nlm name 'pthread_rwlock_timedwrlock';
 | 
						||
{ reader-writer lock attribute functions...  }
 | 
						||
function pthread_rwlockattr_init(attr:Ppthread_rwlockattr_t):longint;cdecl;external libc_nlm name 'pthread_rwlockattr_init';
 | 
						||
function pthread_rwlockattr_destroy(attr:Ppthread_rwlockattr_t):longint;cdecl;external libc_nlm name 'pthread_rwlockattr_destroy';
 | 
						||
function pthread_rwlockattr_getpshared(attr:Ppthread_rwlockattr_t; pshared:Plongint):longint;cdecl;external libc_nlm name 'pthread_rwlockattr_getpshared';
 | 
						||
function pthread_rwlockattr_setpshared(attr:Ppthread_rwlockattr_t; pshared:longint):longint;cdecl;external libc_nlm name 'pthread_rwlockattr_setpshared';
 | 
						||
{ registering functions to execute at call to fork()...  }
 | 
						||
function pthread_atfork(prepare, parent, child:TCDeclProcedure):longint;cdecl;external libc_nlm name 'pthread_atfork';
 | 
						||
 | 
						||
 | 
						||
type
 | 
						||
   Ppasswd = ^passwd;
 | 
						||
   passwd = record
 | 
						||
        pw_uid     : uid_t;     // user id
 | 
						||
        pw_spare1  : uid_t;
 | 
						||
        pw_gid     : gid_t;     // group id
 | 
						||
        pw_spare2  : gid_t;
 | 
						||
        pw_name    : Pchar;     // username
 | 
						||
        pw_dir     : Pchar;     // home directory
 | 
						||
        pw_shell   : Pchar;     // default shell
 | 
						||
        pw_LDAPName: Pchar;     // real name
 | 
						||
        pw_passwd  : Pchar;     // password (always nil)
 | 
						||
        pw_gecos   : Pchar;     // general information
 | 
						||
        pw_comment : Pchar;     // commend
 | 
						||
        pw_change  : time_t;    // password change time
 | 
						||
        pw_expire  : time_t;    // account expiration
 | 
						||
        spare1 : array[0..2] of pointer;
 | 
						||
        spare2 : array[0..3] of pointer;
 | 
						||
     end;
 | 
						||
 | 
						||
 | 
						||
//!! function geteuid:uid_t;cdecl;external libc_nlm name 'geteuid';
 | 
						||
//!! function getuid:uid_t;cdecl;external libc_nlm name 'getuid';
 | 
						||
function posixlogin(host:Pchar; port:longint; name:Pchar; pwd:Pchar; ctx:Pchar):longint;cdecl;external libc_nlm name 'posixlogin';
 | 
						||
function posixlogout:longint;cdecl;external libc_nlm name 'posixlogout';
 | 
						||
 | 
						||
{$ifdef EnableLibcRegex}
 | 
						||
 | 
						||
 | 
						||
// regex.h
 | 
						||
type
 | 
						||
   Pregoff_t = ^regoff_t;
 | 
						||
   regoff_t = off_t;
 | 
						||
 | 
						||
   Preg_syntax_t = ^reg_syntax_t;
 | 
						||
   reg_syntax_t = dword;
 | 
						||
 | 
						||
   Ps_reg_t = ^s_reg_t;
 | 
						||
   s_reg_t = longint;
 | 
						||
 | 
						||
   Pactive_reg_t = ^active_reg_t;
 | 
						||
   active_reg_t = dword;
 | 
						||
{ number of parenthesized subexpressions  }
 | 
						||
 | 
						||
{ end pointer for REG_PEND                }
 | 
						||
{ not visible                             }
 | 
						||
 | 
						||
   Pregex_t = ^regex_t;
 | 
						||
   regex_t = record
 | 
						||
        re_magic : longint;
 | 
						||
        re_nsub : size_t;
 | 
						||
        re_endp : Pchar;
 | 
						||
        re_g : Pre_guts;
 | 
						||
     end;
 | 
						||
 | 
						||
  const
 | 
						||
     REG_BASIC = 0000;
 | 
						||
     REG_EXTENDED = 0001;
 | 
						||
     REG_ICASE = 0002;
 | 
						||
     REG_NOSUB = 0004;
 | 
						||
     REG_NEWLINE = 0010;
 | 
						||
     REG_NOSPEC = 0020;
 | 
						||
     REG_PEND = 0040;
 | 
						||
     REG_DUMP = 0200;
 | 
						||
  { regerror() flags  }
 | 
						||
     REG_NOMATCH = 1;
 | 
						||
     REG_BADPAT = 2;
 | 
						||
     REG_ECOLLATE = 3;
 | 
						||
     REG_ECTYPE = 4;
 | 
						||
     REG_EESCAPE = 5;
 | 
						||
     REG_ESUBREG = 6;
 | 
						||
     REG_EBRACK = 7;
 | 
						||
     REG_EPAREN = 8;
 | 
						||
     REG_EBRACE = 9;
 | 
						||
     REG_BADBR = 10;
 | 
						||
     REG_ERANGE = 11;
 | 
						||
     REG_ESPACE = 12;
 | 
						||
     REG_BADRPT = 13;
 | 
						||
     REG_EMPTY = 14;
 | 
						||
     REG_ASSERT = 15;
 | 
						||
     REG_INVARG = 16;
 | 
						||
  { convert name to number (!)  }
 | 
						||
     REG_ATOI = 255;
 | 
						||
  { convert number to name (!)  }
 | 
						||
     REG_ITOA = 0400;
 | 
						||
  { regexec() flags  }
 | 
						||
     REG_NOTBOL = 00001;
 | 
						||
     REG_NOTEOL = 00002;
 | 
						||
     REG_STARTEND = 00004;
 | 
						||
  { tracing of execution        }
 | 
						||
     REG_TRACE = 00400;
 | 
						||
  { force large representation  }
 | 
						||
     REG_LARGE = 01000;
 | 
						||
  { force use of backref code   }
 | 
						||
     REG_BACKR = 02000;
 | 
						||
 | 
						||
 | 
						||
   Pregmatch_t = ^regmatch_t;
 | 
						||
   regmatch_t = record
 | 
						||
        rm_so : regoff_t;
 | 
						||
        rm_eo : regoff_t;
 | 
						||
     end;
 | 
						||
{ regcomp() flags...  }
 | 
						||
{ regerror() flags  }
 | 
						||
{ regexec() flags  }
 | 
						||
 | 
						||
{$endif EnableLibcRegex}
 | 
						||
 | 
						||
 | 
						||
// ringx.h
 | 
						||
 | 
						||
const PAGE_SIZE = 4096;
 | 
						||
 | 
						||
 | 
						||
type RxCleanup_t = procedure (addr:pointer);cdecl;
 | 
						||
{ preliminary (registration and clean-up)...  }
 | 
						||
 | 
						||
function RxIdentifyCode(startFuncAddr:pointer; endFuncAddrPlusOne:pointer; marshallingCodeReference:Plongint):longint;cdecl;external system_nlm name 'RxIdentifyCode';
 | 
						||
function RxUnidentifyCode(marshallingCodeReference:longint):longint;cdecl;external system_nlm name 'RxUnidentifyCode';
 | 
						||
function RxRegisterSysCall(marshalledFuncAddr:pointer; unmarshalledName:Pchar; argCount:longint):longint;cdecl;external system_nlm name 'RxRegisterSysCall';
 | 
						||
function RxUnregisterSysCall(unmarshalledName:Pchar):longint;cdecl;external system_nlm name 'RxUnregisterSysCall';
 | 
						||
{ mundane calls...  }
 | 
						||
function RxLockMemory(addr:pointer; length:size_t):longint;cdecl;external system_nlm name 'RxLockMemory';
 | 
						||
function RxUnlockMemory(addr:pointer; length:size_t):longint;cdecl;external system_nlm name 'RxUnlockMemory';
 | 
						||
{ to handle address space fault and threads caught in kernel...  }
 | 
						||
function RxRegisterKernelResource(_para1:pointer; _para2:RxCleanup_t):longint;cdecl;external system_nlm name 'RxRegisterKernelResource';
 | 
						||
function RxRegisterThreadResource(_para1:pointer; _para2:RxCleanup_t):longint;cdecl;external system_nlm name 'RxRegisterThreadResource';
 | 
						||
function RxUnregisterKernelResource(_para1:pointer):longint;cdecl;external system_nlm name 'RxUnregisterKernelResource';
 | 
						||
function RxUnregisterThreadResource(_para1:pointer):longint;cdecl;external system_nlm name 'RxUnregisterThreadResource';
 | 
						||
{ data; referenced to avoid compiler optimization of code including this  }
 | 
						||
//??  var
 | 
						||
//??     RxTmp : longint;cvar;public;
 | 
						||
{ main working macros (buffers and structures, char and wide strings...  }
 | 
						||
 | 
						||
 | 
						||
// semaphore.h
 | 
						||
 | 
						||
const
 | 
						||
  SEM_VALUE_MAX = $7FFFFFFF;
 | 
						||
// #define SEM_FAILED      ((sem_t *) 0)
 | 
						||
 | 
						||
type
 | 
						||
   Psem_t = ^sem_t;
 | 
						||
   sem_t = record
 | 
						||
        sema : pointer;
 | 
						||
        spares : array[0..5] of longint;
 | 
						||
     end;
 | 
						||
 | 
						||
function sem_init(sem:Psem_t; pshared:longint; value:dword):longint;cdecl;external libc_nlm name 'sem_init';
 | 
						||
function sem_destroy(sem:Psem_t):longint;cdecl;external libc_nlm name 'sem_destroy';
 | 
						||
function sem_getvalue(sem:Psem_t; sval:Plongint):longint;cdecl;external libc_nlm name 'sem_getvalue';
 | 
						||
function sem_post(sem:Psem_t):longint;cdecl;external libc_nlm name 'sem_post';
 | 
						||
function sem_wait(sem:Psem_t):longint;cdecl;external libc_nlm name 'sem_wait';
 | 
						||
function sem_trywait(sem:Psem_t):longint;cdecl;external libc_nlm name 'sem_trywait';
 | 
						||
function sem_timedwait(sem:Psem_t; abstime:Ptimespec):longint;cdecl;external libc_nlm name 'sem_timedwait';
 | 
						||
 | 
						||
 | 
						||
// setjmp.h
 | 
						||
 | 
						||
type
 | 
						||
   _Pjmp_buf = ^_jmp_buf;
 | 
						||
   _jmp_buf = double;
 | 
						||
 | 
						||
procedure __longjmp(_para1:_jmp_buf; _para2:longint);cdecl;external libc_nlm name '__longjmp';
 | 
						||
function __setjmp(_para1:_jmp_buf):longint;cdecl;external libc_nlm name '__setjmp';
 | 
						||
 | 
						||
// synch.h
 | 
						||
 | 
						||
const
 | 
						||
  USYNC_THREAD    = 0;
 | 
						||
  USYNC_PROCESS   = 1;  { shared between processes (unsupported)}
 | 
						||
  USYNC_DESTROYED = 2;  { deallocated object }
 | 
						||
 | 
						||
type
 | 
						||
   //!! timespec = timestruc_t;
 | 
						||
   Pbarrier = ^barrier;
 | 
						||
   barrier = record
 | 
						||
        reserved : array[0..7] of longint;
 | 
						||
     end;
 | 
						||
   barrier_t = barrier;
 | 
						||
   Pbarrier_t = ^barrier_t;
 | 
						||
 | 
						||
   Pcond_t = ^cond_t;
 | 
						||
   cond_t = pthread_cond_t;
 | 
						||
 | 
						||
   Pmutex_t = ^mutex_t;
 | 
						||
   mutex_t = pthread_mutex_t;
 | 
						||
 | 
						||
   Prwlock_t = ^rwlock_t;
 | 
						||
   rwlock_t = pthread_rwlock_t;
 | 
						||
 | 
						||
   Psema_t = ^sema_t;
 | 
						||
   sema_t = sem_t;
 | 
						||
 | 
						||
function barrier_init(bp:Pbarrier_t; threads:longint):longint;cdecl;external libc_nlm name 'barrier_init';
 | 
						||
procedure barrier_destroy(bp:Pbarrier_t);cdecl;external libc_nlm name 'barrier_destroy';
 | 
						||
function barrier_wait(bp:Pbarrier_t):longint;cdecl;external libc_nlm name 'barrier_wait';
 | 
						||
function barrier_inc(bp:Pbarrier_t):longint;cdecl;external libc_nlm name 'barrier_inc';
 | 
						||
function barrier_dec(bp:Pbarrier_t):longint;cdecl;external libc_nlm name 'barrier_dec';
 | 
						||
function cond_init(cvp:Pcond_t; _type:longint; arg:longint):longint;cdecl;external libc_nlm name 'cond_init';
 | 
						||
function cond_destroy(cvp:Pcond_t):longint;cdecl;external libc_nlm name 'cond_destroy';
 | 
						||
function cond_broadcast(cvp:Pcond_t):longint;cdecl;external libc_nlm name 'cond_broadcast';
 | 
						||
function cond_signal(cvp:Pcond_t):longint;cdecl;external libc_nlm name 'cond_signal';
 | 
						||
function cond_wait(cvp:Pcond_t; mp:Pmutex_t):longint;cdecl;external libc_nlm name 'cond_wait';
 | 
						||
//!! function cond_timedwait(cvp:Pcond_t; mp:Pmutex_t; abstime:Ptimestruc_t):longint;cdecl;external libc_nlm name 'cond_timedwait';
 | 
						||
function mutex_init(mp:Pmutex_t; _type:longint; arg:pointer):longint;cdecl;external libc_nlm name 'mutex_init';
 | 
						||
function mutex_destroy(mp:Pmutex_t):longint;cdecl;external libc_nlm name 'mutex_destroy';
 | 
						||
function mutex_lock(mp:Pmutex_t):longint;cdecl;external libc_nlm name 'mutex_lock';
 | 
						||
function mutex_trylock(mp:Pmutex_t):longint;cdecl;external libc_nlm name 'mutex_trylock';
 | 
						||
function mutex_unlock(mp:Pmutex_t):longint;cdecl;external libc_nlm name 'mutex_unlock';
 | 
						||
function rwlock_init(rwlp:Prwlock_t; _type:longint; arg:pointer):longint;cdecl;external libc_nlm name 'rwlock_init';
 | 
						||
function rwlock_destroy(rwlp:Prwlock_t):longint;cdecl;external libc_nlm name 'rwlock_destroy';
 | 
						||
function rw_rdlock(rwlp:Prwlock_t):longint;cdecl;external libc_nlm name 'rw_rdlock';
 | 
						||
function rw_wrlock(rwlp:Prwlock_t):longint;cdecl;external libc_nlm name 'rw_wrlock';
 | 
						||
function rw_tryrdlock(rwlp:Prwlock_t):longint;cdecl;external libc_nlm name 'rw_tryrdlock';
 | 
						||
function rw_trywrlock(rwlp:Prwlock_t):longint;cdecl;external libc_nlm name 'rw_trywrlock';
 | 
						||
function rw_unlock(rwlp:Prwlock_t):longint;cdecl;external libc_nlm name 'rw_unlock';
 | 
						||
function sema_init(sp:Psema_t; count:dword; _type:longint; arg:pointer):longint;cdecl;external libc_nlm name 'sema_init';
 | 
						||
function sema_destroy(sp:Psema_t):longint;cdecl;external libc_nlm name 'sema_destroy';
 | 
						||
function sema_post(sp:Psema_t):longint;cdecl;external libc_nlm name 'sema_post';
 | 
						||
function sema_trywait(sp:Psema_t):longint;cdecl;external libc_nlm name 'sema_trywait';
 | 
						||
function sema_wait(sp:Psema_t):longint;cdecl;external libc_nlm name 'sema_wait';
 | 
						||
 | 
						||
// syslog.h
 | 
						||
 | 
						||
{ log options for openlog()...  }
 | 
						||
{ message facilities for openlog()...  }
 | 
						||
{ for constructing 'maskpri' for setlogmask()...  }
 | 
						||
{ values for priority argument of syslog()...  }
 | 
						||
{ with no filename argument, syslogd.nlm uses this configuration file:  }
 | 
						||
// termio.h
 | 
						||
// termios.h
 | 
						||
{
 | 
						||
** Note: This is a very primitive and narrow adaptation of POSIX termios.h.
 | 
						||
** Most of what is in this file is for completeness and to avoid locking
 | 
						||
** termios.h interfaces off from advancing progressively as needed.}
 | 
						||
 | 
						||
 | 
						||
  const
 | 
						||
     NCCS = 32;
 | 
						||
  { ^C  }
 | 
						||
     INTR = $03;
 | 
						||
  { ^D  }
 | 
						||
     QUIT = $04;
 | 
						||
  { ^Z  }
 | 
						||
     SUSP = $1A;
 | 
						||
  { currently unsupported                          }
 | 
						||
     ECHO = $01;
 | 
						||
  { currently unsupported                          }
 | 
						||
     ECHOE = $02;
 | 
						||
  { currently unsupported                          }
 | 
						||
     ECHOK = $04;
 | 
						||
  { currently unsupported                          }
 | 
						||
     ECHONL = $08;
 | 
						||
  { currently unsupported                          }
 | 
						||
     ICANON = $10;
 | 
						||
  { currently unsupported                          }
 | 
						||
     IEXTEN = $20;
 | 
						||
  { check against INTR, QUIT and SUSP (default)    }
 | 
						||
     ISIG = $40;
 | 
						||
  { currently unsupported                          }
 | 
						||
     NOFLSH = $80;
 | 
						||
  { c_iflag bits...  }
 | 
						||
     IGNBRK = 0000001;
 | 
						||
     BRKINT = 0000002;
 | 
						||
     IGNPAR = 0000004;
 | 
						||
     PARMRK = 0000010;
 | 
						||
     INPCK = 0000020;
 | 
						||
     ISTRIP = 0000040;
 | 
						||
     INLCR = 0000100;
 | 
						||
     IGNCR = 0000200;
 | 
						||
     ICRNL = 0000400;
 | 
						||
     IUCLC = 0001000;
 | 
						||
     IXON = 0002000;
 | 
						||
     IXANY = 0004000;
 | 
						||
     IXOFF = 0010000;
 | 
						||
     IMAXBEL = 0020000;
 | 
						||
     CSIZE = 0000060;
 | 
						||
     CS5 = 0000000;
 | 
						||
     CS6 = 0000020;
 | 
						||
     CS7 = 0000040;
 | 
						||
     CS8 = 0000060;
 | 
						||
     CSTOPB = 0000100;
 | 
						||
     CREAD = 0000200;
 | 
						||
     PARENB = 0000400;
 | 
						||
     PARODD = 0001000;
 | 
						||
     HUPCL = 0002000;
 | 
						||
     CLOCAL = 0004000;
 | 
						||
  { 'c_cc' control characters...  }
 | 
						||
  { ^C                                             }
 | 
						||
     VINTR = 1;
 | 
						||
  { ^\   (unsupported)                             }
 | 
						||
     VQUIT = 2;
 | 
						||
  { del  (unsupported)                             }
 | 
						||
     VERASE = 3;
 | 
						||
  { ^D                                             }
 | 
						||
     VEOF = 4;
 | 
						||
  { @    (unsupported)                             }
 | 
						||
     VKILL = 5;
 | 
						||
  { currently unsupported                          }
 | 
						||
     VTIME = 6;
 | 
						||
  { currently unsupported                          }
 | 
						||
     VMIN = 7;
 | 
						||
  { ^q   (unsupported)                             }
 | 
						||
     VSTART = 8;
 | 
						||
  { ^s   (unsupported)                             }
 | 
						||
     VSTOP = 9;
 | 
						||
  { ^z                                             }
 | 
						||
     VSUSP = 10;
 | 
						||
  { '\0' (unsupported)                             }
 | 
						||
     VEOL = 11;
 | 
						||
  { 'optional_actions' causes action to be effectuated when:  }
 | 
						||
  { immediately                                    }
 | 
						||
     TCSANOW = 1;
 | 
						||
  { output done                     (unsupported)  }
 | 
						||
     TCSADRAIN = 2;
 | 
						||
  { output done and input discarded (unsupported)  }
 | 
						||
     TCSAFLUSH = 3;
 | 
						||
 | 
						||
 | 
						||
{ c_iflag bits...  }
 | 
						||
{ 'c_cc' control characters...  }
 | 
						||
{ 'optional_actions' causes action to be effectuated when:  }
 | 
						||
type
 | 
						||
   Ptcflag_t = ^tcflag_t;
 | 
						||
   tcflag_t = dword;
 | 
						||
 | 
						||
   Pcc_t = ^cc_t;
 | 
						||
   cc_t = byte;
 | 
						||
 | 
						||
   Pspeed_t = ^speed_t;
 | 
						||
   speed_t =  Longint;
 | 
						||
   Const
 | 
						||
     B0 = 0;
 | 
						||
     B50 = 50;
 | 
						||
     B75 = 75;
 | 
						||
     B110 = 110;
 | 
						||
     B134 = 134;
 | 
						||
     B150 = 150;
 | 
						||
     B200 = 200;
 | 
						||
     B300 = 300;
 | 
						||
     B600 = 600;
 | 
						||
     B1200 = 1200;
 | 
						||
     B1800 = 1800;
 | 
						||
     B2400 = 2400;
 | 
						||
     B4800 = 4800;
 | 
						||
     B9600 = 9600;
 | 
						||
     B19200 = 19200;
 | 
						||
     B38400 = 38400;
 | 
						||
 | 
						||
{ ioctl() control packet...  }
 | 
						||
{ input modes     --currently unused          }
 | 
						||
{ output modes    --currently unused          }
 | 
						||
{ control modes   --currently unused          }
 | 
						||
{ local modes     --ISIG currently supported  }
 | 
						||
{ input speed     --currently unused          }
 | 
						||
{ output speed    --currently unused          }
 | 
						||
{ line discipline --currently unused          }
 | 
						||
{ control chars   --currently used            }
 | 
						||
type
 | 
						||
   Ptermios = ^termios;
 | 
						||
   termios = record
 | 
						||
        c_iflag : tcflag_t;
 | 
						||
        c_oflag : tcflag_t;
 | 
						||
        c_cflag : tcflag_t;
 | 
						||
        c_lflag : tcflag_t;
 | 
						||
        c_ispeed : speed_t;
 | 
						||
        c_ospeed : speed_t;
 | 
						||
        c_line : cc_t;
 | 
						||
        c_spare1 : dword;
 | 
						||
        c_cc : array[0..31] of cc_t;
 | 
						||
        c_spare2 : dword;
 | 
						||
        c_spare3 : dword;
 | 
						||
        c_spare4 : dword;
 | 
						||
        c_spare5 : dword;
 | 
						||
     end;
 | 
						||
 | 
						||
{ POSIX-defined functions...  }
 | 
						||
 | 
						||
function tcgetattr(fildes:longint; tp:Ptermios):longint;cdecl;external libc_nlm name 'tcgetattr';
 | 
						||
function tcsetattr(fildes:longint; optional_actions:longint; tp:Ptermios):longint;cdecl;external libc_nlm name 'tcsetattr';
 | 
						||
 | 
						||
// tgmath.h
 | 
						||
 | 
						||
{ syslog.h
 | 
						||
  ==============================================================================}
 | 
						||
  { log options for openlog()...  }
 | 
						||
  { log the process ID with each message  }
 | 
						||
 | 
						||
  const
 | 
						||
     LOG_PID = $00000001;
 | 
						||
     LOG_CONS = $00000002;                   { log to the system console on error    }
 | 
						||
     LOG_NDELAY = $00000004;                 { connect to syslog daemon immediately  }
 | 
						||
     LOG_ODELAY = $00000008;                 { delay open until syslog() is called   }
 | 
						||
     LOG_NOWAIT = $00000010;                 { do not wait for child processes       }
 | 
						||
  { message facilities for openlog()...  }
 | 
						||
     LOG_KERN = $00000001;                   { generated by system  }
 | 
						||
     LOG_USER = $00000002;                   { generated by a process                }
 | 
						||
     LOG_MAIL = $00000004;                   { generated by mail system              }
 | 
						||
     LOG_NEWS = $00000008;                   { generated by news system              }
 | 
						||
     LOG_UUCP = $00000010;                   { generated by UUCP system              }
 | 
						||
     LOG_DAEMON = $00000020;                 { generated by daemon                   }
 | 
						||
     LOG_AUTH = $00000040;                   { generated by auth. daemon             }
 | 
						||
     LOG_CRON = $00000080;                   { generated by clock daemon             }
 | 
						||
     LOG_LPR = $00000100;                    { generated by printer system           }
 | 
						||
     LOG_LOCAL0 = $00000200;                 { local use                             }
 | 
						||
     LOG_LOCAL1 = $00000400;
 | 
						||
     LOG_LOCAL2 = $00000800;
 | 
						||
     LOG_LOCAL3 = $00001000;
 | 
						||
     LOG_LOCAL4 = $00002000;
 | 
						||
     LOG_LOCAL5 = $00004000;
 | 
						||
     LOG_LOCAL6 = $00008000;
 | 
						||
     LOG_LOCAL7 = $00010000;
 | 
						||
     LOG_UNUSED1 = $00020000;
 | 
						||
     LOG_UNUSED2 = $00040000;
 | 
						||
     LOG_UNUSED3 = $00080000;
 | 
						||
     LOG_UNUSED4 = $00100000;
 | 
						||
     LOG_UNUSED5 = $00200000;
 | 
						||
     LOG_UNUSED6 = $00400000;                { unused                                }
 | 
						||
     LOG_UNUSED7 = $00800000;                { unused                                }
 | 
						||
  { for constructing 'maskpri' for setlogmask()...  }
 | 
						||
  { was #define dname(params) para_def_expr }
 | 
						||
  { argument types are unknown }
 | 
						||
  { return type might be wrong }
 | 
						||
//  function LOG_MASK(p : longint) : longint;
 | 
						||
     LOG_EMERG = $01000000;
 | 
						||
     LOG_ALERT = $02000000;                  { condition to correct immediately       }
 | 
						||
     LOG_CRIT = $04000000;                   { critical condition                     }
 | 
						||
     LOG_ERR = $08000000;                    { error message                          }
 | 
						||
     LOG_WARNING = $10000000;                { warning message                        }
 | 
						||
     LOG_NOTICE = $20000000;                 { condition requiring special handling   }
 | 
						||
     LOG_INFO = $40000000;                   { general information message            }
 | 
						||
     LOG_DEBUG = $80000000;                  { message useful for debugging programs  }
 | 
						||
     P_cfgfile = 'sys:/etc/syslog.conf';     { with no filename argument, syslogd.nlm uses this configuration file:  }
 | 
						||
 | 
						||
  procedure closelog;cdecl;external libc_nlm name 'closelog';
 | 
						||
  procedure openlog(ident:Pchar; logopt:longint; facility:longint);cdecl;external libc_nlm;
 | 
						||
  function setlogmask(maskpri:longint):longint;cdecl;external libc_nlm name 'setlogmask';
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
  procedure syslog(priority:longint; message:Pchar; args:array of const);cdecl;external libc_nlm name 'syslog';
 | 
						||
{$endif}
 | 
						||
  procedure syslog(priority:longint; message:Pchar);cdecl;external libc_nlm name 'syslog';
 | 
						||
 | 
						||
 | 
						||
 | 
						||
// thread.h
 | 
						||
 | 
						||
  const
 | 
						||
     THR_BOUND = $00000080;
 | 
						||
     THR_DETACHED = PTHREAD_CREATE_DETACHED;
 | 
						||
     THR_NEW_LWP = $FFFFFFFE;
 | 
						||
     THR_SUSPENDED = $00000020;
 | 
						||
     THR_DAEMON = $00000040;
 | 
						||
 | 
						||
 | 
						||
{ type definitions...  }
 | 
						||
type
 | 
						||
 | 
						||
//!!   Pthread_t = ^thread_t;
 | 
						||
   thread_t = pthread_t;
 | 
						||
 | 
						||
//!!   Pthread_key_t = ^thread_key_t;
 | 
						||
   thread_key_t = pthread_key_t;
 | 
						||
{ prototypes...  }
 | 
						||
 | 
						||
type TThrStartRoutine = function (_para1:pointer):pointer; cdecl;
 | 
						||
function thr_create(stack_based:pointer; stack_size:size_t;
 | 
						||
           start_routine:TThrStartRoutine; arg:pointer; flags:longint;
 | 
						||
           new_thr:Pthread_t):longint;cdecl;external libc_nlm name 'thr_create';
 | 
						||
function thr_self:thread_t;cdecl;external libc_nlm name 'thr_self';
 | 
						||
function thr_suspend(thr:thread_t):longint;cdecl;external libc_nlm name 'thr_suspend';
 | 
						||
function thr_continue(thr:thread_t):longint;cdecl;external libc_nlm name 'thr_continue';
 | 
						||
function thr_join(wait_for:thread_t; dead:Pthread_t; status:Ppointer):longint;cdecl;external libc_nlm name 'thr_join';
 | 
						||
procedure thr_yield;cdecl;external libc_nlm name 'thr_yield';
 | 
						||
procedure thr_exit(status:pointer);cdecl;external libc_nlm name 'thr_exit';
 | 
						||
function thr_minstack:size_t;cdecl;external libc_nlm name 'thr_minstack';
 | 
						||
function thr_kill(thr:thread_t; sig:longint):longint;cdecl;external libc_nlm name 'thr_kill';
 | 
						||
 | 
						||
function thr_sigsetmask(how:longint; _set:Psigset_t; oset:Psigset_t):longint;cdecl;external libc_nlm name 'thr_sigsetmask';
 | 
						||
function thr_getconcurrency:longint;cdecl;external libc_nlm name 'thr_getconcurrency';
 | 
						||
function thr_setconcurrency(new_level:longint):longint;cdecl;external libc_nlm name 'thr_setconcurrency';
 | 
						||
function thr_getprio(thr:thread_t; pri:Plongint):longint;cdecl;external libc_nlm name 'thr_getprio';
 | 
						||
function thr_setprio(thr:thread_t; pri:longint):longint;cdecl;external libc_nlm name 'thr_setprio';
 | 
						||
function thr_keycreate(key:Pthread_key_t; _destructor:TCDeclProc1PtrArg):longint;cdecl;external libc_nlm name 'thr_keycreate';
 | 
						||
function thr_getspecific(key:thread_key_t; value:Ppointer):longint;cdecl;external libc_nlm name 'thr_getspecific';
 | 
						||
function thr_setspecific(key:thread_key_t; value:pointer):longint;cdecl;external libc_nlm name 'thr_setspecific';
 | 
						||
 | 
						||
// utf8.h
 | 
						||
 | 
						||
type
 | 
						||
   Putf8_t = ^utf8_t;
 | 
						||
   utf8_t = byte;
 | 
						||
   PPutf8_t = ^Putf8_t;
 | 
						||
// var __utf8width : array of byte;cvar;external;
 | 
						||
{ prototypes...  }
 | 
						||
 | 
						||
 | 
						||
function utf8width(ch:Putf8_t):size_t;cdecl;external libc_nlm name 'utf8width';
 | 
						||
function utf8cat(tgt:Putf8_t; src:Putf8_t):Putf8_t;cdecl;external libc_nlm name 'utf8cat';
 | 
						||
function utf8chr(_string:Putf8_t; ch:Putf8_t):Putf8_t;cdecl;external libc_nlm name 'utf8chr';
 | 
						||
function utf8cmp(s1:Putf8_t; s2:Putf8_t):longint;cdecl;external libc_nlm name 'utf8cmp';
 | 
						||
function utf8cpy(tgt:Putf8_t; src:Putf8_t):Putf8_t;cdecl;external libc_nlm name 'utf8cpy';
 | 
						||
function utf8cspn(_string:Putf8_t; charset:Putf8_t):size_t;cdecl;external libc_nlm name 'utf8cspn';
 | 
						||
function utf8dup(s:Putf8_t):Putf8_t;cdecl;external libc_nlm name 'utf8dup';
 | 
						||
function utf8index(_string:Putf8_t; search:Putf8_t):Putf8_t;cdecl;external libc_nlm name 'utf8index';
 | 
						||
function utf8len(_string:Putf8_t):size_t;cdecl;external libc_nlm name 'utf8len';
 | 
						||
{$ifndef DisableArrayOfConst}
 | 
						||
function utf8list(tgt:Putf8_t; s1:Putf8_t; args:array of const):Putf8_t;cdecl;external libc_nlm name 'utf8list';
 | 
						||
{$endif}
 | 
						||
function utf8list(tgt:Putf8_t; s1:Putf8_t):Putf8_t;cdecl;external libc_nlm name 'utf8list';
 | 
						||
function utf8lwr(_string:Putf8_t):Putf8_t;cdecl;external libc_nlm name 'utf8lwr';
 | 
						||
function utf8ncat(tgt:Putf8_t; src:Putf8_t; n:size_t):Putf8_t;cdecl;external libc_nlm name 'utf8ncat';
 | 
						||
function utf8ncmp(s1:Putf8_t; s2:Putf8_t; n:size_t):longint;cdecl;external libc_nlm name 'utf8ncmp';
 | 
						||
function utf8ncpy(tgt:Putf8_t; src:Putf8_t; n:size_t):Putf8_t;cdecl;external libc_nlm name 'utf8ncpy';
 | 
						||
function utf8next(_string:Putf8_t):Putf8_t;cdecl;external libc_nlm name 'utf8next';
 | 
						||
function utf8nlen(_string:Putf8_t; nbytes:size_t):size_t;cdecl;external libc_nlm name 'utf8nlen';
 | 
						||
function utf8nset(base:Putf8_t; ch:Putf8_t; n:size_t):Putf8_t;cdecl;external libc_nlm name 'utf8nset';
 | 
						||
function utf8pbrk(s1:Putf8_t; s2:Putf8_t):Putf8_t;cdecl;external libc_nlm name 'utf8pbrk';
 | 
						||
function utf8prev(_string:Putf8_t):Putf8_t;cdecl;external libc_nlm name 'utf8prev';
 | 
						||
function utf8rchr(_string:Putf8_t; ch:Putf8_t):Putf8_t;cdecl;external libc_nlm name 'utf8rchr';
 | 
						||
function utf8rev(_string:Putf8_t):Putf8_t;cdecl;external libc_nlm name 'utf8rev';
 | 
						||
function utf8size(_string:Putf8_t):size_t;cdecl;external libc_nlm name 'utf8size';
 | 
						||
function utf8spn(_string:Putf8_t; charset:Putf8_t):size_t;cdecl;external libc_nlm name 'utf8spn';
 | 
						||
function utf8str(as1:Putf8_t; as2:Putf8_t):Putf8_t;cdecl;external libc_nlm name 'utf8str';
 | 
						||
function utf8tolower(_string:Putf8_t; dest:Putf8_t):Putf8_t;cdecl;external libc_nlm name 'utf8tolower';
 | 
						||
function utf8tok_r(_string:Putf8_t; sepset:Putf8_t; lasts:PPutf8_t):Putf8_t;cdecl;external libc_nlm name 'utf8tok_r';
 | 
						||
function utf8toupper(_string:Putf8_t; dest:Putf8_t):Putf8_t;cdecl;external libc_nlm name 'utf8toupper';
 | 
						||
function utf8upr(_string:Putf8_t):Putf8_t;cdecl;external libc_nlm name 'utf8upr';
 | 
						||
function isutf8ascii(_string:Putf8_t):longint;cdecl;external libc_nlm name 'isutf8ascii';
 | 
						||
function isutf8digit(_string:Putf8_t):longint;cdecl;external libc_nlm name 'isutf8digit';
 | 
						||
function isutf8xdigit(_string:Putf8_t):longint;cdecl;external libc_nlm name 'isutf8xdigit';
 | 
						||
function isutf8space(_string:Putf8_t):longint;cdecl;external libc_nlm name 'isutf8space';
 | 
						||
function isutf8alnum(_string:Putf8_t):longint;cdecl;external libc_nlm name 'isutf8alnum';
 | 
						||
function isutf8alpha(_string:Putf8_t):longint;cdecl;external libc_nlm name 'isutf8alpha';
 | 
						||
function isutf8lower(_string:Putf8_t):longint;cdecl;external libc_nlm name 'isutf8lower';
 | 
						||
function isutf8upper(_string:Putf8_t):longint;cdecl;external libc_nlm name 'isutf8upper';
 | 
						||
 | 
						||
 | 
						||
// utime.h
 | 
						||
{ turn on 1-byte packing...  }
 | 
						||
 | 
						||
{ access time  }
 | 
						||
{ modification time  }
 | 
						||
type
 | 
						||
   Putimbuf = ^Tutimbuf;
 | 
						||
   Tutimbuf = record
 | 
						||
        actime  : time_t;
 | 
						||
        modtime : time_t;
 | 
						||
     end;
 | 
						||
   utimbuf = Tutimbuf;
 | 
						||
 | 
						||
(** unsupported pragma#pragma pack()*)
 | 
						||
 | 
						||
 | 
						||
 | 
						||
function utime(path:Pchar; times:Putimbuf):longint;cdecl;external libc_nlm name 'utime';
 | 
						||
function utime(path:Pchar; var times:Tutimbuf):longint;cdecl;external libc_nlm name 'utime';
 | 
						||
 | 
						||
 | 
						||
// utsname.h
 | 
						||
// wctype.h
 | 
						||
type
 | 
						||
   Pwctype_t = ^wctype_t;
 | 
						||
   wctype_t =  Longint;
 | 
						||
Const
 | 
						||
   WCTYPE_UNDEF = 0;
 | 
						||
   WCTYPE_ALNUM = 1;
 | 
						||
   WCTYPE_ALPHA = 2;
 | 
						||
   WCTYPE_BLANK = 3;
 | 
						||
   WCTYPE_CNTRL = 4;
 | 
						||
   WCTYPE_DIGIT = 5;
 | 
						||
   WCTYPE_GRAPH = 6;
 | 
						||
   WCTYPE_LOWER = 7;
 | 
						||
   WCTYPE_PRINT = 8;
 | 
						||
   WCTYPE_PUNCT = 9;
 | 
						||
   WCTYPE_SPACE = 10;
 | 
						||
   WCTYPE_UPPER = 11;
 | 
						||
   WCTYPE_XDIGIT = 12;
 | 
						||
 | 
						||
type
 | 
						||
   Pwctrans_t = ^wctrans_t;
 | 
						||
   wctrans_t = wchar_t;
 | 
						||
 | 
						||
function iswalnum(_para1:wint_t):longint;cdecl;external libc_nlm name 'iswalnum';
 | 
						||
function iswalpha(_para1:wint_t):longint;cdecl;external libc_nlm name 'iswalpha';
 | 
						||
function iswblank(_para1:wint_t):longint;cdecl;external libc_nlm name 'iswblank';
 | 
						||
function iswcntrl(_para1:wint_t):longint;cdecl;external libc_nlm name 'iswcntrl';
 | 
						||
function iswdigit(_para1:wint_t):longint;cdecl;external libc_nlm name 'iswdigit';
 | 
						||
function iswgraph(_para1:wint_t):longint;cdecl;external libc_nlm name 'iswgraph';
 | 
						||
function iswlower(_para1:wint_t):longint;cdecl;external libc_nlm name 'iswlower';
 | 
						||
function iswprint(_para1:wint_t):longint;cdecl;external libc_nlm name 'iswprint';
 | 
						||
function iswpunct(_para1:wint_t):longint;cdecl;external libc_nlm name 'iswpunct';
 | 
						||
function iswspace(_para1:wint_t):longint;cdecl;external libc_nlm name 'iswspace';
 | 
						||
function iswupper(_para1:wint_t):longint;cdecl;external libc_nlm name 'iswupper';
 | 
						||
function iswxdigit(_para1:longint):longint;cdecl;external libc_nlm name 'iswxdigit';
 | 
						||
function towlower(_para1:wint_t):wint_t;cdecl;external libc_nlm name 'towlower';
 | 
						||
function towupper(_para1:wint_t):wint_t;cdecl;external libc_nlm name 'towupper';
 | 
						||
function iswctype(_para1:wint_t; _para2:wctype_t):longint;cdecl;external libc_nlm name 'iswctype';
 | 
						||
 | 
						||
function wctype(_para1:Pchar):wctype_t;cdecl;external libc_nlm name 'wctype';
 | 
						||
function towctrans(_para1:wint_t; _para2:wctrans_t):wint_t;cdecl;external libc_nlm name 'towctrans';
 | 
						||
 | 
						||
function wctrans(_para1:Pchar):wctrans_t;cdecl;external libc_nlm name 'wctrans';
 | 
						||
function iswascii(_para1:wint_t):longint;cdecl;external libc_nlm name 'iswascii';
 | 
						||
 | 
						||
 | 
						||
// windows.h
 | 
						||
 | 
						||
 | 
						||
  const
 | 
						||
     DLL_ACTUAL_DLLMAIN = 0;
 | 
						||
     DLL_NLM_STARTUP = 1;        { start-up, 'lpvReserved' is NLM handle  }
 | 
						||
     DLL_NLM_SHUTDOWN = 2;       { unload, 'lpvReserved' is NLM handle    }
 | 
						||
     { standard DllMain() messages...  }
 | 
						||
     DLL_PROCESS_ATTACH = 3;     { DLL "loaded" into application space    }
 | 
						||
     DLL_THREAD_ATTACH = 4;      { application creating new thread        }
 | 
						||
     DLL_THREAD_DETACH = 5;      { application thread exiting cleanly     }
 | 
						||
     DLL_PROCESS_DETACH = 6;     { DLL "unloaded" from application space  }
 | 
						||
     TLS_MINIMUM_AVAILABLE = 64; { minumum number of keys available       }
 | 
						||
 | 
						||
 | 
						||
type
 | 
						||
 | 
						||
   PLPVOID = ^LPVOID;
 | 
						||
   LPVOID = void;
 | 
						||
 | 
						||
   PBOOL = ^BOOL;
 | 
						||
   BOOL = longint;
 | 
						||
 | 
						||
   PHMODULE = ^HMODULE;
 | 
						||
   //HMODULE = void;
 | 
						||
 | 
						||
   PLPCTSTR = ^LPCTSTR;
 | 
						||
   LPCTSTR = char;
 | 
						||
 | 
						||
   _PHINSTANCE = ^_HINSTANCE;
 | 
						||
   _HINSTANCE = void;
 | 
						||
{ Win32 DLL solutions for dynamic NLM libraries on NetWare...  }
 | 
						||
 | 
						||
function GetLastError:dword;cdecl;external libc_nlm name 'GetLastError';
 | 
						||
procedure SetLastError(dwErrCode:dword);cdecl;external libc_nlm name 'SetLastError';
 | 
						||
function FreeLibrary(hModule:HMODULE):BOOL;cdecl;external libc_nlm name 'FreeLibrary';
 | 
						||
function LoadLibrary(lpFileName:LPCTSTR):HMODULE;cdecl;external libc_nlm name 'LoadLibrary';
 | 
						||
{
 | 
						||
** Prototype for libraries writing their own start-up and shut-down code.
 | 
						||
** This is not an interface, but only a prototype for code furnished by the
 | 
						||
** NLM library.
 | 
						||
 }
 | 
						||
function DllMain(hinstDLL:_HINSTANCE; fdwReason:dword; lpvReserve:LPVOID):BOOL;cdecl;external libc_nlm name 'DllMain';
 | 
						||
 | 
						||
 | 
						||
// xmalloc.h
 | 
						||
 | 
						||
function xcalloc(_para1,_para2:size_t):pointer;cdecl;external libc_nlm name 'xcalloc';
 | 
						||
procedure xfree(_para1:pointer);cdecl;external libc_nlm name 'xfree';
 | 
						||
function xmalloc(_para1:size_t):pointer;cdecl;external libc_nlm name 'xmalloc';
 | 
						||
function xrealloc(_para1:pointer; _para2:size_t):pointer;cdecl;external libc_nlm name 'xrealloc';
 | 
						||
 | 
						||
 | 
						||
{$ifndef INCLUDED_FROM_SYSTEM}
 | 
						||
 | 
						||
implementation
 | 
						||
 | 
						||
function bisecond(var a : Tdos_tm) : word;
 | 
						||
begin
 | 
						||
   bisecond:=(a.flag0 and bm_dos_tm_bisecond) shr bp_dos_tm_bisecond;
 | 
						||
end;
 | 
						||
 | 
						||
procedure set_bisecond(var a : Tdos_tm; __bisecond : word);
 | 
						||
begin
 | 
						||
   a.flag0:=a.flag0 or ((__bisecond shl bp_dos_tm_bisecond) and bm_dos_tm_bisecond);
 | 
						||
end;
 | 
						||
 | 
						||
function minute(var a : Tdos_tm) : word;
 | 
						||
begin
 | 
						||
   minute:=(a.flag0 and bm_dos_tm_minute) shr bp_dos_tm_minute;
 | 
						||
end;
 | 
						||
 | 
						||
procedure set_minute(var a : Tdos_tm; __minute : word);
 | 
						||
begin
 | 
						||
   a.flag0:=a.flag0 or ((__minute shl bp_dos_tm_minute) and bm_dos_tm_minute);
 | 
						||
end;
 | 
						||
 | 
						||
function hour(var a : Tdos_tm) : word;
 | 
						||
begin
 | 
						||
   hour:=(a.flag0 and bm_dos_tm_hour) shr bp_dos_tm_hour;
 | 
						||
end;
 | 
						||
 | 
						||
procedure set_hour(var a : Tdos_tm; __hour : word);
 | 
						||
begin
 | 
						||
   a.flag0:=a.flag0 or ((__hour shl bp_dos_tm_hour) and bm_dos_tm_hour);
 | 
						||
end;
 | 
						||
 | 
						||
function day(var a : Tdos_tm) : word;
 | 
						||
begin
 | 
						||
   day:=(a.flag0 and bm_dos_tm_day) shr bp_dos_tm_day;
 | 
						||
end;
 | 
						||
 | 
						||
procedure set_day(var a : Tdos_tm; __day : word);
 | 
						||
begin
 | 
						||
   a.flag0:=a.flag0 or ((__day shl bp_dos_tm_day) and bm_dos_tm_day);
 | 
						||
end;
 | 
						||
 | 
						||
function month(var a : Tdos_tm) : word;
 | 
						||
begin
 | 
						||
   month:=(a.flag0 and bm_dos_tm_month) shr bp_dos_tm_month;
 | 
						||
end;
 | 
						||
 | 
						||
procedure set_month(var a : Tdos_tm; __month : word);
 | 
						||
begin
 | 
						||
   a.flag0:=a.flag0 or ((__month shl bp_dos_tm_month) and bm_dos_tm_month);
 | 
						||
end;
 | 
						||
 | 
						||
function year(var a : Tdos_tm) : word;
 | 
						||
begin
 | 
						||
   year:=(a.flag0 and bm_dos_tm_year) shr bp_dos_tm_year;
 | 
						||
end;
 | 
						||
 | 
						||
procedure set_year(var a : Tdos_tm; __year : word);
 | 
						||
begin
 | 
						||
   a.flag0:=a.flag0 or ((__year shl bp_dos_tm_year) and bm_dos_tm_year);
 | 
						||
end;
 | 
						||
 | 
						||
end.
 | 
						||
 | 
						||
{$endif}
 |