Browse Source

+ Initial implementation

michael 22 years ago
parent
commit
4bc085713f
100 changed files with 8224 additions and 0 deletions
  1. 1412 0
      packages/base/libc/Makefile
  2. 19 0
      packages/base/libc/Makefile.fpc
  3. 25 0
      packages/base/libc/README
  4. 6 0
      packages/base/libc/aineth.inc
  5. 117 0
      packages/base/libc/aioh.inc
  6. 28 0
      packages/base/libc/aliasesh.inc
  7. 8 0
      packages/base/libc/allocah.inc
  8. 155 0
      packages/base/libc/argph.inc
  9. 33 0
      packages/base/libc/argzh.inc
  10. 39 0
      packages/base/libc/asocketh.inc
  11. 14 0
      packages/base/libc/asockiosh.inc
  12. 261 0
      packages/base/libc/bconfnameh.inc
  13. 37 0
      packages/base/libc/bdirenth.inc
  14. 17 0
      packages/base/libc/bdlfcnh.inc
  15. 119 0
      packages/base/libc/bfcntlh.inc
  16. 55 0
      packages/base/libc/bfenvh.inc
  17. 99 0
      packages/base/libc/binh.inc
  18. 40 0
      packages/base/libc/bipch.inc
  19. 50 0
      packages/base/libc/bmmanh.inc
  20. 54 0
      packages/base/libc/bmsqh.inc
  21. 18 0
      packages/base/libc/bnetdbh.inc
  22. 23 0
      packages/base/libc/bpollh.inc
  23. 99 0
      packages/base/libc/bresourceh.inc
  24. 42 0
      packages/base/libc/bschedh.inc
  25. 88 0
      packages/base/libc/bselecth.inc
  26. 55 0
      packages/base/libc/bsemh.inc
  27. 75 0
      packages/base/libc/bshmh.inc
  28. 13 0
      packages/base/libc/bsockaddrh.inc
  29. 51 0
      packages/base/libc/bsocket.inc
  30. 251 0
      packages/base/libc/bsocketh.inc
  31. 41 0
      packages/base/libc/bstatfsh.inc
  32. 92 0
      packages/base/libc/bstath.inc
  33. 61 0
      packages/base/libc/bstatvfsh.inc
  34. 140 0
      packages/base/libc/bstroptsh.inc
  35. 193 0
      packages/base/libc/btermiosh.inc
  36. 33 0
      packages/base/libc/btimeh.inc
  37. 20 0
      packages/base/libc/buioh.inc
  38. 19 0
      packages/base/libc/bustath.inc
  39. 61 0
      packages/base/libc/butmph.inc
  40. 41 0
      packages/base/libc/butmpxh.inc
  41. 11 0
      packages/base/libc/butsnameh.inc
  42. 44 0
      packages/base/libc/bwaitflags.inc
  43. 13 0
      packages/base/libc/bwaitflagsh.inc
  44. 53 0
      packages/base/libc/bwaitstatus.inc
  45. 19 0
      packages/base/libc/bwaitstatush.inc
  46. 35 0
      packages/base/libc/crypth.inc
  47. 25 0
      packages/base/libc/ctypeh.inc
  48. 14 0
      packages/base/libc/dirent.inc
  49. 68 0
      packages/base/libc/direnth.inc
  50. 33 0
      packages/base/libc/dlfcnh.inc
  51. 20 0
      packages/base/libc/endianh.inc
  52. 17 0
      packages/base/libc/envzh.inc
  53. 15 0
      packages/base/libc/errh.inc
  54. 151 0
      packages/base/libc/errnoh.inc
  55. 9 0
      packages/base/libc/errorh.inc
  56. 47 0
      packages/base/libc/fcntlh.inc
  57. 27 0
      packages/base/libc/fenvh.inc
  58. 15 0
      packages/base/libc/fileh.inc
  59. 41 0
      packages/base/libc/fmtmsgh.inc
  60. 24 0
      packages/base/libc/fnmatchh.inc
  61. 37 0
      packages/base/libc/fstabh.inc
  62. 66 0
      packages/base/libc/gconfigh.inc
  63. 109 0
      packages/base/libc/gconvh.inc
  64. 34 0
      packages/base/libc/getopth.inc
  65. 9 0
      packages/base/libc/glibc_versionh.inc
  66. 87 0
      packages/base/libc/globh.inc
  67. 57 0
      packages/base/libc/glue.inc
  68. 45 0
      packages/base/libc/grph.inc
  69. 17 0
      packages/base/libc/h2p
  70. 10 0
      packages/base/libc/h2p1.sed
  71. 2 0
      packages/base/libc/h2p2.sed
  72. 16 0
      packages/base/libc/iconvh.inc
  73. 6 0
      packages/base/libc/igmph.inc
  74. 27 0
      packages/base/libc/ineth.inc
  75. 15 0
      packages/base/libc/inttypesh.inc
  76. 62 0
      packages/base/libc/ioctl_typesh.inc
  77. 62 0
      packages/base/libc/ioctlsh.inc
  78. 791 0
      packages/base/libc/kerneldefs.pp
  79. 192 0
      packages/base/libc/kernelioctl.pp
  80. 109 0
      packages/base/libc/kioctlsh.inc
  81. 375 0
      packages/base/libc/langinfoh.inc
  82. 29 0
      packages/base/libc/lib_namesh.inc
  83. 250 0
      packages/base/libc/libc.pp
  84. 11 0
      packages/base/libc/libgenh.inc
  85. 19 0
      packages/base/libc/libintlh.inc
  86. 83 0
      packages/base/libc/libio.inc
  87. 312 0
      packages/base/libc/libioh.inc
  88. 25 0
      packages/base/libc/limitsh.inc
  89. 12 0
      packages/base/libc/local_limh.inc
  90. 79 0
      packages/base/libc/localeh.inc
  91. 76 0
      packages/base/libc/malloch.inc
  92. 27 0
      packages/base/libc/mcheckh.inc
  93. 48 0
      packages/base/libc/mntenth.inc
  94. 13 0
      packages/base/libc/monetaryh.inc
  95. 22 0
      packages/base/libc/nashh.inc
  96. 10 0
      packages/base/libc/nath.inc
  97. 144 0
      packages/base/libc/nax25h.inc
  98. 34 0
      packages/base/libc/nech.inc
  99. 199 0
      packages/base/libc/netdbh.inc
  100. 18 0
      packages/base/libc/netherh.inc

+ 1412 - 0
packages/base/libc/Makefile

@@ -0,0 +1,1412 @@
+#
+# Don't edit, this file is generated by FPCMake Version 1.1 [2003/06/14]
+#
+default: all
+MAKEFILETARGETS=linux
+override PATH:=$(subst \,/,$(PATH))
+ifeq ($(findstring ;,$(PATH)),)
+inUnix=1
+SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
+else
+SEARCHPATH:=$(subst ;, ,$(PATH))
+endif
+PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
+ifeq ($(PWD),)
+PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
+ifeq ($(PWD),)
+$(error You need the GNU utils package to use this Makefile)
+else
+PWD:=$(firstword $(PWD))
+SRCEXEEXT=
+endif
+else
+PWD:=$(firstword $(PWD))
+SRCEXEEXT=.exe
+endif
+ifndef inUnix
+ifeq ($(OS),Windows_NT)
+inWinNT=1
+else
+ifdef OS2_SHELL
+inOS2=1
+endif
+endif
+else
+ifneq ($(findstring cygdrive,$(PATH)),)
+inCygWin=1
+endif
+endif
+ifeq ($(OS_TARGET),freebsd)
+BSDhier=1
+endif
+ifeq ($(OS_TARGET),netbsd)
+BSDhier=1
+endif
+ifeq ($(OS_TARGET),openbsd)
+BSDhier=1
+endif
+ifdef inUnix
+BATCHEXT=.sh
+else
+ifdef inOS2
+BATCHEXT=.cmd
+else
+BATCHEXT=.bat
+endif
+endif
+ifdef inUnix
+PATHSEP=/
+else
+PATHSEP:=$(subst /,\,/)
+ifdef inCygWin
+PATHSEP=/
+endif
+endif
+ifdef PWD
+BASEDIR:=$(subst \,/,$(shell $(PWD)))
+ifdef inCygWin
+ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
+BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
+BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
+BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
+endif
+endif
+else
+BASEDIR=.
+endif
+ifdef inOS2
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO=echo
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+endif
+override DEFAULT_FPCDIR=../../..
+ifndef FPC
+ifdef PP
+FPC=$(PP)
+endif
+endif
+ifndef FPC
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+FPC:=$(shell $(FPCPROG) -PB)
+ifneq ($(findstring Error,$(FPC)),)
+override FPC=ppc386
+endif
+else
+override FPC=ppc386
+endif
+endif
+override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
+override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
+ifndef FPC_VERSION
+FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
+FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
+endif
+export FPC FPC_VERSION FPC_COMPILERINFO
+unexport CHECKDEPEND ALLDEPENDENCIES
+ifndef CPU_TARGET
+ifdef CPU_TARGET_DEFAULT
+CPU_TARGET=$(CPU_TARGET_DEFAULT)
+endif
+endif
+ifndef OS_TARGET
+ifdef OS_TARGET_DEFAULT
+OS_TARGET=$(OS_TARGET_DEFAULT)
+endif
+endif
+ifneq ($(words $(FPC_COMPILERINFO)),5)
+FPC_COMPILERINFO+=$(shell $(FPC) -iSP)
+FPC_COMPILERINFO+=$(shell $(FPC) -iTP)
+FPC_COMPILERINFO+=$(shell $(FPC) -iSO)
+FPC_COMPILERINFO+=$(shell $(FPC) -iTO)
+endif
+ifndef CPU_SOURCE
+CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
+endif
+ifndef CPU_TARGET
+CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
+endif
+ifndef OS_SOURCE
+OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
+endif
+ifndef OS_TARGET
+OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
+endif
+FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifneq ($(FULL_TARGET),$(FULL_SOURCE))
+CROSSCOMPILE=1
+endif
+ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
+ifeq ($(findstring $(OS_TARGET),$(MAKEFILETARGETS)),)
+$(error The Makefile doesn't support target $(OS_TARGET), please run fpcmake first)
+endif
+endif
+export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE CROSSCOMPILE
+ifdef FPCDIR
+override FPCDIR:=$(subst \,/,$(FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=wrong
+endif
+else
+override FPCDIR=wrong
+endif
+ifdef DEFAULT_FPCDIR
+ifeq ($(FPCDIR),wrong)
+override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=wrong
+endif
+endif
+endif
+ifeq ($(FPCDIR),wrong)
+ifdef inUnix
+override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
+ifeq ($(wildcard $(FPCDIR)/units),)
+override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
+endif
+else
+override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=c:/pp
+endif
+endif
+endif
+endif
+ifndef CROSSDIR
+CROSSDIR:=$(FPCDIR)/cross/$(FULL_TARGET)
+endif
+ifndef CROSSTARGETDIR
+CROSSTARGETDIR=$(CROSSDIR)/$(FULL_TARGET)
+endif
+ifdef CROSSCOMPILE
+UNITSDIR:=$(wildcard $(CROSSTARGETDIR)/units)
+ifeq ($(UNITSDIR),)
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
+endif
+else
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
+endif
+PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
+override PACKAGE_NAME=libc
+override PACKAGE_VERSION=1.0.8
+override TARGET_UNITS+=kerneldefs kernelioctl libc
+override INSTALL_FPCPACKAGE=y
+ifdef REQUIRE_UNITSDIR
+override UNITSDIR+=$(REQUIRE_UNITSDIR)
+endif
+ifdef REQUIRE_PACKAGESDIR
+override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
+endif
+ifdef ZIPINSTALL
+ifeq ($(OS_TARGET),linux)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),freebsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),netbsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),openbsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),sunos)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),qnx)
+UNIXINSTALLDIR=1
+endif
+else
+ifeq ($(OS_SOURCE),linux)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_SOURCE),freebsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_SOURCE),netbsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_SOURCE),openbsd)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),sunos)
+UNIXINSTALLDIR=1
+endif
+ifeq ($(OS_TARGET),qnx)
+UNIXINSTALLDIR=1
+endif
+endif
+ifndef INSTALL_PREFIX
+ifdef PREFIX
+INSTALL_PREFIX=$(PREFIX)
+endif
+endif
+ifndef INSTALL_PREFIX
+ifdef UNIXINSTALLDIR
+INSTALL_PREFIX=/usr/local
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BASEDIR:=/pp
+else
+INSTALL_BASEDIR:=/$(PACKAGE_NAME)
+endif
+endif
+endif
+export INSTALL_PREFIX
+ifdef INSTALL_FPCSUBDIR
+export INSTALL_FPCSUBDIR
+endif
+ifndef DIST_DESTDIR
+DIST_DESTDIR:=$(BASEDIR)
+endif
+export DIST_DESTDIR
+ifndef INSTALL_BASEDIR
+ifdef UNIXINSTALLDIR
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
+else
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
+endif
+else
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)
+endif
+endif
+ifndef INSTALL_BINDIR
+ifdef UNIXINSTALLDIR
+INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
+else
+INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(OS_TARGET)
+endif
+endif
+endif
+ifndef INSTALL_UNITDIR
+ifdef CROSSCOMPILE
+INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/cross/$(FULL_TARGET)/units
+else
+INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(OS_TARGET)
+endif
+ifdef INSTALL_FPCPACKAGE
+ifdef PACKAGE_NAME
+INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
+endif
+endif
+endif
+ifndef INSTALL_LIBDIR
+ifdef UNIXINSTALLDIR
+INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
+else
+INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
+endif
+endif
+ifndef INSTALL_SOURCEDIR
+ifdef UNIXINSTALLDIR
+ifdef BSDhier
+SRCPREFIXDIR=share/src
+else
+SRCPREFIXDIR=src
+endif
+ifdef INSTALL_FPCPACKAGE
+ifdef INSTALL_FPCSUBDIR
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
+else
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+endif
+else
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+ifdef INSTALL_FPCSUBDIR
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
+else
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
+endif
+else
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
+endif
+endif
+endif
+ifndef INSTALL_DOCDIR
+ifdef UNIXINSTALLDIR
+ifdef BSDhier
+DOCPREFIXDIR=share/doc
+else
+DOCPREFIXDIR=doc
+endif
+ifdef INSTALL_FPCPACKAGE
+INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+else
+INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
+else
+INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
+endif
+endif
+endif
+ifndef INSTALL_EXAMPLEDIR
+ifdef UNIXINSTALLDIR
+ifdef INSTALL_FPCPACKAGE
+ifdef BSDhier
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
+endif
+else
+ifdef BSDhier
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
+endif
+endif
+endif
+ifndef INSTALL_DATADIR
+INSTALL_DATADIR=$(INSTALL_BASEDIR)
+endif
+ifdef CROSSCOMPILE
+ifndef CROSSBINDIR
+CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(FULL_SOURCE))
+ifeq ($(CROSSBINDIR),)
+CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(FULL_TARGET)/bin/$(FULL_SOURCE))
+endif
+endif
+else
+CROSSBINDIR=
+endif
+ifdef inUnix
+ifndef GCCLIBDIR
+GCCLIBDIR:=$(shell dirname `(gcc -v 2>&1)| head -n 1| awk '{ print $$4 } '`)
+endif
+ifeq ($(OS_TARGET),linux)
+ifndef OTHERLIBDIR
+OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
+endif
+endif
+ifeq ($(OS_TARGET),netbsd)
+OTHERLIBDIR+=/usr/pkg/lib
+endif
+export GCCLIBDIR OTHERLIB
+endif
+LOADEREXT=.as
+EXEEXT=.exe
+PPLEXT=.ppl
+PPUEXT=.ppu
+OEXT=.o
+ASMEXT=.s
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.so
+STATICLIBPREFIX=libp
+RSTEXT=.rst
+FPCMADE=fpcmade
+ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
+ifeq ($(OS_TARGET),go32v1)
+STATICLIBPREFIX=
+FPCMADE=fpcmade.v1
+PACKAGESUFFIX=v1
+endif
+ifeq ($(OS_TARGET),go32v2)
+STATICLIBPREFIX=
+FPCMADE=fpcmade.dos
+ZIPSUFFIX=go32
+endif
+ifeq ($(OS_TARGET),linux)
+EXEEXT=
+HASSHAREDLIB=1
+FPCMADE=fpcmade.lnx
+ZIPSUFFIX=linux
+endif
+ifeq ($(OS_TARGET),freebsd)
+EXEEXT=
+HASSHAREDLIB=1
+FPCMADE=fpcmade.freebsd
+ZIPSUFFIX=freebsd
+endif
+ifeq ($(OS_TARGET),netbsd)
+EXEEXT=
+HASSHAREDLIB=1
+FPCMADE=fpcmade.netbsd
+ZIPSUFFIX=netbsd
+endif
+ifeq ($(OS_TARGET),openbsd)
+EXEEXT=
+HASSHAREDLIB=1
+FPCMADE=fpcmade.openbsd
+ZIPSUFFIX=openbsd
+endif
+ifeq ($(OS_TARGET),win32)
+SHAREDLIBEXT=.dll
+FPCMADE=fpcmade.w32
+ZIPSUFFIX=w32
+endif
+ifeq ($(OS_TARGET),os2)
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+FPCMADE=fpcmade.os2
+ZIPSUFFIX=os2
+ECHO=echo
+endif
+ifeq ($(OS_TARGET),emx)
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+FPCMADE=fpcmade.emx
+ZIPSUFFIX=emx
+ECHO=echo
+endif
+ifeq ($(OS_TARGET),amiga)
+EXEEXT=
+SHAREDLIBEXT=.library
+FPCMADE=fpcmade.amg
+endif
+ifeq ($(OS_TARGET),atari)
+EXEEXT=.ttp
+FPCMADE=fpcmade.ata
+endif
+ifeq ($(OS_TARGET),beos)
+EXEEXT=
+FPCMADE=fpcmade.be
+ZIPSUFFIX=be
+endif
+ifeq ($(OS_TARGET),sunos)
+EXEEXT=
+FPCMADE=fpcmade.sun
+ZIPSUFFIX=sun
+endif
+ifeq ($(OS_TARGET),qnx)
+EXEEXT=
+FPCMADE=fpcmade.qnx
+ZIPSUFFIX=qnx
+endif
+ifeq ($(OS_TARGET),netware)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+FPCMADE=fpcmade.nw
+ZIPSUFFIX=nw
+endif
+ifeq ($(OS_TARGET),macos)
+EXEEXT=
+FPCMADE=fpcmade.mcc
+endif
+ifeq ($(OS_TARGET),darwin)
+EXEEXT=
+HASSHAREDLIB=1
+FPCMADE=fpcmade.darwin
+ZIPSUFFIX=darwin
+endif
+else
+ifeq ($(OS_TARGET),go32v1)
+PPUEXT=.pp1
+OEXT=.o1
+ASMEXT=.s1
+SMARTEXT=.sl1
+STATICLIBEXT=.a1
+SHAREDLIBEXT=.so1
+STATICLIBPREFIX=
+FPCMADE=fpcmade.v1
+PACKAGESUFFIX=v1
+endif
+ifeq ($(OS_TARGET),go32v2)
+STATICLIBPREFIX=
+FPCMADE=fpcmade.dos
+ZIPSUFFIX=go32
+endif
+ifeq ($(OS_TARGET),linux)
+EXEEXT=
+HASSHAREDLIB=1
+FPCMADE=fpcmade.lnx
+ZIPSUFFIX=linux
+endif
+ifeq ($(OS_TARGET),freebsd)
+EXEEXT=
+HASSHAREDLIB=1
+FPCMADE=fpcmade.freebsd
+ZIPSUFFIX=freebsd
+endif
+ifeq ($(OS_TARGET),netbsd)
+EXEEXT=
+HASSHAREDLIB=1
+FPCMADE=fpcmade.netbsd
+ZIPSUFFIX=netbsd
+endif
+ifeq ($(OS_TARGET),openbsd)
+EXEEXT=
+HASSHAREDLIB=1
+FPCMADE=fpcmade.openbsd
+ZIPSUFFIX=openbsd
+endif
+ifeq ($(OS_TARGET),win32)
+PPUEXT=.ppw
+OEXT=.ow
+ASMEXT=.sw
+SMARTEXT=.slw
+STATICLIBEXT=.aw
+SHAREDLIBEXT=.dll
+FPCMADE=fpcmade.w32
+ZIPSUFFIX=w32
+endif
+ifeq ($(OS_TARGET),os2)
+PPUEXT=.ppo
+ASMEXT=.so2
+OEXT=.oo2
+AOUTEXT=.out
+SMARTEXT=.sl2
+STATICLIBPREFIX=
+STATICLIBEXT=.ao2
+SHAREDLIBEXT=.dll
+FPCMADE=fpcmade.os2
+ZIPSUFFIX=emx
+ECHO=echo
+endif
+ifeq ($(OS_TARGET),amiga)
+EXEEXT=
+PPUEXT=.ppu
+ASMEXT=.asm
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.library
+FPCMADE=fpcmade.amg
+endif
+ifeq ($(OS_TARGET),atari)
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+EXEEXT=.ttp
+FPCMADE=fpcmade.ata
+endif
+ifeq ($(OS_TARGET),beos)
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+EXEEXT=
+FPCMADE=fpcmade.be
+ZIPSUFFIX=be
+endif
+ifeq ($(OS_TARGET),sunos)
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+EXEEXT=
+FPCMADE=fpcmade.sun
+ZIPSUFFIX=sun
+endif
+ifeq ($(OS_TARGET),qnx)
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+EXEEXT=
+FPCMADE=fpcmade.qnx
+ZIPSUFFIX=qnx
+endif
+ifeq ($(OS_TARGET),netware)
+STATICLIBPREFIX=
+PPUEXT=.ppu
+OEXT=.o
+ASMEXT=.s
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.nlm
+FPCMADE=fpcmade.nw
+ZIPSUFFIX=nw
+EXEEXT=.nlm
+endif
+ifeq ($(OS_TARGET),macos)
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+EXEEXT=
+FPCMADE=fpcmade.mcc
+endif
+endif
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO=
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+ifndef DATE
+DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE=
+else
+DATE:=$(firstword $(DATE))
+endif
+else
+DATE:=$(firstword $(DATE))
+endif
+endif
+export DATE
+ifndef GINSTALL
+GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL=
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+endif
+export GINSTALL
+ifndef CPPROG
+CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(CPPROG),)
+CPPROG=
+else
+CPPROG:=$(firstword $(CPPROG))
+endif
+endif
+export CPPROG
+ifndef RMPROG
+RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(RMPROG),)
+RMPROG=
+else
+RMPROG:=$(firstword $(RMPROG))
+endif
+endif
+export RMPROG
+ifndef MVPROG
+MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MVPROG),)
+MVPROG=
+else
+MVPROG:=$(firstword $(MVPROG))
+endif
+endif
+export MVPROG
+ifndef ECHOREDIR
+ECHOREDIR:=$(subst /,$(PATHSEP),$(ECHO))
+endif
+ifndef COPY
+COPY:=$(CPPROG) -fp
+endif
+ifndef COPYTREE
+COPYTREE:=$(CPPROG) -rfp
+endif
+ifndef MOVE
+MOVE:=$(MVPROG) -f
+endif
+ifndef DEL
+DEL:=$(RMPROG) -f
+endif
+ifndef DELTREE
+DELTREE:=$(RMPROG) -rf
+endif
+ifndef INSTALL
+ifdef inUnix
+INSTALL:=$(GINSTALL) -c -m 644
+else
+INSTALL:=$(COPY)
+endif
+endif
+ifndef INSTALLEXE
+ifdef inUnix
+INSTALLEXE:=$(GINSTALL) -c -m 755
+else
+INSTALLEXE:=$(COPY)
+endif
+endif
+ifndef MKDIR
+MKDIR:=$(GINSTALL) -m 755 -d
+endif
+export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE=
+else
+PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+export PPUMOVE
+ifndef FPCMAKE
+FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(FPCMAKE),)
+FPCMAKE=
+else
+FPCMAKE:=$(firstword $(FPCMAKE))
+endif
+endif
+export FPCMAKE
+ifndef ZIPPROG
+ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ZIPPROG),)
+ZIPPROG=
+else
+ZIPPROG:=$(firstword $(ZIPPROG))
+endif
+endif
+export ZIPPROG
+ifndef TARPROG
+TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(TARPROG),)
+TARPROG=
+else
+TARPROG:=$(firstword $(TARPROG))
+endif
+endif
+export TARPROG
+ASNAME=as
+LDNAME=ld
+ARNAME=ar
+RCNAME=rc
+ifeq ($(OS_TARGET),win32)
+ASNAME=asw
+LDNAME=ldw
+ARNAME=arw
+endif
+ifndef ASPROG
+ifdef CROSSBINDIR
+ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
+else
+ASPROG=$(ASNAME)
+endif
+endif
+ifndef LDPROG
+ifdef CROSSBINDIR
+LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
+else
+LDPROG=$(LDNAME)
+endif
+endif
+ifndef RCPROG
+ifdef CROSSBINDIR
+RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
+else
+RCPROG=$(RCNAME)
+endif
+endif
+ifndef ARPROG
+ifdef CROSSBINDIR
+ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
+else
+ARPROG=$(ARNAME)
+endif
+endif
+AS=$(ASPROG)
+LD=$(LDPROG)
+RC=$(RCPROG)
+AR=$(ARPROG)
+PPAS=ppas$(BATCHEXT)
+ifdef inUnix
+LDCONFIG=ldconfig
+else
+LDCONFIG=
+endif
+ifdef DATE
+DATESTR:=$(shell $(DATE) +%Y%m%d)
+else
+DATESTR=
+endif
+ifndef UPXPROG
+ifeq ($(OS_TARGET),go32v2)
+UPXPROG:=1
+endif
+ifeq ($(OS_TARGET),win32)
+UPXPROG:=1
+endif
+ifdef UPXPROG
+UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(UPXPROG),)
+UPXPROG=
+else
+UPXPROG:=$(firstword $(UPXPROG))
+endif
+else
+UPXPROG=
+endif
+endif
+export UPXPROG
+ZIPOPT=-9
+ZIPEXT=.zip
+ifeq ($(USETAR),bz2)
+TAROPT=vI
+TAREXT=.tar.bz2
+else
+TAROPT=vz
+TAREXT=.tar.gz
+endif
+override REQUIRE_PACKAGES=rtl 
+ifeq ($(OS_TARGET),linux)
+ifeq ($(CPU_TARGET),i386)
+REQUIRE_PACKAGES_RTL=1
+endif
+endif
+ifeq ($(OS_TARGET),linux)
+ifeq ($(CPU_TARGET),m68k)
+REQUIRE_PACKAGES_RTL=1
+endif
+endif
+ifeq ($(OS_TARGET),linux)
+ifeq ($(CPU_TARGET),powerpc)
+REQUIRE_PACKAGES_RTL=1
+endif
+endif
+ifeq ($(OS_TARGET),linux)
+ifeq ($(CPU_TARGET),sparc)
+REQUIRE_PACKAGES_RTL=1
+endif
+endif
+ifeq ($(OS_TARGET),linux)
+ifeq ($(CPU_TARGET),x86_64)
+REQUIRE_PACKAGES_RTL=1
+endif
+endif
+ifdef REQUIRE_PACKAGES_RTL
+PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/$(OS_TARGET)/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_RTL),)
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/$(OS_TARGET)),)
+UNITDIR_RTL=$(PACKAGEDIR_RTL)/$(OS_TARGET)
+else
+UNITDIR_RTL=$(PACKAGEDIR_RTL)
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_RTL)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_RTL) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_RTL=
+UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_RTL),)
+UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
+else
+UNITDIR_RTL=
+endif
+endif
+ifdef UNITDIR_RTL
+override COMPILER_UNITDIR+=$(UNITDIR_RTL)
+endif
+endif
+ifndef NOCPUDEF
+override FPCOPTDEF=$(CPU_TARGET)
+endif
+ifneq ($(OS_TARGET),$(OS_SOURCE))
+override FPCOPT+=-T$(OS_TARGET)
+endif
+ifeq ($(OS_SOURCE),openbsd)
+override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
+endif
+ifdef UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
+endif
+ifdef LIBDIR
+override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
+endif
+ifdef OBJDIR
+override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
+endif
+ifdef INCDIR
+override FPCOPT+=$(addprefix -Fi,$(INCDIR))
+endif
+ifdef LINKSMART
+override FPCOPT+=-XX
+endif
+ifdef CREATESMART
+override FPCOPT+=-CX
+endif
+ifdef DEBUG
+override FPCOPT+=-gl
+override FPCOPTDEF+=DEBUG
+endif
+ifdef RELEASE
+ifeq ($(CPU_TARGET),i386)
+FPCCPUOPT:=-OG2p3
+else
+FPCCPUOPT:=
+endif
+override FPCOPT+=-Xs $(FPCCPUOPT) -n
+override FPCOPTDEF+=RELEASE
+endif
+ifdef STRIP
+override FPCOPT+=-Xs
+endif
+ifdef OPTIMIZE
+ifeq ($(CPU_TARGET),i386)
+override FPCOPT+=-OG2p3
+endif
+endif
+ifdef VERBOSE
+override FPCOPT+=-vwni
+endif
+ifdef COMPILER_OPTIONS
+override FPCOPT+=$(COMPILER_OPTIONS)
+endif
+ifdef COMPILER_UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
+endif
+ifdef COMPILER_LIBRARYDIR
+override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
+endif
+ifdef COMPILER_OBJECTDIR
+override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
+endif
+ifdef COMPILER_INCLUDEDIR
+override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
+endif
+ifdef CROSSBINDIR
+override FPCOPT+=-FD$(CROSSBINDIR)
+endif
+ifdef COMPILER_TARGETDIR
+override FPCOPT+=-FE$(COMPILER_TARGETDIR)
+ifeq ($(COMPILER_TARGETDIR),.)
+override TARGETDIRPREFIX=
+else
+override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
+endif
+endif
+ifdef COMPILER_UNITTARGETDIR
+override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
+ifeq ($(COMPILER_UNITTARGETDIR),.)
+override UNITTARGETDIRPREFIX=
+else
+override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
+endif
+else
+ifdef COMPILER_TARGETDIR
+override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
+override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
+endif
+endif
+ifeq ($(OS_TARGET),linux)
+ifeq ($(FPC_VERSION),1.0.6)
+override FPCOPTDEF+=HASUNIX
+endif
+endif
+ifdef GCCLIBDIR
+override FPCOPT+=-Fl$(GCCLIBDIR)
+endif
+ifdef OTHERLIBDIR
+override FPCOPT+=$(addprefix -Fl,$(OTHERLIBDIR))
+endif
+ifdef OPT
+override FPCOPT+=$(OPT)
+endif
+ifdef FPCOPTDEF
+override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
+endif
+ifdef CFGFILE
+override FPCOPT+=@$(CFGFILE)
+endif
+ifdef USEENV
+override FPCEXTCMD:=$(FPCOPT)
+override FPCOPT:=!FPCEXTCMD
+export FPCEXTCMD
+endif
+override COMPILER:=$(FPC) $(FPCOPT)
+ifeq (,$(findstring -s ,$(COMPILER)))
+EXECPPAS=
+else
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+EXECPPAS:=@$(PPAS)
+endif
+endif
+.PHONY: fpc_units
+ifdef TARGET_UNITS
+override ALLTARGET+=fpc_units
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))
+override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS))
+override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
+override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
+endif
+fpc_units: $(UNITPPUFILES)
+ifdef TARGET_RSTS
+override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
+override CLEANRSTFILES+=$(RSTFILES)
+endif
+.PHONY: fpc_all fpc_smart fpc_debug fpc_release
+$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
+	@$(ECHOREDIR) Compiled > $(FPCMADE)
+fpc_all: $(FPCMADE)
+fpc_smart:
+	$(MAKE) all LINKSMART=1 CREATESMART=1
+fpc_debug:
+	$(MAKE) all DEBUG=1
+fpc_release:
+	$(MAKE) all RELEASE=1
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp .rc .res
+%$(PPUEXT): %.pp
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(PPUEXT): %.pas
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(EXEEXT): %.pp
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(EXEEXT): %.pas
+	$(COMPILER) $<
+	$(EXECPPAS)
+%.res: %.rc
+	windres -i $< -o $@
+vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
+.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
+ifdef INSTALL_UNITS
+override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
+endif
+ifdef INSTALL_BUILDUNIT
+override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
+endif
+ifdef INSTALLPPUFILES
+override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
+override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPUFILES))
+override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPULINKFILES)))
+override INSTALL_CREATEPACKAGEFPC=1
+endif
+ifdef INSTALLEXEFILES
+override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(INSTALLEXEFILES))
+endif
+fpc_install: all $(INSTALLTARGET)
+ifdef INSTALLEXEFILES
+	$(MKDIR) $(INSTALL_BINDIR)
+ifdef UPXPROG
+	-$(UPXPROG) $(INSTALLEXEFILES)
+endif
+	$(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
+endif
+ifdef INSTALL_CREATEPACKAGEFPC
+ifdef FPCMAKE
+ifdef PACKAGE_VERSION
+ifneq ($(wildcard Makefile.fpc),)
+	$(FPCMAKE) -p -T$(OS_TARGET) Makefile.fpc
+	$(MKDIR) $(INSTALL_UNITDIR)
+	$(INSTALL) Package.fpc $(INSTALL_UNITDIR)
+endif
+endif
+endif
+endif
+ifdef INSTALLPPUFILES
+	$(MKDIR) $(INSTALL_UNITDIR)
+	$(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+	$(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
+endif
+ifneq ($(wildcard $(LIB_FULLNAME)),)
+	$(MKDIR) $(INSTALL_LIBDIR)
+	$(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
+ifdef inUnix
+	ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
+endif
+endif
+endif
+ifdef INSTALL_FILES
+	$(MKDIR) $(INSTALL_DATADIR)
+	$(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
+endif
+fpc_sourceinstall: distclean
+	$(MKDIR) $(INSTALL_SOURCEDIR)
+	$(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
+fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
+ifdef HASEXAMPLES
+	$(MKDIR) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef EXAMPLESOURCEFILES
+	$(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef TARGET_EXAMPLEDIRS
+	$(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
+endif
+.PHONY: fpc_distinstall
+fpc_distinstall: install exampleinstall
+.PHONY: fpc_zipinstall fpc_zipsourceinstall fpc_zipexampleinstall
+ifndef PACKDIR
+ifndef inUnix
+PACKDIR=$(BASEDIR)/../fpc-pack
+else
+PACKDIR=/tmp/fpc-pack
+endif
+endif
+ifndef ZIPNAME
+ifdef DIST_ZIPNAME
+ZIPNAME=$(DIST_ZIPNAME)
+else
+ZIPNAME=$(ZIPPREFIX)$(PACKAGE_NAME)$(ZIPSUFFIX)
+endif
+endif
+ifndef ZIPTARGET
+ifdef DIST_ZIPTARGET
+ZIPTARGET=DIST_ZIPTARGET
+else
+ZIPTARGET=install
+endif
+endif
+ifndef USEZIP
+ifdef inUnix
+USETAR=1
+endif
+endif
+ifndef inUnix
+USEZIPWRAPPER=1
+endif
+ifdef USEZIPWRAPPER
+ZIPPATHSEP=$(PATHSEP)
+ZIPWRAPPER=$(subst /,$(PATHSEP),$(DIST_DESTDIR)/fpczip$(BATCHEXT))
+else
+ZIPPATHSEP=/
+endif
+ZIPCMD_CDPACK:=cd $(subst /,$(ZIPPATHSEP),$(PACKDIR))
+ZIPCMD_CDBASE:=cd $(subst /,$(ZIPPATHSEP),$(BASEDIR))
+ifdef USETAR
+ZIPDESTFILE:=$(DIST_DESTDIR)/$(ZIPNAME)$(TAREXT)
+ZIPCMD_ZIP:=$(TARPROG) cf$(TAROPT) $(ZIPDESTFILE) *
+else
+ZIPDESTFILE:=$(DIST_DESTDIR)/$(ZIPNAME)$(ZIPEXT)
+ZIPCMD_ZIP:=$(subst /,$(ZIPPATHSEP),$(ZIPPROG)) -Dr $(ZIPOPT) $(ZIPDESTFILE) *
+endif
+fpc_zipinstall:
+	$(MAKE) $(ZIPTARGET) INSTALL_PREFIX=$(PACKDIR) ZIPINSTALL=1
+	$(MKDIR) $(DIST_DESTDIR)
+	$(DEL) $(ZIPDESTFILE)
+ifdef USEZIPWRAPPER
+ifneq ($(ECHOREDIR),echo)
+	$(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDPACK))" > $(ZIPWRAPPER)
+	$(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_ZIP))" >> $(ZIPWRAPPER)
+	$(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDBASE))" >> $(ZIPWRAPPER)
+else
+	echo $(ZIPCMD_CDPACK) > $(ZIPWRAPPER)
+	echo $(ZIPCMD_ZIP) >> $(ZIPWRAPPER)
+	echo $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER)
+endif
+ifdef inUnix
+	/bin/sh $(ZIPWRAPPER)
+else
+	$(ZIPWRAPPER)
+endif
+	$(DEL) $(ZIPWRAPPER)
+else
+	$(ZIPCMD_CDPACK) ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE)
+endif
+	$(DELTREE) $(PACKDIR)
+fpc_zipsourceinstall:
+	$(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall ZIPSUFFIX=src
+fpc_zipexampleinstall:
+ifdef HASEXAMPLES
+	$(MAKE) fpc_zipinstall ZIPTARGET=exampleinstall ZIPSUFFIX=exm
+endif
+fpc_zipdistinstall:
+	$(MAKE) fpc_zipinstall ZIPTARGET=distinstall
+.PHONY: fpc_clean fpc_cleanall fpc_distclean
+ifdef EXEFILES
+override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
+endif
+ifdef CLEAN_UNITS
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
+endif
+ifdef CLEANPPUFILES
+override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
+override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
+override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
+endif
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+ifdef CLEAN_FILES
+	-$(DEL) $(CLEAN_FILES)
+endif
+ifdef LIB_NAME
+	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
+endif
+	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+fpc_distclean: clean
+ifdef COMPILER_UNITTARGETDIR
+TARGETDIRCLEAN=fpc_clean
+endif
+fpc_cleanall: $(CLEANTARGET) $(TARGETDIRCLEAN)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+	-$(DELTREE) *$(SMARTEXT)
+	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+ifdef AOUTEXT
+	-$(DEL) *$(AOUTEXT)
+endif
+.PHONY: fpc_baseinfo
+override INFORULES+=fpc_baseinfo
+fpc_baseinfo:
+	@$(ECHO)
+	@$(ECHO)  == Package info ==
+	@$(ECHO)  Package Name..... $(PACKAGE_NAME)
+	@$(ECHO)  Package Version.. $(PACKAGE_VERSION)
+	@$(ECHO)
+	@$(ECHO)  == Configuration info ==
+	@$(ECHO)
+	@$(ECHO)  FPC.......... $(FPC)
+	@$(ECHO)  FPC Version.. $(FPC_VERSION)
+	@$(ECHO)  Source CPU... $(CPU_SOURCE)
+	@$(ECHO)  Target CPU... $(CPU_TARGET)
+	@$(ECHO)  Source OS.... $(OS_SOURCE)
+	@$(ECHO)  Target OS.... $(OS_TARGET)
+	@$(ECHO)  Full Source.. $(FULL_SOURCE)
+	@$(ECHO)  Full Target.. $(FULL_TARGET)
+	@$(ECHO)
+	@$(ECHO)  == Directory info ==
+	@$(ECHO)
+	@$(ECHO)  Required pkgs... $(REQUIRE_PACKAGES)
+	@$(ECHO)
+	@$(ECHO)  Basedir......... $(BASEDIR)
+	@$(ECHO)  FPCDir.......... $(FPCDIR)
+	@$(ECHO)  CrossBinDir..... $(CROSSBINDIR)
+	@$(ECHO)  UnitsDir........ $(UNITSDIR)
+	@$(ECHO)  PackagesDir..... $(PACKAGESDIR)
+	@$(ECHO)
+	@$(ECHO)  GCC library..... $(GCCLIBDIR)
+	@$(ECHO)  Other library... $(OTHERLIBDIR)
+	@$(ECHO)
+	@$(ECHO)  == Tools info ==
+	@$(ECHO)
+	@$(ECHO)  As........ $(AS)
+	@$(ECHO)  Ld........ $(LD)
+	@$(ECHO)  Ar........ $(AR)
+	@$(ECHO)  Rc........ $(RC)
+	@$(ECHO)
+	@$(ECHO)  Mv........ $(MVPROG)
+	@$(ECHO)  Cp........ $(CPPROG)
+	@$(ECHO)  Rm........ $(RMPROG)
+	@$(ECHO)  GInstall.. $(GINSTALL)
+	@$(ECHO)  Echo...... $(ECHO)
+	@$(ECHO)  Shell..... $(SHELL)
+	@$(ECHO)  Date...... $(DATE)
+	@$(ECHO)  FPCMake... $(FPCMAKE)
+	@$(ECHO)  PPUMove... $(PPUMOVE)
+	@$(ECHO)  Upx....... $(UPXPROG)
+	@$(ECHO)  Zip....... $(ZIPPROG)
+	@$(ECHO)
+	@$(ECHO)  == Object info ==
+	@$(ECHO)
+	@$(ECHO)  Target Loaders........ $(TARGET_LOADERS)
+	@$(ECHO)  Target Units.......... $(TARGET_UNITS)
+	@$(ECHO)  Target Implicit Units. $(TARGET_IMPLICITUNITS)
+	@$(ECHO)  Target Programs....... $(TARGET_PROGRAMS)
+	@$(ECHO)  Target Dirs........... $(TARGET_DIRS)
+	@$(ECHO)  Target Examples....... $(TARGET_EXAMPLES)
+	@$(ECHO)  Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
+	@$(ECHO)
+	@$(ECHO)  Clean Units......... $(CLEAN_UNITS)
+	@$(ECHO)  Clean Files......... $(CLEAN_FILES)
+	@$(ECHO)
+	@$(ECHO)  Install Units....... $(INSTALL_UNITS)
+	@$(ECHO)  Install Files....... $(INSTALL_FILES)
+	@$(ECHO)
+	@$(ECHO)  == Install info ==
+	@$(ECHO)
+	@$(ECHO)  DateStr.............. $(DATESTR)
+	@$(ECHO)  ZipPrefix............ $(ZIPPREFIX)
+	@$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)
+	@$(ECHO)  Install FPC Package.. $(INSTALL_FPCPACKAGE)
+	@$(ECHO)
+	@$(ECHO)  Install base dir..... $(INSTALL_BASEDIR)
+	@$(ECHO)  Install binary dir... $(INSTALL_BINDIR)
+	@$(ECHO)  Install library dir.. $(INSTALL_LIBDIR)
+	@$(ECHO)  Install units dir.... $(INSTALL_UNITDIR)
+	@$(ECHO)  Install source dir... $(INSTALL_SOURCEDIR)
+	@$(ECHO)  Install doc dir...... $(INSTALL_DOCDIR)
+	@$(ECHO)  Install example dir.. $(INSTALL_EXAMPLEDIR)
+	@$(ECHO)  Install data dir..... $(INSTALL_DATADIR)
+	@$(ECHO)
+	@$(ECHO)  Dist destination dir. $(DIST_DESTDIR)
+	@$(ECHO)  Dist zip name........ $(DIST_ZIPNAME)
+	@$(ECHO)
+.PHONY: fpc_info
+fpc_info: $(INFORULES)
+.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
+	fpc_makefile_dirs
+fpc_makefile:
+	$(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
+fpc_makefile_sub1:
+ifdef TARGET_DIRS
+	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
+endif
+ifdef TARGET_EXAMPLEDIRS
+	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
+endif
+fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
+fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
+fpc_makefiles: fpc_makefile fpc_makefile_dirs
+all: fpc_all
+debug: fpc_debug
+smart: fpc_smart
+release: fpc_release
+examples:
+shared:
+install: fpc_install
+sourceinstall: fpc_sourceinstall
+exampleinstall: fpc_exampleinstall
+distinstall: fpc_distinstall
+zipinstall: fpc_zipinstall
+zipsourceinstall: fpc_zipsourceinstall
+zipexampleinstall: fpc_zipexampleinstall
+zipdistinstall: fpc_zipdistinstall
+clean: fpc_clean
+distclean: fpc_distclean
+cleanall: fpc_cleanall
+info: fpc_info
+makefiles: fpc_makefiles
+.PHONY: all debug smart release examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles
+ifneq ($(wildcard fpcmake.loc),)
+include fpcmake.loc
+endif

+ 19 - 0
packages/base/libc/Makefile.fpc

@@ -0,0 +1,19 @@
+#
+#   Makefile.fpc for libc binding
+#
+
+[package]
+name=libc
+version=1.0.8
+
+[target]
+units=kerneldefs kernelioctl libc
+
+[require]
+libc=y
+
+[install]
+fpcpackage=y
+
+[default]
+fpcdir=../../..

+ 25 - 0
packages/base/libc/README

@@ -0,0 +1,25 @@
+This is the FPC translation of the C library header files.
+This unit is meant to
+- Give full access to the GNU libc library functionality.
+- Be compatible to Borland's Libc.pas unit.
+
+There will often exist 2 versions of a function call: one with a 
+pointer type argument - this is  the straight translation of a libc call.
+One is with a var/const argument, this is a more 'pascal' like call,
+which is usually also the way Borland did it.
+
+Each C header file has been translated to an .inc file. 
+The translation of header file xxx.h is named xxxh.inc. 
+If macros were converted, they are in a file xxx.inc
+
+All files are included in libc.pp and their origin is noted there.
+
+the file glue.inc is meant to form a bridge between the pascal
+and C types, and to take care of some problems in the ordering 
+of the header files.
+
+The translation was done on a SuSE 8.1 machine:
+Kernel version: 2.4.18
+glibc version: 2.3
+
+Michael.

+ 6 - 0
packages/base/libc/aineth.inc

@@ -0,0 +1,6 @@
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 117 - 0
packages/base/libc/aioh.inc

@@ -0,0 +1,117 @@
+
+
+type
+  Paiocb = ^aiocb;
+  aiocb = record
+       aio_fildes : longint;
+       aio_lio_opcode : longint;
+       aio_reqprio : longint;
+       aio_buf : pointer;
+       aio_nbytes : size_t;
+       aio_sigevent : sigevent;
+       __next_prio : Paiocb;
+       __abs_prio : longint;
+       __policy : longint;
+       __error_code : longint;
+       __return_value : __ssize_t;
+       aio_offset : __off_t;
+       __pad : array[0..((sizeof(__off64_t)) - (sizeof(__off_t)))-1] of char;
+       __unused : array[0..31] of char;
+    end;
+  PPaiocb = ^Paiocb;
+  
+  Paiocb64 = ^aiocb64;
+  aiocb64 = record
+       aio_fildes : longint;
+       aio_lio_opcode : longint;
+       aio_reqprio : longint;
+       aio_buf : pointer;
+       aio_nbytes : size_t;
+       aio_sigevent : sigevent;
+       __next_prio : Paiocb;
+       __abs_prio : longint;
+       __policy : longint;
+       __error_code : longint;
+       __return_value : __ssize_t;
+       aio_offset : __off64_t;
+       __unused : array[0..31] of char;
+    end;
+  PPaiocb64 = ^Paiocb64;
+   
+  Paioinit = ^aioinit;
+  aioinit = record
+       aio_threads : longint;
+       aio_num : longint;
+       aio_locks : longint;
+       aio_usedba : longint;
+       aio_debug : longint;
+       aio_numusers : longint;
+       aio_idle_time : longint;
+       aio_reserved : longint;
+    end;
+
+Const
+  AIO_CANCELED = 0;
+  AIO_NOTCANCELED = 1;
+  AIO_ALLDONE = 2;
+
+Const
+  LIO_READ = 0;
+  LIO_WRITE = 1;
+  LIO_NOP = 2;
+
+Const
+  LIO_WAIT = 0;
+  LIO_NOWAIT = 1;
+
+
+procedure aio_init(__init:Paioinit);cdecl;external clib name 'aio_init';
+function aio_read(__aiocbp:Paiocb):longint;cdecl;external clib name 'aio_read';
+function aio_write(__aiocbp:Paiocb):longint;cdecl;external clib name 'aio_write';
+function lio_listio(__mode:longint; __list:PPaiocb; __nent:longint; __sig:Psigevent):longint;cdecl;external clib name 'lio_listio';
+function aio_error(__aiocbp:Paiocb):longint;cdecl;external clib name 'aio_error';
+function aio_return(__aiocbp:Paiocb):__ssize_t;cdecl;external clib name 'aio_return';
+function aio_cancel(__fildes:longint; __aiocbp:Paiocb):longint;cdecl;external clib name 'aio_cancel';
+function aio_suspend(__list:array of Paiocb; __nent:longint; __timeout:Ptimespec):longint;cdecl;external clib name 'aio_suspend';
+function aio_fsync(__operation:longint; __aiocbp:Paiocb):longint;cdecl;external clib name 'aio_fsync';
+
+function aio_read64(__aiocbp:Paiocb64):longint;cdecl;external clib name 'aio_read64';
+function aio_write64(__aiocbp:Paiocb64):longint;cdecl;external clib name 'aio_write64';
+function lio_listio64(__mode:longint; __list:PPaiocb64; __nent:longint; __sig:Psigevent):longint;cdecl;external clib name 'lio_listio64';
+function aio_error64(__aiocbp:Paiocb64):longint;cdecl;external clib name 'aio_error64';
+function aio_return64(__aiocbp:Paiocb64):__ssize_t;cdecl;external clib name 'aio_return64';
+function aio_cancel64(__fildes:longint; __aiocbp:Paiocb64):longint;cdecl;external clib name 'aio_cancel64';
+function aio_suspend64(__list:array of Paiocb64; __nent:longint; __timeout:Ptimespec):longint;cdecl;external clib name 'aio_suspend64';
+function aio_fsync64(__operation:longint; __aiocbp:Paiocb64):longint;cdecl;external clib name 'aio_fsync64';
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TPAsyncIoCB = aiocb;
+  PAsyncIoCB = ^TPAsyncIoCB;
+  PPAsyncIoCB = ^PAsyncIoCB;
+
+  PAsyncIoCB64 = ^TAsyncIoCB64;
+  TAsyncIoCB64 = aiocb64;
+  PPAsyncIoCB64 = ^PAsyncIoCB64;
+
+procedure aio_init(const __init:aioinit);cdecl;external clib name 'aio_init';
+function aio_read(var __aiocbp:aiocb):longint;cdecl;external clib name 'aio_read';
+function aio_write(var __aiocbp:aiocb):longint;cdecl;external clib name 'aio_write';
+function lio_listio(__mode:longint; __list:PPaiocb; __nent:longint; var __sig:sigevent):longint;cdecl;external clib name 'lio_listio';
+function aio_error(const __aiocbp:aiocb):longint;cdecl;external clib name 'aio_error';
+function aio_return(var __aiocbp:aiocb):__ssize_t;cdecl;external clib name 'aio_return';
+function aio_cancel(__fildes:longint; var __aiocbp:aiocb):longint;cdecl;external clib name 'aio_cancel';
+function aio_suspend(__list: PPaiocb; __nent:longint; const __timeout:timespec):longint;cdecl;external clib name 'aio_suspend';
+function aio_fsync(__operation:longint;var __aiocbp:aiocb):longint;cdecl;external clib name 'aio_fsync';
+
+function aio_read64(const __aiocbp:aiocb64):longint;cdecl;external clib name 'aio_read64';
+function aio_write64(var __aiocbp: aiocb64):longint;cdecl;external clib name 'aio_write64';
+function lio_listio64(__mode:longint; __list:PPaiocb64; __nent:longint;var __sig:sigevent):longint;cdecl;external clib name 'lio_listio64';
+function aio_error64(const __aiocbp:aiocb64):longint;cdecl;external clib name 'aio_error64';
+function aio_return64(var __aiocbp:aiocb64):__ssize_t;cdecl;external clib name 'aio_return64';
+function aio_cancel64(__fildes:longint; var __aiocbp:aiocb64):longint;cdecl;external clib name 'aio_cancel64';
+function aio_suspend64(__list:PPaiocb64; __nent:longint; const __timeout:timespec):longint;cdecl;external clib name 'aio_suspend64';
+function aio_fsync64(__operation:longint; var __aiocbp: aiocb64):longint;cdecl;external clib name 'aio_fsync64';

+ 28 - 0
packages/base/libc/aliasesh.inc

@@ -0,0 +1,28 @@
+
+type
+ Paliasent = ^aliasent;
+ aliasent = record
+   alias_name : Pchar;
+   alias_members_len : size_t;
+   alias_members : ^Pchar;
+   alias_local : longint;
+ end;
+ PPaliasent = ^Paliasent;
+
+procedure setaliasent;cdecl;external clib name 'setaliasent';
+procedure endaliasent;cdecl;external clib name 'endaliasent';
+function getaliasent:Paliasent;cdecl;external clib name 'getaliasent';
+function getaliasent_r(__result_buf:Paliasent; __buffer:Pchar; __buflen:size_t; __result:PPaliasent):longint;cdecl;external clib name 'getaliasent_r';
+function getaliasbyname(__name:Pchar):Paliasent;cdecl;external clib name 'getaliasbyname';
+function getaliasbyname_r(__name:Pchar; __result_buf:Paliasent; __buffer:Pchar; __buflen:size_t; __result:PPaliasent):longint;cdecl;external clib name 'getaliasbyname_r';
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TAliasEntry = aliasent;
+  PAliasEntry = ^TAliasEntry;
+
+function getaliasent_r(var __result_buf:aliasent; __buffer:Pchar; __buflen:size_t; var __result:Paliasent):longint;cdecl;external clib name 'getaliasent_r';
+function getaliasbyname_r(__name:Pchar; var __result_buf:aliasent; __buffer:Pchar; __buflen:size_t; var __result:Paliasent):longint;cdecl;external clib name 'getaliasbyname_r';

+ 8 - 0
packages/base/libc/allocah.inc

@@ -0,0 +1,8 @@
+
+function alloca(__size:size_t):pointer;cdecl;external clib name '__builtin_alloca';
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 155 - 0
packages/base/libc/argph.inc

@@ -0,0 +1,155 @@
+
+type
+   Pargp_option = ^argp_option;
+   argp_option = record
+        name : Pchar;
+        key : longint;
+        arg : Pchar;
+        flags : longint;
+        doc : Pchar;
+        group : longint;
+     end;
+
+
+const
+   OPTION_ARG_OPTIONAL = $1;
+   OPTION_HIDDEN = $2;
+   OPTION_ALIAS = $4;
+   OPTION_DOC = $8;
+   OPTION_NO_USAGE = $10;
+
+   ARGP_ERR_UNKNOWN = E2BIG;
+   ARGP_KEY_ARG = 0;
+   ARGP_KEY_ARGS = $1000006;
+   ARGP_KEY_END = $1000001;
+   ARGP_KEY_NO_ARGS = $1000002;
+   ARGP_KEY_INIT = $1000003;
+   ARGP_KEY_FINI = $1000007;
+   ARGP_KEY_SUCCESS = $1000004;
+   ARGP_KEY_ERROR = $1000005;
+
+   ARGP_KEY_HELP_PRE_DOC = $2000001;
+   ARGP_KEY_HELP_POST_DOC = $2000002;
+   ARGP_KEY_HELP_HEADER = $2000003;
+   ARGP_KEY_HELP_EXTRA = $2000004;
+   ARGP_KEY_HELP_DUP_ARGS_NOTE = $2000005;
+   ARGP_KEY_HELP_ARGS_DOC = $2000006;
+
+   ARGP_PARSE_ARGV0 = $01;
+   ARGP_NO_ERRS = $02;
+   ARGP_NO_ARGS = $04;
+   ARGP_IN_ORDER = $08;
+   ARGP_NO_HELP = $10;
+   ARGP_NO_EXIT = $20;
+   ARGP_LONG_ONLY = $40;
+   ARGP_SILENT = (ARGP_NO_EXIT or ARGP_NO_ERRS) or ARGP_NO_HELP;
+
+type
+  Pargp_state = ^argp_state;
+  Pargp_child = ^argp_child;
+    
+  argp_parser_t = function (key:longint; arg:Pchar; state:Pargp_state):error_t;cdecl;
+
+   Pargp = ^argp;
+   argp = record
+        options : Pargp_option;
+        parser : argp_parser_t;
+        args_doc : Pchar;
+        doc : Pchar;
+        children : Pargp_child;
+        help_filter : function (__key:longint; __text:Pchar; __input:pointer):Pchar;
+        argp_domain : Pchar;
+     end;
+
+
+   argp_child = record
+        argp : Pargp;
+        flags : longint;
+        header : Pchar;
+        group : longint;
+     end;
+
+   argp_state = record
+        root_argp : Pargp;
+        argc : longint;
+        argv : ^Pchar;
+        next : longint;
+        flags : dword;
+        arg_num : dword;
+        quoted : longint;
+        input : pointer;
+        child_inputs : ^pointer;
+        hook : pointer;
+        name : Pchar;
+        err_stream : PFILE;
+        out_stream : PFILE;
+        pstate : pointer;
+     end;
+
+type
+  TArgPProgramVersionHook = procedure(__stream: PFILE; __state: pargp_state); cdecl;
+  
+  
+
+function argp_parse(__argp:Pargp; __argc:longint; __argv:PPchar; __flags:dword; __arg_index:Plongint; 
+           __input:pointer):error_t;cdecl;external clib name 'argp_parse';
+function __argp_parse(__argp:Pargp; __argc:longint; __argv:PPchar; __flags:dword; __arg_index:Plongint; 
+           __input:pointer):error_t;cdecl;external clib name '__argp_parse';
+var
+  argp_program_version : Pchar;cvar;external;
+  argp_program_version_hook : TArgPProgramVersionHook;cvar;external;
+  argp_program_bug_address : Pchar;cvar;external;
+  argp_err_exit_status : error_t;cvar;external;
+
+const
+   ARGP_HELP_USAGE = $01;
+   ARGP_HELP_SHORT_USAGE = $02;
+   ARGP_HELP_SEE = $04;
+   ARGP_HELP_LONG = $08;
+   ARGP_HELP_PRE_DOC = $10;
+   ARGP_HELP_POST_DOC = $20;
+   ARGP_HELP_DOC = ARGP_HELP_PRE_DOC or ARGP_HELP_POST_DOC;
+   ARGP_HELP_BUG_ADDR = $40;
+   ARGP_HELP_LONG_ONLY = $80;
+   ARGP_HELP_EXIT_ERR = $100;
+   ARGP_HELP_EXIT_OK = $200;
+   ARGP_HELP_STD_ERR = ARGP_HELP_SEE or ARGP_HELP_EXIT_ERR;
+   ARGP_HELP_STD_USAGE = (ARGP_HELP_SHORT_USAGE or ARGP_HELP_SEE) or ARGP_HELP_EXIT_ERR;
+   ARGP_HELP_STD_HELP = (((ARGP_HELP_SHORT_USAGE or ARGP_HELP_LONG) or ARGP_HELP_EXIT_OK) or ARGP_HELP_DOC) or ARGP_HELP_BUG_ADDR;
+
+procedure argp_help(__argp:Pargp; __stream:PFILE; __flags:dword; __name:Pchar);cdecl;external clib name 'argp_help';
+procedure __argp_help(__argp:Pargp; __stream:PFILE; __flags:dword; __name:Pchar);cdecl;external clib name '__argp_help';
+procedure argp_state_help(__state:Pargp_state; __stream:PFILE; __flags:dword);cdecl;external clib name 'argp_state_help';
+procedure __argp_state_help(__state:Pargp_state; __stream:PFILE; __flags:dword);cdecl;external clib name '__argp_state_help';
+procedure argp_usage(__state:Pargp_state);cdecl;external clib name 'argp_usage';
+procedure __argp_usage(__state:Pargp_state);cdecl;external clib name '__argp_usage';
+procedure argp_error(__state:Pargp_state; __fmt:Pchar; args:array of const);cdecl;external clib name 'argp_error';
+procedure argp_error(__state:Pargp_state; __fmt:Pchar);cdecl;external clib name 'argp_error';
+procedure __argp_error(__state:Pargp_state; __fmt:Pchar; args:array of const);cdecl;external clib name '__argp_error';
+procedure __argp_error(__state:Pargp_state; __fmt:Pchar);cdecl;external clib name '__argp_error';
+procedure argp_failure(__state:Pargp_state; __status:longint; __errnum:longint; __fmt:Pchar; args:array of const);cdecl;external clib name 'argp_failure';
+procedure argp_failure(__state:Pargp_state; __status:longint; __errnum:longint; __fmt:Pchar);cdecl;external clib name 'argp_failure';
+procedure __argp_failure(__state:Pargp_state; __status:longint; __errnum:longint; __fmt:Pchar; args:array of const);cdecl;external clib name '__argp_failure';
+procedure __argp_failure(__state:Pargp_state; __status:longint; __errnum:longint; __fmt:Pchar);cdecl;external clib name '__argp_failure';
+function _option_is_short(__opt:Pargp_option):longint;cdecl;external clib name '_option_is_short';
+function __option_is_short(__opt:Pargp_option):longint;cdecl;external clib name '__option_is_short';
+function _option_is_end(__opt:Pargp_option):longint;cdecl;external clib name '_option_is_end';
+function __option_is_end(__opt:Pargp_option):longint;cdecl;external clib name '__option_is_end';
+function _argp_input(__argp:Pargp; __state:Pargp_state):pointer;cdecl;external clib name '_argp_input';
+function __argp_input(__argp:Pargp; __state:Pargp_state):pointer;cdecl;external clib name '__argp_input';
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TArgP = argp;
+
+  TArgPOption = argp_option;
+  PArgPOption = ^TArgPOption;
+
+  TArgPState = argp_state;
+  PArgPState = ^TArgPState;
+  TArgPChild = argp_child;
+  PArgPChild = ^TArgPChild;
+    

+ 33 - 0
packages/base/libc/argzh.inc

@@ -0,0 +1,33 @@
+
+
+type
+
+   Perror_t = ^error_t;
+
+function argz_create(__argv:PPchar; __argz:PPchar; __len:Psize_t):error_t;cdecl;external clib name 'argz_create';
+function argz_create_sep(__string:Pchar; __sep:longint; __argz:PPchar; __len:Psize_t):error_t;cdecl;external clib name 'argz_create_sep';
+function argz_count(__argz:Pchar; __len:size_t):size_t;cdecl;external clib name 'argz_count';
+procedure argz_extract(__argz:Pchar; __len:size_t; __argv:PPchar);cdecl;external clib name 'argz_extract';
+procedure argz_stringify(__argz:Pchar; __len:size_t; __sep:longint);cdecl;external clib name 'argz_stringify';
+function argz_append(__argz:PPchar; __argz_len:Psize_t; __buf:Pchar; __buf_len:size_t):error_t;cdecl;external clib name 'argz_append';
+function argz_add(__argz:PPchar; __argz_len:Psize_t; __str:Pchar):error_t;cdecl;external clib name 'argz_add';
+function argz_add_sep(__argz:PPchar; __argz_len:Psize_t; __string:Pchar; __delim:longint):error_t;cdecl;external clib name 'argz_add_sep';
+procedure argz_delete(__argz:PPchar; __argz_len:Psize_t; __entry:Pchar);cdecl;external clib name 'argz_delete';
+function argz_insert(__argz:PPchar; __argz_len:Psize_t; __before:Pchar; __entry:Pchar):error_t;cdecl;external clib name 'argz_insert';
+function argz_replace(__argz:PPchar; __argz_len:Psize_t; __str:Pchar; __with:Pchar; __replace_count:Pdword):error_t;cdecl;external clib name 'argz_replace';
+function argz_next(__argz:Pchar; __argz_len:size_t; __entry:Pchar):Pchar;cdecl;external clib name 'argz_next';
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  
+function argz_create(__argv:PPchar; var __argz: Pchar; var __len: size_t):error_t;cdecl;external clib name 'argz_create';
+function argz_create_sep(__string:Pchar; __sep:longint; var __argz: Pchar; var __len: size_t):error_t;cdecl;external clib name 'argz_create_sep';
+function argz_append(var __argz: Pchar; var __argz_len: size_t; __buf:Pchar; __buf_len:size_t):error_t;cdecl;external clib name 'argz_append';
+function argz_add(var __argz: Pchar; var __argz_len: size_t; __str:Pchar):error_t;cdecl;external clib name 'argz_add';
+function argz_add_sep(var __argz: Pchar; var __argz_len: size_t; __string:Pchar; __delim:longint):error_t;cdecl;external clib name 'argz_add_sep';
+procedure argz_delete(var __argz: Pchar; var __argz_len: size_t; __entry:Pchar);cdecl;external clib name 'argz_delete';
+function argz_insert(var __argz: Pchar; var __argz_len: size_t; __before:Pchar; __entry:Pchar):error_t;cdecl;external clib name 'argz_insert';
+function argz_replace(var __argz: Pchar; var __argz_len: size_t; __str:Pchar; __with:Pchar; __replace_count:Pdword):error_t;cdecl;external clib name 'argz_replace';

+ 39 - 0
packages/base/libc/asocketh.inc

@@ -0,0 +1,39 @@
+
+const
+   SOL_SOCKET = 1;
+   SO_DEBUG = 1;
+   SO_REUSEADDR = 2;
+   SO_TYPE = 3;
+   SO_ERROR = 4;
+   SO_DONTROUTE = 5;
+   SO_BROADCAST = 6;
+   SO_SNDBUF = 7;
+   SO_RCVBUF = 8;
+   SO_KEEPALIVE = 9;
+   SO_OOBINLINE = 10;
+   SO_NO_CHECK = 11;
+   SO_PRIORITY = 12;
+   SO_LINGER = 13;
+   SO_BSDCOMPAT = 14;
+   SO_PASSCRED = 16;
+   SO_PEERCRED = 17;
+   SO_RCVLOWAT = 18;
+   SO_SNDLOWAT = 19;
+   SO_RCVTIMEO = 20;
+   SO_SNDTIMEO = 21;
+   SO_SECURITY_AUTHENTICATION = 22;
+   SO_SECURITY_ENCRYPTION_TRANSPORT = 23;
+   SO_SECURITY_ENCRYPTION_NETWORK = 24;
+   SO_BINDTODEVICE = 25;
+   SO_ATTACH_FILTER = 26;
+   SO_DETACH_FILTER = 27;
+   SO_PEERNAME = 28;
+   SO_TIMESTAMP = 29;
+   SCM_TIMESTAMP = SO_TIMESTAMP;
+   SO_ACCEPTCONN = 30;
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 14 - 0
packages/base/libc/asockiosh.inc

@@ -0,0 +1,14 @@
+
+const
+   FIOSETOWN = $8901;
+   SIOCSPGRP = $8902;
+   FIOGETOWN = $8903;
+   SIOCGPGRP = $8904;
+   SIOCATMARK = $8905;
+   SIOCGSTAMP = $8906;
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 261 - 0
packages/base/libc/bconfnameh.inc

@@ -0,0 +1,261 @@
+
+Const
+     _PC_LINK_MAX = 0;
+     _PC_MAX_CANON = 1;
+     _PC_MAX_INPUT = 2;
+     _PC_NAME_MAX = 3;
+     _PC_PATH_MAX = 4;
+     _PC_PIPE_BUF = 5;
+     _PC_CHOWN_RESTRICTED = 6;
+     _PC_NO_TRUNC = 7;
+     _PC_VDISABLE = 8;
+     _PC_SYNC_IO = 9;
+     _PC_ASYNC_IO = 10;
+     _PC_PRIO_IO = 11;
+     _PC_SOCK_MAXBUF = 12;
+     _PC_FILESIZEBITS = 13;
+     _PC_REC_INCR_XFER_SIZE = 14;
+     _PC_REC_MAX_XFER_SIZE = 15;
+     _PC_REC_MIN_XFER_SIZE = 16;
+     _PC_REC_XFER_ALIGN = 17;
+     _PC_ALLOC_SIZE_MIN = 18;
+     _PC_SYMLINK_MAX = 19;
+
+   Const
+     _SC_ARG_MAX = 0;
+     _SC_CHILD_MAX = 1;
+     _SC_CLK_TCK = 2;
+     _SC_NGROUPS_MAX = 3;
+     _SC_OPEN_MAX = 4;
+     _SC_STREAM_MAX = 5;
+     _SC_TZNAME_MAX = 6;
+     _SC_JOB_CONTROL = 7;
+     _SC_SAVED_IDS = 8;
+     _SC_REALTIME_SIGNALS = 9;
+     _SC_PRIORITY_SCHEDULING = 10;
+     _SC_TIMERS = 11;
+     _SC_ASYNCHRONOUS_IO = 12;
+     _SC_PRIORITIZED_IO = 13;
+     _SC_SYNCHRONIZED_IO = 14;
+     _SC_FSYNC = 15;
+     _SC_MAPPED_FILES = 16;
+     _SC_MEMLOCK = 17;
+     _SC_MEMLOCK_RANGE = 18;
+     _SC_MEMORY_PROTECTION = 19;
+     _SC_MESSAGE_PASSING = 20;
+     _SC_SEMAPHORES = 21;
+     _SC_SHARED_MEMORY_OBJECTS = 22;
+     _SC_AIO_LISTIO_MAX = 23;
+     _SC_AIO_MAX = 24;
+     _SC_AIO_PRIO_DELTA_MAX = 25;
+     _SC_DELAYTIMER_MAX = 26;
+     _SC_MQ_OPEN_MAX = 27;
+     _SC_MQ_PRIO_MAX = 28;
+     _SC_VERSION = 29;
+     _SC_PAGESIZE = 30;
+     _SC_RTSIG_MAX = 31;
+     _SC_SEM_NSEMS_MAX = 32;
+     _SC_SEM_VALUE_MAX = 33;
+     _SC_SIGQUEUE_MAX = 34;
+     _SC_TIMER_MAX = 35;
+     _SC_BC_BASE_MAX = 36;
+     _SC_BC_DIM_MAX = 37;
+     _SC_BC_SCALE_MAX = 38;
+     _SC_BC_STRING_MAX = 39;
+     _SC_COLL_WEIGHTS_MAX = 40;
+     _SC_EQUIV_CLASS_MAX = 41;
+     _SC_EXPR_NEST_MAX = 42;
+     _SC_LINE_MAX = 43;
+     _SC_RE_DUP_MAX = 44;
+     _SC_CHARCLASS_NAME_MAX = 45;
+     _SC_2_VERSION = 46;
+     _SC_2_C_BIND = 47;
+     _SC_2_C_DEV = 48;
+     _SC_2_FORT_DEV = 49;
+     _SC_2_FORT_RUN = 50;
+     _SC_2_SW_DEV = 51;
+     _SC_2_LOCALEDEF = 52;
+     _SC_PII = 53;
+     _SC_PII_XTI = 54;
+     _SC_PII_SOCKET = 55;
+     _SC_PII_INTERNET = 56;
+     _SC_PII_OSI = 57;
+     _SC_POLL = 58;
+     _SC_SELECT = 59;
+     _SC_UIO_MAXIOV = 60;
+     _SC_IOV_MAX = _SC_UIO_MAXIOV;
+     _SC_PII_INTERNET_STREAM = (_SC_UIO_MAXIOV)+1;
+     _SC_PII_INTERNET_DGRAM = (_SC_UIO_MAXIOV)+2;
+     _SC_PII_OSI_COTS = (_SC_UIO_MAXIOV)+3;
+     _SC_PII_OSI_CLTS = (_SC_UIO_MAXIOV)+4;
+     _SC_PII_OSI_M = (_SC_UIO_MAXIOV)+5;
+     _SC_T_IOV_MAX = (_SC_UIO_MAXIOV)+6;
+     _SC_THREADS = (_SC_UIO_MAXIOV)+7;
+     _SC_THREAD_SAFE_FUNCTIONS = (_SC_UIO_MAXIOV)+8;
+     _SC_GETGR_R_SIZE_MAX = (_SC_UIO_MAXIOV)+9;
+     _SC_GETPW_R_SIZE_MAX = (_SC_UIO_MAXIOV)+10;
+     _SC_LOGIN_NAME_MAX = (_SC_UIO_MAXIOV)+11;
+     _SC_TTY_NAME_MAX = (_SC_UIO_MAXIOV)+12;
+     _SC_THREAD_DESTRUCTOR_ITERATIONS = (_SC_UIO_MAXIOV)+13;
+     _SC_THREAD_KEYS_MAX = (_SC_UIO_MAXIOV)+14;
+     _SC_THREAD_STACK_MIN = (_SC_UIO_MAXIOV)+15;
+     _SC_THREAD_THREADS_MAX = (_SC_UIO_MAXIOV)+16;
+     _SC_THREAD_ATTR_STACKADDR = (_SC_UIO_MAXIOV)+17;
+     _SC_THREAD_ATTR_STACKSIZE = (_SC_UIO_MAXIOV)+18;
+     _SC_THREAD_PRIORITY_SCHEDULING = (_SC_UIO_MAXIOV)+19;
+     _SC_THREAD_PRIO_INHERIT = (_SC_UIO_MAXIOV)+20;
+     _SC_THREAD_PRIO_PROTECT = (_SC_UIO_MAXIOV)+21;
+     _SC_THREAD_PROCESS_SHARED = (_SC_UIO_MAXIOV)+22;
+     _SC_NPROCESSORS_CONF = (_SC_UIO_MAXIOV)+23;
+     _SC_NPROCESSORS_ONLN = (_SC_UIO_MAXIOV)+24;
+     _SC_PHYS_PAGES = (_SC_UIO_MAXIOV)+25;
+     _SC_AVPHYS_PAGES = (_SC_UIO_MAXIOV)+26;
+     _SC_ATEXIT_MAX = (_SC_UIO_MAXIOV)+27;
+     _SC_PASS_MAX = (_SC_UIO_MAXIOV)+28;
+     _SC_XOPEN_VERSION = (_SC_UIO_MAXIOV)+29;
+     _SC_XOPEN_XCU_VERSION = (_SC_UIO_MAXIOV)+30;
+     _SC_XOPEN_UNIX = (_SC_UIO_MAXIOV)+31;
+     _SC_XOPEN_CRYPT = (_SC_UIO_MAXIOV)+32;
+     _SC_XOPEN_ENH_I18N = (_SC_UIO_MAXIOV)+33;
+     _SC_XOPEN_SHM = (_SC_UIO_MAXIOV)+34;
+     _SC_2_CHAR_TERM = (_SC_UIO_MAXIOV)+35;
+     _SC_2_C_VERSION = (_SC_UIO_MAXIOV)+36;
+     _SC_2_UPE = (_SC_UIO_MAXIOV)+37;
+     _SC_XOPEN_XPG2 = (_SC_UIO_MAXIOV)+38;
+     _SC_XOPEN_XPG3 = (_SC_UIO_MAXIOV)+39;
+     _SC_XOPEN_XPG4 = (_SC_UIO_MAXIOV)+40;
+     _SC_CHAR_BIT = (_SC_UIO_MAXIOV)+41;
+     _SC_CHAR_MAX = (_SC_UIO_MAXIOV)+42;
+     _SC_CHAR_MIN = (_SC_UIO_MAXIOV)+43;
+     _SC_INT_MAX = (_SC_UIO_MAXIOV)+44;
+     _SC_INT_MIN = (_SC_UIO_MAXIOV)+45;
+     _SC_LONG_BIT = (_SC_UIO_MAXIOV)+46;
+     _SC_WORD_BIT = (_SC_UIO_MAXIOV)+47;
+     _SC_MB_LEN_MAX = (_SC_UIO_MAXIOV)+48;
+     _SC_NZERO = (_SC_UIO_MAXIOV)+49;
+     _SC_SSIZE_MAX = (_SC_UIO_MAXIOV)+50;
+     _SC_SCHAR_MAX = (_SC_UIO_MAXIOV)+51;
+     _SC_SCHAR_MIN = (_SC_UIO_MAXIOV)+52;
+     _SC_SHRT_MAX = (_SC_UIO_MAXIOV)+53;
+     _SC_SHRT_MIN = (_SC_UIO_MAXIOV)+54;
+     _SC_UCHAR_MAX = (_SC_UIO_MAXIOV)+55;
+     _SC_UINT_MAX = (_SC_UIO_MAXIOV)+56;
+     _SC_ULONG_MAX = (_SC_UIO_MAXIOV)+57;
+     _SC_USHRT_MAX = (_SC_UIO_MAXIOV)+58;
+     _SC_NL_ARGMAX = (_SC_UIO_MAXIOV)+59;
+     _SC_NL_LANGMAX = (_SC_UIO_MAXIOV)+60;
+     _SC_NL_MSGMAX = (_SC_UIO_MAXIOV)+61;
+     _SC_NL_NMAX = (_SC_UIO_MAXIOV)+62;
+     _SC_NL_SETMAX = (_SC_UIO_MAXIOV)+63;
+     _SC_NL_TEXTMAX = (_SC_UIO_MAXIOV)+64;
+     _SC_XBS5_ILP32_OFF32 = (_SC_UIO_MAXIOV)+65;
+     _SC_XBS5_ILP32_OFFBIG = (_SC_UIO_MAXIOV)+66;
+     _SC_XBS5_LP64_OFF64 = (_SC_UIO_MAXIOV)+67;
+     _SC_XBS5_LPBIG_OFFBIG = (_SC_UIO_MAXIOV)+68;
+     _SC_XOPEN_LEGACY = (_SC_UIO_MAXIOV)+69;
+     _SC_XOPEN_REALTIME = (_SC_UIO_MAXIOV)+70;
+     _SC_XOPEN_REALTIME_THREADS = (_SC_UIO_MAXIOV)+71;
+     _SC_ADVISORY_INFO = (_SC_UIO_MAXIOV)+72;
+     _SC_BARRIERS = (_SC_UIO_MAXIOV)+73;
+     _SC_BASE = (_SC_UIO_MAXIOV)+74;
+     _SC_C_LANG_SUPPORT = (_SC_UIO_MAXIOV)+75;
+     _SC_C_LANG_SUPPORT_R = (_SC_UIO_MAXIOV)+76;
+     _SC_CLOCK_SELECTION = (_SC_UIO_MAXIOV)+77;
+     _SC_CPUTIME = (_SC_UIO_MAXIOV)+78;
+     _SC_THREAD_CPUTIME = (_SC_UIO_MAXIOV)+79;
+     _SC_DEVICE_IO = (_SC_UIO_MAXIOV)+80;
+     _SC_DEVICE_SPECIFIC = (_SC_UIO_MAXIOV)+81;
+     _SC_DEVICE_SPECIFIC_R = (_SC_UIO_MAXIOV)+82;
+     _SC_FD_MGMT = (_SC_UIO_MAXIOV)+83;
+     _SC_FIFO = (_SC_UIO_MAXIOV)+84;
+     _SC_PIPE = (_SC_UIO_MAXIOV)+85;
+     _SC_FILE_ATTRIBUTES = (_SC_UIO_MAXIOV)+86;
+     _SC_FILE_LOCKING = (_SC_UIO_MAXIOV)+87;
+     _SC_FILE_SYSTEM = (_SC_UIO_MAXIOV)+88;
+     _SC_MONOTONIC_CLOCK = (_SC_UIO_MAXIOV)+89;
+     _SC_MULTI_PROCESS = (_SC_UIO_MAXIOV)+90;
+     _SC_SINGLE_PROCESS = (_SC_UIO_MAXIOV)+91;
+     _SC_NETWORKING = (_SC_UIO_MAXIOV)+92;
+     _SC_READER_WRITER_LOCKS = (_SC_UIO_MAXIOV)+93;
+     _SC_SPIN_LOCKS = (_SC_UIO_MAXIOV)+94;
+     _SC_REGEXP = (_SC_UIO_MAXIOV)+95;
+     _SC_REGEX_VERSION = (_SC_UIO_MAXIOV)+96;
+     _SC_SHELL = (_SC_UIO_MAXIOV)+97;
+     _SC_SIGNALS = (_SC_UIO_MAXIOV)+98;
+     _SC_SPAWN = (_SC_UIO_MAXIOV)+99;
+     _SC_SPORADIC_SERVER = (_SC_UIO_MAXIOV)+100;
+     _SC_THREAD_SPORADIC_SERVER = (_SC_UIO_MAXIOV)+101;
+     _SC_SYSTEM_DATABASE = (_SC_UIO_MAXIOV)+102;
+     _SC_SYSTEM_DATABASE_R = (_SC_UIO_MAXIOV)+103;
+     _SC_TIMEOUTS = (_SC_UIO_MAXIOV)+104;
+     _SC_TYPED_MEMORY_OBJECTS = (_SC_UIO_MAXIOV)+105;
+     _SC_USER_GROUPS = (_SC_UIO_MAXIOV)+106;
+     _SC_USER_GROUPS_R = (_SC_UIO_MAXIOV)+107;
+     _SC_2_PBS = (_SC_UIO_MAXIOV)+108;
+     _SC_2_PBS_ACCOUNTING = (_SC_UIO_MAXIOV)+109;
+     _SC_2_PBS_LOCATE = (_SC_UIO_MAXIOV)+110;
+     _SC_2_PBS_MESSAGE = (_SC_UIO_MAXIOV)+111;
+     _SC_2_PBS_TRACK = (_SC_UIO_MAXIOV)+112;
+     _SC_SYMLOOP_MAX = (_SC_UIO_MAXIOV)+113;
+     _SC_STREAMS = (_SC_UIO_MAXIOV)+114;
+     _SC_2_PBS_CHECKPOINT = (_SC_UIO_MAXIOV)+115;
+     _SC_V6_ILP32_OFF32 = (_SC_UIO_MAXIOV)+116;
+     _SC_V6_ILP32_OFFBIG = (_SC_UIO_MAXIOV)+117;
+     _SC_V6_LP64_OFF64 = (_SC_UIO_MAXIOV)+118;
+     _SC_V6_LPBIG_OFFBIG = (_SC_UIO_MAXIOV)+119;
+     _SC_HOST_NAME_MAX = (_SC_UIO_MAXIOV)+120;
+     _SC_TRACE = (_SC_UIO_MAXIOV)+121;
+     _SC_TRACE_EVENT_FILTER = (_SC_UIO_MAXIOV)+122;
+     _SC_TRACE_INHERIT = (_SC_UIO_MAXIOV)+123;
+     _SC_TRACE_LOG = (_SC_UIO_MAXIOV)+124;
+
+   Const
+     _CS_PATH = 0;
+     _CS_LFS_CFLAGS = 1000;
+     _CS_LFS_LDFLAGS = 1001;
+     _CS_LFS_LIBS = 1002;
+     _CS_LFS_LINTFLAGS = 1003;
+     _CS_LFS64_CFLAGS = 1004;
+     _CS_LFS64_LDFLAGS = 1005;
+     _CS_LFS64_LIBS = 1006;
+     _CS_LFS64_LINTFLAGS = 1007;
+     _CS_XBS5_ILP32_OFF32_CFLAGS = 1100;
+     _CS_XBS5_ILP32_OFF32_LDFLAGS = 1101;
+     _CS_XBS5_ILP32_OFF32_LIBS = 1102;
+     _CS_XBS5_ILP32_OFF32_LINTFLAGS = 1103;
+     _CS_XBS5_ILP32_OFFBIG_CFLAGS = 1104;
+     _CS_XBS5_ILP32_OFFBIG_LDFLAGS = 1105;
+     _CS_XBS5_ILP32_OFFBIG_LIBS = 1106;
+     _CS_XBS5_ILP32_OFFBIG_LINTFLAGS = 1107;
+     _CS_XBS5_LP64_OFF64_CFLAGS = 1108;
+     _CS_XBS5_LP64_OFF64_LDFLAGS = 1109;
+     _CS_XBS5_LP64_OFF64_LIBS = 1110;
+     _CS_XBS5_LP64_OFF64_LINTFLAGS = 1111;
+     _CS_XBS5_LPBIG_OFFBIG_CFLAGS = 1112;
+     _CS_XBS5_LPBIG_OFFBIG_LDFLAGS = 1113;
+     _CS_XBS5_LPBIG_OFFBIG_LIBS = 1114;
+     _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS = 1115;
+     _CS_POSIX_V6_ILP32_OFF32_CFLAGS = 1116;
+     _CS_POSIX_V6_ILP32_OFF32_LDFLAGS = 1117;
+     _CS_POSIX_V6_ILP32_OFF32_LIBS = 1118;
+     _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS = 1119;
+     _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS = 1120;
+     _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS = 1121;
+     _CS_POSIX_V6_ILP32_OFFBIG_LIBS = 1122;
+     _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS = 1123;
+     _CS_POSIX_V6_LP64_OFF64_CFLAGS = 1124;
+     _CS_POSIX_V6_LP64_OFF64_LDFLAGS = 1125;
+     _CS_POSIX_V6_LP64_OFF64_LIBS = 1126;
+     _CS_POSIX_V6_LP64_OFF64_LINTFLAGS = 1127;
+     _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS = 1128;
+     _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS = 1129;
+     _CS_POSIX_V6_LPBIG_OFFBIG_LIBS = 1130;
+     _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS = 1131;
+     _CS_V6_WIDTH_RESTRICTED_ENVS = 1132;
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 37 - 0
packages/base/libc/bdirenth.inc

@@ -0,0 +1,37 @@
+
+type
+   Pdirent = ^dirent;
+   dirent = record
+        d_ino : __ino_t;
+        d_off : __off_t;
+        d_reclen : word;
+        d_type : byte;
+        d_name : array[0..255] of char;
+     end;
+
+type
+   Pdirent64 = ^dirent64;
+   dirent64 = record
+        d_ino : __ino64_t;
+        d_off : __off64_t;
+        d_reclen : word;
+        d_type : byte;
+        d_name : array[0..255] of char;
+     end;
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TDirEnt = dirent;
+  PPDirEnt = ^PDirEnt;
+  PPPDirEnt = ^PPDirEnt;
+    
+  TDirEnt64 = dirent64;
+  PPDirEnt64 = ^PDirEnt64;
+  PPPDirEnt64 = ^PPDirEnt64;  
+    
+          
+      

+ 17 - 0
packages/base/libc/bdlfcnh.inc

@@ -0,0 +1,17 @@
+
+const
+   RTLD_LAZY = $00001;
+   RTLD_NOW = $00002;
+   RTLD_BINDING_MASK = $3;
+   RTLD_NOLOAD = $00004;
+   RTLD_GLOBAL = $00100;
+   RTLD_LOCAL = 0;
+   RTLD_NODELETE = $01000;
+
+procedure _dl_mcount_wrapper_check(__selfpc:pointer);cdecl;external clib name '_dl_mcount_wrapper_check';
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 119 - 0
packages/base/libc/bfcntlh.inc

@@ -0,0 +1,119 @@
+
+const
+   O_ACCMODE = 0003;
+   O_RDONLY = 00;
+   O_WRONLY = 01;
+   O_RDWR = 02;
+   O_CREAT = 0100;
+   O_EXCL = 0200;
+   O_NOCTTY = 0400;
+   O_TRUNC = 01000;
+   O_APPEND = 02000;
+   O_NONBLOCK = 04000;
+   O_NDELAY = O_NONBLOCK;
+   O_SYNC = 010000;
+   O_FSYNC = O_SYNC;
+   O_ASYNC = 020000;
+
+   O_DIRECT = 040000;
+   O_DIRECTORY = 0200000;
+   O_NOFOLLOW = 0400000;
+
+   O_DSYNC = O_SYNC;
+   O_RSYNC = O_SYNC;
+
+   O_LARGEFILE = 0100000;
+
+   F_DUPFD = 0;
+   F_GETFD = 1;
+   F_SETFD = 2;
+   F_GETFL = 3;
+   F_SETFL = 4;
+
+   F_GETLK = 5;
+   F_SETLK = 6;
+   F_SETLKW = 7;
+
+   F_GETLK64 = 12;
+   F_SETLK64 = 13;
+   F_SETLKW64 = 14;
+
+   F_SETOWN = 8;
+   F_GETOWN = 9;
+
+   F_SETSIG = 10;
+   F_GETSIG = 11;
+
+   F_SETLEASE = 1024;
+   F_GETLEASE = 1025;
+   F_NOTIFY = 1026;
+
+   FD_CLOEXEC = 1;
+   F_RDLCK = 0;
+   F_WRLCK = 1;
+   F_UNLCK = 2;
+   F_EXLCK = 4;
+   F_SHLCK = 8;
+
+   LOCK_SH = 1;
+   LOCK_EX = 2;
+   LOCK_NB = 4;
+   LOCK_UN = 8;
+
+   LOCK_MAND = 32;
+   LOCK_READ = 64;
+   LOCK_WRITE = 128;
+   LOCK_RW = 192;
+
+   DN_ACCESS = $00000001;
+   DN_MODIFY = $00000002;
+   DN_CREATE = $00000004;
+   DN_DELETE = $00000008;
+   DN_RENAME = $00000010;
+   DN_ATTRIB = $00000020;
+   DN_MULTISHOT = $80000000;
+
+type
+   Pflock = ^flock;
+   flock = record
+        l_type : smallint;
+        l_whence : smallint;
+        l_start : __off_t;
+        l_len : __off_t;
+        l_pid : __pid_t;
+     end;
+
+   Pflock64 = ^flock64;
+   flock64 = record
+        l_type : smallint;
+        l_whence : smallint;
+        l_start : __off64_t;
+        l_len : __off64_t;
+        l_pid : __pid_t;
+     end;
+
+const
+   FAPPEND = O_APPEND;
+   FFSYNC = O_FSYNC;
+   FASYNC = O_ASYNC;
+   FNONBLOCK = O_NONBLOCK;
+   FNDELAY = O_NDELAY;
+
+   POSIX_FADV_NORMAL = 0;
+   POSIX_FADV_RANDOM = 1;
+   POSIX_FADV_SEQUENTIAL = 2;
+   POSIX_FADV_WILLNEED = 3;
+   POSIX_FADV_DONTNEED = 4;
+   POSIX_FADV_NOREUSE = 5;
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type
+  TFlock = flock;
+    
+  TFlock64 = Flock64;
+    
+        

+ 55 - 0
packages/base/libc/bfenvh.inc

@@ -0,0 +1,55 @@
+
+Const
+  FE_INVALID = $01;
+  __FE_DENORM = $02;
+  FE_DIVBYZERO = $04;
+  FE_OVERFLOW = $08;
+  FE_UNDERFLOW = $10;
+  FE_INEXACT = $20;
+
+  FE_ALL_EXCEPT = (((FE_INEXACT or FE_DIVBYZERO) or FE_UNDERFLOW) or FE_OVERFLOW) or FE_INVALID;
+
+  FE_TONEAREST = 0;
+  FE_DOWNWARD = $400;
+  FE_UPWARD = $800;
+  FE_TOWARDZERO = $c00;
+
+type
+   Pfexcept_t = ^fexcept_t;
+   fexcept_t = word;
+
+   Pfenv_t = ^fenv_t;
+   fenv_t = record
+        __control_word : word;
+        __unused1 : word;
+        __status_word : word;
+        __unused2 : word;
+        __tags : word;
+        __unused3 : word;
+        __eip : dword;
+        __cs_selector : word;
+        flag0 : word;
+        __data_offset : dword;
+        __data_selector : word;
+        __unused5 : word;
+     end;
+const
+   bm_fenv_t___opcode = $7FF;
+   bp_fenv_t___opcode = 0;
+   bm_fenv_t___unused4 = $F800;
+   bp_fenv_t___unused4 = 11;
+
+const
+  FE_DFL_ENV = Pfenv_t(-1);
+  FE_NOMASK_ENV = Pfenv_t(-2);
+    
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TExceptionFlags = fexcept_t;
+  PExceptionFlags = ^TExceptionFlags;
+
+  TFloatingPointEnv = fenv_t;
+  PFloatingPointEnv = ^TFloatingPointEnv;

+ 99 - 0
packages/base/libc/binh.inc

@@ -0,0 +1,99 @@
+
+const
+   IP_TOS = 1;
+   IP_TTL = 2;
+   IP_HDRINCL = 3;
+   IP_OPTIONS = 4;
+   IP_ROUTER_ALERT = 5;
+   IP_RECVOPTS = 6;
+   IP_RETOPTS = 7;
+   IP_PKTINFO = 8;
+   IP_PKTOPTIONS = 9;
+   IP_PMTUDISC = 10;
+   IP_MTU_DISCOVER = 10;
+   IP_RECVERR = 11;
+   IP_RECVTTL = 12;
+   IP_RECVTOS = 13;
+   IP_MULTICAST_IF = 32;
+   IP_MULTICAST_TTL = 33;
+   IP_MULTICAST_LOOP = 34;
+   IP_ADD_MEMBERSHIP = 35;
+   IP_DROP_MEMBERSHIP = 36;
+   IP_RECVRETOPTS = IP_RETOPTS;
+   IP_PMTUDISC_DONT = 0;
+   IP_PMTUDISC_WANT = 1;
+   IP_PMTUDISC_DO = 2;
+   SOL_IP = 0;
+   IP_DEFAULT_MULTICAST_TTL = 1;
+   IP_DEFAULT_MULTICAST_LOOP = 1;
+   IP_MAX_MEMBERSHIPS = 20;
+
+type
+   Pip_opts = ^ip_opts;
+   ip_opts = record
+        ip_dst : in_addr;
+        ip_opts : array[0..39] of char;
+     end;
+
+   Pip_mreq = ^ip_mreq;
+   ip_mreq = record
+        imr_multiaddr : in_addr;
+        imr_interface : in_addr;
+     end;
+
+   Pip_mreqn = ^ip_mreqn;
+   ip_mreqn = record
+        imr_multiaddr : in_addr;
+        imr_address : in_addr;
+        imr_ifindex : longint;
+     end;
+
+   Pin_pktinfo = ^in_pktinfo;
+   in_pktinfo = record
+        ipi_ifindex : longint;
+        ipi_spec_dst : in_addr;
+        ipi_addr : in_addr;
+     end;
+
+
+const
+   IPV6_ADDRFORM = 1;
+   IPV6_PKTINFO = 2;
+   IPV6_HOPOPTS = 3;
+   IPV6_DSTOPTS = 4;
+   IPV6_RTHDR = 5;
+   IPV6_PKTOPTIONS = 6;
+   IPV6_CHECKSUM = 7;
+   IPV6_HOPLIMIT = 8;
+   IPV6_NEXTHOP = 9;
+   IPV6_AUTHHDR = 10;
+   IPV6_UNICAST_HOPS = 16;
+   IPV6_MULTICAST_IF = 17;
+   IPV6_MULTICAST_HOPS = 18;
+   IPV6_MULTICAST_LOOP = 19;
+   IPV6_JOIN_GROUP = 20;
+   IPV6_LEAVE_GROUP = 21;
+   IPV6_ROUTER_ALERT = 22;
+   IPV6_MTU_DISCOVER = 23;
+   IPV6_MTU = 24;
+   IPV6_RECVERR = 25;
+//   SCM_SRCRT = IPV6_RXSRCRT;
+   IPV6_RXHOPOPTS = IPV6_HOPOPTS;
+   IPV6_RXDSTOPTS = IPV6_DSTOPTS;
+   IPV6_ADD_MEMBERSHIP = IPV6_JOIN_GROUP;
+   IPV6_DROP_MEMBERSHIP = IPV6_LEAVE_GROUP;
+   IPV6_PMTUDISC_DONT = 0;
+   IPV6_PMTUDISC_WANT = 1;
+   IPV6_PMTUDISC_DO = 2;
+   SOL_IPV6 = 41;
+   SOL_ICMPV6 = 58;
+   IPV6_RTHDR_LOOSE = 0;
+   IPV6_RTHDR_STRICT = 1;
+   IPV6_RTHDR_TYPE_0 = 0;
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 40 - 0
packages/base/libc/bipch.inc

@@ -0,0 +1,40 @@
+
+const
+   IPC_CREAT = 01000;
+   IPC_EXCL = 02000;
+   IPC_NOWAIT = 04000;
+   IPC_RMID = 0;
+   IPC_SET = 1;
+   IPC_STAT = 2;
+
+   IPC_INFO = 3;
+
+   IPC_PRIVATE = __key_t(0);
+
+type
+   Pipc_perm = ^ipc_perm;
+   ipc_perm = record
+        __key : __key_t;
+        uid : __uid_t;
+        gid : __gid_t;
+        cuid : __uid_t;
+        cgid : __gid_t;
+        mode : word;
+        __pad1 : word;
+        __seq : word;
+        __pad2 : word;
+        __unused1 : dword;
+        __unused2 : dword;
+     end;
+
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TIpcPermission = ipc_perm;
+  PIpcPermission = ^TIpcPermission;
+    
+    

+ 50 - 0
packages/base/libc/bmmanh.inc

@@ -0,0 +1,50 @@
+
+const
+   PROT_READ = $1;
+   PROT_WRITE = $2;
+   PROT_EXEC = $4;
+   PROT_NONE = $0;
+   MAP_SHARED = $01;
+   MAP_PRIVATE = $02;
+
+   MAP_TYPE = $0f;
+
+   MAP_FIXED = $10;
+
+   MAP_FILE = 0;
+   MAP_ANONYMOUS = $20;
+   MAP_ANON = MAP_ANONYMOUS;
+
+   MAP_GROWSDOWN = $0100;
+   MAP_DENYWRITE = $0800;
+   MAP_EXECUTABLE = $1000;
+   MAP_LOCKED = $2000;
+   MAP_NORESERVE = $4000;
+
+   MS_ASYNC = 1;
+   MS_SYNC = 4;
+   MS_INVALIDATE = 2;
+   MCL_CURRENT = 1;
+   MCL_FUTURE = 2;
+
+   MREMAP_MAYMOVE = 1;
+
+   MADV_NORMAL = 0;
+   MADV_RANDOM = 1;
+   MADV_SEQUENTIAL = 2;
+   MADV_WILLNEED = 3;
+   MADV_DONTNEED = 4;
+
+const
+   POSIX_MADV_NORMAL = 0;
+   POSIX_MADV_RANDOM = 1;
+   POSIX_MADV_SEQUENTIAL = 2;
+   POSIX_MADV_WILLNEED = 3;
+   POSIX_MADV_DONTNEED = 4;
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 54 - 0
packages/base/libc/bmsqh.inc

@@ -0,0 +1,54 @@
+
+const
+   MSG_NOERROR = $1000;
+   MSG_EXCEPT = $2000;
+
+type
+   Pmsgqnum_t = ^msgqnum_t;
+   msgqnum_t = dword;
+
+   Pmsglen_t = ^msglen_t;
+   msglen_t = dword;
+   Pmsqid_ds = ^msqid_ds;
+   msqid_ds = record
+        msg_perm : ipc_perm;
+        msg_stime : __time_t;
+        __unused1 : dword;
+        msg_rtime : __time_t;
+        __unused2 : dword;
+        msg_ctime : __time_t;
+        __unused3 : dword;
+        __msg_cbytes : dword;
+        msg_qnum : msgqnum_t;
+        msg_qbytes : msglen_t;
+        msg_lspid : __pid_t;
+        msg_lrpid : __pid_t;
+        __unused4 : dword;
+        __unused5 : dword;
+     end;
+
+
+const
+   MSG_STAT = 11;
+   MSG_INFO = 12;
+
+type
+   Pmsginfo = ^msginfo;
+   msginfo = record
+        msgpool : longint;
+        msgmap : longint;
+        msgmax : longint;
+        msgmnb : longint;
+        msgmni : longint;
+        msgssz : longint;
+        msgtql : longint;
+        msgseg : word;
+     end;
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TMsgQueueIdDesc = msqid_ds;
+  PMsgQueueIdDesc = ^TMsgQueueIdDesc;

+ 18 - 0
packages/base/libc/bnetdbh.inc

@@ -0,0 +1,18 @@
+
+type
+   Pnetent = ^netent;
+   netent = record
+        n_name : Pchar;
+        n_aliases : ^Pchar;
+        n_addrtype : longint;
+        n_net : uint32_t;
+     end;
+   PPNetEnt = ^Pnetent; 
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TNetEnt = netent;

+ 23 - 0
packages/base/libc/bpollh.inc

@@ -0,0 +1,23 @@
+
+const
+   POLLIN = $001;
+   POLLPRI = $002;
+   POLLOUT = $004;
+
+   POLLRDNORM = $040;
+   POLLRDBAND = $080;
+   POLLWRNORM = $100;
+   POLLWRBAND = $200;
+
+   POLLMSG = $400;
+
+   POLLERR = $008;
+   POLLHUP = $010;
+   POLLNVAL = $020;
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 99 - 0
packages/base/libc/bresourceh.inc

@@ -0,0 +1,99 @@
+
+type
+   __rlimit_resource =  Longint;
+
+Const
+     RLIMIT_CPU = 0;
+     RLIMIT_FSIZE = 1;
+     RLIMIT_DATA = 2;
+     RLIMIT_STACK = 3;
+     RLIMIT_CORE = 4;
+     RLIMIT_RSS = 5;
+     RLIMIT_NOFILE = 7;
+     RLIMIT_OFILE = RLIMIT_NOFILE;
+     RLIMIT_AS = 9;
+     RLIMIT_NPROC = 6;
+     RLIMIT_MEMLOCK = 8;
+     RLIMIT_LOCKS = 10;
+     RLIMIT_NLIMITS = 11;
+     RLIM_NLIMITS = RLIMIT_NLIMITS;
+
+  RLIM_INFINITY = LongInt(-1);
+{$ifndef ver1_0}
+  RLIM64_INFINITY = Int64(-1);
+{$endif}
+
+  RLIM_SAVED_MAX = RLIM_INFINITY;
+  RLIM_SAVED_CUR = RLIM_INFINITY;
+
+type
+  Prlim_t = ^rlim_t;
+  rlim_t = __rlim_t;
+
+  Prlim64_t = ^rlim64_t;
+  rlim64_t = __rlim64_t;
+
+  Prlimit = ^rlimit;
+  rlimit = record
+    rlim_cur : rlim_t;
+    rlim_max : rlim_t;
+  end;
+
+  Prlimit64 = ^rlimit64;
+  rlimit64 = record
+    rlim_cur : rlim64_t;
+    rlim_max : rlim64_t;
+  end;
+
+type
+  __rusage_who =  Longint;
+
+Const
+  RUSAGE_SELF = 0;
+  RUSAGE_CHILDREN = -(1);
+  RUSAGE_BOTH = -(2);
+
+type
+  Prusage = ^rusage;
+  rusage = record
+       ru_utime : timeval;
+       ru_stime : timeval;
+       ru_maxrss : longint;
+       ru_ixrss : longint;
+       ru_idrss : longint;
+       ru_isrss : longint;
+       ru_minflt : longint;
+       ru_majflt : longint;
+       ru_nswap : longint;
+       ru_inblock : longint;
+       ru_oublock : longint;
+       ru_msgsnd : longint;
+       ru_msgrcv : longint;
+       ru_nsignals : longint;
+       ru_nvcsw : longint;
+       ru_nivcsw : longint;
+    end;
+
+
+const
+  PRIO_MIN = -(20);
+  PRIO_MAX = 20;
+
+type
+  __priority_which =  Longint;
+
+Const
+   PRIO_PROCESS = 0;
+   PRIO_PGRP = 1;
+   PRIO_USER = 2;
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TRLimit = rlimit;
+  TRLimit64 = rlimit64;
+  TRUsage = rusage;
+

+ 42 - 0
packages/base/libc/bschedh.inc

@@ -0,0 +1,42 @@
+
+const
+   SCHED_OTHER = 0;
+   SCHED_FIFO = 1;
+   SCHED_RR = 2;
+
+const
+   CSIGNAL = $000000ff;
+   CLONE_VM = $00000100;
+   CLONE_FS = $00000200;
+   CLONE_FILES = $00000400;
+   CLONE_SIGHAND = $00000800;
+   CLONE_PID = $00001000;
+   CLONE_PTRACE = $00002000;
+   CLONE_VFORK = $00004000;
+
+type
+   Psched_param = ^sched_param;
+   sched_param = record
+     __sched_priority : longint;
+   end;
+
+  TCloneFunc = function(Arg: Pointer): Integer; cdecl; // For translation 
+  
+
+function clone(__fn:tclonefunc; __child_stack:pointer; __flags:longint; __arg:pointer):longint;cdecl;external clib name 'clone';
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+   __sched_param = sched_param;
+   P__sched_param = ^__sched_param;
+   TSchedParam = __sched_param;
+   PSchedParam = ^TSchedParam;
+   
+   TCloneProc = TCloneFunc; 
+
+     
+      

+ 88 - 0
packages/base/libc/bselecth.inc

@@ -0,0 +1,88 @@
+
+{$ifndef _SYS_SELECT_H}
+{$error "Never use <bits/select.h> directly; include <sys/select.h> instead."}
+{$endif}
+{$if defined __GNUC__ && __GNUC__ >= 2}
+(* error 
+# define __FD_ZERO(fdsp) \
+in define line 26 *)
+(* error 
+  do {									      \
+in declaration at line 28 *)
+(* error 
+    int __d0, __d1;							      \
+(* error 
+    __asm__ ____ ("cld; rep; stosl"				      \
+in declaration at line 34 *)
+(* error 
+			  : "memory");					      \
+(* error 
+  } while (0)
+in define line 37 *)
+(* error 
+  __asm__ ____ ("btsl %1,%0"					      \
+(* error 
+			: "cc","memory")
+(* error 
+# define __FD_CLR(fd, fdsp) \
+(* error 
+			: "cc","memory")
+(* error 
+# define __FD_ISSET(fd, fdsp) \
+ in declarator_list *)
+ in declarator_list *)
+ in declarator_list *)
+ in declarator_list *)
+ in declarator_list *)
+(* error 
+   ({register char __result;						      \
+(* error 
+     __asm__ ____ ("btl %1,%2 ; setcb %b0"			      \
+in declaration at line 54 *)
+(* error 
+			   : "cc");					      \
+(* error 
+     __result; }))
+in declaration at line 55 *)
+(* error 
+     __result; }))
+{$else}
+in define line 61 *)
+(* error 
+  do {									      \
+in declaration at line 63 *)
+(* error 
+    unsigned int __i;							      \
+(* error 
+    fd_set *__arr = (set);						      \
+in declaration at line 64 *)
+(* error 
+    fd_set *__arr = (set);						      \
+(* error 
+    for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i)	      \
+in declaration at line 65 *)
+(* error 
+    for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i)	      \
+in declaration at line 65 *)
+(* error 
+    for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i)	      \
+in declaration at line 66 *)
+(* error 
+      __FDS_BITS (__arr)[__i] = 0;					      \
+(* error 
+  } while (0)
+in define line 68 *)
+(* error 
+# define __FD_CLR(d, set)    (__FDS_BITS (set)[__FDELT (d)] &= ~__FDMASK (d))
+in define line 69 *)
+(* error 
+# define __FD_ISSET(d, set)  (__FDS_BITS (set)[__FDELT (d)] & __FDMASK (d))
+in define line 70 *)
+{$endif}
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 55 - 0
packages/base/libc/bsemh.inc

@@ -0,0 +1,55 @@
+
+const
+   SEM_UNDO = $1000;
+   _GETPID = 11; // renamed, conflict with getpid call.
+   GETVAL = 12;
+   GETALL = 13;
+   GETNCNT = 14;
+   GETZCNT = 15;
+   SETVAL = 16;
+   SETALL = 17;
+
+type
+   Psemid_ds = ^semid_ds;
+   semid_ds = record
+        sem_perm : ipc_perm;
+        sem_otime : __time_t;
+        __unused1 : dword;
+        sem_ctime : __time_t;
+        __unused2 : dword;
+        sem_nsems : dword;
+        __unused3 : dword;
+        __unused4 : dword;
+     end;
+
+
+const
+   SEM_STAT = 18;
+   SEM_INFO = 19;
+
+type
+   Pseminfo = ^seminfo;
+   seminfo = record
+        semmap : longint;
+        semmni : longint;
+        semmns : longint;
+        semmnu : longint;
+        semmsl : longint;
+        semopm : longint;
+        semume : longint;
+        semusz : longint;
+        semvmx : longint;
+        semaem : longint;
+     end;
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TSemaphoreIdDescriptor = semid_ds;
+  PSemaphoreIdDescriptor = ^TSemaphoreIdDescriptor;
+
+  TSemaphoreInfo = seminfo;
+  PSemaphoreInfo = ^TSemaphoreInfo;

+ 75 - 0
packages/base/libc/bshmh.inc

@@ -0,0 +1,75 @@
+
+const
+   SHM_R = 0400;
+   SHM_W = 0200;
+   SHM_RDONLY = 010000;
+   SHM_RND = 020000;
+   SHM_REMAP = 040000;
+   SHM_LOCK = 11;
+   SHM_UNLOCK = 12;
+
+type
+   Pshmatt_t = ^shmatt_t;
+   shmatt_t = dword;
+
+   Pshmid_ds = ^shmid_ds;
+   shmid_ds = record
+        shm_perm : ipc_perm;
+        shm_segsz : size_t;
+        shm_atime : __time_t;
+        __unused1 : dword;
+        shm_dtime : __time_t;
+        __unused2 : dword;
+        shm_ctime : __time_t;
+        __unused3 : dword;
+        shm_cpid : __pid_t;
+        shm_lpid : __pid_t;
+        shm_nattch : shmatt_t;
+        __unused4 : dword;
+        __unused5 : dword;
+     end;
+
+const
+   SHM_STAT = 13;
+   SHM_INFO = 14;
+   SHM_DEST = 01000;
+   SHM_LOCKED = 02000;
+
+type
+   Pshminfo = ^shminfo;
+   shminfo = record
+        shmmax : dword;
+        shmmin : dword;
+        shmmni : dword;
+        shmseg : dword;
+        shmall : dword;
+        __unused1 : dword;
+        __unused2 : dword;
+        __unused3 : dword;
+        __unused4 : dword;
+     end;
+
+   Pshm_info = ^_shm_info;
+   _shm_info = record
+        used_ids : longint;
+        shm_tot : dword;
+        shm_rss : dword;
+        shm_swp : dword;
+        swap_attempts : dword;
+        swap_successes : dword;
+     end;
+   P_shm_info = ^_shm_info;
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TSharedMemIdDescriptor = shmid_ds;
+  PSharedMemIdDescriptor = ^TSharedMemIdDescriptor;
+
+  TSharedMemInfo = shminfo;
+  PSharedMemInfo = ^TSharedMemInfo;
+
+  TTotalSharedMemInfo = _shm_info;
+  PTotalSharedMemInfo = ^TTotalSharedMemInfo;

+ 13 - 0
packages/base/libc/bsockaddrh.inc

@@ -0,0 +1,13 @@
+
+type
+   Psa_family_t = ^sa_family_t;
+   sa_family_t = word;
+
+Const
+   __SOCKADDR_COMMON_SIZE = sizeof(sa_family_t);
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 51 - 0
packages/base/libc/bsocket.inc

@@ -0,0 +1,51 @@
+
+function SA_LEN(const Buf): Cardinal; // Untyped buffer; this is *unsafe*.
+
+begin
+  Result:=__libc_sa_len(PSockAddr(@Buf)^.sa_family);
+end;
+
+
+function CMSG_DATA(cmsg: Pointer): PByte;
+
+begin
+  Result:=PByte(Cardinal(cmsg) + SizeOf(Pcmsghdr));
+end;
+
+
+function CMSG_NXTHDR(mhdr: Pmsghdr; cmsg: Pcmsghdr): Pcmsghdr;
+
+begin
+   Result:=__cmsg_nxthdr(mhdr, cmsg);
+end;
+
+
+function CMSG_FIRSTHDR(mhdr: Pmsghdr): Pcmsghdr;
+
+begin
+  if mhdr^.msg_controllen >= SizeOf(cmsghdr) then
+    Result:=mhdr^.msg_control
+  else
+    Result:=nil;
+end;
+
+
+function CMSG_ALIGN(len: size_t): size_t;
+
+begin
+  Result:=(len+SizeOf(size_t)-1) and (not(SizeOf(size_t)-1));
+end;
+
+
+function CMSG_SPACE(len: size_t): size_t;
+
+begin
+  Result:=CMSG_ALIGN(len)+CMSG_ALIGN(SizeOf(cmsghdr));
+end;
+
+
+function CMSG_LEN(len: size_t): size_t;
+
+begin
+  Result:=CMSG_ALIGN(SizeOf(cmsghdr))+len;
+end;

+ 251 - 0
packages/base/libc/bsocketh.inc

@@ -0,0 +1,251 @@
+
+type
+  SOCKLEN_T = __socklen_t;
+  PSOCKLEN_T = ^SOCKLEN_T;
+  
+const
+
+  INVALID_SOCKET = -1;
+  SOCKET_ERROR = -1;
+  INADDR_ANY = 0;
+  INADDR_BROADCAST = -1;
+  INADDR_NONE = $FFFFFFFF;
+
+Type
+   __socket_type = (
+  SOCK_STREAM := 1,
+  SOCK_DGRAM := 2,
+  SOCK_RAW := 3,
+  SOCK_RDM := 4,
+  SOCK_SEQPACKET := 5,
+  SOCK_PACKET := 10
+  );
+  
+Const
+  PF_UNSPEC = 0;
+  PF_LOCAL = 1;
+  PF_UNIX = PF_LOCAL;
+  PF_FILE = PF_LOCAL;
+  PF_INET = 2;
+  PF_AX25 = 3;
+  PF_IPX = 4;
+  PF_APPLETALK = 5;
+  PF_NETROM = 6;
+  PF_BRIDGE = 7;
+  PF_ATMPVC = 8;
+  PF_X25 = 9;
+  PF_INET6 = 10;
+  PF_ROSE = 11;
+  PF_DECnet = 12;
+  PF_NETBEUI = 13;
+  PF_SECURITY = 14;
+  PF_KEY = 15;
+  PF_NETLINK = 16;
+  PF_ROUTE = PF_NETLINK;
+  PF_PACKET = 17;
+  PF_ASH = 18;
+  PF_ECONET = 19;
+  PF_ATMSVC = 20;
+  PF_SNA = 22;
+  PF_IRDA = 23;
+  PF_PPPOX = 24;
+  PF_WANPIPE = 25;
+  PF_BLUETOOTH = 31;
+  PF_MAX = 32;
+  AF_UNSPEC = PF_UNSPEC;
+  AF_LOCAL = PF_LOCAL;
+  AF_UNIX = PF_UNIX;
+  AF_FILE = PF_FILE;
+  AF_INET = PF_INET;
+  AF_AX25 = PF_AX25;
+  AF_IPX = PF_IPX;
+  AF_APPLETALK = PF_APPLETALK;
+  AF_NETROM = PF_NETROM;
+  AF_BRIDGE = PF_BRIDGE;
+  AF_ATMPVC = PF_ATMPVC;
+  AF_X25 = PF_X25;
+  AF_INET6 = PF_INET6;
+  AF_ROSE = PF_ROSE;
+  AF_DECnet = PF_DECnet;
+  AF_NETBEUI = PF_NETBEUI;
+  AF_SECURITY = PF_SECURITY;
+  AF_KEY = PF_KEY;
+  AF_NETLINK = PF_NETLINK;
+  AF_ROUTE = PF_ROUTE;
+  AF_PACKET = PF_PACKET;
+  AF_ASH = PF_ASH;
+  AF_ECONET = PF_ECONET;
+  AF_ATMSVC = PF_ATMSVC;
+  AF_SNA = PF_SNA;
+  AF_IRDA = PF_IRDA;
+  AF_PPPOX = PF_PPPOX;
+  AF_WANPIPE = PF_WANPIPE;
+  AF_BLUETOOTH = PF_BLUETOOTH;
+  AF_MAX = PF_MAX;
+  SOL_RAW = 255;
+  SOL_DECNET = 261;
+  SOL_X25 = 262;
+  SOL_PACKET = 263;
+  SOL_ATM = 264;
+  SOL_AAL = 265;
+  SOL_IRDA = 266;
+  SOMAXCONN = 128;
+
+
+Type
+   __ss_aligntype = __uint32_t;
+
+const
+   _SS_SIZE = 128;
+   _SS_PADSIZE = _SS_SIZE - (2 * SizeOf(__ss_aligntype));
+
+type
+ {  // replaced by structure down below. 
+    // Why borland decided to change it is a mystery to me :/
+   sockaddr = record
+     sa_family : sa_family_t ;
+     sa_data : array [0..13] of char;
+   end;
+ }
+   // redefined as osockaddr.
+   osockaddr = record
+     sa_family : sa_family_t ;
+     sa_data : array [0..13] of char;
+   end;
+
+   Psockaddr_storage = ^sockaddr_storage;
+   sockaddr_storage = record
+      __ss__family : sa_family_t;
+      __ss_align   : __ss_aligntype;
+      __ss_padding : array[0..(_SS_PADSIZE)-1] of char;
+   end;
+
+
+Const
+  MSG_OOB = $01;
+  MSG_PEEK = $02;
+  MSG_DONTROUTE = $04;
+  MSG_TRYHARD = MSG_DONTROUTE;
+  MSG_CTRUNC = $08;
+  MSG_PROXY = $10;
+  MSG_TRUNC = $20;
+  MSG_DONTWAIT = $40;
+  MSG_EOR = $80;
+  MSG_WAITALL = $100;
+  MSG_FIN = $200;
+  MSG_SYN = $400;
+  MSG_CONFIRM = $800;
+  MSG_RST = $1000;
+  MSG_ERRQUEUE = $2000;
+  MSG_NOSIGNAL = $4000;
+  MSG_MORE = $8000;
+
+type
+  Pmsghdr = ^msghdr;
+  msghdr = record
+     msg_name : pointer;
+     msg_namelen : socklen_t;
+     msg_iov : Piovec;
+     msg_iovlen : longint;
+     msg_control : pointer;
+     msg_controllen : socklen_t;
+     msg_flags : longint;
+  end;
+
+  Pcmsghdr = ^cmsghdr;
+  cmsghdr = record
+    cmsg_len : size_t;
+    cmsg_level : longint;
+    cmsg_type : longint;
+  end;
+
+function CMSG_DATA(cmsg : pointer) : Pbyte;
+function CMSG_NXTHDR(mhdr: Pmsghdr; cmsg: Pcmsghdr): Pcmsghdr;
+function CMSG_FIRSTHDR(mhdr: Pmsghdr): Pcmsghdr;
+function CMSG_ALIGN(len: size_t): size_t;
+function CMSG_SPACE(len: size_t): size_t;
+function CMSG_LEN(len: size_t): size_t;
+
+
+function __cmsg_nxthdr(__mhdr:Pmsghdr; __cmsg:Pcmsghdr):Pcmsghdr;cdecl;external clib name '__cmsg_nxthdr';
+
+const
+  SCM_RIGHTS    = $01;
+  SCM_CREDENTIALS = $02;
+  SCM_CONNECT   = $03;
+      
+      
+
+type
+  Pucred = ^ucred;
+  ucred = record
+    pid : pid_t;
+    uid : uid_t;
+    gid : gid_t;
+  end;
+
+  Plinger = ^linger;
+  linger = record
+    l_onoff : longint;
+    l_linger : longint;
+  end;
+  
+  
+            
+            
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+type
+  SunB = record
+    s_b1, 
+    s_b2, 
+    s_b3, 
+    s_b4: u_char;
+  end;
+
+  SunW = record
+    s_w1, 
+    s_w2: u_short;
+  end;
+
+  in_addr =  record
+    case Integer of
+      0: (S_un_b: SunB);
+      1: (S_un_w: SunW);
+      2: (S_addr: u_long);
+  end;
+  TInAddr = in_addr;
+  PInAddr = ^TInAddr;
+
+  sockaddr = {packed} record
+    case Integer of
+      0: (sa_family: sa_family_t;
+          sa_data: packed array[0..13] of Byte);
+      1: (sin_family: sa_family_t;
+          sin_port: u_short;
+          sin_addr: TInAddr;
+          sin_zero: packed array[0..7] of Byte);
+  end;
+  TSockAddr = sockaddr;
+  PSockAddr = ^TSockAddr;
+
+  TMessageHeader = msghdr;
+  PMessageHeader = ^TMessageHeader;
+    
+  TCMessageHeader = cmsghdr;
+  PCMessageHeader = ^TCMessageHeader;
+
+  sockaddr_in = sockaddr;             
+  Psockaddr_in = ^sockaddr;             
+  TSockAddrIn = sockaddr_in;
+  PSockAddrIn = ^TSockAddrIn;
+  
+  TSocket = longint;
+      
+function SA_LEN(const buf): Cardinal; // Untyped buffer; this is *unsafe*.
+function __libc_sa_len(__af: sa_family_t): Integer; cdecl;external clib name '__libc_sa_len';
+        

+ 41 - 0
packages/base/libc/bstatfsh.inc

@@ -0,0 +1,41 @@
+
+type
+   Pstatfs = ^_statfs;
+   _statfs = record
+        f_type : longint;
+        f_bsize : longint;
+        f_blocks : __fsblkcnt_t;
+        f_bfree : __fsblkcnt_t;
+        f_bavail : __fsblkcnt_t;
+        f_files : __fsfilcnt_t;
+        f_ffree : __fsfilcnt_t;
+        f_fsid : __fsid_t;
+        f_namelen : longint;
+        f_spare : array[0..5] of longint;
+     end;
+   P_statfs = ^_statfs;  
+
+   Pstatfs64 = ^_statfs64;
+   _statfs64 = record
+        f_type : longint;
+        f_bsize : longint;
+        f_blocks : __fsblkcnt64_t;
+        f_bfree : __fsblkcnt64_t;
+        f_bavail : __fsblkcnt64_t;
+        f_files : __fsfilcnt64_t;
+        f_ffree : __fsfilcnt64_t;
+        f_fsid : __fsid_t;
+        f_namelen : longint;
+        f_spare : array[0..5] of longint;
+     end;
+   P_statfs64 = ^_statfs64;
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TStatFs = _statfs;
+  TStatFs64 = _statfs64;
+                                                    
+                                                    

+ 92 - 0
packages/base/libc/bstath.inc

@@ -0,0 +1,92 @@
+
+const
+   _STAT_VER_LINUX_OLD = 1;
+   _STAT_VER_KERNEL = 1;
+   _STAT_VER_SVR4 = 2;
+   _STAT_VER_LINUX = 3;
+   _STAT_VER = _STAT_VER_LINUX;
+
+   _MKNOD_VER_LINUX = 1;
+   _MKNOD_VER_SVR4 = 2;
+   _MKNOD_VER = _MKNOD_VER_LINUX;
+
+type
+   P_stat = ^_stat;
+   PStat = ^_stat;
+   _stat = record
+        st_dev : __dev_t;
+        __pad1 : word;
+        st_ino : __ino_t;
+        __st_ino : __ino_t;
+        st_mode : __mode_t;
+        st_nlink : __nlink_t;
+        st_uid : __uid_t;
+        st_gid : __gid_t;
+        st_rdev : __dev_t;
+        __pad2 : word;
+        st_size : __off_t;
+        st_blksize : __blksize_t;
+        st_blocks : __blkcnt_t;
+        st_atime : __time_t;
+        __unused1 : dword;
+        st_mtime : __time_t;
+        __unused2 : dword;
+        st_ctime : __time_t;
+        __unused3 : dword;
+        __unused4 : dword;
+        __unused5 : dword;
+     end;
+
+   P_stat64 = ^_stat64;
+   Pstat64 = ^_stat64;
+   _stat64 = record
+        st_dev : __dev_t;
+        __pad1 : dword;
+        __st_ino : __ino_t;
+        st_mode : __mode_t;
+        st_nlink : __nlink_t;
+        st_uid : __uid_t;
+        st_gid : __gid_t;
+        st_rdev : __dev_t;
+        __pad2 : dword;
+        st_size : __off64_t;
+        st_blksize : __blksize_t;
+        st_blocks : __blkcnt64_t;
+        st_atime : __time_t;
+        __unused1 : dword;
+        st_mtime : __time_t;
+        __unused2 : dword;
+        st_ctime : __time_t;
+        __unused3 : dword;
+        st_ino : __ino64_t;
+     end;
+
+const
+  __S_IFMT        = $F000; 
+  __S_IFDIR       = $4000;
+  __S_IFCHR       = $2000;
+  __S_IFBLK       = $6000;
+  __S_IFREG       = $8000;
+  __S_IFIFO       = $1000;
+  __S_IFLNK       = $A000;
+  __S_IFSOCK      = $C000;
+
+  __S_ISUID       = $800;  
+  __S_ISGID       = $400;  
+  __S_ISVTX       = $200;  
+  __S_IREAD       = $100;  
+  __S_IWRITE      = $80;   
+  __S_IEXEC       = $40;  
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type
+  TStatBuf = _stat;
+  PStatBuf = ^TStatBuf;
+    
+  TStatBuf64 = _stat64;
+  PStatBuf64 = ^TStatBuf64;
+    
+        

+ 61 - 0
packages/base/libc/bstatvfsh.inc

@@ -0,0 +1,61 @@
+
+type
+  Pstatvfs = ^_statvfs;
+  _statvfs = record
+       f_bsize : dword;
+       f_frsize : dword;
+       f_blocks : __fsblkcnt_t;
+       f_bfree : __fsblkcnt_t;
+       f_bavail : __fsblkcnt_t;
+       f_files : __fsfilcnt_t;
+       f_ffree : __fsfilcnt_t;
+       f_favail : __fsfilcnt_t;
+       f_fsid : dword;
+       __f_unused : longint;
+       f_flag : dword;
+       f_namemax : dword;
+       __f_spare : array[0..5] of longint;
+    end;
+  P_statvfs = ^_statvfs;  
+
+  Pstatvfs64 = ^_statvfs64;
+  _statvfs64 = record
+       f_bsize : dword;
+       f_frsize : dword;
+       f_blocks : __fsblkcnt64_t;
+       f_bfree : __fsblkcnt64_t;
+       f_bavail : __fsblkcnt64_t;
+       f_files : __fsfilcnt64_t;
+       f_ffree : __fsfilcnt64_t;
+       f_favail : __fsfilcnt64_t;
+       f_fsid : dword;
+       __f_unused : longint;
+       f_flag : dword;
+       f_namemax : dword;
+       __f_spare : array[0..5] of longint;
+    end;
+  P_statvfs64 = ^_statvfs64;
+  
+Const
+  ST_RDONLY = 1;
+  ST_NOSUID = 2;
+  ST_NODEV = 4;
+  ST_NOEXEC = 8;
+  ST_SYNCHRONOUS = 16;
+  ST_MANDLOCK = 64;
+  ST_WRITE = 128;
+  ST_APPEND = 256;
+  ST_IMMUTABLE = 512;
+  ST_NOATIME = 1024;
+  ST_NODIRATIME = 1025;
+
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+ TStatVFs = _statvfs;
+  TStatVFs64 = _statvfs64;
+    

+ 140 - 0
packages/base/libc/bstroptsh.inc

@@ -0,0 +1,140 @@
+
+const
+   __SID = ord('S') shl 8;
+   I_NREAD = __SID or 1;
+   I_PUSH = __SID or 2;
+   I_POP = __SID or 3;
+   I_LOOK = __SID or 4;
+   I_FLUSH = __SID or 5;
+   I_SRDOPT = __SID or 6;
+   I_GRDOPT = __SID or 7;
+   I_STR = __SID or 8;
+   I_SETSIG = __SID or 9;
+   I_GETSIG = __SID or 10;
+   I_FIND = __SID or 11;
+   I_LINK = __SID or 12;
+   I_UNLINK = __SID or 13;
+   I_PEEK = __SID or 15;
+   I_FDINSERT = __SID or 16;
+   I_SENDFD = __SID or 17;
+   I_RECVFD = __SID or 14;
+   I_SWROPT = __SID or 19;
+   I_GWROPT = __SID or 20;
+   I_LIST = __SID or 21;
+   I_PLINK = __SID or 22;
+   I_PUNLINK = __SID or 23;
+   I_FLUSHBAND = __SID or 28;
+   I_CKBAND = __SID or 29;
+   I_GETBAND = __SID or 30;
+   I_ATMARK = __SID or 31;
+   I_SETCLTIME = __SID or 32;
+   I_GETCLTIME = __SID or 33;
+   I_CANPUT = __SID or 34;
+   FMNAMESZ = 8;
+   FLUSHR = $01;
+   FLUSHW = $02;
+   FLUSHRW = $03;
+
+   FLUSHBAND = $04;
+
+   S_INPUT = $0001;
+   S_HIPRI = $0002;
+   S_OUTPUT = $0004;
+   S_MSG = $0008;
+   S_ERROR = $0010;
+   S_HANGUP = $0020;
+   S_RDNORM = $0040;
+   S_WRNORM = S_OUTPUT;
+   S_RDBAND = $0080;
+   S_WRBAND = $0100;
+   S_BANDURG = $0200;
+   RS_HIPRI = $01;
+   RNORM = $0000;
+   RMSGD = $0001;
+   RMSGN = $0002;
+   RPROTDAT = $0004;
+   RPROTDIS = $0008;
+   RPROTNORM = $0010;
+
+   RPROTMASK = $001C;
+   SNDZERO = $001;
+   SNDPIPE = $002;
+
+   ANYMARK = $01;
+   LASTMARK = $02;
+
+   MUXID_ALL = -(1);
+
+   MSG_HIPRI = $01;
+   MSG_ANY = $02;
+   MSG_BAND = $04;
+   MORECTL = 1;
+   MOREDATA = 2;
+
+type
+   Pbandinfo = ^bandinfo;
+   bandinfo = record
+        bi_pri : byte;
+        bi_flag : longint;
+     end;
+
+   Pstrbuf = ^strbuf;
+   strbuf = record
+        maxlen : longint;
+        len : longint;
+        buf : Pchar;
+     end;
+
+   t_uscalar_t = __t_uscalar_t; // moved here from stropts.h
+
+   Pstrpeek = ^strpeek;
+   strpeek = record
+        ctlbuf : strbuf;
+        databuf : strbuf;
+        flags : t_uscalar_t;
+     end;
+
+   Pstrfdinsert = ^strfdinsert;
+   strfdinsert = record
+        ctlbuf : strbuf;
+        databuf : strbuf;
+        flags : t_uscalar_t;
+        fildes : longint;
+        offset : longint;
+     end;
+
+   Pstrioctl = ^strioctl;
+   strioctl = record
+        ic_cmd : longint;
+        ic_timout : longint;
+        ic_len : longint;
+        ic_dp : Pchar;
+     end;
+
+   Pstrrecvfd = ^strrecvfd;
+   strrecvfd = record
+        fd : longint;
+        uid : uid_t;
+        gid : gid_t;
+        __fill : array[0..7] of char;
+     end;
+
+   Pstr_mlist = ^str_mlist;
+   str_mlist = record
+        l_name : array[0..(FMNAMESZ + 1)-1] of char;
+     end;
+
+   Pstr_list = ^str_list;
+   str_list = record
+        sl_nmods : longint;
+        sl_modlist : Pstr_mlist;
+     end;
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  Tstrbuf = strbuf;
+  
+  

+ 193 - 0
packages/base/libc/btermiosh.inc

@@ -0,0 +1,193 @@
+
+type
+
+   Pcc_t = ^cc_t;
+   cc_t = char;
+
+   Pspeed_t = ^speed_t;
+   speed_t = dword;
+
+   Ptcflag_t = ^tcflag_t;
+   tcflag_t = dword;
+
+const
+   NCCS = 32;
+
+type
+   Ptermios = ^termios;
+   termios = record
+        c_iflag : tcflag_t;
+        c_oflag : tcflag_t;
+        c_cflag : tcflag_t;
+        c_lflag : tcflag_t;
+        c_line : cc_t;
+        c_cc : array[0..(NCCS)-1] of cc_t;
+        c_ispeed : speed_t;
+        c_ospeed : speed_t;
+     end;
+
+
+const
+   VINTR = 0;
+   VQUIT = 1;
+   VERASE = 2;
+   VKILL = 3;
+   VEOF = 4;
+   VTIME = 5;
+   VMIN = 6;
+   VSWTC = 7;
+   VSTART = 8;
+   VSTOP = 9;
+   VSUSP = 10;
+   VEOL = 11;
+   VREPRINT = 12;
+   VDISCARD = 13;
+   VWERASE = 14;
+   VLNEXT = 15;
+   VEOL2 = 16;
+
+  IGNBRK    = $0000001;
+  BRKINT    = $0000002;
+  IGNPAR    = $0000004;
+  PARMRK    = $0000008;
+  INPCK     = $0000010;
+  ISTRIP    = $0000020;
+  INLCR     = $0000040;
+  IGNCR     = $0000080;
+  ICRNL     = $0000100;
+  IUCLC     = $0000200;
+  IXON      = $0000400;
+  IXANY     = $0000800;
+  IXOFF     = $0001000;
+  IMAXBEL   = $0002000;
+
+  OPOST     = $0000001;
+  OLCUC     = $0000002;
+  ONLCR     = $0000004;
+  OCRNL     = $0000008;
+  ONOCR     = $0000010;
+  ONLRET    = $0000020;
+  OFILL     = $0000040;
+  OFDEL     = $0000080;
+
+  NLDLY     = $0000040;
+  NL0       = $0000000;
+  NL1       = $0000100;
+  CRDLY     = $0000600;
+  CR0       = $0000000;
+  CR1       = $0000200;
+  CR2       = $0000400;
+  CR3       = $0000600;
+  TABDLY    = $0001800;
+  TAB0      = $0000000;
+  TAB1      = $0000800;
+  TAB2      = $0001000;
+  TAB3      = $0001800;
+  BSDLY     = $0002000;
+  BS0       = $0000000;
+  BS1       = $0002000;
+  FFDLY     = $0080000;
+  FF0       = $0000000;
+  FF1       = $0010000;
+
+  VTDLY     = $0004000;
+  VT0       = $0000000;
+  VT1       = $0004000;
+
+  XTABS     = $0001800;
+
+  CBAUD     = $000100F;
+  B0        = $0000000; 
+  B50       = $0000001;
+  B75       = $0000002;
+  B110      = $0000003;
+  B134      = $0000004;
+  B150      = $0000005;
+  B200      = $0000006;
+  B300      = $0000007;
+  B600      = $0000008;
+  B1200     = $0000009;
+  B1800     = $000000A;
+  B2400     = $000000B;
+  B4800     = $000000C;
+  B9600     = $000000D;
+  B19200    = $000000E;
+  B38400    = $000000F;
+
+  EXTA      = B19200;
+  EXTB      = B38400;
+
+  CSIZE     = $0000030;
+  CS5       = $0000000;
+  CS6       = $0000010;
+  CS7       = $0000010;
+  CS8       = $0000030;
+  CSTOPB    = $0000040;
+  CREAD     = $0000080;
+  PARENB    = $0000100;
+  PARODD    = $0000200;
+  HUPCL     = $0000400;
+  CLOCAL    = $0000800;
+
+  CBAUDEX   = $0001000;
+
+  B57600    = $0001001;
+  B115200   = $0001002;
+  B230400   = $0001003;
+  B460800   = $0001004;
+  B500000   = $0001005;
+  B576000   = $0001006;
+  B921600   = $0001007;
+  B1000000  = $0001008;
+  B1152000  = $0001009;
+  B1500000  = $000100A;
+  B2000000  = $000100B;
+  B2500000  = $000100C;
+  B3000000  = $000100D;
+  B3500000  = $000100E;
+  B4000000  = $000100F;
+
+  CIBAUD    = $100F0000;
+  CRTSCTS   = $80000000;
+
+  ISIG      = $0000001;
+  ICANON    = $0000002;
+
+  XCASE     = $0000004;
+
+  ECHO      = $0000008;
+  ECHOE     = $0000010;
+  ECHOK     = $0000020;
+  ECHONL    = $0000040;
+  NOFLSH    = $0000080;
+  TOSTOP    = $0000100;
+
+  ECHOCTL   = $0000200;
+  ECHOPRT   = $0000400;
+  ECHOKE    = $0000800;
+  FLUSHO    = $0001000;
+  PENDIN    = $0004000;
+
+  IEXTEN    = $0010000;
+
+
+
+  TCOOFF = 0;
+  TCOON = 1;
+  TCIOFF = 2;
+  TCION = 3;
+  TCIFLUSH = 0;
+  TCOFLUSH = 1;
+  TCIOFLUSH = 2;
+  TCSANOW = 0;
+  TCSADRAIN = 1;
+  TCSAFLUSH = 2;
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TTermIos = termios;
+      

+ 33 - 0
packages/base/libc/btimeh.inc

@@ -0,0 +1,33 @@
+
+const
+   CLOCKS_PER_SEC = 1000000;
+
+function __sysconf(_para1:longint):longint;cdecl;external clib name '__sysconf';
+function CLK_TCK : __clock_t;
+
+const
+   CLOCK_REALTIME = 0;
+   CLOCK_PROCESS_CPUTIME_ID = 2;
+   CLOCK_THREAD_CPUTIME_ID = 3;
+   TIMER_ABSTIME = 1;
+
+const
+   _STRUCT_TIMEVAL = 1;
+
+type
+   Ptimeval = ^timeval;
+   timeval = record
+        tv_sec : __time_t;
+        tv_usec : __suseconds_t;
+     end;
+
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TTimeVal = timeval;   
+  
+  

+ 20 - 0
packages/base/libc/buioh.inc

@@ -0,0 +1,20 @@
+
+const
+   UIO_MAXIOV = 1024;
+
+type
+   Piovec = ^iovec;
+   iovec = record
+        iov_base : pointer;
+        iov_len : size_t;
+     end;
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TIoVector = iovec;
+  PIoVector = ^TIoVector;
+    
+    

+ 19 - 0
packages/base/libc/bustath.inc

@@ -0,0 +1,19 @@
+
+type
+   P_ustat = ^_ustat;
+   _ustat = record
+     f_tfree : __daddr_t;
+     f_tinode : __ino_t;
+     f_fname : array[0..5] of char;
+     f_fpack : array[0..5] of char;
+   end;
+
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TUStat = _ustat;
+  PUStat = ^TUStat;

+ 61 - 0
packages/base/libc/butmph.inc

@@ -0,0 +1,61 @@
+
+const
+   UT_LINESIZE = 32;
+   UT_NAMESIZE = 32;
+   UT_HOSTSIZE = 256;
+
+type
+   Plastlog = ^lastlog;
+   lastlog = record
+        ll_time : __time_t;
+        ll_line : array[0..(UT_LINESIZE)-1] of char;
+        ll_host : array[0..(UT_HOSTSIZE)-1] of char;
+     end;
+
+   Pexit_status = ^exit_status;
+   exit_status = record
+        e_termination : smallint;
+        e_exit : smallint;
+     end;
+
+   Putmp = ^utmp;
+   utmp = record
+        ut_type : smallint;
+        ut_pid : pid_t;
+        ut_line : array[0..(UT_LINESIZE)-1] of char;
+        ut_id : array[0..3] of char;
+        ut_user : array[0..(UT_NAMESIZE)-1] of char;
+        ut_host : array[0..(UT_HOSTSIZE)-1] of char;
+        ut_exit : exit_status;
+        ut_session : longint;
+        ut_tv : timeval;
+        ut_addr_v6 : array[0..3] of int32_t;
+        __unused : array[0..19] of char;
+     end;
+   PPutmp = ^Putmp;
+   
+const
+   EMPTY = 0;
+   RUN_LVL = 1;
+   BOOT_TIME = 2;
+   NEW_TIME = 3;
+   OLD_TIME = 4;
+   INIT_PROCESS = 5;
+   LOGIN_PROCESS = 6;
+   USER_PROCESS = 7;
+   DEAD_PROCESS = 8;
+   ACCOUNTING = 9;
+   UT_UNKNOWN = EMPTY;
+   _HAVE_UT_TYPE = 1;
+   _HAVE_UT_PID = 1;
+   _HAVE_UT_ID = 1;
+   _HAVE_UT_TV = 1;
+   _HAVE_UT_HOST = 1;
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TUserTmp = utmp;
+  PUserTmp = ^TUserTmp;

+ 41 - 0
packages/base/libc/butmpxh.inc

@@ -0,0 +1,41 @@
+
+const
+   _PATH_UTMPX = _PATH_UTMP;
+   _PATH_WTMPX = _PATH_WTMP;
+
+const
+   __UT_LINESIZE = 32;
+   __UT_NAMESIZE = 32;
+   __UT_HOSTSIZE = 256;
+
+type
+   P__exit_status = ^__exit_status;
+   __exit_status = record
+     e_termination : smallint;
+     e_exit : smallint;
+  end;
+
+  Putmpx = ^utmpx;
+  utmpx = record
+    ut_type : smallint;
+    ut_pid : __pid_t;
+    ut_line : array[0..(__UT_LINESIZE)-1] of char;
+    ut_id : array[0..3] of char;
+    ut_user : array[0..(__UT_NAMESIZE)-1] of char;
+    ut_host : array[0..(__UT_HOSTSIZE)-1] of char;
+    ut_exit : __exit_status;
+    ut_session : longint;
+    ut_tv : timeval;
+    ut_addr_v6 : array[0..3] of __int32_t;
+    __unused : array[0..19] of char;
+  end;
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TUserTmpX = utmpx;
+  PUserTmpX = ^TUserTmpX;
+    
+    

+ 11 - 0
packages/base/libc/butsnameh.inc

@@ -0,0 +1,11 @@
+
+const
+   _UTSNAME_LENGTH = 65;
+   _UTSNAME_DOMAIN_LENGTH = _UTSNAME_LENGTH;
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 44 - 0
packages/base/libc/bwaitflags.inc

@@ -0,0 +1,44 @@
+function WEXITSTATUS(Status: Integer): Integer;
+begin
+  Result := (Status and $FF00) shr 8;
+end;
+
+function WTERMSIG(Status: Integer): Integer;
+begin
+  Result := (Status and $7F);
+end;
+
+function WSTOPSIG(Status: Integer): Integer;
+begin
+  Result := WEXITSTATUS(Status);
+end;
+
+function WIFEXITED(Status: Integer): Boolean;
+begin
+  Result := (WTERMSIG(Status) = 0);
+end;
+
+function WIFSIGNALED(Status: Integer): Boolean;
+begin
+  Result := (not WIFSTOPPED(Status)) and (not WIFEXITED(Status));
+end;
+
+function WIFSTOPPED(Status: Integer): Boolean;
+begin
+  Result := ((Status and $FF) = $7F);
+end;
+
+function WCOREDUMP(Status: Integer): Boolean;
+begin
+  Result := ((Status and WCOREFLAG) <> 0);
+end;
+
+function W_EXITCODE(ReturnCode, Signal: Integer): Integer;
+begin
+  Result := (ReturnCode shl 8) or Signal;
+end;
+
+function W_STOPCODE(Signal: Integer): Integer;
+begin
+  Result := (Signal shl 8) or $7F;
+end;

+ 13 - 0
packages/base/libc/bwaitflagsh.inc

@@ -0,0 +1,13 @@
+
+const
+   WNOHANG = 1;
+   WUNTRACED = 2;
+   __WALL = $40000000;
+   __WCLONE = $80000000;
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 53 - 0
packages/base/libc/bwaitstatus.inc

@@ -0,0 +1,53 @@
+
+Function WEXITSTATUS(Status: longint): longint;
+begin
+  Result:=(Status and $FF00) shr 8;
+end;
+
+
+Function WTERMSIG(Status: longint): longint;
+begin
+  Result:=(Status and $7F);
+end;
+
+
+Function WSTOPSIG(Status: longint): longint;
+begin
+  Result:=WEXITSTATUS(Status);
+end;
+
+
+Function WIFEXITED(Status: longint): Boolean;
+begin
+  Result:=(WTERMSIG(Status)=0);
+end;
+
+
+Function WIFSIGNALED(Status: longint): Boolean;
+begin
+  Result:=(not WIFSTOPPED(Status)) and (not WIFEXITED(Status));
+end;
+
+
+Function WIFSTOPPED(Status: longint): Boolean;
+begin
+  Result:=((Status and $FF)=$7F);
+end;
+
+
+Function WCOREDUMP(Status: longint): Boolean;
+begin
+  Result:=((Status and WCOREFLAG)<>0);
+end;
+
+
+Function W_EXITCODE(ReturnCode, Signal: longint): longint;
+begin
+  Result:=(ReturnCode shl 8) or Signal;
+end;
+
+
+Function W_STOPCODE(Signal: longint): longint;
+begin
+  Result:=(Signal shl 8) or $7F;
+end;

+ 19 - 0
packages/base/libc/bwaitstatush.inc

@@ -0,0 +1,19 @@
+
+function WEXITSTATUS(Status: longint): longint;
+function WTERMSIG(Status: longint): longint;
+function WSTOPSIG(Status: longint): longint;
+function WIFEXITED(Status: longint): Boolean;
+function WIFSIGNALED(Status: longint): Boolean; 
+function WIFSTOPPED(Status: longint): Boolean; 
+function WCOREDUMP(Status: longint): Boolean; 
+function W_EXITCODE(ReturnCode, Signal: longint): longint;
+function W_STOPCODE(Signal: longint): longint;
+
+const
+  WCOREFLAG          = $80;
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 35 - 0
packages/base/libc/crypth.inc

@@ -0,0 +1,35 @@
+
+
+{ defined earlier in unistdh.inc...
+function crypt(__key:Pchar; __salt:Pchar):Pchar;cdecl;external clib name 'crypt';
+procedure setkey(__key:Pchar);cdecl;external clib name 'setkey';
+procedure encrypt(__block:Pchar; __edflag:longint);cdecl;external clib name 'encrypt';
+}
+type
+   Pcrypt_data = ^crypt_data;
+   crypt_data = record
+        keysched : array[0..(16 * 8)-1] of char;
+        sb0 : array[0..32767] of char;
+        sb1 : array[0..32767] of char;
+        sb2 : array[0..32767] of char;
+        sb3 : array[0..32767] of char;
+        crypt_3_buf : array[0..13] of char;
+        current_salt : array[0..1] of char;
+        current_saltbits : longint;
+        direction : longint;
+        initialized : longint;
+     end;
+
+function crypt_r(__key:Pchar; __salt:Pchar; __data:Pcrypt_data):Pchar;cdecl;external clib name 'crypt_r';
+procedure setkey_r(__key:Pchar; __data:Pcrypt_data);cdecl;external clib name 'setkey_r';
+procedure encrypt_r(__block:Pchar; __edflag:longint; __data:Pcrypt_data);cdecl;external clib name 'encrypt_r';
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TCryptData = crypt_data;
+  PCryptData = ^TCryptData;
+    
+    

+ 25 - 0
packages/base/libc/ctypeh.inc

@@ -0,0 +1,25 @@
+
+function isalnum(_para1:longint):longint;cdecl;external clib name 'isalnum';
+function isalpha(_para1:longint):longint;cdecl;external clib name 'isalpha';
+function iscntrl(_para1:longint):longint;cdecl;external clib name 'iscntrl';
+function isdigit(_para1:longint):longint;cdecl;external clib name 'isdigit';
+function islower(_para1:longint):longint;cdecl;external clib name 'islower';
+function isgraph(_para1:longint):longint;cdecl;external clib name 'isgraph';
+function isprint(_para1:longint):longint;cdecl;external clib name 'isprint';
+function ispunct(_para1:longint):longint;cdecl;external clib name 'ispunct';
+function isspace(_para1:longint):longint;cdecl;external clib name 'isspace';
+function isupper(_para1:longint):longint;cdecl;external clib name 'isupper';
+function isxdigit(_para1:longint):longint;cdecl;external clib name 'isxdigit';
+function tolower(__c:longint):longint;cdecl;external clib name 'tolower';
+function toupper(__c:longint):longint;cdecl;external clib name 'toupper';
+function isascii(__c:longint):longint;cdecl;external clib name 'isascii';
+function toascii(__c:longint):longint;cdecl;external clib name 'toascii';
+function _toupper(_para1:longint):longint;cdecl;external clib name '_toupper';
+function _tolower(_para1:longint):longint;cdecl;external clib name '_tolower';
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 14 - 0
packages/base/libc/dirent.inc

@@ -0,0 +1,14 @@
+{ ---------------------------------------------------------------------
+    Macros from dirent.h
+  ---------------------------------------------------------------------}
+
+function IFTODT(mode : __mode_t) : longint;
+begin
+   IFTODT:=(mode and $F000) shr 12;
+end;
+
+function DTTOIF(dirtype : longint) : __mode_t;
+begin
+   DTTOIF:=dirtype shl 12;
+end;
+

+ 68 - 0
packages/base/libc/direnth.inc

@@ -0,0 +1,68 @@
+
+
+Const
+     DT_UNKNOWN = 0;
+     DT_FIFO = 1;
+     DT_CHR = 2;
+     DT_DIR = 4;
+     DT_BLK = 6;
+     DT_REG = 8;
+     DT_LNK = 10;
+     DT_SOCK = 12;
+     DT_WHT = 14;
+
+function IFTODT(mode : __mode_t) : longint;
+function DTTOIF(dirtype : longint) : __mode_t;
+
+type
+  DIR = record end;
+   __dirstream = DIR;
+  PDIR = ^DIR;
+  
+function opendir(__name:Pchar):PDIR;cdecl;external clib name 'opendir';
+function closedir(__dirp:PDIR):longint;cdecl;external clib name 'closedir';
+
+function readdir(__dirp:PDIR):Pdirent;cdecl;external clib name 'readdir';
+function readdir64(__dirp:PDIR):Pdirent64;cdecl;external clib name 'readdir64';
+
+function readdir_r(__dirp:PDIR; __entry:Pdirent; __result:PPdirent):longint;cdecl;external clib name 'readdir_r';
+function readdir64_r(__dirp:PDIR; __entry:Pdirent64; __result:PPdirent64):longint;cdecl;external clib name 'readdir64_r';
+
+procedure rewinddir(__dirp:PDIR);cdecl;external clib name 'rewinddir';
+procedure seekdir(__dirp:PDIR; __pos:longint);cdecl;external clib name 'seekdir';
+function telldir(__dirp:PDIR):longint;cdecl;external clib name 'telldir';
+
+function dirfd(__dirp:PDIR):longint;cdecl;external clib name 'dirfd';
+
+const
+   MAXNAMLEN = 255;
+
+Type
+  TSelectorFunc   = function(const p1: PDirEnt): Integer; cdecl;
+  TSelectorFunc64 = function(const p1: PDirEnt64): Integer; cdecl;
+  TCompareFunc    = function(const p1, p2: Pointer): Integer; cdecl;
+  
+function scandir(__dir:Pchar; __namelist:PPPdirent; __selector:TSelectorfunc; __cmp:TComparefunc):longint;cdecl;external clib name 'scandir';
+function scandir64(__dir:Pchar; __namelist:PPPdirent64; __selector:TSelectorFunc64; __cmp:TCompareFunc):longint;cdecl;external clib name 'scandir64';
+
+function getdirentries(__fd:longint; __buf:Pchar; __nbytes:size_t; __basep:P__off_t):__ssize_t;cdecl;external clib name 'getdirentries';
+function getdirentries64(__fd:longint; __buf:Pchar; __nbytes:size_t; __basep:P__off64_t):__ssize_t;cdecl;external clib name 'getdirentries64';
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type
+  TDirectoryStream = DIR;
+  PDirectoryStream = ^TDirectoryStream;
+    
+  TSelectorProc   = TSelectorFunc;    
+  TSelectorProc64 = TSelectorFunc64;
+  TCompareProc    = TCompareFunc;
+
+function scandir(__dir:Pchar; var __namelist:PPdirent; __selector:TSelectorfunc; __cmp:TComparefunc):longint;cdecl;external clib name 'scandir';
+function scandir64(__dir:Pchar; var __namelist:PPdirent64; __selector:TSelectorFunc64; __cmp:TCompareFunc):longint;cdecl;external clib name 'scandir64';
+
+function getdirentries(__fd:longint; __buf:Pchar; __nbytes:size_t; var __basep:__off_t):__ssize_t;cdecl;external clib name 'getdirentries';
+function getdirentries64(__fd:longint; __buf:Pchar; __nbytes:size_t; var __basep: __off64_t):__ssize_t;cdecl;external clib name 'getdirentries64';
+  

+ 33 - 0
packages/base/libc/dlfcnh.inc

@@ -0,0 +1,33 @@
+
+Const
+  RTLD_NEXT = Pointer(-1);
+  RTLD_DEFAULT = nil;
+
+function dlopen(__file:Pchar; __mode:longint):pointer;cdecl;external clib name 'dlopen';
+function dlclose(__handle:pointer):longint;cdecl;external clib name 'dlclose';
+function dlsym(__handle:pointer; __name:Pchar):pointer;cdecl;external clib name 'dlsym';
+function dlvsym(__handle:pointer; __name:Pchar; __version:Pchar):pointer;cdecl;external clib name 'dlvsym';
+function dlerror:Pchar;cdecl;external clib name 'dlerror';
+
+type
+
+   PDl_info = ^Dl_info;
+   Dl_info = record
+        dli_fname : Pchar;
+        dli_fbase : pointer;
+        dli_sname : Pchar;
+        dli_saddr : pointer;
+     end;
+
+function dladdr(__address:pointer; __info:PDl_info):longint;cdecl;external clib name 'dladdr';
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TDLInfo = Dl_info;
+  PDLInfo = ^TDLInfo;
+    
+function dladdr(__address:pointer; var __info: Dl_info):longint;cdecl;external clib name 'dladdr';
+    

+ 20 - 0
packages/base/libc/endianh.inc

@@ -0,0 +1,20 @@
+{ ---------------------------------------------------------------------
+    'h2pas -S -c -D -l libc -i' from endian.h and bits/endian.h
+  ---------------------------------------------------------------------}
+  
+const
+  External_library='libc'; {Setup as you need}
+
+{$PACKRECORDS C}
+
+const
+  __LITTLE_ENDIAN     = 1234;
+  __BIG_ENDIAN        = 4321;
+  __PDP_ENDIAN        = 3412;
+  __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;

+ 17 - 0
packages/base/libc/envzh.inc

@@ -0,0 +1,17 @@
+
+function envz_entry(__envz:Pchar; __envz_len:size_t; __name:Pchar):Pchar;cdecl;external clib name 'envz_entry';
+function envz_get(__envz:Pchar; __envz_len:size_t; __name:Pchar):Pchar;cdecl;external clib name 'envz_get';
+function envz_add(__envz:PPchar; __envz_len:Psize_t; __name:Pchar; __value:Pchar):error_t;cdecl;external clib name 'envz_add';
+function envz_merge(__envz:PPchar; __envz_len:Psize_t; __envz2:Pchar; __envz2_len:size_t; __override:longint):error_t;cdecl;external clib name 'envz_merge';
+procedure envz_remove(__envz:PPchar; __envz_len:Psize_t; __name:Pchar);cdecl;external clib name 'envz_remove';
+procedure envz_strip(__envz:PPchar; __envz_len:Psize_t);cdecl;external clib name 'envz_strip';
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  
+function envz_add(var __envz:Pchar; var __envz_len: size_t; __name:Pchar; __value:Pchar):error_t;cdecl;external clib name 'envz_add';
+function envz_merge(var __envz: Pchar; var __envz_len: size_t; __envz2:Pchar; __envz2_len:size_t; __override:longint):error_t;cdecl;external clib name 'envz_merge';
+procedure envz_remove(var __envz:Pchar; var __envz_len: size_t; __name:Pchar);cdecl;external clib name 'envz_remove';
+procedure envz_strip(var __envz:Pchar; var __envz_len: size_t);cdecl;external clib name 'envz_strip';

+ 15 - 0
packages/base/libc/errh.inc

@@ -0,0 +1,15 @@
+
+procedure warn(__format: Pchar; args: array of const); cdecl; external clib name 'warn';
+procedure vwarn(__format: Pchar; arg: Pointer); cdecl;external clib name 'vwarn';
+procedure warnx(__format: Pchar; args: array of const); cdecl; external clib name 'warnx';
+procedure vwarnx(__format: Pchar; arg: pointer); cdecl; external clib name 'vwarnx';
+procedure err(__status: Integer; __format: Pchar; args : array of const); cdecl; external clib name 'err';
+procedure verr(__status: Integer; __format: Pchar; Arg: Pointer); cdecl;  external clib name 'verr';
+procedure errx(__status: Integer; __format: Pchar); cdecl;  external clib name 'errx';
+procedure verrx(__status: Integer; __format: Pchar; Arg: Pointer); cdecl; external clib name 'verrx';
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 151 - 0
packages/base/libc/errnoh.inc

@@ -0,0 +1,151 @@
+
+Type
+  error_t = Integer;
+  
+var
+  errno : error_t; cvar; external;
+  program_invocation_name : Pchar;cvar;external;
+  
+{ ---------------------------------------------------------------------
+    asm/errno.inc
+  ---------------------------------------------------------------------}
+    
+  
+const
+   EPERM = 1;
+   ENOENT = 2;
+   ESRCH = 3;
+   EINTR = 4;
+   EIO = 5;
+   ENXIO = 6;
+   E2BIG = 7;
+   ENOEXEC = 8;
+   EBADF = 9;
+   ECHILD = 10;
+   EAGAIN = 11;
+   ENOMEM = 12;
+   EACCES = 13;
+   EFAULT = 14;
+   ENOTBLK = 15;
+   EBUSY = 16;
+   EEXIST = 17;
+   EXDEV = 18;
+   ENODEV = 19;
+   ENOTDIR = 20;
+   EISDIR = 21;
+   EINVAL = 22;
+   ENFILE = 23;
+   EMFILE = 24;
+   ENOTTY = 25;
+   ETXTBSY = 26;
+   EFBIG = 27;
+   ENOSPC = 28;
+   ESPIPE = 29;
+   EROFS = 30;
+   EMLINK = 31;
+   EPIPE = 32;
+   EDOM = 33;
+   ERANGE = 34;
+   EDEADLK = 35;
+   ENAMETOOLONG = 36;
+   ENOLCK = 37;
+   ENOSYS = 38;
+   ENOTEMPTY = 39;
+   ELOOP = 40;
+   EWOULDBLOCK = EAGAIN;
+   ENOMSG = 42;
+   EIDRM = 43;
+   ECHRNG = 44;
+   EL2NSYNC = 45;
+   EL3HLT = 46;
+   EL3RST = 47;
+   ELNRNG = 48;
+   EUNATCH = 49;
+   ENOCSI = 50;
+   EL2HLT = 51;
+   EBADE = 52;
+   EBADR = 53;
+   EXFULL = 54;
+   ENOANO = 55;
+   EBADRQC = 56;
+   EBADSLT = 57;
+   EDEADLOCK = EDEADLK;
+   EBFONT = 59;
+   ENOSTR = 60;
+   ENODATA = 61;
+   ETIME = 62;
+   ENOSR = 63;
+   ENONET = 64;
+   ENOPKG = 65;
+   EREMOTE = 66;
+   ENOLINK = 67;
+   EADV = 68;
+   ESRMNT = 69;
+   ECOMM = 70;
+   EPROTO = 71;
+   EMULTIHOP = 72;
+   EDOTDOT = 73;
+   EBADMSG = 74;
+   EOVERFLOW = 75;
+   ENOTUNIQ = 76;
+   EBADFD = 77;
+   EREMCHG = 78;
+   ELIBACC = 79;
+   ELIBBAD = 80;
+   ELIBSCN = 81;
+   ELIBMAX = 82;
+   ELIBEXEC = 83;
+   EILSEQ = 84;
+   ERESTART = 85;
+   ESTRPIPE = 86;
+   EUSERS = 87;
+   ENOTSOCK = 88;
+   EDESTADDRREQ = 89;
+   EMSGSIZE = 90;
+   EPROTOTYPE = 91;
+   ENOPROTOOPT = 92;
+   EPROTONOSUPPORT = 93;
+   ESOCKTNOSUPPORT = 94;
+   EOPNOTSUPP = 95;
+   EPFNOSUPPORT = 96;
+   EAFNOSUPPORT = 97;
+   EADDRINUSE = 98;
+   EADDRNOTAVAIL = 99;
+   ENETDOWN = 100;
+   ENETUNREACH = 101;
+   ENETRESET = 102;
+   ECONNABORTED = 103;
+   ECONNRESET = 104;
+   ENOBUFS = 105;
+   EISCONN = 106;
+   ENOTCONN = 107;
+   ESHUTDOWN = 108;
+   ETOOMANYREFS = 109;
+   ETIMEDOUT = 110;
+   ECONNREFUSED = 111;
+   EHOSTDOWN = 112;
+   EHOSTUNREACH = 113;
+   EALREADY = 114;
+   EINPROGRESS = 115;
+   ESTALE = 116;
+   EUCLEAN = 117;
+   ENOTNAM = 118;
+   ENAVAIL = 119;
+   EISNAM = 120;
+   EREMOTEIO = 121;
+   EDQUOT = 122;
+   ENOMEDIUM = 123;
+   EMEDIUMTYPE = 124;
+
+{ ---------------------------------------------------------------------
+    bits/errno.h
+  ---------------------------------------------------------------------}
+  
+
+const
+   ENOTSUP = EOPNOTSUPP;
+   ECANCELED = 125;
+
+function __errno_location: PInteger; cdecl;external clib name '__errno_location';
+  
+

+ 9 - 0
packages/base/libc/errorh.inc

@@ -0,0 +1,9 @@
+
+procedure error(status: longint; errnum: longint; format: Pchar; args: array of const); cdecl; external clib name 'error';
+procedure error_at_line(status: longint; errnum: longint; fname: Pchar; lineno: Cardinal; format: Pchar; args : array of const); cdecl; external clib name 'error_at_line';
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 47 - 0
packages/base/libc/fcntlh.inc

@@ -0,0 +1,47 @@
+
+const
+   R_OK = 4;
+   W_OK = 2;
+   X_OK = 1;
+   F_OK = 0;
+
+const
+   SEEK_SET = 0;
+   SEEK_CUR = 1;
+   SEEK_END = 2;
+
+function fcntl(__fd:longint; __cmd:longint; args:array of const):longint;cdecl;external clib name 'fcntl';
+function fcntl(__fd:longint; __cmd:longint):longint;cdecl;external clib name 'fcntl';
+
+function open(__file:Pchar; __oflag:longint; args:array of const):longint;cdecl;external clib name 'open';
+function open(__file:Pchar; __oflag:longint):longint;cdecl;external clib name 'open';
+
+function open64(__file:Pchar; __oflag:longint; args:array of const):longint;cdecl;external clib name 'open64';
+function open64(__file:Pchar; __oflag:longint):longint;cdecl;external clib name 'open64';
+
+function creat(__file:Pchar; __mode:__mode_t):longint;cdecl;external clib name 'creat';
+function creat64(__file:Pchar; __mode:__mode_t):longint;cdecl;external clib name 'creat64';
+
+const
+  F_LOCK = 1;
+  F_TLOCK = 2;
+  F_TEST = 3;
+
+function lockf(__fd:longint; __cmd:longint; __len:__off_t):longint;cdecl;external clib name 'lockf';
+function lockf64(__fd:longint; __cmd:longint; __len:__off64_t):longint;cdecl;external clib name 'lockf64';
+
+function posix_fadvise(__fd:longint; __offset:__off_t; __len:size_t; __advise:longint):longint;cdecl;external clib name 'posix_fadvise';
+function posix_fadvise64(__fd:longint; __offset:__off64_t; __len:size_t; __advise:longint):longint;cdecl;external clib name 'posix_fadvise64';
+
+function posix_fallocate(__fd:longint; __offset:__off_t; __len:size_t):longint;cdecl;external clib name 'posix_fallocate';
+function posix_fallocate64(__fd:longint; __offset:__off64_t; __len:size_t):longint;cdecl;external clib name 'posix_fallocate64';
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  
+function fcntl(Handle: Integer; Command: Integer; var Lock: TFlock): Integer; cdecl; external clib name 'fcntl';
+function fcntl(Handle: Integer; Command: Integer; Arg: Longint): Integer; cdecl;external clib name 'fcntl';
+

+ 27 - 0
packages/base/libc/fenvh.inc

@@ -0,0 +1,27 @@
+
+function feclearexcept(__excepts:longint):longint;cdecl;external clib name 'feclearexcept';
+function fegetexceptflag(__flagp:Pfexcept_t; __excepts:longint):longint;cdecl;external clib name 'fegetexceptflag';
+function feraiseexcept(__excepts:longint):longint;cdecl;external clib name 'feraiseexcept';
+function fesetexceptflag(__flagp:Pfexcept_t; __excepts:longint):longint;cdecl;external clib name 'fesetexceptflag';
+function fetestexcept(__excepts:longint):longint;cdecl;external clib name 'fetestexcept';
+function fegetround:longint;cdecl;external clib name 'fegetround';
+function fesetround(__rounding_direction:longint):longint;cdecl;external clib name 'fesetround';
+function fegetenv(__envp:Pfenv_t):longint;cdecl;external clib name 'fegetenv';
+function feholdexcept(__envp:Pfenv_t):longint;cdecl;external clib name 'feholdexcept';
+function fesetenv(__envp:Pfenv_t):longint;cdecl;external clib name 'fesetenv';
+function feupdateenv(__envp:Pfenv_t):longint;cdecl;external clib name 'feupdateenv';
+function feenableexcept(__excepts:longint):longint;cdecl;external clib name 'feenableexcept';
+function fedisableexcept(__excepts:longint):longint;cdecl;external clib name 'fedisableexcept';
+function fegetexcept:longint;cdecl;external clib name 'fegetexcept';
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  
+function fegetexceptflag(var __flagp:fexcept_t; __excepts:longint):longint;cdecl;external clib name 'fegetexceptflag';
+function fesetexceptflag(const __flagp:fexcept_t; __excepts:longint):longint;cdecl;external clib name 'fesetexceptflag';
+function fegetenv(var __envp:fenv_t):longint;cdecl;external clib name 'fegetenv';
+function feholdexcept(var __envp:fenv_t):longint;cdecl;external clib name 'feholdexcept';
+function fesetenv(const __envp:fenv_t):longint;cdecl;external clib name 'fesetenv';
+function feupdateenv(var __envp:fenv_t):longint;cdecl;external clib name 'feupdateenv';

+ 15 - 0
packages/base/libc/fileh.inc

@@ -0,0 +1,15 @@
+
+const
+   L_SET = 0;
+   L_INCR = 1;
+   L_XTND = 2;
+
+
+function __flock(__fd:longint; __operation:longint):longint;cdecl;external clib name 'flock';
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 41 - 0
packages/base/libc/fmtmsgh.inc

@@ -0,0 +1,41 @@
+
+Const
+  MM_HARD = $001;
+  MM_SOFT = $002;
+  MM_FIRM = $004;
+  MM_APPL = $008;
+  MM_UTIL = $010;
+  MM_OPSYS = $020;
+  MM_RECOVER = $040;
+  MM_NRECOV = $080;
+  MM_PRINT = $100;
+  MM_CONSOLE = $200;
+
+  MM_NOSEV = 0;
+  MM_HALT = 1;
+  MM_ERROR = 2;
+  MM_WARNING = 3;
+  MM_INFO = 4;
+
+  MM_NULLLBL       = PChar(nil);
+  MM_NULLSEV       = 0;
+  MM_NULLMC        = Longint(0);
+  MM_NULLTXT       = PChar(0);
+  MM_NULLACT       = PChar(0);
+  MM_NULLTAG       = PChar(0);
+
+  MM_NOTOK = -(1);
+  MM_OK = 0;
+  MM_NOMSG = 1;
+  MM_NOCON = 4;
+
+
+function fmtmsg(__classification:longint; __label:Pchar; __severity:longint; __text:Pchar; __action:Pchar;  __tag:Pchar):longint;cdecl;external clib name 'fmtmsg';
+function addseverity(__severity:longint; __string:Pchar):longint;cdecl;external clib name 'addseverity';
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 24 - 0
packages/base/libc/fnmatchh.inc

@@ -0,0 +1,24 @@
+
+
+    const
+       FNM_PATHNAME = 1 shl 0;
+       FNM_NOESCAPE = 1 shl 1;
+       FNM_PERIOD = 1 shl 2;
+
+       FNM_FILE_NAME = FNM_PATHNAME;
+       FNM_LEADING_DIR = 1 shl 3;
+       FNM_CASEFOLD = 1 shl 4;
+       FNM_EXTMATCH = 1 shl 5;
+
+    const
+       FNM_NOMATCH = 1;
+
+       FNM_NOSYS = -(1);
+
+function fnmatch(__pattern:Pchar; __name:Pchar; __flags:longint):longint;cdecl;external clib name 'fnmatch';
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 37 - 0
packages/base/libc/fstabh.inc

@@ -0,0 +1,37 @@
+
+const
+   _PATH_FSTAB = '/etc/fstab';
+   _FSTAB = '/etc/fstab';
+   FSTAB_RW = 'rw';
+   FSTAB_RQ = 'rq';
+   FSTAB_RO = 'ro';
+   FSTAB_SW = 'sw';
+   FSTAB_XX = 'xx';
+
+type
+   Pfstab = ^fstab;
+   fstab = record
+        fs_spec : Pchar;
+        fs_file : Pchar;
+        fs_vfstype : Pchar;
+        fs_mntops : Pchar;
+        fs_type : Pchar;
+        fs_freq : longint;
+        fs_passno : longint;
+   end;
+
+
+function getfsent:Pfstab;cdecl;external clib name 'getfsent';
+function getfsspec(__name:Pchar):Pfstab;cdecl;external clib name 'getfsspec';
+function getfsfile(__name:Pchar):Pfstab;cdecl;external clib name 'getfsfile';
+function setfsent:longint;cdecl;external clib name 'setfsent';
+procedure endfsent;cdecl;external clib name 'endfsent';
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TFSTab = fstab;
+      

+ 66 - 0
packages/base/libc/gconfigh.inc

@@ -0,0 +1,66 @@
+
+type
+   Pwint_t = ^wint_t;
+
+   _G_size_t = size_t;
+
+   P_G_fpos_t = ^_G_fpos_t;
+   _G_fpos_t = record
+        __pos : __off_t;
+        __state : __mbstate_t;
+     end;
+
+   P_G_fpos64_t = ^_G_fpos64_t;
+   _G_fpos64_t = record
+        __pos : __off64_t;
+        __state : __mbstate_t;
+     end;
+
+   _G_ssize_t = __ssize_t;
+   _G_off_t = __off_t;
+   _G_off64_t = __off64_t;
+   _G_pid_t = __pid_t;
+   _G_uid_t = __uid_t;
+   _G_wchar_t = wchar_t;
+   _G_wint_t = wint_t;
+   _G_stat64 = _stat64;
+type
+
+   P_G_iconv_t = ^_G_iconv_t;
+   _G_iconv_t = record
+       case longint of
+          0 : ( __cd : __gconv_info );
+          1 : ( __combined : record
+               __cd : __gconv_info;
+               __data : __gconv_step_data;
+            end );
+       end;
+
+const
+   _G_HAVE_BOOL = 1;
+   _G_HAVE_ATEXIT = 1;
+   _G_HAVE_SYS_CDEFS = 1;
+   _G_HAVE_SYS_WAIT = 1;
+   _G_NEED_STDARG_H = 1;
+   _G_HAVE_PRINTF_FP = 1;
+   _G_HAVE_MMAP = 1;
+   _G_HAVE_LONG_DOUBLE_IO = 1;
+   _G_HAVE_IO_FILE_OPEN = 1;
+   _G_HAVE_IO_GETLINE_INFO = 1;
+   _G_IO_IO_FILE_VERSION = $20001;
+
+   _G_BUFSIZ = 8192;
+   _G_NAMES_HAVE_UNDERSCORE = 0;
+   _G_VTABLE_LABEL_HAS_LENGTH = 1;
+   _G_USING_THUNKS = 1;
+   _G_VTABLE_LABEL_PREFIX = '__vt_';
+   _G_VTABLE_LABEL_PREFIX_ID = '__vt_';
+
+Type
+   _G_va_list = Pointer;
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 109 - 0
packages/base/libc/gconvh.inc

@@ -0,0 +1,109 @@
+
+// function __UNKNOWN_10646_CHAR : wchar_t;
+
+Const
+//  __UNKNOWN_10646_CHAR = wchar_t($fffd);
+  
+  __GCONV_OK = 0;
+  __GCONV_NOCONV = 1;
+  __GCONV_NODB = 2;
+  __GCONV_NOMEM = 3;
+  __GCONV_EMPTY_INPUT = 4;
+  __GCONV_FULL_OUTPUT = 5;
+  __GCONV_ILLEGAL_INPUT = 6;
+  __GCONV_INCOMPLETE_INPUT = 7;
+  __GCONV_ILLEGAL_DESCRIPTOR = 8;
+  __GCONV_INTERNAL_ERROR = 9;
+
+  __GCONV_IS_LAST = $0001;
+  __GCONV_IGNORE_ERRORS = $0002;
+     
+type
+   // Forward definitions.
+   P__gconv_step = ^__gconv_step;
+   P__gconv_step_data = ^__gconv_step_data;
+   P__gconv_loaded_object = pointer; // ^__gconv_loaded_object;
+   P__gconv_trans_data = ^__gconv_trans_data;
+
+
+   __gconv_fct = function (_para1:P__gconv_step; _para2:P__gconv_step_data; _para3:PPbyte; _para4:Pbyte; _para5:PPbyte; 
+                _para6:Psize_t; _para7:longint; _para8:longint):longint;cdecl;
+
+   __gconv_init_fct = function (_para1:P__gconv_step):longint;cdecl;
+
+   __gconv_end_fct = procedure (_para1:P__gconv_step);cdecl;
+
+   __gconv_trans_fct = function (_para1:P__gconv_step; _para2:P__gconv_step_data; _para3:pointer; _para4:Pbyte; _para5:PPbyte; 
+                _para6:Pbyte; _para7:PPbyte; _para8:Psize_t):longint;cdecl;
+
+   __gconv_trans_context_fct = function (_para1:pointer; _para2:Pbyte; _para3:Pbyte; _para4:Pbyte; _para5:Pbyte):longint;cdecl;
+
+   __gconv_trans_query_fct = function (_para1:Pchar; _para2:PPPchar; _para3:Psize_t):longint;cdecl;
+
+   __gconv_trans_init_fct = function (_para1:Ppointer; _para2:Pchar):longint;cdecl;
+
+   __gconv_trans_end_fct = procedure (_para1:pointer);cdecl;
+
+   __gconv_trans_data = record
+        __trans_fct : __gconv_trans_fct;
+        __trans_context_fct : __gconv_trans_context_fct;
+        __trans_end_fct : __gconv_trans_end_fct;
+        __data : pointer;
+        __next : P__gconv_trans_data;
+     end;
+
+   __gconv_step = record
+        __shlib_handle : P__gconv_loaded_object;
+        __modname : Pchar;
+        __counter : longint;
+        __from_name : Pchar;
+        __to_name : Pchar;
+        __fct : __gconv_fct;
+        __init_fct : __gconv_init_fct;
+        __end_fct : __gconv_end_fct;
+        __min_needed_from : longint;
+        __max_needed_from : longint;
+        __min_needed_to : longint;
+        __max_needed_to : longint;
+        __stateful : longint;
+        __data : pointer;
+     end;
+
+   __gconv_step_data = record
+        __outbuf : Pbyte;
+        __outbufend : Pbyte;
+        __flags : longint;
+        __invocation_counter : longint;
+        __internal_use : longint;
+        __statep : P__mbstate_t;
+        __state : __mbstate_t;
+        __trans : P__gconv_trans_data;
+     end;
+
+
+   P__gconv_info = ^__gconv_info;
+   __gconv_info = record
+        __nsteps : size_t;
+        __steps : P__gconv_step;
+     end;
+   __gconv_t = P__gconv_info;
+   P__gconv_t = ^__gconv_t;
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TGConvStep = __gconv_step;
+  PGConvStep = ^__gconv_step;
+  
+  TGConvStepData = __gconv_step_data;
+  PGConvStepData = ^TGConvStepData;
+  
+  TGConvTransData = __gconv_trans_data;
+  PGConvTransData = ^TGConvTransData;
+
+  TGConvInfo = __gconv_info;
+  PGConvInfo = ^TGConvInfo;
+  

+ 34 - 0
packages/base/libc/getopth.inc

@@ -0,0 +1,34 @@
+
+var
+  optarg : Pchar;cvar;external;
+  optind : longint;cvar;external;
+  opterr : longint;cvar;external;
+  optopt : longint;cvar;external;
+
+type
+   Poption = ^option;
+   option = record
+     name : Pchar;
+     has_arg : longint;
+     flag : Plongint;
+     val : longint;
+   end;
+
+
+const
+   no_argument = 0;
+   required_argument = 1;
+   optional_argument = 2;
+
+
+function getopt(___argc:longint; ___argv:PPchar; __shortopts:Pchar):longint;cdecl;external clib name 'getopt';
+function getopt_long(___argc:longint; ___argv:PPchar; __shortopts:Pchar; __longopts:Poption; __longind:Plongint):longint;cdecl;external clib name 'getopt_long';
+function getopt_long_only(___argc:longint; ___argv:PPchar; __shortopts:Pchar; __longopts:Poption; __longind:Plongint):longint;cdecl;external clib name 'getopt_long_only';
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  
+function getopt_long(___argc:longint; ___argv:PPchar; __shortopts:Pchar; const __longopts:option; var __longind:longint):longint;cdecl;external clib name 'getopt_long';
+function getopt_long_only(___argc:longint; ___argv:PPchar; __shortopts:Pchar; const __longopts:option; var __longind:longint):longint;cdecl;external clib name 'getopt_long_only';

+ 9 - 0
packages/base/libc/glibc_versionh.inc

@@ -0,0 +1,9 @@
+
+function gnu_get_libc_release:Pchar;cdecl;external clib name 'gnu_get_libc_release';
+function gnu_get_libc_version:Pchar;cdecl;external clib name 'gnu_get_libc_version';
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 87 - 0
packages/base/libc/globh.inc

@@ -0,0 +1,87 @@
+Const
+  GLOB_ERR = 1 shl 0;
+  GLOB_MARK = 1 shl 1;
+  GLOB_NOSORT = 1 shl 2;
+  GLOB_DOOFFS = 1 shl 3;
+  GLOB_NOCHECK = 1 shl 4;
+  GLOB_APPEND = 1 shl 5;
+  GLOB_NOESCAPE = 1 shl 6;
+  GLOB_PERIOD = 1 shl 7;
+  GLOB_MAGCHAR = 1 shl 8;
+  GLOB_ALTDIRFUNC = 1 shl 9;
+  GLOB_BRACE = 1 shl 10;
+  GLOB_NOMAGIC = 1 shl 11;
+  GLOB_TILDE = 1 shl 12;
+  GLOB_ONLYDIR = 1 shl 13;
+  GLOB_TILDE_CHECK = 1 shl 14;
+  __GLOB_FLAGS = ((((((((((((GLOB_ERR or GLOB_MARK) or GLOB_NOSORT) or GLOB_DOOFFS) or GLOB_NOESCAPE) or GLOB_NOCHECK) or GLOB_APPEND) or GLOB_PERIOD) or GLOB_ALTDIRFUNC) or GLOB_BRACE) or GLOB_NOMAGIC) or GLOB_TILDE) or GLOB_ONLYDIR) or GLOB_TILDE_CHECK;
+  GLOB_NOSPACE = 1;
+  GLOB_ABORTED = 2;
+  GLOB_NOMATCH = 3;
+  GLOB_NOSYS = 4;
+
+  GLOB_ABEND = GLOB_ABORTED;
+
+Type
+  TGlobCloseDirProc = procedure(Param: Pointer); cdecl; 
+  TGlobReadDirFunc = function(Param: Pointer): PDirEnt; cdecl; 
+  TGlobOpenDirFunc = function(Param: PChar): __ptr_t; cdecl; 
+  TGlobStatFunc = function(Param1: PChar; Param2: PStatBuf): longint; cdecl; 
+
+   Pglob_t = ^glob_t;
+   glob_t = record
+     gl_pathc : size_t;
+     gl_pathv : ^Pchar;
+     gl_offs : size_t;
+     gl_flags : longint;
+     gl_closedir : TGlobClosedirProc;
+     gl_readdir : TGlobReaddirFunc;
+     gl_opendir : TGlobOpendirFunc;
+     gl_lstat : TGlobStatFunc;
+     gl_stat : TGlobStatFunc;
+   end;
+
+  TGlobReadDir64Func = function(Param: Pointer): PDirEnt64; cdecl;
+  TGlobStat64Func = function(Param1: PChar; Param2: PStatBuf64): longint; cdecl; 
+
+  Pglob64_t = ^glob64_t;
+  glob64_t = record
+    gl_pathc: size_t;
+    gl_pathv: PPChar;
+    gl_offs: size_t;
+    gl_flags: longint;
+    gl_closedir: TGlobCloseDirProc;
+    gl_readdir: TGlobReaddir64Func;
+    gl_opendir: TGlobOpenDirFunc;
+    gl_lstat: TGlobStat64Func;
+    gl_stat: TGlobStat64Func;
+  end;
+    
+  TGlobErrFunc = function(PathName: PChar; ErrNo: longint): longint; cdecl;
+    
+function glob(__pattern:Pchar; __flags:longint; __errfunc:TGlobErrFunc; __pglob:Pglob_t):longint;cdecl;external clib name 'glob';
+procedure globfree(__pglob:Pglob_t);cdecl;external clib name 'globfree';
+
+function glob64(__pattern: PChar; __flags: longint; __errfunc: TGlobErrFunc; __pglob: Pglob64_t): longint; cdecl;external clib name 'glob64';
+procedure globfree64(__pglob: Pglob64_t); cdecl;external clib name 'globfree64';
+
+function glob_pattern_p(__pattern: PChar; __quote: longint): longint; cdecl;external clib name 'glob_pattern_p';
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TGlobData = glob_t;
+  PGlobData = ^TGlobData;
+    
+  TGlob64Data = glob_t;
+  PGlob64Data = ^TGlob64Data;
+
+  TGlobReadDirProc = TGlobReadDirFunc;
+  TGlobOpenDirProc = TGlobOpenDirFunc;
+  TGlobStatProc = TGlobStatFunc;
+
+  TGlobReadDir64Proc = TGlobReadDir64Func;
+  TGlobStat64Proc = TGlobStat64Func;

+ 57 - 0
packages/base/libc/glue.inc

@@ -0,0 +1,57 @@
+{ ---------------------------------------------------------------------
+    glue.inc : Glue between libc and Pascal types
+  ---------------------------------------------------------------------}
+
+Type
+
+  __ptr_t = Pointer;
+  P__ptr_t = ^__ptr_t;
+  ptrdiff_t = Integer;
+  __long_double_t = Extended;
+  P__long_double_t = ^__long_double_t;
+  size_t = Cardinal;
+  Psize_t = size_t;
+{$ifdef ver1_0}
+  UInt64 = Int64; // Must be unsigned.
+{$else}
+  UInt64 = 0..High(Int64); // Must be unsigned.
+{$endif}  
+  wchar_t = widechar;
+  Pwchar_t = ^wchar_t;
+  PPwchar_t = ^Pwchar_t;
+  PPByte = ^PByte;
+  PPPChar = ^PPChar;
+
+{ ---------------------------------------------------------------------
+    Declarations moved forward because C headers are a mess.
+  ---------------------------------------------------------------------}
+
+Type
+  __sighandler_t = procedure(SigNum: Integer); cdecl;
+  
+  timespec = record
+    tv_sec: Longint;           
+    tv_nsec: Longint;          
+  end;
+                
+  wint_t = Cardinal;
+  __mbstate_t = record
+    count: Integer; 
+    case { __value } Integer of
+      0: (__wch: wint_t);
+      1: (__wchb: packed array[0..4 - 1] of Char);
+    end;
+  mbstate_t = __mbstate_t;
+  P__mbstate_t = ^__mbstate_t;
+  
+{ ---------------------------------------------------------------------
+    Borland compatibility types for forward declarations.
+  ---------------------------------------------------------------------}
+  
+  TSignalHandler = __sighandler_t;
+  TTimeSpec = timespec;
+  PTimeSpec = ^TTimeSpec;
+  TMultiByteState = __mbstate_t;
+  PMultiByteState = ^TMultiByteState;
+                
+        

+ 45 - 0
packages/base/libc/grph.inc

@@ -0,0 +1,45 @@
+
+type
+   Pgroup = ^group;
+   group = record
+        gr_name : Pchar;
+        gr_passwd : Pchar;
+        gr_gid : __gid_t;
+        gr_mem : ^Pchar;
+     end;
+   PPgroup = ^Pgroup;
+   
+procedure setgrent;cdecl;external clib name 'setgrent';
+procedure endgrent;cdecl;external clib name 'endgrent';
+function getgrent:Pgroup;cdecl;external clib name 'getgrent';
+function fgetgrent(__stream:PFILE):Pgroup;cdecl;external clib name 'fgetgrent';
+function putgrent(__p:Pgroup; __f:PFILE):longint;cdecl;external clib name 'putgrent';
+function getgrgid(__gid:__gid_t):Pgroup;cdecl;external clib name 'getgrgid';
+function getgrnam(__name:Pchar):Pgroup;cdecl;external clib name 'getgrnam';
+
+const
+   NSS_BUFLEN_GROUP = 1024;
+
+function getgrent_r(__resultbuf:Pgroup; __buffer:Pchar; __buflen:size_t; __result:PPgroup):longint;cdecl;external clib name 'getgrent_r';
+function getgrgid_r(__gid:__gid_t; __resultbuf:Pgroup; __buffer:Pchar; __buflen:size_t; __result:PPgroup):longint;cdecl;external clib name 'getgrgid_r';
+function getgrnam_r(__name:Pchar; __resultbuf:Pgroup; __buffer:Pchar; __buflen:size_t; __result:PPgroup):longint;cdecl;external clib name 'getgrnam_r';
+function fgetgrent_r(__stream:PFILE; __resultbuf:Pgroup; __buffer:Pchar; __buflen:size_t; __result:PPgroup):longint;cdecl;external clib name 'fgetgrent_r';
+function setgroups(__n:size_t; __groups:P__gid_t):longint;cdecl;external clib name 'setgroups';
+function getgrouplist(__user:Pchar; __group:__gid_t; __groups:P__gid_t; __ngroups:Plongint):longint;cdecl;external clib name 'getgrouplist';
+function initgroups(__user:Pchar; __group:__gid_t):longint;cdecl;external clib name 'initgroups';
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TGroup = group;
+
+function putgrent(const __p: group; __f:PFILE):longint;cdecl;external clib name 'putgrent';
+function getgrent_r(var __resultbuf: group; __buffer:Pchar; __buflen:size_t; var __result: Pgroup):longint;cdecl;external clib name 'getgrent_r';
+function getgrgid_r(__gid:__gid_t; var __resultbuf:group; __buffer:Pchar; __buflen:size_t; var __result:Pgroup):longint;cdecl;external clib name 'getgrgid_r';
+function getgrnam_r(__name:Pchar; var __resultbuf:group; __buffer:Pchar; __buflen:size_t; var __result:Pgroup):longint;cdecl;external clib name 'getgrnam_r';
+function fgetgrent_r(__stream:PFILE; var __resultbuf:group; __buffer:Pchar; __buflen:size_t; var __result:Pgroup):longint;cdecl;external clib name 'fgetgrent_r';
+function getgrouplist(__user:Pchar; __group:__gid_t; var __groups: __gid_t; var __ngroups:longint):longint;cdecl;external clib name 'getgrouplist';
+  

+ 17 - 0
packages/base/libc/h2p

@@ -0,0 +1,17 @@
+#!/bin/sh
+f=`basename $1 .h`
+sed -f h2p1.sed <$1 >$1.new
+mv $1.new $1
+h2pas -e -S -c -D -l libc -i -p -o $f.out $*
+sed -f h2p2.sed <${f}.out >${f}h.inc
+cat <<EOF >>${f}h.inc
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  
+EOF
+#
+# end of script
+#

+ 10 - 0
packages/base/libc/h2p1.sed

@@ -0,0 +1,10 @@
+s/__const//g
+s/__THROW//g
+s/__restrict//g
+s/__BEGIN_DECLS//g
+s/__END_DECLS//g
+s/volatile//g
+s/__extension__//g
+s/__attribute_pure__//g
+s/__attribute_malloc__//g
+s/__attribute__ ((__))//g

+ 2 - 0
packages/base/libc/h2p2.sed

@@ -0,0 +1,2 @@
+1,13d
+s/External_library/clib/

+ 16 - 0
packages/base/libc/iconvh.inc

@@ -0,0 +1,16 @@
+
+type
+
+   Piconv_t = ^iconv_t;
+   iconv_t = pointer;
+
+function iconv_open(__tocode:Pchar; __fromcode:Pchar):iconv_t;cdecl;external clib name 'iconv_open';
+function iconv(__cd:iconv_t; __inbuf:PPchar; __inbytesleft:Psize_t; __outbuf:PPchar; __outbytesleft:Psize_t):size_t;cdecl;external clib name 'iconv';
+function iconv_close(__cd:iconv_t):longint;cdecl;external clib name 'iconv_close';
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+function iconv(__cd:iconv_t; var __inbuf:Pchar; var __inbytesleft:size_t; var __outbuf:Pchar; var __outbytesleft: size_t):size_t;cdecl;external clib name 'iconv';

+ 6 - 0
packages/base/libc/igmph.inc

@@ -0,0 +1,6 @@
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 27 - 0
packages/base/libc/ineth.inc

@@ -0,0 +1,27 @@
+
+type
+
+   Psocklen_t = ^socklen_t;
+   socklen_t = __socklen_t;
+
+function inet_addr(__cp:Pchar):in_addr_t;cdecl;external clib name 'inet_addr';
+function inet_lnaof(__in:in_addr):in_addr_t;cdecl;external clib name 'inet_lnaof';
+function inet_makeaddr(__net:in_addr_t; __host:in_addr_t): in_addr_t;cdecl;external clib name 'inet_makeaddr';
+function inet_netof(__in:in_addr):in_addr_t;cdecl;external clib name 'inet_netof';
+function inet_network(__cp:Pchar):in_addr_t;cdecl;external clib name 'inet_network';
+function inet_ntoa(__in:in_addr):Pchar;cdecl;external clib name 'inet_ntoa';
+function inet_pton(__af:longint; __cp:Pchar; __buf:pointer):longint;cdecl;external clib name 'inet_pton';
+function inet_ntop(__af:longint; __cp:pointer; __buf:Pchar; __len:socklen_t):Pchar;cdecl;external clib name 'inet_ntop';
+function inet_aton(__cp:Pchar; __inp:Pin_addr):in_addr_t;cdecl;external clib name 'inet_aton';
+function inet_neta(__net:in_addr_t; __buf:Pchar; __len:size_t):Pchar;cdecl;external clib name 'inet_neta';
+function inet_net_ntop(__af:longint; __cp:pointer; __bits:longint; __buf:Pchar; __len:size_t):Pchar;cdecl;external clib name 'inet_net_ntop';
+function inet_net_pton(__af:longint; __cp:Pchar; __buf:pointer; __len:size_t):longint;cdecl;external clib name 'inet_net_pton';
+function inet_nsap_addr(__cp:Pchar; __buf:Pbyte; __len:longint):dword;cdecl;external clib name 'inet_nsap_addr';
+function inet_nsap_ntoa(__len:longint; __cp:Pbyte; __buf:Pchar):Pchar;cdecl;external clib name 'inet_nsap_ntoa';
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 15 - 0
packages/base/libc/inttypesh.inc

@@ -0,0 +1,15 @@
+
+type
+  Pimaxdiv_t = ^imaxdiv_t;
+  imaxdiv_t = record
+    quot : int64;
+    rem : int64;
+  end;
+
+function imaxabs (__n : intmax_t) : intmax_t; cdecl; external clib name 'imaxabs';
+function imaxdiv (__numer: intmax_t; __denom: intmax_t): imaxdiv_t; cdecl;external clib name 'imaxdiv';
+function strtoimax(__nptr: PChar; __endptr: PPChar; __base: Integer): intmax_t;cdecl;external clib name 'strtoimax';
+function strtoumax(__nptr: PChar; __endptr: PPChar; __base: Integer): uintmax_t; cdecl; external clib name 'strtoumax';
+function wcstoimax(__nptr: Pwchar_t; __endptr: PPwchar_t; __base: Integer): intmax_t; cdecl;external clib name 'wcstoimax';
+function wcstoumax(__nptr: Pwchar_t; __endptr: PPwchar_t; __base: Integer): uintmax_t; cdecl;external clib name 'wcstoumax';
+

+ 62 - 0
packages/base/libc/ioctl_typesh.inc

@@ -0,0 +1,62 @@
+
+type
+   Pwinsize = ^winsize;
+   winsize = record
+        ws_row : word;
+        ws_col : word;
+        ws_xpixel : word;
+        ws_ypixel : word;
+     end;
+
+
+const
+   NCC = 8;
+type
+   Ptermio = ^termio;
+   termio = record
+        c_iflag : word;
+        c_oflag : word;
+        c_cflag : word;
+        c_lflag : word;
+        c_line : byte;
+        c_cc : array[0..(NCC)-1] of byte;
+     end;
+
+
+const
+   TIOCM_LE = $001;
+   TIOCM_DTR = $002;
+   TIOCM_RTS = $004;
+   TIOCM_ST = $008;
+   TIOCM_SR = $010;
+   TIOCM_CTS = $020;
+   TIOCM_CAR = $040;
+   TIOCM_RNG = $080;
+   TIOCM_DSR = $100;
+   TIOCM_CD = TIOCM_CAR;
+   TIOCM_RI = TIOCM_RNG;
+   N_TTY = 0;
+   N_SLIP = 1;
+   N_MOUSE = 2;
+   N_PPP = 3;
+   N_STRIP = 4;
+   N_AX25 = 5;
+   N_X25 = 6;
+   N_6PACK = 7;
+   N_MASC = 8;
+   N_R3964 = 9;
+   N_PROFIBUS_FDL = 10;
+   N_IRDA = 11;
+   N_SMSBLOCK = 12;
+   N_HDLC = 13;
+   N_SYNC_PPP = 14;
+   N_HCI = 15;
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TWinSize = winsize;
+  

+ 62 - 0
packages/base/libc/ioctlsh.inc

@@ -0,0 +1,62 @@
+
+const
+   SIOCADDRT = $890B;
+   SIOCDELRT = $890C;
+   SIOCRTMSG = $890D;
+   SIOCGIFNAME = $8910;
+   SIOCSIFLINK = $8911;
+   SIOCGIFCONF = $8912;
+   SIOCGIFFLAGS = $8913;
+   SIOCSIFFLAGS = $8914;
+   SIOCGIFADDR = $8915;
+   SIOCSIFADDR = $8916;
+   SIOCGIFDSTADDR = $8917;
+   SIOCSIFDSTADDR = $8918;
+   SIOCGIFBRDADDR = $8919;
+   SIOCSIFBRDADDR = $891a;
+   SIOCGIFNETMASK = $891b;
+   SIOCSIFNETMASK = $891c;
+   SIOCGIFMETRIC = $891d;
+   SIOCSIFMETRIC = $891e;
+   SIOCGIFMEM = $891f;
+   SIOCSIFMEM = $8920;
+   SIOCGIFMTU = $8921;
+   SIOCSIFMTU = $8922;
+   SIOCSIFHWADDR = $8924;
+   SIOCGIFENCAP = $8925;
+   SIOCSIFENCAP = $8926;
+   SIOCGIFHWADDR = $8927;
+   SIOCGIFSLAVE = $8929;
+   SIOCSIFSLAVE = $8930;
+   SIOCADDMULTI = $8931;
+   SIOCDELMULTI = $8932;
+   SIOCGIFINDEX = $8933;
+   SIOGIFINDEX = SIOCGIFINDEX;
+   SIOCSIFPFLAGS = $8934;
+   SIOCGIFPFLAGS = $8935;
+   SIOCDIFADDR = $8936;
+   SIOCSIFHWBROADCAST = $8937;
+   SIOCGIFCOUNT = $8938;
+   SIOCGIFBR = $8940;
+   SIOCSIFBR = $8941;
+   SIOCGIFTXQLEN = $8942;
+   SIOCSIFTXQLEN = $8943;
+   SIOCDARP = $8953;
+   SIOCGARP = $8954;
+   SIOCSARP = $8955;
+   SIOCDRARP = $8960;
+   SIOCGRARP = $8961;
+   SIOCSRARP = $8962;
+   SIOCGIFMAP = $8970;
+   SIOCSIFMAP = $8971;
+   SIOCADDDLCI = $8980;
+   SIOCDELDLCI = $8981;
+   SIOCDEVPRIVATE = $89F0;
+   SIOCPROTOPRIVATE = $89E0;
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 791 - 0
packages/base/libc/kerneldefs.pp

@@ -0,0 +1,791 @@
+{$mode objfpc}
+{$h+}
+unit kerneldefs;
+
+interface
+// Translated from asm/types.h (i386)
+
+const
+   HZ = 100;
+   EXEC_PAGESIZE = 4096;
+   NGROUPS = 32;
+   NOGROUP = -(1);
+   MAXHOSTNAMELEN = 64;
+   CLOCKS_PER_SEC = 100;
+type
+   Pumode_t = ^umode_t;
+   umode_t = word;
+
+   P__s8 = ^__s8;
+   __s8 = shortint;
+
+   P__u8 = ^__u8;
+   __u8 = byte;
+
+   P__s16 = ^__s16;
+   __s16 = smallint;
+
+   P__u16 = ^__u16;
+   __u16 = word;
+
+   P__s32 = ^__s32;
+   __s32 = longint;
+
+   P__u32 = ^__u32;
+   __u32 = dword;
+
+   P__s64 = ^__s64;
+   __s64 = int64;
+
+   P__u64 = ^__u64;
+   __u64 = qword;
+
+type
+
+   Ps8 = ^s8;
+   s8 = char;
+
+   Pu8 = ^u8;
+   u8 = byte;
+
+   Ps16 = ^s16;
+   s16 = smallint;
+
+   Pu16 = ^u16;
+   u16 = word;
+
+   Ps32 = ^s32;
+   s32 = longint;
+
+   Pu32 = ^u32;
+   u32 = dword;
+
+   Ps64 = ^s64;
+   s64 = int64;
+
+   Pu64 = ^u64;
+   u64 = qword;
+
+const
+   BITS_PER_LONG = 32;
+
+// Translated from include/linux/if_ether.h
+
+
+const
+   ETH_ALEN = 6;
+   ETH_HLEN = 14;
+   ETH_ZLEN = 60;
+   ETH_DATA_LEN = 1500;
+   ETH_FRAME_LEN = 1514;
+   ETH_P_LOOP = $0060;
+   ETH_P_PUP = $0200;
+   ETH_P_PUPAT = $0201;
+   ETH_P_IP = $0800;
+   ETH_P_X25 = $0805;
+   ETH_P_ARP = $0806;
+   ETH_P_BPQ = $08FF;
+   ETH_P_IEEEPUP = $0a00;
+   ETH_P_IEEEPUPAT = $0a01;
+   ETH_P_DEC = $6000;
+   ETH_P_DNA_DL = $6001;
+   ETH_P_DNA_RC = $6002;
+   ETH_P_DNA_RT = $6003;
+   ETH_P_LAT = $6004;
+   ETH_P_DIAG = $6005;
+   ETH_P_CUST = $6006;
+   ETH_P_SCA = $6007;
+   ETH_P_RARP = $8035;
+   ETH_P_ATALK = $809B;
+   ETH_P_AARP = $80F3;
+   ETH_P_8021Q = $8100;
+   ETH_P_IPX = $8137;
+   ETH_P_IPV6 = $86DD;
+   ETH_P_PPP_DISC = $8863;
+   ETH_P_PPP_SES = $8864;
+   ETH_P_ATMMPOA = $884c;
+   ETH_P_ATMFATE = $8884;
+   ETH_P_802_3 = $0001;
+   ETH_P_AX25 = $0002;
+   ETH_P_ALL = $0003;
+   ETH_P_802_2 = $0004;
+   ETH_P_SNAP = $0005;
+   ETH_P_DDCMP = $0006;
+   ETH_P_WAN_PPP = $0007;
+   ETH_P_PPP_MP = $0008;
+   ETH_P_LOCALTALK = $0009;
+   ETH_P_PPPTALK = $0010;
+   ETH_P_TR_802_2 = $0011;
+   ETH_P_MOBITEX = $0015;
+   ETH_P_CONTROL = $0016;
+   ETH_P_IRDA = $0017;
+   ETH_P_ECONET = $0018;
+type
+   Pethhdr = ^ethhdr;
+   ethhdr = record
+        h_dest : array[0..(ETH_ALEN)-1] of byte;
+        h_source : array[0..(ETH_ALEN)-1] of byte;
+        h_proto : word;
+     end;
+
+// Translated from include/linux/if_fddi.h
+
+
+const
+   FDDI_K_ALEN = 6;
+   FDDI_K_8022_HLEN = 16;
+   FDDI_K_SNAP_HLEN = 21;
+   FDDI_K_8022_ZLEN = 16;
+   FDDI_K_SNAP_ZLEN = 21;
+   FDDI_K_8022_DLEN = 4475;
+   FDDI_K_SNAP_DLEN = 4470;
+   FDDI_K_LLC_ZLEN = 13;
+   FDDI_K_LLC_LEN = 4491;
+   FDDI_FC_K_VOID = $00;
+   FDDI_FC_K_NON_RESTRICTED_TOKEN = $80;
+   FDDI_FC_K_RESTRICTED_TOKEN = $C0;
+   FDDI_FC_K_SMT_MIN = $41;
+   FDDI_FC_K_SMT_MAX = $4F;
+   FDDI_FC_K_MAC_MIN = $C1;
+   FDDI_FC_K_MAC_MAX = $CF;
+   FDDI_FC_K_ASYNC_LLC_MIN = $50;
+   FDDI_FC_K_ASYNC_LLC_DEF = $54;
+   FDDI_FC_K_ASYNC_LLC_MAX = $5F;
+   FDDI_FC_K_SYNC_LLC_MIN = $D0;
+   FDDI_FC_K_SYNC_LLC_MAX = $D7;
+   FDDI_FC_K_IMPLEMENTOR_MIN = $60;
+   FDDI_FC_K_IMPLEMENTOR_MAX = $6F;
+   FDDI_FC_K_RESERVED_MIN = $70;
+   FDDI_FC_K_RESERVED_MAX = $7F;
+   FDDI_EXTENDED_SAP = $AA;
+   FDDI_UI_CMD = $03;
+
+type
+   Pfddi_8022_1_hdr = ^fddi_8022_1_hdr;
+   fddi_8022_1_hdr = record
+        dsap : __u8;
+        ssap : __u8;
+        ctrl : __u8;
+     end;
+
+   Pfddi_8022_2_hdr = ^fddi_8022_2_hdr;
+   fddi_8022_2_hdr = record
+        dsap : __u8;
+        ssap : __u8;
+        ctrl_1 : __u8;
+        ctrl_2 : __u8;
+     end;
+
+
+const
+   FDDI_K_OUI_LEN = 3;
+type
+   Pfddi_snap_hdr = ^fddi_snap_hdr;
+   fddi_snap_hdr = record
+        dsap : __u8;
+        ssap : __u8;
+        ctrl : __u8;
+        oui : array[0..(FDDI_K_OUI_LEN)-1] of __u8;
+        ethertype : __u16;
+     end;
+
+   Pfddihdr = ^fddihdr;
+   fddihdr = record
+        fc : __u8;
+        daddr : array[0..(FDDI_K_ALEN)-1] of __u8;
+        saddr : array[0..(FDDI_K_ALEN)-1] of __u8;
+        hdr : record
+            case longint of
+               0 : ( llc_8022_1 : fddi_8022_1_hdr );
+               1 : ( llc_8022_2 : fddi_8022_2_hdr );
+               2 : ( llc_snap : fddi_snap_hdr );
+            end;
+     end;
+
+   Pfddi_statistics = ^fddi_statistics;
+   fddi_statistics = record
+        rx_packets : __u32;
+        tx_packets : __u32;
+        rx_bytes : __u32;
+        tx_bytes : __u32;
+        rx_errors : __u32;
+        tx_errors : __u32;
+        rx_dropped : __u32;
+        tx_dropped : __u32;
+        multicast : __u32;
+        transmit_collision : __u32;
+        rx_length_errors : __u32;
+        rx_over_errors : __u32;
+        rx_crc_errors : __u32;
+        rx_frame_errors : __u32;
+        rx_fifo_errors : __u32;
+        rx_missed_errors : __u32;
+        tx_aborted_errors : __u32;
+        tx_carrier_errors : __u32;
+        tx_fifo_errors : __u32;
+        tx_heartbeat_errors : __u32;
+        tx_window_errors : __u32;
+        rx_compressed : __u32;
+        tx_compressed : __u32;
+        smt_station_id : array[0..7] of __u8;
+        smt_op_version_id : __u32;
+        smt_hi_version_id : __u32;
+        smt_lo_version_id : __u32;
+        smt_user_data : array[0..31] of __u8;
+        smt_mib_version_id : __u32;
+        smt_mac_cts : __u32;
+        smt_non_master_cts : __u32;
+        smt_master_cts : __u32;
+        smt_available_paths : __u32;
+        smt_config_capabilities : __u32;
+        smt_config_policy : __u32;
+        smt_connection_policy : __u32;
+        smt_t_notify : __u32;
+        smt_stat_rpt_policy : __u32;
+        smt_trace_max_expiration : __u32;
+        smt_bypass_present : __u32;
+        smt_ecm_state : __u32;
+        smt_cf_state : __u32;
+        smt_remote_disconnect_flag : __u32;
+        smt_station_status : __u32;
+        smt_peer_wrap_flag : __u32;
+        smt_time_stamp : __u32;
+        smt_transition_time_stamp : __u32;
+        mac_frame_status_Functions : __u32;
+        mac_t_max_capability : __u32;
+        mac_tvx_capability : __u32;
+        mac_available_paths : __u32;
+        mac_current_path : __u32;
+        mac_upstream_nbr : array[0..(FDDI_K_ALEN)-1] of __u8;
+        mac_downstream_nbr : array[0..(FDDI_K_ALEN)-1] of __u8;
+        mac_old_upstream_nbr : array[0..(FDDI_K_ALEN)-1] of __u8;
+        mac_old_downstream_nbr : array[0..(FDDI_K_ALEN)-1] of __u8;
+        mac_dup_address_test : __u32;
+        mac_requested_paths : __u32;
+        mac_downstream_port_type : __u32;
+        mac_smt_address : array[0..(FDDI_K_ALEN)-1] of __u8;
+        mac_t_req : __u32;
+        mac_t_neg : __u32;
+        mac_t_max : __u32;
+        mac_tvx_value : __u32;
+        mac_frame_cts : __u32;
+        mac_copied_cts : __u32;
+        mac_transmit_cts : __u32;
+        mac_error_cts : __u32;
+        mac_lost_cts : __u32;
+        mac_frame_error_threshold : __u32;
+        mac_frame_error_ratio : __u32;
+        mac_rmt_state : __u32;
+        mac_da_flag : __u32;
+        mac_una_da_flag : __u32;
+        mac_frame_error_flag : __u32;
+        mac_ma_unitdata_available : __u32;
+        mac_hardware_present : __u32;
+        mac_ma_unitdata_enable : __u32;
+        path_tvx_lower_bound : __u32;
+        path_t_max_lower_bound : __u32;
+        path_max_t_req : __u32;
+        path_configuration : array[0..7] of __u32;
+        port_my_type : array[0..1] of __u32;
+        port_neighbor_type : array[0..1] of __u32;
+        port_connection_policies : array[0..1] of __u32;
+        port_mac_indicated : array[0..1] of __u32;
+        port_current_path : array[0..1] of __u32;
+        port_requested_paths : array[0..(3 * 2)-1] of __u8;
+        port_mac_placement : array[0..1] of __u32;
+        port_available_paths : array[0..1] of __u32;
+        port_pmd_class : array[0..1] of __u32;
+        port_connection_capabilities : array[0..1] of __u32;
+        port_bs_flag : array[0..1] of __u32;
+        port_lct_fail_cts : array[0..1] of __u32;
+        port_ler_estimate : array[0..1] of __u32;
+        port_lem_reject_cts : array[0..1] of __u32;
+        port_lem_cts : array[0..1] of __u32;
+        port_ler_cutoff : array[0..1] of __u32;
+        port_ler_alarm : array[0..1] of __u32;
+        port_connect_state : array[0..1] of __u32;
+        port_pcm_state : array[0..1] of __u32;
+        port_pc_withhold : array[0..1] of __u32;
+        port_ler_flag : array[0..1] of __u32;
+        port_hardware_present : array[0..1] of __u32;
+     end;
+
+// Translated from /linux/if_slip.h
+
+
+const
+   SL_MODE_SLIP = 0;
+   SL_MODE_CSLIP = 1;
+   SL_MODE_KISS = 4;
+   SL_OPT_SIXBIT = 2;
+   SL_OPT_ADAPTIVE = 8;
+
+   SIOCDEVPRIVATE       = $89F0;
+   SIOCPROTOPRIVATE     = $89E0;
+        
+   SIOCSKEEPALIVE = SIOCDEVPRIVATE;
+   SIOCGKEEPALIVE = SIOCDEVPRIVATE + 1;
+   SIOCSOUTFILL = SIOCDEVPRIVATE + 2;
+   SIOCGOUTFILL = SIOCDEVPRIVATE + 3;
+   SIOCSLEASE = SIOCDEVPRIVATE + 4;
+   SIOCGLEASE = SIOCDEVPRIVATE + 5;
+
+// Translated from /linux/if_tr.h
+
+
+const
+   TR_ALEN = 6;
+   AC = $10;
+   LLC_FRAME = $40;
+
+    EXTENDED_SAP = $AA;
+    UI_CMD = $03;
+
+  
+type
+       Ptrh_hdr = ^trh_hdr;
+       trh_hdr = record
+            ac : __u8;
+            fc : __u8;
+            daddr : array[0..(TR_ALEN)-1] of __u8;
+            saddr : array[0..(TR_ALEN)-1] of __u8;
+            rcf : __u16;
+            rseg : array[0..7] of __u16;
+         end;
+
+       Ptrllc = ^trllc;
+       trllc = record
+            dsap : __u8;
+            ssap : __u8;
+            llc : __u8;
+            protid : array[0..2] of __u8;
+            ethertype : __u16;
+         end;
+
+       Ptr_statistics = ^tr_statistics;
+       tr_statistics = record
+            rx_packets : dword;
+            tx_packets : dword;
+            rx_bytes : dword;
+            tx_bytes : dword;
+            rx_errors : dword;
+            tx_errors : dword;
+            rx_dropped : dword;
+            tx_dropped : dword;
+            multicast : dword;
+            transmit_collision : dword;
+            line_errors : dword;
+            internal_errors : dword;
+            burst_errors : dword;
+            A_C_errors : dword;
+            abort_delimiters : dword;
+            lost_frames : dword;
+            recv_congest_count : dword;
+            frame_copied_errors : dword;
+            frequency_errors : dword;
+            token_errors : dword;
+            dummy1 : dword;
+         end;
+
+
+    const
+       TR_RII = $80;
+       TR_RCF_DIR_BIT = $80;
+       TR_RCF_LEN_MASK = $1f00;
+       TR_RCF_BROADCAST = $8000;
+       TR_RCF_LIMITED_BROADCAST = $C000;
+       TR_RCF_FRAME2K = $20;
+       TR_RCF_BROADCAST_MASK = $C000;
+       TR_MAXRIFLEN = 18;
+
+const
+  TR_HLEN      = (SizeOf(trh_hdr) + SizeOf(trllc));
+
+// Translated from linux/ppp_defs.h
+
+    const
+       PPP_HDRLEN = 4;
+       PPP_FCSLEN = 2;
+       PPP_MRU = 1500;
+
+Function PPP_ADDRESS(const p): __u8;
+Function PPP_CONTROL(const p): __u8;
+Function PPP_PROTOCOL(const p): __u16;
+
+
+Const
+       PPP_ALLSTATIONS = $ff;
+       PPP_UI = $03;
+       PPP_FLAG = $7e;
+       PPP_ESCAPE = $7d;
+       PPP_TRANS = $20;
+       PPP_IP = $21;
+       PPP_AT = $29;
+       PPP_IPX = $2b;
+       PPP_VJC_COMP = $2d;
+       PPP_VJC_UNCOMP = $2f;
+       PPP_MP = $3d;
+       PPP_IPV6 = $57;
+       PPP_COMPFRAG = $fb;
+       PPP_COMP = $fd;
+       PPP_IPCP = $8021;
+       PPP_ATCP = $8029;
+       PPP_IPXCP = $802b;
+       PPP_IPV6CP = $8057;
+       PPP_CCPFRAG = $80fb;
+       PPP_CCP = $80fd;
+       PPP_LCP = $c021;
+       PPP_PAP = $c023;
+       PPP_LQR = $c025;
+       PPP_CHAP = $c223;
+       PPP_CBCP = $c029;
+       PPP_INITFCS = $ffff;
+       PPP_GOODFCS = $f0b8;
+
+    type
+
+       Pext_accm = ^ext_accm;
+       ext_accm = packed array[0..8-1] of __u32;
+
+       NPmode =  Longint;
+       Const
+         NPMODE_PASS = 0;
+         NPMODE_DROP = 1;
+         NPMODE_ERROR = 2;
+         NPMODE_QUEUE = 3;
+
+    type
+       Ppppstat = ^pppstat;
+       pppstat = record
+            ppp_discards : __u32;
+            ppp_ibytes : __u32;
+            ppp_ioctects : __u32;
+            ppp_ipackets : __u32;
+            ppp_ierrors : __u32;
+            ppp_ilqrs : __u32;
+            ppp_obytes : __u32;
+            ppp_ooctects : __u32;
+            ppp_opackets : __u32;
+            ppp_oerrors : __u32;
+            ppp_olqrs : __u32;
+         end;
+
+       Pvjstat = ^vjstat;
+       vjstat = record
+            vjs_packets : __u32;
+            vjs_compressed : __u32;
+            vjs_searches : __u32;
+            vjs_misses : __u32;
+            vjs_uncompressedin : __u32;
+            vjs_compressedin : __u32;
+            vjs_errorin : __u32;
+            vjs_tossed : __u32;
+         end;
+
+       Pcompstat = ^compstat;
+       compstat = record
+            unc_bytes : __u32;
+            unc_packets : __u32;
+            comp_bytes : __u32;
+            comp_packets : __u32;
+            inc_bytes : __u32;
+            inc_packets : __u32;
+            in_count : __u32;
+            bytes_out : __u32;
+            ratio : double;
+         end;
+
+       Pppp_stats = ^ppp_stats;
+       ppp_stats = record
+            p : pppstat;
+            vj : vjstat;
+         end;
+
+       Pppp_comp_stats = ^ppp_comp_stats;
+       ppp_comp_stats = record
+            c : compstat;
+            d : compstat;
+         end;
+
+      __kernel_time_t = Longint; 
+      ppp_idle = record
+          xmit_idle: __kernel_time_t;
+          recv_idle: __kernel_time_t;
+      end;
+      Pppp_idle = ^ppp_idle;
+
+// Translated from linux/ppp-comp.h
+
+    const
+       DO_BSD_COMPRESS = 1;
+       DO_DEFLATE = 1;
+       DO_PREDICTOR_1 = 0;
+       DO_PREDICTOR_2 = 0;
+
+    type
+       Pcompressor = ^compressor;
+       compressor = record
+            compress_proto : longint;
+            comp_alloc : Function (options:Pbyte; opt_len:longint):pointer;cdecl;
+            comp_free : procedure (state:pointer);
+            comp_init : Function (state:pointer; options:Pbyte; opt_len:longint; _unit:longint; opthdr:longint; 
+                         debug:longint):longint;
+            comp_reset : procedure (state:pointer);
+            compress : Function (state:pointer; rptr:Pbyte; obuf:Pbyte; isize:longint; osize:longint):longint;
+            comp_stat : procedure (state:pointer; stats:Pcompstat);
+            decomp_alloc : Function (options:Pbyte; opt_len:longint):pointer;
+            decomp_free : procedure (state:pointer);
+            decomp_init : Function (state:pointer; options:Pbyte; opt_len:longint; _unit:longint; opthdr:longint; 
+                         mru:longint; debug:longint):longint;
+            decomp_reset : procedure (state:pointer);
+            decompress : Function (state:pointer; ibuf:Pbyte; isize:longint; obuf:Pbyte; osize:longint):longint;
+            incomp : procedure (state:pointer; ibuf:Pbyte; icnt:longint);
+            decomp_stat : procedure (state:pointer; stats:Pcompstat);
+         end;
+
+
+    const
+       DECOMP_ERROR = -(1);
+       DECOMP_FATALERROR = -(2);
+       CCP_CONFREQ = 1;
+       CCP_CONFACK = 2;
+       CCP_TERMREQ = 5;
+       CCP_TERMACK = 6;
+       CCP_RESETREQ = 14;
+       CCP_RESETACK = 15;
+       CCP_MAX_OPTION_LENGTH = 32;
+
+
+Function CCP_CODE(dp: Pointer): Byte;
+Function CCP_ID(dp: Pointer): Byte;
+Function CCP_LENGTH(dp: Pointer): Word;
+Function CCP_OPT_CODE(dp: Pointer): Byte;
+Function CCP_OPT_LENGTH(dp: Pointer): Byte;
+
+const
+       CCP_HDRLEN      = 4;
+       CCP_OPT_MINLEN = 2;
+       CI_BSD_COMPRESS = 21;
+       CILEN_BSD_COMPRESS = 3;
+       BSD_CURRENT_VERSION = 1;
+       
+Function BSD_NBITS(x: longint): longint;
+Function BSD_VERSION(x: longint): longint;
+Function BSD_MAKE_OPT(v, n: longint): longint;
+
+    const
+       BSD_MIN_BITS = 9;
+       BSD_MAX_BITS = 15;
+       CI_DEFLATE = 26;
+       CI_DEFLATE_DRAFT = 24;
+       CILEN_DEFLATE = 4;
+       DEFLATE_MIN_SIZE = 8;
+       DEFLATE_MAX_SIZE = 15;
+       DEFLATE_METHOD_VAL = 8;
+
+Function DEFLATE_SIZE(x: longint): longint;
+Function DEFLATE_METHOD(x: longint): longint;
+Function DEFLATE_MAKE_OPT(w: longint): longint;
+    
+    const
+       DEFLATE_CHK_SEQUENCE = 0;
+       CI_PREDICTOR_1 = 1;
+       CILEN_PREDICTOR_1 = 2;
+       CI_PREDICTOR_2 = 2;
+       CILEN_PREDICTOR_2 = 2;
+
+// Translated from linux/atalk.h
+
+    const
+       ATPORT_FIRST = 1;
+       ATPORT_RESERVED = 128;
+       ATPORT_LAST = 254;
+       ATADDR_ANYNET = __u16(0);
+       ATADDR_ANYNODE = __u8(0);
+       ATADDR_ANYPORT = __u8(0);
+       ATADDR_BCAST = __u8(255);
+
+    const
+       DDP_MAXSZ = 587;
+       DDP_MAXHOPS = 15;
+       SIOCATALKDIFADDR = SIOCPROTOPRIVATE + 0;
+    type
+       Pat_addr = ^at_addr;
+       at_addr = record
+            s_net : __u16;
+            s_node : __u8;
+         end;
+         
+       sa_family_t = Word; // From libc.
+  
+       Psockaddr_at = ^sockaddr_at;
+       sockaddr_at = record
+            sat_family : sa_family_t;
+            sat_port : __u8;
+            sat_addr : at_addr;
+            sat_zero : array[0..7] of char;
+         end;
+
+       Pnetrange = ^netrange;
+       netrange = record
+            nr_phase : __u8;
+            nr_firstnet : __u16;
+            nr_lastnet : __u16;
+         end;
+
+       Patalk_route = ^atalk_route;
+       atalk_route = record
+            dev : Pointer; // pnet_device ??
+            target : at_addr;
+            gateway : at_addr;
+            flags : longint;
+            next : Patalk_route;
+         end;
+
+Const
+  ATIF_PROBE      = 1;    { Probing for an address }
+  ATIF_PROBE_FAIL = 2;    { Probe collided }
+        
+Type
+       PATalkIFace = ^TATalkIFace;
+       atalk_iface = record
+           dev: Pointer;  
+           address: at_addr;
+           status: longint; 
+           nets: netrange;  
+           next: PATalkIFace;
+       end;
+      TATalkIFace = atalk_iface;
+                                        
+
+       Patalk_sock = ^atalk_sock;
+       atalk_sock = record
+            dest_net : word;
+            src_net : word;
+            dest_node : byte;
+            src_node : byte;
+            dest_port : byte;
+            src_port : byte;
+         end;
+         
+// Translated from linux/igmp.h
+
+    type
+       Pigmphdr = ^igmphdr;
+       igmphdr = record
+            __type : __u8;
+            code : __u8;
+            csum : __u16;
+            group : __u32;
+         end;
+
+
+    const
+       IGMP_HOST_MEMBERSHIP_QUERY = $11;
+       IGMP_HOST_MEMBERSHIP_REPORT = $12;
+       IGMP_DVMRP = $13;
+       IGMP_PIM = $14;
+       IGMP_TRACE = $15;
+       IGMP_HOST_NEW_MEMBERSHIP_REPORT = $16;
+       IGMP_HOST_LEAVE_MESSAGE = $17;
+       IGMP_MTRACE_RESP = $1e;
+       IGMP_MTRACE = $1f;
+       IGMP_DELAYING_MEMBER = $01;
+       IGMP_IDLE_MEMBER = $02;
+       IGMP_LAZY_MEMBER = $03;
+       IGMP_SLEEPING_MEMBER = $04;
+       IGMP_AWAKENING_MEMBER = $05;
+       IGMP_MINLEN = 8;
+       IGMP_MAX_HOST_REPORT_DELAY = 10;
+       IGMP_TIMER_SCALE = 10;
+       IGMP_AGE_THRESHOLD = 400;
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TATalkRoute = atalk_route;
+
+Implementation
+
+Function PPP_ADDRESS(const p): __u8;
+
+begin
+  Result:=P__u8(@p)^;
+end;
+
+Function PPP_CONTROL(const p): __u8;
+begin
+  Result:=P__u8(Cardinal(@p) + SizeOf(__u8))^;
+end;
+
+Function PPP_PROTOCOL(const p): __u16;
+begin
+  Result:=P__u8(Cardinal(@p) + SizeOf(__u8)*2)^ shl 8;
+  Result:=Result + P__u8(Cardinal(@p) + SizeOf(__u8)*3)^
+end;
+
+Function CCP_CODE(dp: Pointer): Byte;
+begin
+  Result:=PByte(dp)^;
+end;
+
+Function CCP_ID(dp: Pointer): Byte;
+begin
+  Inc(PByte(dp));
+  Result:=PByte(dp)^;
+end;
+
+Function CCP_LENGTH(dp: Pointer): Word;
+begin
+  Inc(PByte(dp), 2);
+  Result:=(PByte(dp)^ shl 8);
+  Inc(PByte(dp), 1);
+  Result:=Result + PByte(dp)^;
+end;
+
+Function CCP_OPT_CODE(dp: Pointer): Byte;
+begin
+  Result:=PByte(dp)^;
+end;
+
+Function CCP_OPT_LENGTH(dp: Pointer): Byte;
+begin
+  Inc(PByte(dp));
+  Result:=PByte(dp)^;
+end;
+
+Function DEFLATE_SIZE(x: longint): longint;
+begin
+  Result:=(Cardinal(x) shr 4) + DEFLATE_MIN_SIZE;
+end;
+
+Function DEFLATE_METHOD(x: longint): longint;
+begin
+  Result:=x and $0F;
+end;
+
+Function DEFLATE_MAKE_OPT(w: longint): longint;
+begin
+  Result:=((w - DEFLATE_MIN_SIZE) shl 4) + DEFLATE_METHOD_VAL;
+end;
+
+Function BSD_NBITS(x: longint): longint;
+begin
+  Result:=(x and $1F);
+end;
+
+Function BSD_VERSION(x: longint): longint;
+begin
+  Result:=Cardinal(x) shr 5;
+end;
+
+Function BSD_MAKE_OPT(v, n: longint): longint;
+begin
+  Result:= longint((Cardinal(v) shl 5) or Cardinal(n));
+end;
+
+end.
+
+  

+ 192 - 0
packages/base/libc/kernelioctl.pp

@@ -0,0 +1,192 @@
+{$mode objfpc}
+{$h+}
+
+Unit kernelioctl;
+
+Interface
+
+const
+   _IOC_NRBITS = 8;
+   _IOC_TYPEBITS = 8;
+   _IOC_SIZEBITS = 14;
+   _IOC_DIRBITS = 2;
+   _IOC_NRMASK = (1 shl _IOC_NRBITS) - 1;
+   _IOC_TYPEMASK = (1 shl _IOC_TYPEBITS) - 1;
+   _IOC_SIZEMASK = (1 shl _IOC_SIZEBITS) - 1;
+   _IOC_DIRMASK = (1 shl _IOC_DIRBITS) - 1;
+   _IOC_NRSHIFT = 0;
+   _IOC_TYPESHIFT = _IOC_NRSHIFT + _IOC_NRBITS;
+   _IOC_SIZESHIFT = _IOC_TYPESHIFT + _IOC_TYPEBITS;
+   _IOC_DIRSHIFT = _IOC_SIZESHIFT + _IOC_SIZEBITS;
+   _IOC_NONE = 0;
+   _IOC_WRITE = 1;
+   _IOC_READ = 2;
+
+Function _IOC(dir, __type, nr, size: cardinal): cardinal;
+Function _IOR(_type,nr,size : cardinal) : cardinal;
+Function _IOW(_type,nr,size : cardinal) : cardinal;
+Function _IOWR(_type,nr,size : cardinal) : cardinal;
+Function _IOC_DIR(nr : cardinal) : cardinal;
+Function _IOC_TYPE(nr : cardinal) : cardinal;
+Function _IOC_NR(nr : cardinal) : cardinal;
+Function _IOC_SIZE(nr : cardinal) : cardinal;
+Function _IO(__type, nr: Cardinal): cardinal;
+
+
+const
+  IOC_IN = _IOC_WRITE shl _IOC_DIRSHIFT;
+  IOC_OUT = _IOC_READ shl _IOC_DIRSHIFT;
+  IOC_INOUT = (_IOC_WRITE or _IOC_READ) shl _IOC_DIRSHIFT;
+  IOCSIZE_MASK = _IOC_SIZEMASK shl _IOC_SIZESHIFT;
+  IOCSIZE_SHIFT = _IOC_SIZESHIFT;
+
+const
+   TCGETS = $5401;
+   TCSETS = $5402;
+   TCSETSW = $5403;
+   TCSETSF = $5404;
+   TCGETA = $5405;
+   TCSETA = $5406;
+   TCSETAW = $5407;
+   TCSETAF = $5408;
+   TCSBRK = $5409;
+   TCXONC = $540A;
+   TCFLSH = $540B;
+   TIOCEXCL = $540C;
+   TIOCNXCL = $540D;
+   TIOCSCTTY = $540E;
+   TIOCGPGRP = $540F;
+   TIOCSPGRP = $5410;
+   TIOCOUTQ = $5411;
+   TIOCSTI = $5412;
+   TIOCGWINSZ = $5413;
+   TIOCSWINSZ = $5414;
+   TIOCMGET = $5415;
+   TIOCMBIS = $5416;
+   TIOCMBIC = $5417;
+   TIOCMSET = $5418;
+   TIOCGSOFTCAR = $5419;
+   TIOCSSOFTCAR = $541A;
+   FIONREAD = $541B;
+   TIOCINQ = FIONREAD;
+   TIOCLINUX = $541C;
+   TIOCCONS = $541D;
+   TIOCGSERIAL = $541E;
+   TIOCSSERIAL = $541F;
+   TIOCPKT = $5420;
+   FIONBIO = $5421;
+   TIOCNOTTY = $5422;
+   TIOCSETD = $5423;
+   TIOCGETD = $5424;
+   TCSBRKP = $5425;
+   TIOCTTYGSTRUCT = $5426;
+   TIOCSBRK = $5427;
+   TIOCCBRK = $5428;
+   TIOCGSID = $5429;
+
+Function TIOCGPTN : Cardinal;
+Function TIOCSPTLCK : Cardinal;
+Function TIOCGDEV : Cardinal;
+
+const
+   FIONCLEX = $5450;
+   FIOCLEX = $5451;
+   FIOASYNC = $5452;
+   TIOCSERCONFIG = $5453;
+   TIOCSERGWILD = $5454;
+   TIOCSERSWILD = $5455;
+   TIOCGLCKTRMIOS = $5456;
+   TIOCSLCKTRMIOS = $5457;
+   TIOCSERGSTRUCT = $5458;
+   TIOCSERGETLSR = $5459;
+   TIOCSERGETMULTI = $545A;
+   TIOCSERSETMULTI = $545B;
+   TIOCMIWAIT = $545C;
+   TIOCGICOUNT = $545D;
+   TIOCGHAYESESP = $545E;
+   TIOCSHAYESESP = $545F;
+   TIOCPKT_DATA = 0;
+   TIOCPKT_FLUSHREAD = 1;
+   TIOCPKT_FLUSHWRITE = 2;
+   TIOCPKT_STOP = 4;
+   TIOCPKT_START = 8;
+   TIOCPKT_NOSTOP = 16;
+   TIOCPKT_DOSTOP = 32;
+   TIOCSER_TEMT = $01;
+
+Implementation
+
+Function _IOC(dir, __type, nr, size: cardinal): cardinal;
+
+begin
+  Result:=(dir shl _IOC_DIRSHIFT) or (__type shl _IOC_TYPESHIFT) or
+          (nr shl _IOC_NRSHIFT) or (size shl _IOC_SIZESHIFT);
+end;
+                                      
+
+Function _IO(__type, nr: Cardinal): cardinal;
+begin
+  Result := _IOC(_IOC_NONE,__type,nr,0);
+end;                                        
+
+
+Function _IOR(_type,nr,size : cardinal) : cardinal;
+begin
+   _IOR:=_IOC(_IOC_READ,_type,nr,size);
+end;
+
+
+Function _IOW(_type,nr,size : cardinal) : cardinal;
+begin
+   _IOW:=_IOC(_IOC_WRITE,_type,nr,size);
+end;
+
+
+Function _IOWR(_type,nr,size : cardinal) : cardinal;
+begin
+   _IOWR:=_IOC(_IOC_READ or _IOC_WRITE,_type,nr,size);
+end;
+
+
+Function _IOC_DIR(nr : cardinal) : cardinal;
+begin
+   _IOC_DIR:=(nr shr _IOC_DIRSHIFT) and _IOC_DIRMASK;
+end;
+
+
+Function _IOC_TYPE(nr : cardinal) : cardinal;
+begin
+   _IOC_TYPE:=(nr shr _IOC_TYPESHIFT) and _IOC_TYPEMASK;
+end;
+
+
+Function _IOC_NR(nr : cardinal) : cardinal;
+begin
+   _IOC_NR:=(nr shr _IOC_NRSHIFT) and _IOC_NRMASK;
+end;
+
+
+Function _IOC_SIZE(nr : cardinal) : cardinal;
+begin
+   _IOC_SIZE:=(nr shr _IOC_SIZESHIFT) and _IOC_SIZEMASK;
+end;
+
+
+Function TIOCGPTN : cardinal;
+begin
+   TIOCGPTN:=_IOR(ord('T'),$30,4);
+end;
+
+Function TIOCSPTLCK : cardinal;
+
+begin
+   TIOCSPTLCK:=_IOW(ord('T'),$31,4);
+end;
+
+Function TIOCGDEV : cardinal;
+
+begin
+   TIOCGDEV:=_IOR(ord('T'),$32,4);
+end;
+
+end.

+ 109 - 0
packages/base/libc/kioctlsh.inc

@@ -0,0 +1,109 @@
+
+{$ifndef __ARCH_I386_IOCTLS_H__}
+{$define __ARCH_I386_IOCTLS_H__}
+{$include <asm/ioctl.h>}
+
+const
+   TCGETS = $5401;
+   TCSETS = $5402;
+   TCSETSW = $5403;
+   TCSETSF = $5404;
+   TCGETA = $5405;
+   TCSETA = $5406;
+   TCSETAW = $5407;
+   TCSETAF = $5408;
+   TCSBRK = $5409;
+   TCXONC = $540A;
+   TCFLSH = $540B;
+   TIOCEXCL = $540C;
+   TIOCNXCL = $540D;
+   TIOCSCTTY = $540E;
+   TIOCGPGRP = $540F;
+   TIOCSPGRP = $5410;
+   TIOCOUTQ = $5411;
+   TIOCSTI = $5412;
+   TIOCGWINSZ = $5413;
+   TIOCSWINSZ = $5414;
+   TIOCMGET = $5415;
+   TIOCMBIS = $5416;
+   TIOCMBIC = $5417;
+   TIOCMSET = $5418;
+   TIOCGSOFTCAR = $5419;
+   TIOCSSOFTCAR = $541A;
+   FIONREAD = $541B;
+   TIOCINQ = FIONREAD;
+   TIOCLINUX = $541C;
+   TIOCCONS = $541D;
+   TIOCGSERIAL = $541E;
+   TIOCSSERIAL = $541F;
+   TIOCPKT = $5420;
+   FIONBIO = $5421;
+   TIOCNOTTY = $5422;
+   TIOCSETD = $5423;
+   TIOCGETD = $5424;
+   TCSBRKP = $5425;
+   TIOCTTYGSTRUCT = $5426;
+   TIOCSBRK = $5427;
+   TIOCCBRK = $5428;
+   TIOCGSID = $5429;
+function TIOCGPTN : longint;
+    { return type might be wrong }
+
+function TIOCSPTLCK : longint;
+    { return type might be wrong }
+
+function TIOCGDEV : longint;
+    { return type might be wrong }
+
+
+const
+   FIONCLEX = $5450;
+   FIOCLEX = $5451;
+   FIOASYNC = $5452;
+   TIOCSERCONFIG = $5453;
+   TIOCSERGWILD = $5454;
+   TIOCSERSWILD = $5455;
+   TIOCGLCKTRMIOS = $5456;
+   TIOCSLCKTRMIOS = $5457;
+   TIOCSERGSTRUCT = $5458;
+   TIOCSERGETLSR = $5459;
+   TIOCSERGETMULTI = $545A;
+   TIOCSERSETMULTI = $545B;
+   TIOCMIWAIT = $545C;
+   TIOCGICOUNT = $545D;
+   TIOCGHAYESESP = $545E;
+   TIOCSHAYESESP = $545F;
+   TIOCPKT_DATA = 0;
+   TIOCPKT_FLUSHREAD = 1;
+   TIOCPKT_FLUSHWRITE = 2;
+   TIOCPKT_STOP = 4;
+   TIOCPKT_START = 8;
+   TIOCPKT_NOSTOP = 16;
+   TIOCPKT_DOSTOP = 32;
+   TIOCSER_TEMT = $01;
+{$endif}
+function TIOCGPTN : longint;
+    { return type might be wrong }
+  begin
+     TIOCGPTN:=_IOR('T',$30,dword);
+  end;
+
+function TIOCSPTLCK : longint;
+    { return type might be wrong }
+  begin
+     TIOCSPTLCK:=_IOW('T',$31,longint);
+  end;
+
+function TIOCGDEV : longint;
+    { return type might be wrong }
+  begin
+     TIOCGDEV:=_IOR('T',$32,dword);
+  end;
+
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 375 - 0
packages/base/libc/langinfoh.inc

@@ -0,0 +1,375 @@
+
+   Const
+     ABDAY_1 = (__LC_TIME shl 16);
+     ABDAY_2 = (ABDAY_1)+1;
+     ABDAY_3 = (ABDAY_1)+2;
+     ABDAY_4 = (ABDAY_1)+3;
+     ABDAY_5 = (ABDAY_1)+4;
+     ABDAY_6 = (ABDAY_1)+5;
+     ABDAY_7 = (ABDAY_1)+6;
+     DAY_1 = (ABDAY_1)+7;
+     DAY_2 = (ABDAY_1)+8;
+     DAY_3 = (ABDAY_1)+9;
+     DAY_4 = (ABDAY_1)+10;
+     DAY_5 = (ABDAY_1)+11;
+     DAY_6 = (ABDAY_1)+12;
+     DAY_7 = (ABDAY_1)+13;
+     ABMON_1 = (ABDAY_1)+14;
+     ABMON_2 = (ABDAY_1)+15;
+     ABMON_3 = (ABDAY_1)+16;
+     ABMON_4 = (ABDAY_1)+17;
+     ABMON_5 = (ABDAY_1)+18;
+     ABMON_6 = (ABDAY_1)+19;
+     ABMON_7 = (ABDAY_1)+20;
+     ABMON_8 = (ABDAY_1)+21;
+     ABMON_9 = (ABDAY_1)+22;
+     ABMON_10 = (ABDAY_1)+23;
+     ABMON_11 = (ABDAY_1)+24;
+     ABMON_12 = (ABDAY_1)+25;
+     MON_1 = (ABDAY_1)+26;
+     MON_2 = (ABDAY_1)+27;
+     MON_3 = (ABDAY_1)+28;
+     MON_4 = (ABDAY_1)+29;
+     MON_5 = (ABDAY_1)+30;
+     MON_6 = (ABDAY_1)+31;
+     MON_7 = (ABDAY_1)+32;
+     MON_8 = (ABDAY_1)+33;
+     MON_9 = (ABDAY_1)+34;
+     MON_10 = (ABDAY_1)+35;
+     MON_11 = (ABDAY_1)+36;
+     MON_12 = (ABDAY_1)+37;
+     AM_STR = (ABDAY_1)+38;
+     PM_STR = (ABDAY_1)+39;
+     D_T_FMT = (ABDAY_1)+40;
+     D_FMT = (ABDAY_1)+41;
+     T_FMT = (ABDAY_1)+42;
+     T_FMT_AMPM = (ABDAY_1)+43;
+     ERA = (ABDAY_1)+44;
+     __ERA_YEAR = (ABDAY_1)+45;
+     ERA_D_FMT = (ABDAY_1)+46;
+     ALT_DIGITS = (ABDAY_1)+47;
+     ERA_D_T_FMT = (ABDAY_1)+48;
+     ERA_T_FMT = (ABDAY_1)+49;
+     _NL_TIME_ERA_NUM_ENTRIES = (ABDAY_1)+50;
+     _NL_TIME_ERA_ENTRIES = (ABDAY_1)+51;
+     _NL_WABDAY_1 = (ABDAY_1)+52;
+     _NL_WABDAY_2 = (ABDAY_1)+53;
+     _NL_WABDAY_3 = (ABDAY_1)+54;
+     _NL_WABDAY_4 = (ABDAY_1)+55;
+     _NL_WABDAY_5 = (ABDAY_1)+56;
+     _NL_WABDAY_6 = (ABDAY_1)+57;
+     _NL_WABDAY_7 = (ABDAY_1)+58;
+     _NL_WDAY_1 = (ABDAY_1)+59;
+     _NL_WDAY_2 = (ABDAY_1)+60;
+     _NL_WDAY_3 = (ABDAY_1)+61;
+     _NL_WDAY_4 = (ABDAY_1)+62;
+     _NL_WDAY_5 = (ABDAY_1)+63;
+     _NL_WDAY_6 = (ABDAY_1)+64;
+     _NL_WDAY_7 = (ABDAY_1)+65;
+     _NL_WABMON_1 = (ABDAY_1)+66;
+     _NL_WABMON_2 = (ABDAY_1)+67;
+     _NL_WABMON_3 = (ABDAY_1)+68;
+     _NL_WABMON_4 = (ABDAY_1)+69;
+     _NL_WABMON_5 = (ABDAY_1)+70;
+     _NL_WABMON_6 = (ABDAY_1)+71;
+     _NL_WABMON_7 = (ABDAY_1)+72;
+     _NL_WABMON_8 = (ABDAY_1)+73;
+     _NL_WABMON_9 = (ABDAY_1)+74;
+     _NL_WABMON_10 = (ABDAY_1)+75;
+     _NL_WABMON_11 = (ABDAY_1)+76;
+     _NL_WABMON_12 = (ABDAY_1)+77;
+     _NL_WMON_1 = (ABDAY_1)+78;
+     _NL_WMON_2 = (ABDAY_1)+79;
+     _NL_WMON_3 = (ABDAY_1)+80;
+     _NL_WMON_4 = (ABDAY_1)+81;
+     _NL_WMON_5 = (ABDAY_1)+82;
+     _NL_WMON_6 = (ABDAY_1)+83;
+     _NL_WMON_7 = (ABDAY_1)+84;
+     _NL_WMON_8 = (ABDAY_1)+85;
+     _NL_WMON_9 = (ABDAY_1)+86;
+     _NL_WMON_10 = (ABDAY_1)+87;
+     _NL_WMON_11 = (ABDAY_1)+88;
+     _NL_WMON_12 = (ABDAY_1)+89;
+     _NL_WAM_STR = (ABDAY_1)+90;
+     _NL_WPM_STR = (ABDAY_1)+91;
+     _NL_WD_T_FMT = (ABDAY_1)+92;
+     _NL_WD_FMT = (ABDAY_1)+93;
+     _NL_WT_FMT = (ABDAY_1)+94;
+     _NL_WT_FMT_AMPM = (ABDAY_1)+95;
+     _NL_WERA_YEAR = (ABDAY_1)+96;
+     _NL_WERA_D_FMT = (ABDAY_1)+97;
+     _NL_WALT_DIGITS = (ABDAY_1)+98;
+     _NL_WERA_D_T_FMT = (ABDAY_1)+99;
+     _NL_WERA_T_FMT = (ABDAY_1)+100;
+     _NL_TIME_WEEK_NDAYS = (ABDAY_1)+101;
+     _NL_TIME_WEEK_1STDAY = (ABDAY_1)+102;
+     _NL_TIME_WEEK_1STWEEK = (ABDAY_1)+103;
+     _NL_TIME_FIRST_WEEKDAY = (ABDAY_1)+104;
+     _NL_TIME_FIRST_WORKDAY = (ABDAY_1)+105;
+     _NL_TIME_CAL_DIRECTION = (ABDAY_1)+106;
+     _NL_TIME_TIMEZONE = (ABDAY_1)+107;
+     _DATE_FMT = (ABDAY_1)+108;
+     _NL_W_DATE_FMT = (ABDAY_1)+109;
+     _NL_TIME_CODESET = (ABDAY_1)+110;
+     _NL_NUM_LC_TIME = (ABDAY_1)+111;
+     _NL_COLLATE_NRULES = (__LC_COLLATE shl 16);
+     _NL_COLLATE_RULESETS = (_NL_COLLATE_NRULES)+1;
+     _NL_COLLATE_TABLEMB = (_NL_COLLATE_NRULES)+2;
+     _NL_COLLATE_WEIGHTMB = (_NL_COLLATE_NRULES)+3;
+     _NL_COLLATE_EXTRAMB = (_NL_COLLATE_NRULES)+4;
+     _NL_COLLATE_INDIRECTMB = (_NL_COLLATE_NRULES)+5;
+     _NL_COLLATE_GAP1 = (_NL_COLLATE_NRULES)+6;
+     _NL_COLLATE_GAP2 = (_NL_COLLATE_NRULES)+7;
+     _NL_COLLATE_GAP3 = (_NL_COLLATE_NRULES)+8;
+     _NL_COLLATE_TABLEWC = (_NL_COLLATE_NRULES)+9;
+     _NL_COLLATE_WEIGHTWC = (_NL_COLLATE_NRULES)+10;
+     _NL_COLLATE_EXTRAWC = (_NL_COLLATE_NRULES)+11;
+     _NL_COLLATE_INDIRECTWC = (_NL_COLLATE_NRULES)+12;
+     _NL_COLLATE_SYMB_HASH_SIZEMB = (_NL_COLLATE_NRULES)+13;
+     _NL_COLLATE_SYMB_TABLEMB = (_NL_COLLATE_NRULES)+14;
+     _NL_COLLATE_SYMB_EXTRAMB = (_NL_COLLATE_NRULES)+15;
+     _NL_COLLATE_COLLSEQMB = (_NL_COLLATE_NRULES)+16;
+     _NL_COLLATE_COLLSEQWC = (_NL_COLLATE_NRULES)+17;
+     _NL_COLLATE_CODESET = (_NL_COLLATE_NRULES)+18;
+     _NL_NUM_LC_COLLATE = (_NL_COLLATE_NRULES)+19;
+     _NL_CTYPE_CLASS = (__LC_CTYPE shl 16);
+     _NL_CTYPE_TOUPPER = (_NL_CTYPE_CLASS)+1;
+     _NL_CTYPE_GAP1 = (_NL_CTYPE_CLASS)+2;
+     _NL_CTYPE_TOLOWER = (_NL_CTYPE_CLASS)+3;
+     _NL_CTYPE_GAP2 = (_NL_CTYPE_CLASS)+4;
+     _NL_CTYPE_CLASS32 = (_NL_CTYPE_CLASS)+5;
+     _NL_CTYPE_GAP3 = (_NL_CTYPE_CLASS)+6;
+     _NL_CTYPE_GAP4 = (_NL_CTYPE_CLASS)+7;
+     _NL_CTYPE_GAP5 = (_NL_CTYPE_CLASS)+8;
+     _NL_CTYPE_GAP6 = (_NL_CTYPE_CLASS)+9;
+     _NL_CTYPE_CLASS_NAMES = (_NL_CTYPE_CLASS)+10;
+     _NL_CTYPE_MAP_NAMES = (_NL_CTYPE_CLASS)+11;
+     _NL_CTYPE_WIDTH = (_NL_CTYPE_CLASS)+12;
+     _NL_CTYPE_MB_CUR_MAX = (_NL_CTYPE_CLASS)+13;
+     _NL_CTYPE_CODESET_NAME = (_NL_CTYPE_CLASS)+14;
+     CODESET = _NL_CTYPE_CODESET_NAME;
+     _NL_CTYPE_TOUPPER32 = (_NL_CTYPE_CODESET_NAME)+1;
+     _NL_CTYPE_TOLOWER32 = (_NL_CTYPE_CODESET_NAME)+2;
+     _NL_CTYPE_CLASS_OFFSET = (_NL_CTYPE_CODESET_NAME)+3;
+     _NL_CTYPE_MAP_OFFSET = (_NL_CTYPE_CODESET_NAME)+4;
+     _NL_CTYPE_INDIGITS_MB_LEN = (_NL_CTYPE_CODESET_NAME)+5;
+     _NL_CTYPE_INDIGITS0_MB = (_NL_CTYPE_CODESET_NAME)+6;
+     _NL_CTYPE_INDIGITS1_MB = (_NL_CTYPE_CODESET_NAME)+7;
+     _NL_CTYPE_INDIGITS2_MB = (_NL_CTYPE_CODESET_NAME)+8;
+     _NL_CTYPE_INDIGITS3_MB = (_NL_CTYPE_CODESET_NAME)+9;
+     _NL_CTYPE_INDIGITS4_MB = (_NL_CTYPE_CODESET_NAME)+10;
+     _NL_CTYPE_INDIGITS5_MB = (_NL_CTYPE_CODESET_NAME)+11;
+     _NL_CTYPE_INDIGITS6_MB = (_NL_CTYPE_CODESET_NAME)+12;
+     _NL_CTYPE_INDIGITS7_MB = (_NL_CTYPE_CODESET_NAME)+13;
+     _NL_CTYPE_INDIGITS8_MB = (_NL_CTYPE_CODESET_NAME)+14;
+     _NL_CTYPE_INDIGITS9_MB = (_NL_CTYPE_CODESET_NAME)+15;
+     _NL_CTYPE_INDIGITS_WC_LEN = (_NL_CTYPE_CODESET_NAME)+16;
+     _NL_CTYPE_INDIGITS0_WC = (_NL_CTYPE_CODESET_NAME)+17;
+     _NL_CTYPE_INDIGITS1_WC = (_NL_CTYPE_CODESET_NAME)+18;
+     _NL_CTYPE_INDIGITS2_WC = (_NL_CTYPE_CODESET_NAME)+19;
+     _NL_CTYPE_INDIGITS3_WC = (_NL_CTYPE_CODESET_NAME)+20;
+     _NL_CTYPE_INDIGITS4_WC = (_NL_CTYPE_CODESET_NAME)+21;
+     _NL_CTYPE_INDIGITS5_WC = (_NL_CTYPE_CODESET_NAME)+22;
+     _NL_CTYPE_INDIGITS6_WC = (_NL_CTYPE_CODESET_NAME)+23;
+     _NL_CTYPE_INDIGITS7_WC = (_NL_CTYPE_CODESET_NAME)+24;
+     _NL_CTYPE_INDIGITS8_WC = (_NL_CTYPE_CODESET_NAME)+25;
+     _NL_CTYPE_INDIGITS9_WC = (_NL_CTYPE_CODESET_NAME)+26;
+     _NL_CTYPE_OUTDIGIT0_MB = (_NL_CTYPE_CODESET_NAME)+27;
+     _NL_CTYPE_OUTDIGIT1_MB = (_NL_CTYPE_CODESET_NAME)+28;
+     _NL_CTYPE_OUTDIGIT2_MB = (_NL_CTYPE_CODESET_NAME)+29;
+     _NL_CTYPE_OUTDIGIT3_MB = (_NL_CTYPE_CODESET_NAME)+30;
+     _NL_CTYPE_OUTDIGIT4_MB = (_NL_CTYPE_CODESET_NAME)+31;
+     _NL_CTYPE_OUTDIGIT5_MB = (_NL_CTYPE_CODESET_NAME)+32;
+     _NL_CTYPE_OUTDIGIT6_MB = (_NL_CTYPE_CODESET_NAME)+33;
+     _NL_CTYPE_OUTDIGIT7_MB = (_NL_CTYPE_CODESET_NAME)+34;
+     _NL_CTYPE_OUTDIGIT8_MB = (_NL_CTYPE_CODESET_NAME)+35;
+     _NL_CTYPE_OUTDIGIT9_MB = (_NL_CTYPE_CODESET_NAME)+36;
+     _NL_CTYPE_OUTDIGIT0_WC = (_NL_CTYPE_CODESET_NAME)+37;
+     _NL_CTYPE_OUTDIGIT1_WC = (_NL_CTYPE_CODESET_NAME)+38;
+     _NL_CTYPE_OUTDIGIT2_WC = (_NL_CTYPE_CODESET_NAME)+39;
+     _NL_CTYPE_OUTDIGIT3_WC = (_NL_CTYPE_CODESET_NAME)+40;
+     _NL_CTYPE_OUTDIGIT4_WC = (_NL_CTYPE_CODESET_NAME)+41;
+     _NL_CTYPE_OUTDIGIT5_WC = (_NL_CTYPE_CODESET_NAME)+42;
+     _NL_CTYPE_OUTDIGIT6_WC = (_NL_CTYPE_CODESET_NAME)+43;
+     _NL_CTYPE_OUTDIGIT7_WC = (_NL_CTYPE_CODESET_NAME)+44;
+     _NL_CTYPE_OUTDIGIT8_WC = (_NL_CTYPE_CODESET_NAME)+45;
+     _NL_CTYPE_OUTDIGIT9_WC = (_NL_CTYPE_CODESET_NAME)+46;
+     _NL_CTYPE_TRANSLIT_TAB_SIZE = (_NL_CTYPE_CODESET_NAME)+47;
+     _NL_CTYPE_TRANSLIT_FROM_IDX = (_NL_CTYPE_CODESET_NAME)+48;
+     _NL_CTYPE_TRANSLIT_FROM_TBL = (_NL_CTYPE_CODESET_NAME)+49;
+     _NL_CTYPE_TRANSLIT_TO_IDX = (_NL_CTYPE_CODESET_NAME)+50;
+     _NL_CTYPE_TRANSLIT_TO_TBL = (_NL_CTYPE_CODESET_NAME)+51;
+     _NL_CTYPE_TRANSLIT_DEFAULT_MISSING_LEN = (_NL_CTYPE_CODESET_NAME)+52;
+     _NL_CTYPE_TRANSLIT_DEFAULT_MISSING = (_NL_CTYPE_CODESET_NAME)+53;
+     _NL_CTYPE_TRANSLIT_IGNORE_LEN = (_NL_CTYPE_CODESET_NAME)+54;
+     _NL_CTYPE_TRANSLIT_IGNORE = (_NL_CTYPE_CODESET_NAME)+55;
+     _NL_CTYPE_EXTRA_MAP_1 = (_NL_CTYPE_CODESET_NAME)+56;
+     _NL_CTYPE_EXTRA_MAP_2 = (_NL_CTYPE_CODESET_NAME)+57;
+     _NL_CTYPE_EXTRA_MAP_3 = (_NL_CTYPE_CODESET_NAME)+58;
+     _NL_CTYPE_EXTRA_MAP_4 = (_NL_CTYPE_CODESET_NAME)+59;
+     _NL_CTYPE_EXTRA_MAP_5 = (_NL_CTYPE_CODESET_NAME)+60;
+     _NL_CTYPE_EXTRA_MAP_6 = (_NL_CTYPE_CODESET_NAME)+61;
+     _NL_CTYPE_EXTRA_MAP_7 = (_NL_CTYPE_CODESET_NAME)+62;
+     _NL_CTYPE_EXTRA_MAP_8 = (_NL_CTYPE_CODESET_NAME)+63;
+     _NL_CTYPE_EXTRA_MAP_9 = (_NL_CTYPE_CODESET_NAME)+64;
+     _NL_CTYPE_EXTRA_MAP_10 = (_NL_CTYPE_CODESET_NAME)+65;
+     _NL_CTYPE_EXTRA_MAP_11 = (_NL_CTYPE_CODESET_NAME)+66;
+     _NL_CTYPE_EXTRA_MAP_12 = (_NL_CTYPE_CODESET_NAME)+67;
+     _NL_CTYPE_EXTRA_MAP_13 = (_NL_CTYPE_CODESET_NAME)+68;
+     _NL_CTYPE_EXTRA_MAP_14 = (_NL_CTYPE_CODESET_NAME)+69;
+     _NL_NUM_LC_CTYPE = (_NL_CTYPE_CODESET_NAME)+70;
+     __INT_CURR_SYMBOL = (__LC_MONETARY shl 16);
+     __CURRENCY_SYMBOL = (__INT_CURR_SYMBOL)+1;
+     __MON_DECIMAL_POINT = (__INT_CURR_SYMBOL)+2;
+     __MON_THOUSANDS_SEP = (__INT_CURR_SYMBOL)+3;
+     __MON_GROUPING = (__INT_CURR_SYMBOL)+4;
+     __POSITIVE_SIGN = (__INT_CURR_SYMBOL)+5;
+     __NEGATIVE_SIGN = (__INT_CURR_SYMBOL)+6;
+     __INT_FRAC_DIGITS = (__INT_CURR_SYMBOL)+7;
+     __FRAC_DIGITS = (__INT_CURR_SYMBOL)+8;
+     __P_CS_PRECEDES = (__INT_CURR_SYMBOL)+9;
+     __P_SEP_BY_SPACE = (__INT_CURR_SYMBOL)+10;
+     __N_CS_PRECEDES = (__INT_CURR_SYMBOL)+11;
+     __N_SEP_BY_SPACE = (__INT_CURR_SYMBOL)+12;
+     __P_SIGN_POSN = (__INT_CURR_SYMBOL)+13;
+     __N_SIGN_POSN = (__INT_CURR_SYMBOL)+14;
+     _NL_MONETARY_CRNCYSTR = (__INT_CURR_SYMBOL)+15;
+     __INT_P_CS_PRECEDES = (__INT_CURR_SYMBOL)+16;
+     __INT_P_SEP_BY_SPACE = (__INT_CURR_SYMBOL)+17;
+     __INT_N_CS_PRECEDES = (__INT_CURR_SYMBOL)+18;
+     __INT_N_SEP_BY_SPACE = (__INT_CURR_SYMBOL)+19;
+     __INT_P_SIGN_POSN = (__INT_CURR_SYMBOL)+20;
+     __INT_N_SIGN_POSN = (__INT_CURR_SYMBOL)+21;
+     _NL_MONETARY_DUO_INT_CURR_SYMBOL = (__INT_CURR_SYMBOL)+22;
+     _NL_MONETARY_DUO_CURRENCY_SYMBOL = (__INT_CURR_SYMBOL)+23;
+     _NL_MONETARY_DUO_INT_FRAC_DIGITS = (__INT_CURR_SYMBOL)+24;
+     _NL_MONETARY_DUO_FRAC_DIGITS = (__INT_CURR_SYMBOL)+25;
+     _NL_MONETARY_DUO_P_CS_PRECEDES = (__INT_CURR_SYMBOL)+26;
+     _NL_MONETARY_DUO_P_SEP_BY_SPACE = (__INT_CURR_SYMBOL)+27;
+     _NL_MONETARY_DUO_N_CS_PRECEDES = (__INT_CURR_SYMBOL)+28;
+     _NL_MONETARY_DUO_N_SEP_BY_SPACE = (__INT_CURR_SYMBOL)+29;
+     _NL_MONETARY_DUO_INT_P_CS_PRECEDES = (__INT_CURR_SYMBOL)+30;
+     _NL_MONETARY_DUO_INT_P_SEP_BY_SPACE = (__INT_CURR_SYMBOL)+31;
+     _NL_MONETARY_DUO_INT_N_CS_PRECEDES = (__INT_CURR_SYMBOL)+32;
+     _NL_MONETARY_DUO_INT_N_SEP_BY_SPACE = (__INT_CURR_SYMBOL)+33;
+     _NL_MONETARY_DUO_P_SIGN_POSN = (__INT_CURR_SYMBOL)+34;
+     _NL_MONETARY_DUO_N_SIGN_POSN = (__INT_CURR_SYMBOL)+35;
+     _NL_MONETARY_DUO_INT_P_SIGN_POSN = (__INT_CURR_SYMBOL)+36;
+     _NL_MONETARY_DUO_INT_N_SIGN_POSN = (__INT_CURR_SYMBOL)+37;
+     _NL_MONETARY_UNO_VALID_FROM = (__INT_CURR_SYMBOL)+38;
+     _NL_MONETARY_UNO_VALID_TO = (__INT_CURR_SYMBOL)+39;
+     _NL_MONETARY_DUO_VALID_FROM = (__INT_CURR_SYMBOL)+40;
+     _NL_MONETARY_DUO_VALID_TO = (__INT_CURR_SYMBOL)+41;
+     _NL_MONETARY_CONVERSION_RATE = (__INT_CURR_SYMBOL)+42;
+     _NL_MONETARY_DECIMAL_POINT_WC = (__INT_CURR_SYMBOL)+43;
+     _NL_MONETARY_THOUSANDS_SEP_WC = (__INT_CURR_SYMBOL)+44;
+     _NL_MONETARY_CODESET = (__INT_CURR_SYMBOL)+45;
+     _NL_NUM_LC_MONETARY = (__INT_CURR_SYMBOL)+46;
+     __DECIMAL_POINT = (__LC_NUMERIC shl 16);
+     RADIXCHAR = __DECIMAL_POINT;
+     __THOUSANDS_SEP = (__DECIMAL_POINT)+1;
+     THOUSEP = __THOUSANDS_SEP;
+     __GROUPING = (__THOUSANDS_SEP)+1;
+     _NL_NUMERIC_DECIMAL_POINT_WC = (__THOUSANDS_SEP)+2;
+     _NL_NUMERIC_THOUSANDS_SEP_WC = (__THOUSANDS_SEP)+3;
+     _NL_NUMERIC_CODESET = (__THOUSANDS_SEP)+4;
+     _NL_NUM_LC_NUMERIC = (__THOUSANDS_SEP)+5;
+     __YESEXPR = (__LC_MESSAGES shl 16);
+     __NOEXPR = ((__LC_MESSAGES shl 16))+1;
+     __YESSTR = ((__LC_MESSAGES shl 16))+2;
+     __NOSTR = ((__LC_MESSAGES shl 16))+3;
+     _NL_MESSAGES_CODESET = ((__LC_MESSAGES shl 16))+4;
+     _NL_NUM_LC_MESSAGES = ((__LC_MESSAGES shl 16))+5;
+     _NL_PAPER_HEIGHT = (__LC_PAPER shl 16);
+     _NL_PAPER_WIDTH = (_NL_PAPER_HEIGHT)+1;
+     _NL_PAPER_CODESET = (_NL_PAPER_HEIGHT)+2;
+     _NL_NUM_LC_PAPER = (_NL_PAPER_HEIGHT)+3;
+     _NL_NAME_NAME_FMT = (__LC_NAME shl 16);
+     _NL_NAME_NAME_GEN = (_NL_NAME_NAME_FMT)+1;
+     _NL_NAME_NAME_MR = (_NL_NAME_NAME_FMT)+2;
+     _NL_NAME_NAME_MRS = (_NL_NAME_NAME_FMT)+3;
+     _NL_NAME_NAME_MISS = (_NL_NAME_NAME_FMT)+4;
+     _NL_NAME_NAME_MS = (_NL_NAME_NAME_FMT)+5;
+     _NL_NAME_CODESET = (_NL_NAME_NAME_FMT)+6;
+     _NL_NUM_LC_NAME = (_NL_NAME_NAME_FMT)+7;
+     _NL_ADDRESS_POSTAL_FMT = (__LC_ADDRESS shl 16);
+     _NL_ADDRESS_COUNTRY_NAME = (_NL_ADDRESS_POSTAL_FMT)+1;
+     _NL_ADDRESS_COUNTRY_POST = (_NL_ADDRESS_POSTAL_FMT)+2;
+     _NL_ADDRESS_COUNTRY_AB2 = (_NL_ADDRESS_POSTAL_FMT)+3;
+     _NL_ADDRESS_COUNTRY_AB3 = (_NL_ADDRESS_POSTAL_FMT)+4;
+     _NL_ADDRESS_COUNTRY_CAR = (_NL_ADDRESS_POSTAL_FMT)+5;
+     _NL_ADDRESS_COUNTRY_NUM = (_NL_ADDRESS_POSTAL_FMT)+6;
+     _NL_ADDRESS_COUNTRY_ISBN = (_NL_ADDRESS_POSTAL_FMT)+7;
+     _NL_ADDRESS_LANG_NAME = (_NL_ADDRESS_POSTAL_FMT)+8;
+     _NL_ADDRESS_LANG_AB = (_NL_ADDRESS_POSTAL_FMT)+9;
+     _NL_ADDRESS_LANG_TERM = (_NL_ADDRESS_POSTAL_FMT)+10;
+     _NL_ADDRESS_LANG_LIB = (_NL_ADDRESS_POSTAL_FMT)+11;
+     _NL_ADDRESS_CODESET = (_NL_ADDRESS_POSTAL_FMT)+12;
+     _NL_NUM_LC_ADDRESS = (_NL_ADDRESS_POSTAL_FMT)+13;
+     _NL_TELEPHONE_TEL_INT_FMT = (__LC_TELEPHONE shl 16);
+     _NL_TELEPHONE_TEL_DOM_FMT = (_NL_TELEPHONE_TEL_INT_FMT)+1;
+     _NL_TELEPHONE_INT_SELECT = (_NL_TELEPHONE_TEL_INT_FMT)+2;
+     _NL_TELEPHONE_INT_PREFIX = (_NL_TELEPHONE_TEL_INT_FMT)+3;
+     _NL_TELEPHONE_CODESET = (_NL_TELEPHONE_TEL_INT_FMT)+4;
+     _NL_NUM_LC_TELEPHONE = (_NL_TELEPHONE_TEL_INT_FMT)+5;
+     _NL_MEASUREMENT_MEASUREMENT = (__LC_MEASUREMENT shl 16);
+     _NL_MEASUREMENT_CODESET = (_NL_MEASUREMENT_MEASUREMENT)+1;
+     _NL_NUM_LC_MEASUREMENT = (_NL_MEASUREMENT_MEASUREMENT)+2;
+     _NL_IDENTIFICATION_TITLE = (__LC_IDENTIFICATION shl 16);
+     _NL_IDENTIFICATION_SOURCE = (_NL_IDENTIFICATION_TITLE)+1;
+     _NL_IDENTIFICATION_ADDRESS = (_NL_IDENTIFICATION_TITLE)+2;
+     _NL_IDENTIFICATION_CONTACT = (_NL_IDENTIFICATION_TITLE)+3;
+     _NL_IDENTIFICATION_EMAIL = (_NL_IDENTIFICATION_TITLE)+4;
+     _NL_IDENTIFICATION_TEL = (_NL_IDENTIFICATION_TITLE)+5;
+     _NL_IDENTIFICATION_FAX = (_NL_IDENTIFICATION_TITLE)+6;
+     _NL_IDENTIFICATION_LANGUAGE = (_NL_IDENTIFICATION_TITLE)+7;
+     _NL_IDENTIFICATION_TERRITORY = (_NL_IDENTIFICATION_TITLE)+8;
+     _NL_IDENTIFICATION_AUDIENCE = (_NL_IDENTIFICATION_TITLE)+9;
+     _NL_IDENTIFICATION_APPLICATION = (_NL_IDENTIFICATION_TITLE)+10;
+     _NL_IDENTIFICATION_ABBREVIATION = (_NL_IDENTIFICATION_TITLE)+11;
+     _NL_IDENTIFICATION_REVISION = (_NL_IDENTIFICATION_TITLE)+12;
+     _NL_IDENTIFICATION_DATE = (_NL_IDENTIFICATION_TITLE)+13;
+     _NL_IDENTIFICATION_CATEGORY = (_NL_IDENTIFICATION_TITLE)+14;
+     _NL_IDENTIFICATION_CODESET = (_NL_IDENTIFICATION_TITLE)+15;
+     _NL_NUM_LC_IDENTIFICATION = (_NL_IDENTIFICATION_TITLE)+16;
+     _NL_NUM = (_NL_IDENTIFICATION_TITLE)+17;
+
+const
+   ERA_YEAR = __ERA_YEAR;
+   INT_CURR_SYMBOL = __INT_CURR_SYMBOL;
+   CURRENCY_SYMBOL = __CURRENCY_SYMBOL;
+   MON_DECIMAL_POINT = __MON_DECIMAL_POINT;
+   MON_THOUSANDS_SEP = __MON_THOUSANDS_SEP;
+   MON_GROUPING = __MON_GROUPING;
+   POSITIVE_SIGN = __POSITIVE_SIGN;
+   NEGATIVE_SIGN = __NEGATIVE_SIGN;
+   INT_FRAC_DIGITS = __INT_FRAC_DIGITS;
+   FRAC_DIGITS = __FRAC_DIGITS;
+   P_CS_PRECEDES = __P_CS_PRECEDES;
+   P_SEP_BY_SPACE = __P_SEP_BY_SPACE;
+   N_CS_PRECEDES = __N_CS_PRECEDES;
+   N_SEP_BY_SPACE = __N_SEP_BY_SPACE;
+   P_SIGN_POSN = __P_SIGN_POSN;
+   N_SIGN_POSN = __N_SIGN_POSN;
+   INT_P_CS_PRECEDES = __INT_P_CS_PRECEDES;
+   INT_P_SEP_BY_SPACE = __INT_P_SEP_BY_SPACE;
+   INT_N_CS_PRECEDES = __INT_N_CS_PRECEDES;
+   INT_N_SEP_BY_SPACE = __INT_N_SEP_BY_SPACE;
+   INT_P_SIGN_POSN = __INT_P_SIGN_POSN;
+   INT_N_SIGN_POSN = __INT_N_SIGN_POSN;
+   DECIMAL_POINT = __DECIMAL_POINT;
+   THOUSANDS_SEP = __THOUSANDS_SEP;
+   GROUPING = __GROUPING;
+   YESSTR = __YESSTR;
+   NOSTR = __NOSTR;
+
+
+function nl_langinfo(__item:nl_item):Pchar;cdecl;external clib name 'nl_langinfo';
+function __nl_langinfo_l(__item:nl_item; l:__locale_t):Pchar;cdecl;external clib name '__nl_langinfo_l';
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 29 - 0
packages/base/libc/lib_namesh.inc

@@ -0,0 +1,29 @@
+
+const
+
+   LD_LINUX_SO = 'ld-linux.so.2';
+   LD_SO = 'ld-linux.so.2';
+   LIBANL_SO = 'libanl.so.1';
+   LIBBROKENLOCALE_SO = 'libBrokenLocale.so.1';
+   LIBCRYPT_SO = 'libcrypt.so.1';
+   LIBC_SO = 'libc.so.6';
+   LIBDB1_SO = 'libdb1.so.2';
+   LIBDB2_SO = 'libdb2.so.3';
+   LIBDL_SO = 'libdl.so.2';
+   LIBM_SO = 'libm.so.6';
+   LIBNOVERSION_SO = 'libNoVersion.so.1';
+   LIBNSL_SO = 'libnsl.so.1';
+   LIBNSS_COMPAT_SO = 'libnss_compat.so.2';
+   LIBNSS_DNS6_SO = 'libnss_dns6.so.2';
+   LIBNSS_DNS_SO = 'libnss_dns.so.2';
+   LIBNSS_FILES_SO = 'libnss_files.so.2';
+   LIBNSS_HESIOD_SO = 'libnss_hesiod.so.2';
+   LIBNSS_LDAP_SO = 'libnss_ldap.so.2';
+   LIBNSS_NISPLUS_SO = 'libnss_nisplus.so.2';
+   LIBNSS_NIS_SO = 'libnss_nis.so.2';
+   LIBPTHREAD_SO = 'libpthread.so.0';
+   LIBRESOLV_SO = 'libresolv.so.2';
+   LIBRT_SO = 'librt.so.1';
+   LIBTHREAD_DB_SO = 'libthread_db.so.1';
+   LIBUTIL_SO = 'libutil.so.1';
+

+ 250 - 0
packages/base/libc/libc.pp

@@ -0,0 +1,250 @@
+{$mode objfpc}
+{$h+}
+unit libc;
+
+Interface
+
+uses kerneldefs;
+
+Const
+  clib = 'c';
+  threadslib = 'pthread';
+ 
+{$i glue.inc}           // C to Pascal type mappings 
+{$i endianh.inc}        // endian.h bits/endian.h 
+{$i typesh.inc}         // types.h sys/types.h
+{$i posixopth.inc}      // bits/posix_opt.h
+{$i stdinth.inc}        // stdint.h
+{$i wordsizeh.inc}      // bits/wordsize.h
+{$i limitsh.inc}        // limits.h
+{$i posix1_limh.inc}    // bits/posix1_lim.h
+{$i posix2_limh.inc}    // bits/posix2_lim.h
+{$i xopen_limh.inc}     // bits/xopen_lim.h
+{$i local_limh.inc}     // bits/local_lim.h
+{$i inttypesh.inc}      // inttypes.h
+{$i errnoh.inc}         // errno.h asm/errno.h bits/errno.h
+{$i pathsh.inc}         // paths.h
+{$i lib_namesh.inc}     // gnu/lib-names.h
+{$i xlocaleh.inc}       // xlocale.h
+{$i sigcontexth.inc}    // asm/sigcontext.h (from kernel)
+{$i sigseth.inc}        // bits/sigset.h
+{$i signumh.inc}        // bits/signum.h
+{$i siginfoh.inc}       // bits/siginfo.h
+{$i sigstackh.inc}      // bits/sigstack.h
+{$i sigactionh.inc}     // bits/sigaction.h
+{$i signalh.inc}        // signal.h
+{$i btimeh.inc}         // bits/time.h
+{$i timeh.inc}          // time.h
+{$i stimeh.inc}         // sys/time.h
+{$i timexh.inc}         // sys/timex.h
+{$i timesh.inc}         // sys/times.h
+{$i bschedh.inc}        // bits/sched.h
+{$i schedh.inc}         // sched.h
+{$i pthreadtypesh.inc}  // bits/pthreadtypes.h
+{$i pthreadh.inc}       // pthread.h
+{$i sigthreadh.inc}     // bits/sigthread.h
+{$i semaphoreh.inc}     // semaphore.h
+{$i spawnh.inc}         // spawn.h
+{$i bfcntlh.inc}        // bits/fcntl.h
+{$i fcntlh.inc}         // fcntl.h
+{$i fileh.inc}          // sys/file.h
+{$i bdirenth.inc}       // bits/dirent.h
+{$i direnth.inc}        // dirent.h
+{$i bstath.inc}         // bits/stat.h
+{$i sstath.inc}         // sys/stat.h
+{$i fnmatchh.inc}       // fnmatch.h
+{$i gconvh.inc}         // gconv.h
+{$i gconfigh.inc}       // _G_config.h
+{$i libioh.inc}         // libio.h
+{$i stdioh.inc}         // stdio.h
+{$i stdio_limh.inc}     // bits/stdio_lim.h 
+{$i stdio_exth.inc}     // stdio_ext.h
+{$i bconfnameh.inc}     // bits/confname.h
+{$i unistdh.inc}        // unistd.h
+{$i fstabh.inc}         // fstab.h
+{$i mntenth.inc}        // mntent.h
+{$i ioctlsh.inc}        // bits/ioctls.h
+{$i ioctl_typesh.inc}   // bits/ioctl-types.h
+{$i btermiosh.inc}      // bits/termios.h
+{$i termiosh.inc}       // termios.h
+{$i sttydefaultsh.inc}  // sys/ttydefaults.h
+{$i sioctlh.inc}        // sys/ioctl.h
+{$i srawh.inc}          // sys/raw.h
+{$i ptyh.inc}           // pty.h
+{$i smounth.inc}        // sys/mount.h
+{$i ssysctlh.inc}       // sys/sysctl.h
+{$i stringh.inc}        // string.h
+{$i stdlibh.inc}        // stdlib.h
+{$i malloch.inc}        // malloc.h
+{$i ssysinfoh.inc}      // sys/sysinfo.h
+{$i bdlfcnh.inc}        // bits/dlfcn.h 
+{$i dlfcnh.inc}         // dlfcn.h
+{$i localeh.inc}        // locale.h
+{$i nl_typesh.inc}      // nl_types.h
+{$i langinfoh.inc}      // langinfo.h
+{$i wordexph.inc}       // wordexp.h
+{$i iconvh.inc}         // iconv.h
+{$i bresourceh.inc}     // bits/resource.h
+{$i sresourceh.inc}     // sys/resource.h
+{$i argzh.inc}          // argz.h
+{$i envzh.inc}          // envz.h
+{$î ctypeh.inc}         // sys/ctype.h
+{$i wctypeh.inc}        // wctype.h
+{$i wcharh.inc}         // wchar.h
+{$i bwaitflagsh.inc}    // bits/waitflags.h
+{$i bwaitstatush.inc}   // bits/waitstatus.h 
+{$i swaith.inc}         // sys/wait.h
+{$i butsnameh.inc}      // bits/utsname.h
+{$i sutsnameh.inc}      // sys/utsname.h
+{$i bmmanh.inc}         // bits/mman.h
+{$i smmaph.inc}         // sys/mmap.h
+{$i ssyslogh.inc}       // sys/syslog.h
+{$i glibc_versionh.inc} // from gnu/libc-version.h
+{$i buioh.inc}          // bits/uio.h
+{$i suioh.inc}          // sys/uio.h
+{$i asockiosh.inc}      // asm/sockios.h
+{$i asocketh.inc}       // asm/socket.h
+{$i bsockaddrh.inc}     // bits/sockaddr.h (inlined in bits/socket.h)
+{$i bsocketh.inc}       // bits/socket.h 
+{$i ssocketh.inc}       // sys/socket.h
+{$i sunh.inc}           // sys/un.h
+{$i ninh.inc}           // netinet/in.h
+{$i binh.inc}           // bits/in.h, inlined in netinet/in.h
+{$i aineth.inc}         // arpa/inet.h
+{$i bnetdbh.inc}        // bits/netdb.h
+{$i netdbh.inc}         // netdb.h
+// empty anyway {$i bselecth.inc}       // bits/select.h
+{$i sselecth.inc}       // sys/select.h
+{$i pwdh.inc}           // pwd.h
+{$i grph.inc}           // grp.h
+{$i sptraceh.inc}       // sys/ptrace.h
+{$i ulimith.inc}        // ulimit.h
+{$i bpollh.inc}         // bits/poll.h
+{$i spollh.inc}         // sys/poll.h
+{$i utimeh.inc}         // utime.h
+{$i sysexitsh.inc}      // sysexits.h
+{$i bustath.inc}        // bits/ustat.h
+{$i sustath.inc}        // sys/ustat.h
+{$i errh.inc}           // err.h
+{$i errorh.inc}         // error.h
+{$i bfenvh.inc}         // bits/fenv.h
+{$i fenvh.inc}          // fenv.h
+{$i bipch.inc}          // bits/ipc.h
+{$i sipch.inc}          // sys/ipc.h
+{$i bshmh.inc}          // bits/shm.h
+{$i sshmh.inc}          // sys/shm.h
+{$i bsemh.inc}          // bits/sem.h
+{$i ssemh.inc}          // sys/sem.h
+{$i libgenh.inc}        // libgen.h
+{$i butmph.inc}         // bits/utmp.h
+{$i utmph.inc}          // utmp.h
+{$i butmpxh.inc}        // bits/utmpx.h
+{$i utmpxh.inc}         // utmpx.h
+{$i svtimesh.inc}       // sys/vtimes.h
+{$i svlimith.inc}       // sys/vlimit.h
+{$i sucontexth.inc}     // sys/ucontext.h
+{$i ucontexth.inc}      // ucontext.h
+{$i bmsqh.inc}          // bits/msq.h
+{$i smsgh.inc}          // sys/msg.h
+{$i bstatfsh.inc}       // bits/statfs.h
+{$i sstatfsh.inc}       // sys/statfs.h
+{$i bstatvfsh.inc}      // bits/statvfs.h
+{$i sstatvfsh.inc}      // sys/statvfs.h
+{$i monetaryh.inc}      // monetary.h
+{$i mcheckh.inc}        // mcheck.h
+{$i printfh.inc}        // printf.h
+{$i libintlh.inc}       // libintl.h
+{$i shadowh.inc}        // shadow.h
+{$i fmtmsgh.inc}        // fmtmsg.h
+{$i squotah.inc}        // sys/quota.h
+{$i stimebh.inc}        // sys/timeb.h
+{$i spermh.inc}         // sys/perm.h
+{ $i suserh.inc}        // sys/user.h  // You're not supposed to use this...
+{$i sswaph.inc}         // sys/swap.h
+{$i ssendfileh.inc}     // sys/sendfile.h
+{$i srebooth.inc}       // sys/reboot.h
+{$i aioh.inc}           // aio.h
+{$i aliasesh.inc}       // aliases.h
+{$i globh.inc}          // glob.h
+{$i crypth.inc}         // crypt.h
+{$i sfsuidh.inc}        // sys/fsuid.h
+{$i sklogh.inc}         // sys/klog.h
+{$i skdaemonh.inc}      // sys/kdaemon.h
+{$i saccth.inc}         // sys/acct.h
+{$i bstroptsh.inc}      // bits/stropts.h
+{$i stroptsh.inc}       // stropts.h
+{$i allocah.inc}        // alloca.h
+{$i getopth.inc}        // getopt.h
+{$i argph.inc}          // argp.h
+{$i nssh.inc}           // nss.h
+{$i regexh.inc}         // regex.h
+{ $i regexph.inc}       // regexp.h // You're not supposed to use this...
+{$i netherneth.inc}     // net/ethernet.h
+{$i nifh.inc}           // net/if.h
+{$i nif_arph.inc}       // net/if_arp.h
+{$i nif_packeth.inc}    // net/if_packet.h
+{ $i nppp_defsh.inc}    // net/ppp_defs.h is empty
+{$i nif_ppph.inc}       // net/if_ppp.h
+{$i nif_shaperh.inc}    // net/if_shaper.h
+{ $i nif_slip.h}        // net/if_slip.h in kerneldefs
+{ $i nppp_comp.h}       // net/ppp-comp.h in kerneldefs
+{$i nrouteh.inc}        // net/route.h
+{$i nashh.inc}          // netash/ash.h
+{$i nath.inc}           // netatalk/at.h
+{$i nax25h.inc}         // netax25/ax25.h
+{$i nech.inc}           // neteconet/ec.h
+{$i nipxh.inc}          // netipx/ipx.h
+{$i npacketh.inc}       // netpacket/packet.h
+{$i nnetromh.inc}       // netrom/netrom.h
+{$i nroseh.inc}         // netrose/rose.h
+{$i nif_etherh.inc}     // netinet/if_ether.h
+{$i netherh.inc}        // netinet/ether.h
+{$i nicmp6h.inc}        // netinet/icmp6.h
+{$i nif_fddih.inc}      // netinet/if_fddi.h
+{$i nif_trh.inc}        // netinet/if_tr.h
+{$i nigmph.inc}         // netinet/igmp.h
+{$i nin_systmh.inc}     // netinet/in_systm.h
+{$i niph.inc}           // netinet/ip.h
+{$i nip6h.inc}          // netinet/ip6.h
+{$i nip_icmph.inc}      // netinet/ip_icmp.h
+{$i ntcph.inc}          // netinet/tcp.h
+{$i nupdh.inc}          // netinet/udp.h
+{$i proutedh.inc}       // protocols/routed.h
+{$i prwhodh.inc}        // protocols/rwhod.h
+{$i ptalkdh.inc}        // protocols/talkd.h
+{$i ptimedh.inc}        // protocols/timed.h
+{$i sscsih.inc}         // scsi/scsi.h
+{$i sscsi_ioctlh.inc}   // scsi/scsi_ioctl.h
+{$i ssgh.inc}           // scsi/sg.h
+{$i ttyenth.inc}        // ttyent.h
+{$i sgttyh.inc}         // sgtty.h
+{$i searchh.inc}        // search.h
+
+Implementation
+
+uses kernelioctl;
+
+{$i time.inc}         // bits/time.h macros.
+{$i stime.inc}        // sys/time.h macros.
+{$i dirent.inc}       // dirent.h macros.
+{$i sstat.inc}        // sys/stat.h macros.
+{$i libio.inc}        // libio.h macros.
+{$i termios.inc}      // termios.h macros.
+{$i sttydefaults.inc} // sys/ttydefaults.h macros.
+{$i sraw.inc}         // sys/raw.h macros.
+{$i bwaitstatus.inc}  // bits/waitstatus.h macros. 
+{$i ssyslog.inc}      // sys/syslog.h macros.
+{$i bsocket.inc}      // bits/socket.h macros.
+{$i sun.inc}          // sys/un.h macros.
+{$i nin.inc}          // netinet/in.h macros.
+{$i sselect.inc}      // sys/select.h macros.
+{$i squota.inc}       // sys/quota.h macros.
+{$i nethernet.inc}    // net/ethernet.h macros.
+{$i nif_ppp.inc}      // net/if_ppp.h macros.
+{$i nroute.inc}       // net/route.h macros.
+{$i nip.inc}          // netinet/ip.h macros. 
+{$i nif_ether.inc}    // netinet/if_ether.h macros.
+{$i nicmp6.inc}       // netinet/icmp6.h macros.
+{$i nip_icmp.inc}     // netinet/ip_icmp.h macros.
+
+end.

+ 11 - 0
packages/base/libc/libgenh.inc

@@ -0,0 +1,11 @@
+
+
+function dirname(__path:Pchar):Pchar;cdecl;external clib name 'dirname';
+function __xpg_basename(__path:Pchar):Pchar;cdecl;external clib name '__xpg_basename';
+// maybe add later. function basename(__path:Pchar):Pchar;cdecl;external clib name '__xpg_basename';
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 19 - 0
packages/base/libc/libintlh.inc

@@ -0,0 +1,19 @@
+
+
+function gettext(__msgid:Pchar):Pchar;cdecl;external clib name 'gettext';
+function dgettext(__domainname:Pchar; __msgid:Pchar):Pchar;cdecl;external clib name 'dgettext';
+function __dgettext(__domainname:Pchar; __msgid:Pchar):Pchar;cdecl;external clib name '__dgettext';
+function dcgettext(__domainname:Pchar; __msgid:Pchar; __category:longint):Pchar;cdecl;external clib name 'dcgettext';
+function __dcgettext(__domainname:Pchar; __msgid:Pchar; __category:longint):Pchar;cdecl;external clib name '__dcgettext';
+function ngettext(__msgid1:Pchar; __msgid2:Pchar; __n:dword):Pchar;cdecl;external clib name 'ngettext';
+function dngettext(__domainname:Pchar; __msgid1:Pchar; __msgid2:Pchar; __n:dword):Pchar;cdecl;external clib name 'dngettext';
+function dcngettext(__domainname:Pchar; __msgid1:Pchar; __msgid2:Pchar; __n:dword; __category:longint):Pchar;cdecl;external clib name 'dcngettext';
+function textdomain(__domainname:Pchar):Pchar;cdecl;external clib name 'textdomain';
+function bindtextdomain(__domainname:Pchar; __dirname:Pchar):Pchar;cdecl;external clib name 'bindtextdomain';
+function bind_textdomain_codeset(__domainname:Pchar; __codeset:Pchar):Pchar;cdecl;external clib name 'bind_textdomain_codeset';
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 83 - 0
packages/base/libc/libio.inc

@@ -0,0 +1,83 @@
+{ ---------------------------------------------------------------------
+    Macros from libio.h
+  ---------------------------------------------------------------------}
+
+Function _IO_getc_unlocked(_fp: P_IO_FILE): longint;
+begin
+  if _fp^._IO_read_ptr>=_fp^._IO_read_end then
+    Result:=__uflow(_fp)
+  else
+    begin
+    Result:=PByte(_fp^._IO_read_ptr)^;
+    Inc(_fp^._IO_read_ptr);
+    end;
+end;
+
+
+Function _IO_peekc_unlocked(_fp: P_IO_FILE): longint;
+begin
+  if (_fp^._IO_read_ptr>=_fp^._IO_read_end) and (__underflow(_fp) = __EOF) then
+    Result:=__EOF
+  else
+    Result:=PByte(_fp^._IO_read_ptr)^;
+end;
+
+
+Function _IO_putc_unlocked(_ch: Char; _fp: P_IO_FILE): longint;
+begin
+  if _fp^._IO_write_ptr>=_fp^._IO_write_end then
+    Result:=__overflow(_fp, Byte(_ch))
+  else
+    begin
+    Result:=Byte(_ch);
+    _fp^._IO_write_ptr^:=_ch;
+    Inc(_fp^._IO_write_ptr);
+    end;
+end;
+
+
+Function _IO_getwc_unlocked(_fp: P_IO_FILE): longint;
+begin
+  if Cardinal(_fp^._wide_data^._IO_read_ptr)>=Cardinal(_fp^._wide_data^._IO_read_end) then
+    Result:=__wuflow(_fp)
+  else
+    begin
+//!! MVC    Result:=_fp^._wide_data^._IO_read_ptr^;
+    Inc(_fp^._wide_data^._IO_read_ptr);
+    end;
+end;
+
+
+Function _IO_putwc_unlocked(_wch: wchar_t; _fp: P_IO_FILE): longint;
+begin
+{ //!! MVC
+  if Cardinal(_fp^._wide_data^._IO_write_ptr)>=Cardinal(_fp^._wide_data^._IO_write_end) then
+    Result:=__woverflow(_fp, _wch)
+  else
+    begin
+    Result:=_wch;
+    _fp^._wide_data^._IO_write_ptr^:=_wch;
+    Inc(_fp^._wide_data^._IO_write_ptr);
+    end;
+}
+end;
+
+
+Function _IO_feof_unlocked(_fp: P_IO_FILE): longint;
+begin
+  Result:=Ord((_fp^._flags and _IO_EOF_SEEN)<>0);
+end;
+
+
+Function _IO_ferror_unlocked(_fp: P_IO_FILE): longint;
+begin
+  Result:=Ord((_fp^._flags and _IO_ERR_SEEN)<>0);
+end;
+
+
+Function _IO_PENDING_OUTPUT_COUNT(_fp: P_IO_FILE): longint;
+begin
+  Result:=(_fp^._IO_write_ptr)-(_fp^._IO_write_base);
+end;
+  
+  

+ 312 - 0
packages/base/libc/libioh.inc

@@ -0,0 +1,312 @@
+
+Type
+   _IO_pos_t = _G_fpos_t;
+   _IO_fpos_t = _G_fpos_t;
+   _IO_fpos64_t = _G_fpos64_t;
+   _IO_size_t = _G_size_t;
+   _IO_ssize_t = _G_ssize_t;
+   _IO_off_t = _G_off_t;
+   _IO_off64_t = _G_off64_t;
+   _IO_pid_t = _G_pid_t;
+   _IO_uid_t = _G_uid_t;
+   _IO_iconv_t = _G_iconv_t;
+
+   P_IO_pos_t = ^_IO_pos_t;
+   P_IO_fpos_t = ^_IO_fpos_t;
+   P_IO_fpos64_t = ^_IO_fpos64_t;
+   P_IO_size_t = ^_IO_size_t;
+   P_IO_ssize_t = ^_IO_ssize_t;
+   P_IO_off_t = ^_IO_off_t;
+   P_IO_off64_t = ^_IO_off64_t;
+   P_IO_pid_t = ^_IO_pid_t;
+   P_IO_uid_t = ^_IO_uid_t;
+   P_IO_iconv_t = ^_IO_iconv_t;
+
+Const
+   _IO_BUFSIZ = _G_BUFSIZ;
+
+Type
+   _IO_va_list = _G_va_list;
+   _IO_wint_t = _G_wint_t;
+
+
+const
+   _IO_UNIFIED_JUMPTABLES = 1;
+   _IO_USE_DTOA = 1;
+
+   __EOF = -(1);
+
+const
+  _IOS_INPUT = 1;
+  _IOS_OUTPUT = 2;
+  _IOS_ATEND = 4;
+  _IOS_APPEND = 8;
+  _IOS_TRUNC = 16;
+  _IOS_NOCREATE = 32;
+  _IOS_NOREPLACE = 64;
+  _IOS_BIN = 128;
+  _IO_MAGIC = $FBAD0000;
+  _OLD_STDIO_MAGIC = $FABC0000;
+  _IO_MAGIC_MASK = $FFFF0000;
+  _IO_USER_BUF = 1;
+  _IO_UNBUFFERED = 2;
+  _IO_NO_READS = 4;
+  _IO_NO_WRITES = 8;
+  _IO_EOF_SEEN = $10;
+  _IO_ERR_SEEN = $20;
+  _IO_DELETE_DONT_CLOSE = $40;
+  _IO_LINKED = $80;
+  _IO_IN_BACKUP = $100;
+  _IO_LINE_BUF = $200;
+  _IO_TIED_PUT_GET = $400;
+  _IO_CURRENTLY_PUTTING = $800;
+  _IO_IS_APPENDING = $1000;
+  _IO_IS_FILEBUF = $2000;
+  _IO_BAD_SEEN = $4000;
+  _IO_USER_LOCK = $8000;
+  _IO_SKIPWS = 01;
+  _IO_LEFT = 02;
+  _IO_RIGHT = 04;
+  _IO_INTERNAL = 010;
+  _IO_DEC = 020;
+  _IO_OCT = 040;
+  _IO_HEX = 0100;
+  _IO_SHOWBASE = 0200;
+  _IO_SHOWPOINT = 0400;
+  _IO_UPPERCASE = 01000;
+  _IO_SHOWPOS = 02000;
+  _IO_SCIENTIFIC = 04000;
+  _IO_FIXED = 010000;
+  _IO_UNITBUF = 020000;
+  _IO_STDIO = 040000;
+  _IO_DONT_CLOSE = 0100000;
+  _IO_BOOLALPHA = 0200000;
+
+type
+  P_IO_jump_t = ^_IO_jump_t;
+  _IO_jump_t = record
+  end;
+
+  P_IO_lock_t = ^_IO_lock_t;
+  _IO_lock_t = pointer;
+  P_IO_lock = P_IO_lock_t;
+type
+  __codecvt_result =  Longint;
+
+Const
+  __codecvt_ok = 0;
+  __codecvt_partial = 1;
+  __codecvt_error = 2;
+    __codecvt_noconv = 3;
+
+type
+  P_IO_codecvt = ^_IO_codecvt;
+
+  // The following function declarations are used anonymously in the header file.
+  TCodeCvtDestrProc = procedure(p1: P_IO_codecvt); cdecl;
+  TCodeCvtDoOutFunc = function(p1: P_IO_codecvt; p2: PMultiByteState; p3, p4: Pwchar_t; p5: PPwchar_t; p6, p7: PChar; p8: PPChar): __codecvt_result; cdecl;
+  TCodeCvtDoUnshiftFunc = function(p1: P_IO_codecvt; p2: PMultiByteState; p3: PChar; p4: PChar; p5: PPChar): __codecvt_result; cdecl;
+  TCodeCvtDoInFunc = function(p1: P_IO_codecvt; p2: PMultiByteState; p3: PChar; p4: PChar; p5: PPChar; p6: Pwchar_t; p7: Pwchar_t; p8: PPwchar_t): __codecvt_result; cdecl;
+  TCodeCvtDoEncodingFunc = function(p1: P_IO_codecvt): Integer; cdecl;
+  TCodeCvtDoAlwaysNoConvFunc = function(p1: P_IO_codecvt): Integer; cdecl;
+  TCodeCvtDoLengthFunc = function(p1: P_IO_codecvt; p2: PMultiByteState; p3: PChar; p4: PChar; p5: _IO_size_t): Integer; cdecl;
+  TCodeCvtDoMaxLengthFunc = function(p1: P_IO_codecvt): Integer; cdecl;
+
+  _IO_codecvt = record
+       __codecvt_destr : TCodeCvtDestrProc;
+       __codecvt_do_out : TCodeCvtDoOutFunc;
+       __codecvt_do_unshift : TCodeCvtDoUnshiftFunc;
+       __codecvt_do_in : TCodeCvtDoInFunc;
+       __codecvt_do_encoding : TCodeCvtDoEncodingFunc;
+       __codecvt_do_always_noconv : TCodeCvtDoAlwaysNoConvFunc;
+       __codecvt_do_length : TCodeCvtDoLengthFunc;
+       __codecvt_do_max_length : TCodeCvtDoMaxLengthFunc;
+       __cd_in : _IO_iconv_t;
+       __cd_out : _IO_iconv_t;
+    end;
+
+  P_IO_wide_data = ^_IO_wide_data;
+  _IO_wide_data = record
+       _IO_read_ptr : Pwchar_t;
+       _IO_read_end : Pwchar_t;
+       _IO_read_base : Pwchar_t;
+       _IO_write_base : Pwchar_t;
+       _IO_write_ptr : Pwchar_t;
+       _IO_write_end : Pwchar_t;
+       _IO_buf_base : Pwchar_t;
+       _IO_buf_end : Pwchar_t;
+       _IO_save_base : Pwchar_t;
+       _IO_backup_base : Pwchar_t;
+       _IO_save_end : Pwchar_t;
+       _IO_state : __mbstate_t;
+       _IO_last_state : __mbstate_t;
+       _codecvt : _IO_codecvt;
+       _shortbuf : array[0..0] of wchar_t;
+       _wide_vtable : P_IO_jump_t;
+    end;
+
+  P_IO_FILE = ^_IO_FILE;
+  PIOMarker = ^_IO_marker;
+  _IO_marker = {packed} record
+    _next: PIOMarker;
+    _sbuf: P_IO_File;
+    _pos: Integer;
+  end;
+
+  _IO_FILE = {packed} record
+    _flags: Longint;  
+    _IO_read_ptr: PChar;
+    _IO_read_end: PChar;
+    _IO_read_base: PChar;
+    _IO_write_base: PChar;
+    _IO_write_ptr: PChar;
+    _IO_write_end: PChar;
+    _IO_buf_base: PChar;
+    _IO_buf_end: PChar; 
+    _IO_save_base: PChar;
+    _IO_backup_base: PChar;
+    _IO_save_end: PChar;
+    _markers: PIOMarker;
+    _chain: P_IO_File;
+    _fileno: Integer;
+    _blksize: Integer;
+    _old_offset: _IO_off_t;
+    _cur_column: word;
+    _vtable_offset: shortint;
+    _shortbuf: packed array[0..1-1] of Char; 
+    _lock: P_IO_Lock;
+    _offset: _IO_off64_t;
+    _codecvt: ^_IO_codecvt;
+    _wide_data: ^_IO_wide_data;
+    _mode: longint;
+    _unused2: packed array[0..(15*SizeOf(Integer) - 2*SizeOf(Pointer))-1] of Byte;
+  end;
+                  
+   P_IO_FILE_complete = ^_IO_FILE_complete;
+   _IO_FILE_complete = record
+     _file : _IO_FILE;
+     _offset : _IO_off64_t;
+     _codecvt : P_IO_codecvt;
+     _wide_data : P_IO_wide_data;
+     __pad1 : pointer;
+     __pad2 : pointer;
+     _mode : longint;
+   end;
+
+   P_IO_FILE_plus = ^_IO_FILE_plus;
+   _IO_FILE_plus = record
+       {undefined structure}
+     end;
+
+var
+  _IO_2_1_stdin_ : _IO_FILE_plus;cvar;external;
+  _IO_2_1_stdout_ : _IO_FILE_plus;cvar;external;
+  _IO_2_1_stderr_ : _IO_FILE_plus;cvar;external;
+
+  _IO_stdin : P_IO_FILE;cvar;external;
+  _IO_stdout : P_IO_FILE;cvar;external;
+  _IO_stderr : P_IO_FILE;cvar;external;
+
+type
+  __io_read_fn = function(__cookie: Pointer; __buf: PChar; __nbytes: size_t): __ssize_t; cdecl;
+  __io_write_fn = function(__cookie: Pointer; __buf: PChar; __n: size_t): __ssize_t; cdecl;
+  __io_seek_fn = function(__cookie: Pointer; __pos: P_IO_off64_t; __w: Integer): Integer; cdecl;
+  __io_close_fn = function(__cookie: Pointer): Integer; cdecl;
+
+
+  Pcookie_read_function_t = ^cookie_read_function_t;
+  cookie_read_function_t = __io_read_fn;
+
+  Pcookie_write_function_t = ^cookie_write_function_t;
+  cookie_write_function_t = __io_write_fn;
+
+  Pcookie_seek_function_t = ^cookie_seek_function_t;
+  cookie_seek_function_t = __io_seek_fn;
+
+  Pcookie_close_function_t = ^cookie_close_function_t;
+  cookie_close_function_t = __io_close_fn;
+
+  P_IO_cookie_io_functions_t = ^_IO_cookie_io_functions_t;
+  _IO_cookie_io_functions_t = record
+    read : __io_read_fn;
+    write : __io_write_fn;
+    seek : __io_seek_fn;
+    close : __io_close_fn;
+  end;
+
+  Pcookie_io_functions_t = ^cookie_io_functions_t;
+  cookie_io_functions_t = _IO_cookie_io_functions_t;
+  P_IO_cookie_file = ^_IO_cookie_file;
+  _IO_cookie_file =  record
+    _file: _IO_FILE;
+    vtable: Pointer;
+    cookie: Pointer;
+    io_functions: _IO_cookie_io_functions_t;
+  end;
+
+
+function __underflow(_para1:P_IO_FILE):longint;cdecl;external clib name '__underflow';
+function __uflow(_para1:P_IO_FILE):longint;cdecl;external clib name '__uflow';
+function __overflow(_para1:P_IO_FILE; _para2:longint):longint;cdecl;external clib name '__overflow';
+function __wunderflow(_para1:P_IO_FILE):_IO_wint_t;cdecl;external clib name '__wunderflow';
+function __wuflow(_para1:P_IO_FILE):_IO_wint_t;cdecl;external clib name '__wuflow';
+function __woverflow(_para1:P_IO_FILE; _para2:_IO_wint_t):_IO_wint_t;cdecl;external clib name '__woverflow';
+
+function _IO_getc_unlocked(_fp: P_IO_File): Longint;
+function _IO_peekc_unlocked(_fp: P_IO_File): Longint;
+function _IO_putc_unlocked(_ch: Char; _fp: P_IO_File): Longint;
+
+function _IO_getwc_unlocked(_fp: P_IO_File): Longint;
+function _IO_putwc_unlocked(_wch: wchar_t; _fp: P_IO_File): Longint;
+
+function _IO_feof_unlocked(_fp: P_IO_File): Longint;
+function _IO_ferror_unlocked(_fp: P_IO_File): Longint;
+
+function _IO_getc(__fp:P_IO_FILE):longint;cdecl;external clib name '_IO_getc';
+function _IO_putc(__c:longint; __fp:P_IO_FILE):longint;cdecl;external clib name '_IO_putc';
+function _IO_feof(__fp:P_IO_FILE):longint;cdecl;external clib name '_IO_feof';
+function _IO_ferror(__fp:P_IO_FILE):longint;cdecl;external clib name '_IO_ferror';
+function _IO_peekc_locked(__fp:P_IO_FILE):longint;cdecl;external clib name '_IO_peekc_locked';
+
+function _IO_PENDING_OUTPUT_COUNT(_fp : P_IO_File) : longint;
+
+procedure _IO_flockfile(_para1:P_IO_FILE);cdecl;external clib name '_IO_flockfile';
+procedure _IO_funlockfile(_para1:P_IO_FILE);cdecl;external clib name '_IO_funlockfile';
+function _IO_ftrylockfile(_para1:P_IO_FILE):longint;cdecl;external clib name '_IO_ftrylockfile';
+
+function _IO_vfscanf(_para1:P_IO_FILE; _para2:Pchar; _para3:_IO_va_list; _para4:Plongint):longint;cdecl;external clib name '_IO_vfscanf';
+function _IO_vfprintf(_para1:P_IO_FILE; _para2:Pchar; _para3:_IO_va_list):longint;cdecl;external clib name '_IO_vfprintf';
+function _IO_padn(_para1:P_IO_FILE; _para2:longint; _para3:_IO_ssize_t):_IO_ssize_t;cdecl;external clib name '_IO_padn';
+function _IO_sgetn(_para1:P_IO_FILE; _para2:pointer; _para3:_IO_size_t):_IO_size_t;cdecl;external clib name '_IO_sgetn';
+function _IO_seekoff(_para1:P_IO_FILE; _para2:_IO_off64_t; _para3:longint; _para4:longint):_IO_off64_t;cdecl;external clib name '_IO_seekoff';
+function _IO_seekpos(_para1:P_IO_FILE; _para2:_IO_off64_t; _para3:longint):_IO_off64_t;cdecl;external clib name '_IO_seekpos';
+procedure _IO_free_backup_area(_para1:P_IO_FILE);cdecl;external clib name '_IO_free_backup_area';
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+ Type  
+  TIOLock = _IO_lock_t;
+  PIOLock = ^TIOLock;
+    
+  TIOCodeVect = _IO_codecvt;
+  PIOCodeVect = ^TIOCodeVect;
+
+  TCodeCvtDoOutProc =   TCodeCvtDoOutFunc; 
+  TCodeCvtDoUnshiftProc =   TCodeCvtDoUnshiftFunc; 
+  TCodeCvtDoInProc =   TCodeCvtDoInFunc; 
+  TCodeCvtDoEncodingProc =   TCodeCvtDoEncodingFunc; 
+  TCodeCvtDoAlwaysNoConvProc =   TCodeCvtDoAlwaysNoConvFunc; 
+  TCodeCvtDoLengthProc =   TCodeCvtDoLengthFunc; 
+  TCodeCvtDoMaxLengthProc =   TCodeCvtDoMaxLengthFunc; 
+
+  TIOFile = _IO_FILE;
+  PIOFile = ^TIOFile;
+
+  TIOCookieFunctions = _IO_cookie_io_functions_t;
+  PIOCookieFunctions = ^TIOCookieFunctions;
+
+  TIOCookieFile = _IO_cookie_file;
+  PIOCookieFile = ^TIOCookieFile;
+

+ 25 - 0
packages/base/libc/limitsh.inc

@@ -0,0 +1,25 @@
+
+const
+   MB_LEN_MAX = 16;
+   CHAR_BIT = 8;
+   SCHAR_MIN = -(128);
+   SCHAR_MAX = 127;
+   UCHAR_MAX = 255;
+   CHAR_MIN = SCHAR_MIN;
+   CHAR_MAX = SCHAR_MAX;
+
+   SHRT_MIN = -(32768);
+   SHRT_MAX = 32767;
+   USHRT_MAX = 65535;
+   INT_MAX = 2147483647;
+   INT_MIN = (-(INT_MAX)) - 1;
+   UINT_MAX = 4294967295;
+   LONG_MAX = 2147483647;
+
+   LONG_MIN = (-(LONG_MAX)) - 1;
+   ULONG_MAX = 4294967295;
+{$ifndef ver1_0}
+   LLONG_MAX = QWord(9223372036854775807);
+   LLONG_MIN = (-LLONG_MAX - 1);
+   ULLONG_MAX = 18446744073709551615;
+{$endif}

+ 12 - 0
packages/base/libc/local_limh.inc

@@ -0,0 +1,12 @@
+
+const
+   _POSIX_THREAD_KEYS_MAX = 128;
+   PTHREAD_KEYS_MAX = 1024;
+   _POSIX_THREAD_DESTRUCTOR_ITERATIONS = 4;
+   PTHREAD_DESTRUCTOR_ITERATIONS = _POSIX_THREAD_DESTRUCTOR_ITERATIONS;
+   _POSIX_THREAD_THREADS_MAX = 64;
+   PTHREAD_THREADS_MAX = 1024;
+   AIO_PRIO_DELTA_MAX = 20;
+   PTHREAD_STACK_MIN = 16384;
+   TIMER_MAX = 256;
+

+ 79 - 0
packages/base/libc/localeh.inc

@@ -0,0 +1,79 @@
+
+const
+  __LC_CTYPE    = 0;
+  __LC_NUMERIC  = 1;
+  __LC_TIME     = 2;
+  __LC_COLLATE  = 3;
+  __LC_MONETARY = 4;
+  __LC_MESSAGES = 5;
+  __LC_ALL      = 6;
+  __LC_PAPER    = 7;
+  __LC_NAME     = 8;
+  __LC_ADDRESS  = 9;
+  __LC_TELEPHONE = 10;
+  __LC_MEASUREMENT = 11;
+  __LC_IDENTIFICATION = 12;
+
+  LC_CTYPE = __LC_CTYPE;
+  LC_NUMERIC = __LC_NUMERIC;
+  LC_TIME = __LC_TIME;
+  LC_COLLATE = __LC_COLLATE;
+  LC_MONETARY = __LC_MONETARY;
+  LC_MESSAGES = __LC_MESSAGES;
+  LC_ALL = __LC_ALL;
+  LC_PAPER = __LC_PAPER;
+  LC_NAME = __LC_NAME;
+  LC_ADDRESS = __LC_ADDRESS;
+  LC_TELEPHONE = __LC_TELEPHONE;
+  LC_MEASUREMENT = __LC_MEASUREMENT;
+  LC_IDENTIFICATION = __LC_IDENTIFICATION;
+
+type
+   Plconv = ^lconv;
+   lconv = record
+        decimal_point : Pchar;
+        thousands_sep : Pchar;
+        grouping : Pchar;
+        int_curr_symbol : Pchar;
+        currency_symbol : Pchar;
+        mon_decimal_point : Pchar;
+        mon_thousands_sep : Pchar;
+        mon_grouping : Pchar;
+        positive_sign : Pchar;
+        negative_sign : Pchar;
+        int_frac_digits : char;
+        frac_digits : char;
+        p_cs_precedes : char;
+        p_sep_by_space : char;
+        n_cs_precedes : char;
+        n_sep_by_space : char;
+        p_sign_posn : char;
+        n_sign_posn : char;
+        int_p_cs_precedes : char;
+        int_p_sep_by_space : char;
+        int_n_cs_precedes : char;
+        int_n_sep_by_space : char;
+        int_p_sign_posn : char;
+        int_n_sign_posn : char;
+        __int_p_cs_precedes : char;
+        __int_p_sep_by_space : char;
+        __int_n_cs_precedes : char;
+        __int_n_sep_by_space : char;
+        __int_p_sign_posn : char;
+        __int_n_sign_posn : char;
+     end;
+
+
+function setlocale(__category:longint; __locale:Pchar):Pchar;cdecl;external clib name 'setlocale';
+function localeconv:Plconv;cdecl;external clib name 'localeconv';
+function __newlocale(__category_mask:longint; __locale:Pchar; __base:__locale_t):__locale_t;cdecl;external clib name '__newlocale';
+function __duplocale(__dataset:__locale_t):__locale_t;cdecl;external clib name '__duplocale';
+procedure __freelocale(__dataset:__locale_t);cdecl;external clib name '__freelocale';
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TLConv = lconv;
+  _lconv = lconv;

+ 76 - 0
packages/base/libc/malloch.inc

@@ -0,0 +1,76 @@
+
+var
+  __malloc_initialized : longint;cvar;external;
+
+function malloc(__size:size_t):pointer;cdecl;external clib name 'malloc';
+function calloc(__nmemb:size_t; __size:size_t):pointer;cdecl;external clib name 'calloc';
+function realloc(__ptr:pointer; __size:size_t):pointer;cdecl;external clib name 'realloc';
+procedure free(__ptr:pointer);cdecl;external clib name 'free';
+procedure cfree(__ptr:pointer);cdecl;external clib name 'cfree';
+function memalign(__alignment:size_t; __size:size_t):pointer;cdecl;external clib name 'memalign';
+function valloc(__size:size_t):pointer;cdecl;external clib name 'valloc';
+function pvalloc(__size:size_t):pointer;cdecl;external clib name 'pvalloc';
+
+var
+  __morecore : function (__size:ptrdiff_t):pointer;cvar;external;
+
+function __default_morecore(__size:ptrdiff_t):pointer;cdecl;external clib name '__default_morecore';
+
+type
+  Pmallinfo = ^_mallinfo;
+  _mallinfo = record
+    arena : longint;
+    ordblks : longint;
+    smblks : longint;
+    hblks : longint;
+    hblkhd : longint;
+    usmblks : longint;
+    fsmblks : longint;
+    uordblks : longint;
+    fordblks : longint;
+    keepcost : longint;
+  end;
+
+// not sure about this one ? Returns struct value??
+function mallinfo:_mallinfo;cdecl;external clib name 'mallinfo';
+
+const
+  M_MXFAST  = 1;
+  M_NLBLKS  = 2;
+  M_GRAIN   = 3;
+  M_KEEP    = 4;
+
+  M_TRIM_THRESHOLD    = -1;
+  M_TOP_PAD           = -2;
+  M_MMAP_THRESHOLD    = -3;
+  M_MMAP_MAX          = -4;
+  M_CHECK_ACTION      = -5;
+
+
+function mallopt(__param:longint; __val:longint):longint;cdecl;external clib name 'mallopt';
+function malloc_trim(__pad:size_t):longint;cdecl;external clib name 'malloc_trim';
+function malloc_usable_size(__ptr:pointer):size_t;cdecl;external clib name 'malloc_usable_size';
+procedure malloc_stats;cdecl;external clib name 'malloc_stats';
+function malloc_get_state:pointer;cdecl;external clib name 'malloc_get_state';
+function malloc_set_state(__ptr:pointer):longint;cdecl;external clib name 'malloc_set_state';
+
+var
+  __malloc_initialize_hook : procedure ;cvar;external;
+  __free_hook : procedure (__ptr:pointer; _para2:pointer);cvar;external;
+  __malloc_hook : function (__size:size_t; _para2:pointer):pointer;cvar;external;
+  __realloc_hook : function (__ptr:pointer; __size:size_t; _para3:pointer):pointer;cvar;external;
+  __memalign_hook : function (__alignment:size_t; __size:size_t; _para3:pointer):pointer;cvar;external;
+  __after_morecore_hook : procedure ;cvar;external;
+
+procedure __malloc_check_init;cdecl;external clib name '__malloc_check_init';
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TMallocInfo = _mallinfo;
+  PMallocInfo = ^TMallocInfo;
+    
+    

+ 27 - 0
packages/base/libc/mcheckh.inc

@@ -0,0 +1,27 @@
+
+type
+   mcheck_status =  (
+     MCHECK_DISABLED := -(1),
+     MCHECK_OK := 0,
+     MCHECK_FREE := 1,
+     MCHECK_HEAD := 2,
+     MCHECK_TAIL := 3
+   );  
+
+type
+  TMemCheckAbortProc = procedure(MCheckStatus: mcheck_status); cdecl; // Used anonymously in header file
+   
+   
+function mcheck(__abortfunc: TMemCheckAbortProc):longint;cdecl;external clib name 'mcheck';
+function mcheck_pedantic(__abortfunc:TMemCheckAbortProc):longint;cdecl;external clib name 'mcheck_pedantic';
+procedure mcheck_check_all;cdecl;external clib name 'mcheck_check_all';
+function mprobe(__ptr:pointer):mcheck_status;cdecl;external clib name 'mprobe';
+procedure mtrace;cdecl;external clib name 'mtrace';
+procedure muntrace;cdecl;external clib name 'muntrace';
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 48 - 0
packages/base/libc/mntenth.inc

@@ -0,0 +1,48 @@
+
+
+const
+   MNTTAB = _PATH_MNTTAB;
+   MOUNTED = _PATH_MOUNTED;
+   MNTTYPE_IGNORE = 'ignore';
+   MNTTYPE_NFS = 'nfs';
+   MNTTYPE_SWAP = 'swap';
+   MNTOPT_DEFAULTS = 'defaults';
+   MNTOPT_RO = 'ro';
+   MNTOPT_RW = 'rw';
+   MNTOPT_SUID = 'suid';
+   MNTOPT_NOSUID = 'nosuid';
+   MNTOPT_NOAUTO = 'noauto';
+
+type
+   Pmntent = ^mntent;
+   mntent = record
+        mnt_fsname : Pchar;
+        mnt_dir : Pchar;
+        mnt_type : Pchar;
+        mnt_opts : Pchar;
+        mnt_freq : longint;
+        mnt_passno : longint;
+     end;
+
+
+function setmntent(__file:Pchar; __mode:Pchar):PFILE;cdecl;external clib name 'setmntent';
+function getmntent(__stream:PFILE):Pmntent;cdecl;external clib name 'getmntent';
+function getmntent_r(__stream:PFILE; __result:Pmntent; __buffer:Pchar; __bufsize:longint):Pmntent;cdecl;external clib name 'getmntent_r';
+
+function addmntent(__stream:PFILE; __mnt:Pmntent):longint;cdecl;external clib name 'addmntent';
+function endmntent(__stream:PFILE):longint;cdecl;external clib name 'endmntent';
+function hasmntopt(__mnt:Pmntent; __opt:Pchar):Pchar;cdecl;external clib name 'hasmntopt';
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  TMountEntry = mntent;
+  PMountEntry = ^TMountEntry;
+  
+function getmntent_r(__stream:PFILE; var __result: mntent; __buffer:Pchar; __bufsize:longint):Pmntent;cdecl;external clib name 'getmntent_r';
+function addmntent(__stream:PFILE; const __mnt: mntent):longint;cdecl;external clib name 'addmntent';
+function hasmntopt(const __mnt: mntent; __opt:Pchar):Pchar;cdecl;external clib name 'hasmntopt';
+      

+ 13 - 0
packages/base/libc/monetaryh.inc

@@ -0,0 +1,13 @@
+
+
+function strfmon(__s:Pchar; __maxsize:size_t; __format:Pchar; args:array of const):ssize_t;cdecl;external clib name 'strfmon';
+function strfmon(__s:Pchar; __maxsize:size_t; __format:Pchar):ssize_t;cdecl;external clib name 'strfmon';
+function __strfmon_l(__s:Pchar; __maxsize:size_t; loc:__locale_t; __format:Pchar; args:array of const):ssize_t;cdecl;external clib name '__strfmon_l';
+function __strfmon_l(__s:Pchar; __maxsize:size_t; loc:__locale_t; __format:Pchar):ssize_t;cdecl;external clib name '__strfmon_l';
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 22 - 0
packages/base/libc/nashh.inc

@@ -0,0 +1,22 @@
+
+type
+   Psockaddr_ash = ^sockaddr_ash;
+   sockaddr_ash = record
+        sash_family : sa_family_t;
+        sash_ifindex : longint;
+        sash_channel : byte;
+        sash_plen : dword;
+        sash_prefix : array[0..15] of byte;
+     end;
+
+
+const
+   ASH_CHANNEL_ANY = 0;
+   ASH_CHANNEL_CONTROL = 1;
+   ASH_CHANNEL_REALTIME = 2;
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 10 - 0
packages/base/libc/nath.inc

@@ -0,0 +1,10 @@
+
+const
+   SOL_ATALK = 258;
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 144 - 0
packages/base/libc/nax25h.inc

@@ -0,0 +1,144 @@
+
+const
+   SOL_AX25 = 257;
+   AX25_WINDOW = 1;
+   AX25_T1 = 2;
+   AX25_T2 = 5;
+   AX25_T3 = 4;
+   AX25_N2 = 3;
+   AX25_BACKOFF = 6;
+   AX25_EXTSEQ = 7;
+   AX25_PIDINCL = 8;
+   AX25_IDLE = 9;
+   AX25_PACLEN = 10;
+   AX25_IPMAXQUEUE = 11;
+   AX25_IAMDIGI = 12;
+   AX25_KILL = 99;
+   SIOCAX25GETUID = SIOCPROTOPRIVATE;
+   SIOCAX25ADDUID = SIOCPROTOPRIVATE + 1;
+   SIOCAX25DELUID = SIOCPROTOPRIVATE + 2;
+   SIOCAX25NOUID = SIOCPROTOPRIVATE + 3;
+   SIOCAX25BPQADDR = SIOCPROTOPRIVATE + 4;
+   SIOCAX25GETPARMS = SIOCPROTOPRIVATE + 5;
+   SIOCAX25SETPARMS = SIOCPROTOPRIVATE + 6;
+   SIOCAX25OPTRT = SIOCPROTOPRIVATE + 7;
+   SIOCAX25CTLCON = SIOCPROTOPRIVATE + 8;
+   SIOCAX25GETINFO = SIOCPROTOPRIVATE + 9;
+   SIOCAX25ADDFWD = SIOCPROTOPRIVATE + 10;
+   SIOCAX25DELFWD = SIOCPROTOPRIVATE + 11;
+   AX25_NOUID_DEFAULT = 0;
+   AX25_NOUID_BLOCK = 1;
+   AX25_SET_RT_IPMODE = 2;
+   AX25_DIGI_INBAND = $01;
+   AX25_DIGI_XBAND = $02;
+   AX25_MAX_DIGIS = 8;
+   
+type
+
+   Pax25_address = ^ax25_address;
+   ax25_address = record
+        ax25_call : array[0..6] of char;
+     end;
+   Psockaddr_ax25 = ^sockaddr_ax25;
+   sockaddr_ax25 = record
+        sax25_family : sa_family_t;
+        sax25_call : ax25_address;
+        sax25_ndigis : longint;
+     end;
+
+   Pfull_sockaddr_ax25 = ^full_sockaddr_ax25;
+   full_sockaddr_ax25 = record
+        fsa_ax25 : sockaddr_ax25;
+        fsa_digipeater : array[0..(AX25_MAX_DIGIS)-1] of ax25_address;
+     end;
+
+
+type
+   Pax25_routes_struct = ^ax25_routes_struct;
+   ax25_routes_struct = record
+        port_addr : ax25_address;
+        dest_addr : ax25_address;
+        digi_count : byte;
+        digi_addr : array[0..(AX25_MAX_DIGIS)-1] of ax25_address;
+     end;
+
+   Pax25_ctl_struct = ^ax25_ctl_struct;
+   ax25_ctl_struct = record
+        port_addr : ax25_address;
+        source_addr : ax25_address;
+        dest_addr : ax25_address;
+        cmd : dword;
+        arg : dword;
+        digi_count : byte;
+        digi_addr : array[0..(AX25_MAX_DIGIS)-1] of ax25_address;
+     end;
+
+   Pax25_info_struct = ^ax25_info_struct;
+   ax25_info_struct = record
+        n2 : dword;
+        n2count : dword;
+        t1 : dword;
+        t1timer : dword;
+        t2 : dword;
+        t2timer : dword;
+        t3 : dword;
+        t3timer : dword;
+        idle : dword;
+        idletimer : dword;
+        state : dword;
+        rcv_q : dword;
+        snd_q : dword;
+     end;
+
+   Pax25_fwd_struct = ^ax25_fwd_struct;
+   ax25_fwd_struct = record
+        port_from : ax25_address;
+        port_to : ax25_address;
+     end;
+
+   Pax25_route_opt_struct = ^ax25_route_opt_struct;
+   ax25_route_opt_struct = record
+        port_addr : ax25_address;
+        dest_addr : ax25_address;
+        cmd : longint;
+        arg : longint;
+     end;
+
+   Pax25_bpqaddr_struct = ^ax25_bpqaddr_struct;
+   ax25_bpqaddr_struct = record
+        dev : array[0..15] of char;
+        addr : ax25_address;
+     end;
+
+
+const
+   AX25_VALUES_IPDEFMODE = 0;
+   AX25_VALUES_AXDEFMODE = 1;
+   AX25_VALUES_NETROM = 2;
+   AX25_VALUES_TEXT = 3;
+   AX25_VALUES_BACKOFF = 4;
+   AX25_VALUES_CONMODE = 5;
+   AX25_VALUES_WINDOW = 6;
+   AX25_VALUES_EWINDOW = 7;
+   AX25_VALUES_T1 = 8;
+   AX25_VALUES_T2 = 9;
+   AX25_VALUES_T3 = 10;
+   AX25_VALUES_N2 = 11;
+   AX25_VALUES_DIGI = 12;
+   AX25_VALUES_IDLE = 13;
+   AX25_VALUES_PACLEN = 14;
+   AX25_VALUES_IPMAXQUEUE = 15;
+   AX25_MAX_VALUES = 20;
+type
+   Pax25_parms_struct = ^ax25_parms_struct;
+   ax25_parms_struct = record
+        port_addr : ax25_address;
+        values : array[0..(AX25_MAX_VALUES)-1] of word;
+     end;
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 34 - 0
packages/base/libc/nech.inc

@@ -0,0 +1,34 @@
+
+type
+   Pec_addr = ^ec_addr;
+   ec_addr = record
+        station : byte;
+        net : byte;
+     end;
+
+   Psockaddr_ec = ^sockaddr_ec;
+   sockaddr_ec = record
+        sec_family : sa_family_t;
+        port : byte;
+        cb : byte;
+        _type : byte;
+        addr : ec_addr;
+        cookie : dword;
+     end;
+
+
+const
+   ECTYPE_PACKET_RECEIVED = 0;
+   ECTYPE_TRANSMIT_STATUS = $10;
+   ECTYPE_TRANSMIT_OK = 1;
+   ECTYPE_TRANSMIT_NOT_LISTENING = 2;
+   ECTYPE_TRANSMIT_NET_ERROR = 3;
+   ECTYPE_TRANSMIT_NO_CLOCK = 4;
+   ECTYPE_TRANSMIT_LINE_JAMMED = 5;
+   ECTYPE_TRANSMIT_NOT_PRESENT = 6;
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

+ 199 - 0
packages/base/libc/netdbh.inc

@@ -0,0 +1,199 @@
+
+
+const
+   _PATH_HEQUIV = '/etc/hosts.equiv';
+   _PATH_HOSTS = '/etc/hosts';
+   _PATH_NETWORKS = '/etc/networks';
+   _PATH_NSSWITCH_CONF = '/etc/nsswitch.conf';
+   _PATH_PROTOCOLS = '/etc/protocols';
+   _PATH_SERVICES = '/etc/services';
+
+var
+   h_errno : longint;cvar;external;
+
+function __h_errno_location:Plongint;cdecl;external clib name '__h_errno_location';
+
+const
+  NETDB_INTERNAL = -(1);
+  NETDB_SUCCESS = 0;
+  HOST_NOT_FOUND = 1;
+  TRY_AGAIN = 2;
+  NO_RECOVERY = 3;
+  NO_DATA = 4;
+  NO_ADDRESS = NO_DATA;
+  SCOPE_DELIMITER = '%';
+
+procedure herror(__str:Pchar);cdecl;external clib name 'herror';
+function hstrerror(__err_num:longint):Pchar;cdecl;external clib name 'hstrerror';
+
+type
+  Phostent = ^hostent;
+  hostent = record
+    h_name: PChar;
+    h_aliases: PPChar;
+    h_addrtype: Integer;
+    h_length: socklen_t;
+    case Byte of
+      0: (h_addr_list: PPChar); 
+      1: (h_addr: PPChar);      
+  end;
+  PPhostent = ^Phostent;
+
+procedure sethostent(__stay_open:longint);cdecl;external clib name 'sethostent';
+procedure endhostent;cdecl;external clib name 'endhostent';
+function gethostent:Phostent;cdecl;external clib name 'gethostent';
+function gethostbyaddr(__addr:pointer; __len:__socklen_t; __type:longint):Phostent;cdecl;external clib name 'gethostbyaddr';
+function gethostbyname(__name:Pchar):Phostent;cdecl;external clib name 'gethostbyname';
+function gethostbyname2(__name:Pchar; __af:longint):Phostent;cdecl;external clib name 'gethostbyname2';
+function gethostent_r(__result_buf:Phostent; __buf:Pchar; __buflen:size_t; __result:PPhostent; __h_errnop:Plongint):longint;cdecl;external clib name 'gethostent_r';
+function gethostbyaddr_r(__addr:pointer; __len:__socklen_t; __type:longint; __result_buf:Phostent; __buf:Pchar; 
+               __buflen:size_t; __result:PPhostent; __h_errnop:Plongint):longint;cdecl;external clib name 'gethostbyaddr_r';
+function gethostbyname_r(__name:Pchar; __result_buf:Phostent; __buf:Pchar; __buflen:size_t; __result:PPhostent; 
+               __h_errnop:Plongint):longint;cdecl;external clib name 'gethostbyname_r';
+function gethostbyname2_r(__name:Pchar; __af:longint; __result_buf:Phostent; __buf:Pchar; __buflen:size_t; 
+               __result:PPhostent; __h_errnop:Plongint):longint;cdecl;external clib name 'gethostbyname2_r';
+procedure setnetent(__stay_open:longint);cdecl;external clib name 'setnetent';
+procedure endnetent;cdecl;external clib name 'endnetent';
+function getnetent:Pnetent;cdecl;external clib name 'getnetent';
+function getnetbyaddr(__net:uint32_t; __type:longint):Pnetent;cdecl;external clib name 'getnetbyaddr';
+function getnetbyname(__name:Pchar):Pnetent;cdecl;external clib name 'getnetbyname';
+function getnetent_r(__result_buf:Pnetent; __buf:Pchar; __buflen:size_t; __result:PPnetent; __h_errnop:Plongint):longint;cdecl;external clib name 'getnetent_r';
+function getnetbyaddr_r(__net:uint32_t; __type:longint; __result_buf:Pnetent; __buf:Pchar; __buflen:size_t; 
+               __result:PPnetent; __h_errnop:Plongint):longint;cdecl;external clib name 'getnetbyaddr_r';
+function getnetbyname_r(__name:Pchar; __result_buf:Pnetent; __buf:Pchar; __buflen:size_t; __result:PPnetent; 
+               __h_errnop:Plongint):longint;cdecl;external clib name 'getnetbyname_r';
+type
+  Pservent = ^servent;
+  servent = record
+       s_name : Pchar;
+       s_aliases : ^Pchar;
+       s_port : longint;
+       s_proto : Pchar;
+    end;
+  PPservent = ^Pservent;
+
+procedure setservent(__stay_open:longint);cdecl;external clib name 'setservent';
+procedure endservent;cdecl;external clib name 'endservent';
+function getservent:Pservent;cdecl;external clib name 'getservent';
+function getservbyname(__name:Pchar; __proto:Pchar):Pservent;cdecl;external clib name 'getservbyname';
+function getservbyport(__port:longint; __proto:Pchar):Pservent;cdecl;external clib name 'getservbyport';
+function getservent_r(__result_buf:Pservent; __buf:Pchar; __buflen:size_t; __result:PPservent):longint;cdecl;external clib name 'getservent_r';
+function getservbyname_r(__name:Pchar; __proto:Pchar; __result_buf:Pservent; __buf:Pchar; __buflen:size_t; 
+               __result:PPservent):longint;cdecl;external clib name 'getservbyname_r';
+function getservbyport_r(__port:longint; __proto:Pchar; __result_buf:Pservent; __buf:Pchar; __buflen:size_t; 
+               __result:PPservent):longint;cdecl;external clib name 'getservbyport_r';
+type
+  Pprotoent = ^protoent;
+  protoent = record
+       p_name : Pchar;
+       p_aliases : ^Pchar;
+       p_proto : longint;
+    end;
+  PPprotoent =  ^Pprotoent;
+
+procedure setprotoent(__stay_open:longint);cdecl;external clib name 'setprotoent';
+procedure endprotoent;cdecl;external clib name 'endprotoent';
+function getprotoent:Pprotoent;cdecl;external clib name 'getprotoent';
+function getprotobyname(__name:Pchar):Pprotoent;cdecl;external clib name 'getprotobyname';
+function getprotobynumber(__proto:longint):Pprotoent;cdecl;external clib name 'getprotobynumber';
+function getprotoent_r(__result_buf:Pprotoent; __buf:Pchar; __buflen:size_t; __result:PPprotoent):longint;cdecl;external clib name 'getprotoent_r';
+function getprotobyname_r(__name:Pchar; __result_buf:Pprotoent; __buf:Pchar; __buflen:size_t; __result:PPprotoent):longint;cdecl;external clib name 'getprotobyname_r';
+function getprotobynumber_r(__proto:longint; __result_buf:Pprotoent; __buf:Pchar; __buflen:size_t; __result:PPprotoent):longint;cdecl;external clib name 'getprotobynumber_r';
+function setnetgrent(__netgroup:Pchar):longint;cdecl;external clib name 'setnetgrent';
+procedure endnetgrent;cdecl;external clib name 'endnetgrent';
+function getnetgrent(__hostp:PPchar; __userp:PPchar; __domainp:PPchar):longint;cdecl;external clib name 'getnetgrent';
+function innetgr(__netgroup:Pchar; __host:Pchar; __user:Pchar; domain:Pchar):longint;cdecl;external clib name 'innetgr';
+function getnetgrent_r(__hostp:PPchar; __userp:PPchar; __domainp:PPchar; __buffer:Pchar; __buflen:size_t):longint;cdecl;external clib name 'getnetgrent_r';
+
+function rcmd(__ahost:PPchar; __rport:word; __locuser:Pchar; __remuser:Pchar; __cmd:Pchar; 
+               __fd2p:Plongint):longint;cdecl;external clib name 'rcmd';
+function rcmd_af(__ahost:PPchar; __rport:word; __locuser:Pchar; __remuser:Pchar; __cmd:Pchar; 
+               __fd2p:Plongint; __af:sa_family_t):longint;cdecl;external clib name 'rcmd_af';
+function rexec(__ahost:PPchar; __rport:longint; __name:Pchar; __pass:Pchar; __cmd:Pchar; 
+               __fd2p:Plongint):longint;cdecl;external clib name 'rexec';
+function rexec_af(__ahost:PPchar; __rport:longint; __name:Pchar; __pass:Pchar; __cmd:Pchar; 
+               __fd2p:Plongint; __af:sa_family_t):longint;cdecl;external clib name 'rexec_af';
+function ruserok(__rhost:Pchar; __suser:longint; __remuser:Pchar; __locuser:Pchar):longint;cdecl;external clib name 'ruserok';
+function ruserok_af(__rhost:Pchar; __suser:longint; __remuser:Pchar; __locuser:Pchar; __af:sa_family_t):longint;cdecl;external clib name 'ruserok_af';
+function rresvport(__alport:Plongint):longint;cdecl;external clib name 'rresvport';
+function rresvport_af(__alport:Plongint; __af:sa_family_t):longint;cdecl;external clib name 'rresvport_af';
+
+type
+  Paddrinfo = ^addrinfo;
+  addrinfo = record
+       ai_flags : longint;
+       ai_family : longint;
+       ai_socktype : longint;
+       ai_protocol : longint;
+       ai_addrlen : socklen_t;
+       ai_addr : Psockaddr;
+       ai_canonname : Pchar;
+       ai_next : Paddrinfo;
+    end;
+  PPaddrinfo = ^Paddrinfo;
+   
+  Pgaicb = ^gaicb;
+  gaicb = record
+       ar_name : Pchar;
+       ar_service : Pchar;
+       ar_request : Paddrinfo;
+       ar_result : Paddrinfo;
+       __return : longint;
+       __unused : array[0..4] of longint;
+    end;
+  PPgaicb = ^Pgaicb;  
+
+
+const
+  GAI_WAIT = 0;
+  GAI_NOWAIT = 1;
+
+  AI_PASSIVE = $0001;
+  AI_CANONNAME = $0002;
+  AI_NUMERICHOST = $0004;
+  EAI_BADFLAGS = -(1);
+  EAI_NONAME = -(2);
+  EAI_AGAIN = -(3);
+  EAI_FAIL = -(4);
+  EAI_NODATA = -(5);
+  EAI_FAMILY = -(6);
+  EAI_SOCKTYPE = -(7);
+  EAI_SERVICE = -(8);
+  EAI_ADDRFAMILY = -(9);
+  EAI_MEMORY = -(10);
+  EAI_SYSTEM = -(11);
+
+  EAI_INPROGRESS = -(100);
+  EAI_CANCELED = -(101);
+  EAI_NOTCANCELED = -(102);
+  EAI_ALLDONE = -(103);
+  EAI_INTR = -(104);
+
+  NI_MAXHOST = 1025;
+  NI_MAXSERV = 32;
+  NI_NUMERICHOST = 1;
+  NI_NUMERICSERV = 2;
+  NI_NOFQDN = 4;
+  NI_NAMEREQD = 8;
+  NI_DGRAM = 16;
+
+function getaddrinfo(__name:Pchar; __service:Pchar; __req:Paddrinfo; __pai:PPaddrinfo):longint;cdecl;external clib name 'getaddrinfo';
+procedure freeaddrinfo(__ai:Paddrinfo);cdecl;external clib name 'freeaddrinfo';
+function gai_strerror(__ecode:longint):Pchar;cdecl;external clib name 'gai_strerror';
+function getnameinfo(__sa:Psockaddr; __salen:socklen_t; __host:Pchar; __hostlen:socklen_t; __serv:Pchar; 
+               __servlen:socklen_t; __flags:dword):longint;cdecl;external clib name 'getnameinfo';
+function getaddrinfo_a(__mode:longint; __list: PPgaicb; __ent:longint; __sig:Psigevent):longint;cdecl;external clib name 'getaddrinfo_a';
+function gai_suspend(__list:array of Pgaicb; __ent:longint; __timeout:Ptimespec):longint;cdecl;external clib name 'gai_suspend';
+function gai_error(__req:Pgaicb):longint;cdecl;external clib name 'gai_error';
+function gai_cancel(__gaicbp:Pgaicb):longint;cdecl;external clib name 'gai_cancel';
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+Type  
+  THostEnt = hostent;
+  TServEnt = servent;
+  TProtoEnt = protoent;
+  TAddressInfo = addrinfo;
+

+ 18 - 0
packages/base/libc/netherh.inc

@@ -0,0 +1,18 @@
+
+const
+   _NETINET_ETHER_H = 1;
+
+function ether_ntoa(__addr:Pether_addr):Pchar;cdecl;external clib name 'ether_ntoa';
+function ether_ntoa_r(__addr:Pether_addr; __buf:Pchar):Pchar;cdecl;external clib name 'ether_ntoa_r';
+function ether_aton(__asc:Pchar):Pether_addr;cdecl;external clib name 'ether_aton';
+function ether_aton_r(__asc:Pchar; __addr:Pether_addr):Pether_addr;cdecl;external clib name 'ether_aton_r';
+function ether_ntohost(__hostname:Pchar; __addr:Pether_addr):longint;cdecl;external clib name 'ether_ntohost';
+function ether_hostton(__hostname:Pchar; __addr:Pether_addr):longint;cdecl;external clib name 'ether_hostton';
+function ether_line(__line:Pchar; __addr:Pether_addr; __hostname:Pchar):longint;cdecl;external clib name 'ether_line';
+
+
+{ ---------------------------------------------------------------------
+    Borland compatibility types
+  ---------------------------------------------------------------------}
+
+// Type  

Some files were not shown because too many files changed in this diff