summaryrefslogtreecommitdiff
path: root/packages/fcl-net
diff options
context:
space:
mode:
authorpeter <peter@3ad0048d-3df7-0310-abae-a5850022a9f2>2007-10-28 21:26:51 +0000
committerpeter <peter@3ad0048d-3df7-0310-abae-a5850022a9f2>2007-10-28 21:26:51 +0000
commit9a1c84e2531f3f115297d745fa9f03b322e5e881 (patch)
treeb6e0165c05e881ee4bc595ed417dd9a315e0d15c /packages/fcl-net
parent77722a04c495e3d5b8200c8641f56d364009f1f1 (diff)
downloadfpc-9a1c84e2531f3f115297d745fa9f03b322e5e881.tar.gz
* created fcl-async and fcl-process packages
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@8979 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/fcl-net')
-rw-r--r--packages/fcl-net/Makefile417
-rw-r--r--packages/fcl-net/Makefile.fpc16
-rw-r--r--packages/fcl-net/src/netware/resolve.inc1
-rw-r--r--packages/fcl-net/src/netwlibc/resolve.inc5
-rw-r--r--packages/fcl-net/src/os2/resolve.inc94
-rw-r--r--packages/fcl-net/src/resolve.pp825
-rw-r--r--packages/fcl-net/src/ssockets.pp597
-rw-r--r--packages/fcl-net/src/unix/resolve.inc86
-rw-r--r--packages/fcl-net/src/win/resolve.inc51
-rw-r--r--packages/fcl-net/src/wince/resolve.inc51
-rw-r--r--packages/fcl-net/tests/Makefile (renamed from packages/fcl-net/src/tests/Makefile)0
-rw-r--r--packages/fcl-net/tests/Makefile.fpc (renamed from packages/fcl-net/src/tests/Makefile.fpc)0
-rw-r--r--packages/fcl-net/tests/readme.txt (renamed from packages/fcl-net/src/tests/readme.txt)0
-rw-r--r--packages/fcl-net/tests/rpccli.pp (renamed from packages/fcl-net/src/tests/rpccli.pp)0
-rw-r--r--packages/fcl-net/tests/rpcserv.pp (renamed from packages/fcl-net/src/tests/rpcserv.pp)0
-rw-r--r--packages/fcl-net/tests/svrclass.pp (renamed from packages/fcl-net/src/tests/svrclass.pp)0
-rw-r--r--packages/fcl-net/tests/svrclass_xmlrpc.pp (renamed from packages/fcl-net/src/tests/svrclass_xmlrpc.pp)0
17 files changed, 1828 insertions, 315 deletions
diff --git a/packages/fcl-net/Makefile b/packages/fcl-net/Makefile
index ce4dcfd1e2..8b1489acb5 100644
--- a/packages/fcl-net/Makefile
+++ b/packages/fcl-net/Makefile
@@ -1,11 +1,12 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2007/08/22]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2007/10/25]
#
default: all
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx
LIMIT83fs = go32v2 os2 emx watcom
+OSNeedsComspecToRunBatch = go32v2 watcom
FORCE:
.PHONY: FORCE
override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
@@ -56,6 +57,11 @@ else
SRCBATCHEXT=.bat
endif
endif
+ifdef COMSPEC
+ifneq ($(findstring $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),)
+RUNBATCH=$(COMSPEC) /C
+endif
+endif
ifdef inUnix
PATHSEP=/
else
@@ -102,7 +108,7 @@ ifndef FPC
FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
ifneq ($(FPCPROG),)
FPCPROG:=$(firstword $(FPCPROG))
-FPC:=$(shell $(FPCPROG) -PB)
+FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB)
ifneq ($(findstring Error,$(FPC)),)
override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
endif
@@ -296,160 +302,160 @@ ifeq ($(FULL_TARGET),powerpc64-darwin)
override TARGET_PROGRAMS+=mkxmlrpc
endif
ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=servlets fpsock httpbase httpclient httpsvlt xmlrpc
+override TARGET_UNITS+=servlets resolve ssockets fpsock httpbase httpclient httpsvlt xmlrpc
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=servlets fpsock httpbase httpclient httpsvlt xmlrpc
+override TARGET_UNITS+=servlets resolve ssockets fpsock httpbase httpclient httpsvlt xmlrpc
endif
ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=servlets fpsock httpbase httpclient httpsvlt xmlrpc
+override TARGET_UNITS+=servlets resolve ssockets fpsock httpbase httpclient httpsvlt xmlrpc
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=servlets fpsock httpbase httpclient httpsvlt xmlrpc
+override TARGET_UNITS+=servlets resolve ssockets fpsock httpbase httpclient httpsvlt xmlrpc
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=servlets fpsock httpbase httpclient httpsvlt xmlrpc
+override TARGET_UNITS+=servlets resolve ssockets fpsock httpbase httpclient httpsvlt xmlrpc
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=servlets fpsock httpbase httpclient httpsvlt xmlrpc
+override TARGET_UNITS+=servlets resolve ssockets fpsock httpbase httpclient httpsvlt xmlrpc
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=servlets fpsock httpbase httpclient httpsvlt xmlrpc
+override TARGET_UNITS+=servlets resolve ssockets fpsock httpbase httpclient httpsvlt xmlrpc
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=servlets fpsock httpbase httpclient httpsvlt xmlrpc
+override TARGET_UNITS+=servlets resolve ssockets fpsock httpbase httpclient httpsvlt xmlrpc
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=servlets fpsock httpbase httpclient httpsvlt xmlrpc
+override TARGET_UNITS+=servlets resolve ssockets fpsock httpbase httpclient httpsvlt xmlrpc
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=servlets fpsock httpbase httpclient httpsvlt xmlrpc
+override TARGET_UNITS+=servlets resolve ssockets fpsock httpbase httpclient httpsvlt xmlrpc
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=servlets fpsock httpbase httpclient httpsvlt xmlrpc
+override TARGET_UNITS+=servlets resolve ssockets fpsock httpbase httpclient httpsvlt xmlrpc
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=servlets fpsock httpbase httpclient httpsvlt xmlrpc
+override TARGET_UNITS+=servlets resolve ssockets fpsock httpbase httpclient httpsvlt xmlrpc
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=servlets fpsock httpbase httpclient httpsvlt xmlrpc
+override TARGET_UNITS+=servlets resolve ssockets fpsock httpbase httpclient httpsvlt xmlrpc
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=servlets fpsock httpbase httpclient httpsvlt xmlrpc
+override TARGET_UNITS+=servlets resolve ssockets fpsock httpbase httpclient httpsvlt xmlrpc
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=servlets fpsock httpbase httpclient httpsvlt xmlrpc
+override TARGET_UNITS+=servlets resolve ssockets fpsock httpbase httpclient httpsvlt xmlrpc
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=servlets fpsock httpbase httpclient httpsvlt xmlrpc
+override TARGET_UNITS+=servlets resolve ssockets fpsock httpbase httpclient httpsvlt xmlrpc
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=servlets
+override TARGET_UNITS+=servlets resolve ssockets
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_RSTS+=fpsock httpsvlt mkxmlrpc
@@ -1572,19 +1578,14 @@ override REQUIRE_PACKAGES=rtl netdb fcl-base fcl-xml fcl-passrc
ifeq ($(FULL_TARGET),i386-linux)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_LIBASYNC=1
endif
ifeq ($(FULL_TARGET),i386-go32v2)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1592,8 +1593,6 @@ endif
ifeq ($(FULL_TARGET),i386-win32)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_WINUNITS=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
@@ -1602,8 +1601,6 @@ endif
ifeq ($(FULL_TARGET),i386-os2)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1611,21 +1608,14 @@ endif
ifeq ($(FULL_TARGET),i386-freebsd)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_LIBASYNC=1
endif
ifeq ($(FULL_TARGET),i386-beos)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1633,29 +1623,22 @@ endif
ifeq ($(FULL_TARGET),i386-netbsd)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_LIBASYNC=1
endif
ifeq ($(FULL_TARGET),i386-solaris)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_LIBASYNC=1
endif
ifeq ($(FULL_TARGET),i386-qnx)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1663,8 +1646,6 @@ endif
ifeq ($(FULL_TARGET),i386-netware)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1672,18 +1653,14 @@ endif
ifeq ($(FULL_TARGET),i386-openbsd)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_LIBASYNC=1
endif
ifeq ($(FULL_TARGET),i386-wdosx)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1691,19 +1668,14 @@ endif
ifeq ($(FULL_TARGET),i386-darwin)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_LIBASYNC=1
endif
ifeq ($(FULL_TARGET),i386-emx)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1711,8 +1683,6 @@ endif
ifeq ($(FULL_TARGET),i386-watcom)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1720,8 +1690,6 @@ endif
ifeq ($(FULL_TARGET),i386-netwlibc)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1729,8 +1697,6 @@ endif
ifeq ($(FULL_TARGET),i386-wince)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1738,8 +1704,6 @@ endif
ifeq ($(FULL_TARGET),i386-embedded)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1747,8 +1711,6 @@ endif
ifeq ($(FULL_TARGET),i386-symbian)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1756,40 +1718,30 @@ endif
ifeq ($(FULL_TARGET),m68k-linux)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_LIBASYNC=1
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_LIBASYNC=1
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_LIBASYNC=1
endif
ifeq ($(FULL_TARGET),m68k-amiga)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1797,8 +1749,6 @@ endif
ifeq ($(FULL_TARGET),m68k-atari)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1806,18 +1756,14 @@ endif
ifeq ($(FULL_TARGET),m68k-openbsd)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_LIBASYNC=1
endif
ifeq ($(FULL_TARGET),m68k-palmos)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1825,8 +1771,6 @@ endif
ifeq ($(FULL_TARGET),m68k-embedded)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1834,29 +1778,22 @@ endif
ifeq ($(FULL_TARGET),powerpc-linux)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_LIBASYNC=1
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_LIBASYNC=1
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1864,8 +1801,6 @@ endif
ifeq ($(FULL_TARGET),powerpc-macos)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1873,19 +1808,14 @@ endif
ifeq ($(FULL_TARGET),powerpc-darwin)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_LIBASYNC=1
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1893,8 +1823,6 @@ endif
ifeq ($(FULL_TARGET),powerpc-embedded)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1902,40 +1830,30 @@ endif
ifeq ($(FULL_TARGET),sparc-linux)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_LIBASYNC=1
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_LIBASYNC=1
endif
ifeq ($(FULL_TARGET),sparc-solaris)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_LIBASYNC=1
endif
ifeq ($(FULL_TARGET),sparc-embedded)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1943,30 +1861,22 @@ endif
ifeq ($(FULL_TARGET),x86_64-linux)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_LIBASYNC=1
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_LIBASYNC=1
endif
ifeq ($(FULL_TARGET),x86_64-win64)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_WINUNITS=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
@@ -1975,8 +1885,6 @@ endif
ifeq ($(FULL_TARGET),x86_64-embedded)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -1984,19 +1892,14 @@ endif
ifeq ($(FULL_TARGET),arm-linux)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_LIBASYNC=1
endif
ifeq ($(FULL_TARGET),arm-palmos)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -2004,8 +1907,6 @@ endif
ifeq ($(FULL_TARGET),arm-wince)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -2013,8 +1914,6 @@ endif
ifeq ($(FULL_TARGET),arm-gba)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -2022,8 +1921,6 @@ endif
ifeq ($(FULL_TARGET),arm-nds)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -2031,8 +1928,6 @@ endif
ifeq ($(FULL_TARGET),arm-embedded)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -2040,8 +1935,6 @@ endif
ifeq ($(FULL_TARGET),arm-symbian)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -2049,30 +1942,22 @@ endif
ifeq ($(FULL_TARGET),powerpc64-linux)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_LIBASYNC=1
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
+REQUIRE_PACKAGES_LIBASYNC=1
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-PASSRC=1
@@ -2129,110 +2014,6 @@ ifdef UNITDIR_NETDB
override COMPILER_UNITDIR+=$(UNITDIR_NETDB)
endif
endif
-ifdef REQUIRE_PACKAGES_HASH
-PACKAGEDIR_HASH:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /hash/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_HASH),)
-ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)),)
-UNITDIR_HASH=$(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)
-else
-UNITDIR_HASH=$(PACKAGEDIR_HASH)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_HASH)/$(FPCMADE):
- $(MAKE) -C $(PACKAGEDIR_HASH) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_HASH)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_HASH=
-UNITDIR_HASH:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /hash/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_HASH),)
-UNITDIR_HASH:=$(firstword $(UNITDIR_HASH))
-else
-UNITDIR_HASH=
-endif
-endif
-ifdef UNITDIR_HASH
-override COMPILER_UNITDIR+=$(UNITDIR_HASH)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PASZLIB
-PACKAGEDIR_PASZLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PASZLIB),)
-ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)),)
-UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PASZLIB)/$(FPCMADE):
- $(MAKE) -C $(PACKAGEDIR_PASZLIB) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PASZLIB)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PASZLIB=
-UNITDIR_PASZLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PASZLIB),)
-UNITDIR_PASZLIB:=$(firstword $(UNITDIR_PASZLIB))
-else
-UNITDIR_PASZLIB=
-endif
-endif
-ifdef UNITDIR_PASZLIB
-override COMPILER_UNITDIR+=$(UNITDIR_PASZLIB)
-endif
-endif
-ifdef REQUIRE_PACKAGES_LIBASYNC
-PACKAGEDIR_LIBASYNC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libasync/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_LIBASYNC),)
-ifneq ($(wildcard $(PACKAGEDIR_LIBASYNC)/units/$(TARGETSUFFIX)),)
-UNITDIR_LIBASYNC=$(PACKAGEDIR_LIBASYNC)/units/$(TARGETSUFFIX)
-else
-UNITDIR_LIBASYNC=$(PACKAGEDIR_LIBASYNC)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_LIBASYNC)/$(FPCMADE):
- $(MAKE) -C $(PACKAGEDIR_LIBASYNC) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBASYNC)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_LIBASYNC=
-UNITDIR_LIBASYNC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libasync/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_LIBASYNC),)
-UNITDIR_LIBASYNC:=$(firstword $(UNITDIR_LIBASYNC))
-else
-UNITDIR_LIBASYNC=
-endif
-endif
-ifdef UNITDIR_LIBASYNC
-override COMPILER_UNITDIR+=$(UNITDIR_LIBASYNC)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PTHREADS
-PACKAGEDIR_PTHREADS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /pthreads/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PTHREADS),)
-ifneq ($(wildcard $(PACKAGEDIR_PTHREADS)/units/$(TARGETSUFFIX)),)
-UNITDIR_PTHREADS=$(PACKAGEDIR_PTHREADS)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PTHREADS=$(PACKAGEDIR_PTHREADS)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PTHREADS)/$(FPCMADE):
- $(MAKE) -C $(PACKAGEDIR_PTHREADS) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PTHREADS)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PTHREADS=
-UNITDIR_PTHREADS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /pthreads/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PTHREADS),)
-UNITDIR_PTHREADS:=$(firstword $(UNITDIR_PTHREADS))
-else
-UNITDIR_PTHREADS=
-endif
-endif
-ifdef UNITDIR_PTHREADS
-override COMPILER_UNITDIR+=$(UNITDIR_PTHREADS)
-endif
-endif
ifdef REQUIRE_PACKAGES_FCL-BASE
PACKAGEDIR_FCL-BASE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-base/Makefile.fpc,$(PACKAGESDIR))))))
ifneq ($(PACKAGEDIR_FCL-BASE),)
@@ -2311,6 +2092,32 @@ ifdef UNITDIR_FCL-PASSRC
override COMPILER_UNITDIR+=$(UNITDIR_FCL-PASSRC)
endif
endif
+ifdef REQUIRE_PACKAGES_LIBASYNC
+PACKAGEDIR_LIBASYNC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libasync/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_LIBASYNC),)
+ifneq ($(wildcard $(PACKAGEDIR_LIBASYNC)/units/$(TARGETSUFFIX)),)
+UNITDIR_LIBASYNC=$(PACKAGEDIR_LIBASYNC)/units/$(TARGETSUFFIX)
+else
+UNITDIR_LIBASYNC=$(PACKAGEDIR_LIBASYNC)
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_LIBASYNC)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_LIBASYNC) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBASYNC)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_LIBASYNC=
+UNITDIR_LIBASYNC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libasync/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_LIBASYNC),)
+UNITDIR_LIBASYNC:=$(firstword $(UNITDIR_LIBASYNC))
+else
+UNITDIR_LIBASYNC=
+endif
+endif
+ifdef UNITDIR_LIBASYNC
+override COMPILER_UNITDIR+=$(UNITDIR_LIBASYNC)
+endif
+endif
ifdef REQUIRE_PACKAGES_WINUNITS
PACKAGEDIR_WINUNITS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /winunits/Makefile.fpc,$(PACKAGESDIR))))))
ifneq ($(PACKAGEDIR_WINUNITS),)
@@ -2351,7 +2158,7 @@ override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
endif
ifndef CROSSBOOTSTRAP
ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-XP$(BINUTILSPREFIX)
+override FPCOPT+=-XP$(BINUTILSPREFIX)
endif
ifneq ($(BINUTILSPREFIX),)
override FPCOPT+=-Xr$(RLINKPATH)
@@ -2483,9 +2290,13 @@ ifeq (,$(findstring -s ,$(COMPILER)))
EXECPPAS=
else
ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+ifdef RUNBATCH
+EXECPPAS:=@$(RUNBATCH) $(PPAS)
+else
EXECPPAS:=@$(PPAS)
endif
endif
+endif
.PHONY: fpc_units
ifneq ($(TARGET_UNITS),)
override ALLTARGET+=fpc_units
@@ -2727,8 +2538,12 @@ endif
ifdef inUnix
/bin/sh $(ZIPWRAPPER)
else
+ifdef RUNBATCH
+ $(RUNBATCH) (ZIPWRAPPER)
+else
$(ZIPWRAPPER)
endif
+endif
$(DEL) $(ZIPWRAPPER)
else
$(ZIPCMD_CDPACK) ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE)
diff --git a/packages/fcl-net/Makefile.fpc b/packages/fcl-net/Makefile.fpc
index f37c2ed4c0..07da812e7e 100644
--- a/packages/fcl-net/Makefile.fpc
+++ b/packages/fcl-net/Makefile.fpc
@@ -7,7 +7,7 @@ name=fcl-net
version=2.0.0
[target]
-units=servlets
+units=servlets resolve ssockets
units_linux=fpsock httpbase httpclient httpsvlt xmlrpc
units_freebsd=fpsock httpbase httpclient httpsvlt xmlrpc
units_netbsd=fpsock httpbase httpclient httpsvlt xmlrpc
@@ -23,21 +23,9 @@ rsts_freebsd=fpsock httpsvlt mkxmlrpc
rsts_darwin=fpsock httpsvlt mkxmlrpc
rsts_netbsd=fpsock httpsvlt mkxmlrpc
rsts_openbsd=fpsock httpsvlt mkxmlrpc
-#exampledirs_linux=tests
-#exampledirs_freebsd=tests
-#exampledirs_darwin=tests
-#exampledirs_netbsd=tests
-#exampledirs_openbsd=tests
[require]
-packages=netdb fcl-base fcl-xml fcl-passrc
-
-packages_linux=libasync
-packages_freebsd=libasync
-packages_darwin=libasync
-packages_solaris=libasync
-packages_netbsd=libasync
-packages_openbsd=libasync
+packages=netdb fcl-base fcl-xml fcl-passrc fcl-async
[compiler]
options=-S2h
diff --git a/packages/fcl-net/src/netware/resolve.inc b/packages/fcl-net/src/netware/resolve.inc
new file mode 100644
index 0000000000..29d6c092a2
--- /dev/null
+++ b/packages/fcl-net/src/netware/resolve.inc
@@ -0,0 +1 @@
+{$include ../win/resolve.inc}
diff --git a/packages/fcl-net/src/netwlibc/resolve.inc b/packages/fcl-net/src/netwlibc/resolve.inc
new file mode 100644
index 0000000000..1992930637
--- /dev/null
+++ b/packages/fcl-net/src/netwlibc/resolve.inc
@@ -0,0 +1,5 @@
+{netware has winsock like win32}
+{use win32 implementation based on winsock}
+{$include ../win/resolve.inc}
+
+
diff --git a/packages/fcl-net/src/os2/resolve.inc b/packages/fcl-net/src/os2/resolve.inc
new file mode 100644
index 0000000000..830d680038
--- /dev/null
+++ b/packages/fcl-net/src/os2/resolve.inc
@@ -0,0 +1,94 @@
+{
+ This file is part of the Free Pascal run time library.
+ Copyright (c) 2005 Soren Ager
+
+ Implementation of TCP/IP name resolution for OS/2.
+
+ See the file COPYING.FPC, included in this distribution,
+ for details about the copyright.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+const
+ { Net type }
+ socklib = 'TCP32DLL';
+ AF_INET = 2;
+
+ { Error constants. Returned by LastError method of THost, TNet}
+
+ NETDB_INTERNAL= -1; { see errno }
+ NETDB_SUCCESS = 0; { no problem }
+ HOST_NOT_FOUND= 1; { Authoritative Answer Host not found }
+ TRY_AGAIN = 2; { Non-Authoritive Host not found, or SERVERFAIL }
+ NO_RECOVERY = 3; { Non recoverable errors, FORMERR, REFUSED, NOTIMP }
+ NO_DATA = 4; { Valid name, no data record of requested type }
+ NO_ADDRESS = NO_DATA; { no address, look for MX record }
+
+
+Type
+
+ { THostEnt Object }
+ THostEnt = record
+ H_Name : pchar; { Official name }
+ H_Aliases : ppchar; { Null-terminated list of aliases}
+ H_Addrtype : longint; { Host address type }
+ H_length : longint; { Length of address }
+ H_Addr : ppchar; { null-terminated list of adresses }
+ end;
+ PHostEntry = ^THostEnt;
+
+ { TNetEnt object }
+ TNetEnt = record
+ N_Name : pchar; { Official name }
+ N_Aliases : ppchar; { Nill-terminated alias list }
+ N_AddrType : longint; { Net address type }
+ N_net : Cardinal; { Network number }
+ end;
+ PNetEntry = ^TNetEnt;
+
+ TServEnt = record
+ s_name : pchar; { Service name }
+ s_aliases : ppchar; { Null-terminated alias list }
+ s_port : longint; { Port number }
+ s_proto : pchar; { Protocol to use }
+ end;
+ PServEntry = ^TServEnt;
+
+
+function gethostent : PHostEntry; cdecl; external socklib index 30;
+procedure sethostent (stayopen : longint); cdecl; external socklib index 28;
+procedure endhostent; cdecl; external socklib index 29;
+
+function getnetent : PNetEntry; cdecl; external socklib index 17;
+procedure setnetent ( Stayopen : Longint); cdecl; external socklib index 15;
+procedure endnetent; cdecl; external socklib index 16;
+
+function getservent : PServEntry; cdecl; external socklib index 27;
+procedure setservent (StayOpen : longint); cdecl; external socklib index 25;
+procedure endservent; cdecl; external socklib index 26;
+
+function getnetbyaddr ( Net : Longint; nettype : Longint) : PNetEntry; cdecl; external socklib index 14;
+function gethostbyname ( Name : Pchar) : PHostEntry; cdecl; external socklib index 11;
+function gethostbyaddr ( Addr : PChar; Len : Longint; HType : Longint) : PHostentry ; cdecl; external socklib index 12;
+function getnetbyname ( Name : pchar) : PNetEntry; cdecl; external socklib index 13;
+function getservbyname (name : pchar ; protocol : pchar) : PServEntry; cdecl; external socklib index 24;
+function getservbyport (port : longint; protocol : pchar) : PServEntry; cdecl; external socklib index 23;
+
+function GetDNSError : LongInt;
+begin
+ GetDNSError:=0; //!!! fpgetCerrno;
+end;
+
+Function InitResolve : Boolean;
+begin
+ Result:=True;
+end;
+
+Function FinalResolve : Boolean;
+begin
+ Result:=True;
+end;
diff --git a/packages/fcl-net/src/resolve.pp b/packages/fcl-net/src/resolve.pp
new file mode 100644
index 0000000000..e588f62ae9
--- /dev/null
+++ b/packages/fcl-net/src/resolve.pp
@@ -0,0 +1,825 @@
+{$MODE OBJFPC}
+{$H+}
+Unit resolve;
+
+{$ifndef win32}
+// Here till BSD supports the netbsd unit.
+// MvdV: NetBSD unit? Where?
+{$ifdef Unix}
+// Undefine this to use the C library resolve routines.
+// Don't use under win32, netdb does not work on Win32 (yet) !!
+{$define usenetdb}
+{$endif Unix}
+{$endif}
+{ --------------------------------------------------------------------
+ Unit for internet domain calls.
+ Copyright (C) 2003 Michael Van Canneyt
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 1, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ------------------------------------------------------------------- }
+
+interface
+
+uses
+ Sockets,Classes,UriParser;
+
+Type
+ THostAddr = in_addr;
+ PHostAddr = ^THostAddr;
+ TNetAddr = in_addr;
+ PNetAddr = ^TNetAddr;
+
+Type
+
+{ ---------------------------------------------------------------------
+ TResolver
+ ---------------------------------------------------------------------}
+
+ TResolver = Class (TComponent)
+ Private
+ FName : String;
+ FAliases : TStringList;
+ FRaiseOnError : Boolean;
+ FLastError: Integer;
+ Function GetAlias(Index : Integer) : STring;
+ Function GetAliasCount : Integer;
+ Function GetAliasSorted : Boolean;
+ Procedure SetAliasSorted (Value : Boolean);
+ Protected
+ Procedure CheckOperation(Msg : String);
+ Function NameLookup(Const S : String) : Boolean; virtual;
+ Procedure SaveAliases(P : PPChar);
+ Public
+ Constructor Create(AOwner : TComponent); override;
+ Destructor Destroy; override;
+ Procedure ClearData; virtual;
+ Property ResolvedName : String Read FName;
+ Property Aliases [Index : integer ] : string Read GetAlias;
+ Property AliasCount : Integer read GetAliasCount;
+ Property SortAliases : Boolean Read GetAliasSorted Write SetAliasSorted;
+ Property RaiseOnError : Boolean Read FRaiseOnError Write FRAiseOnError;
+ Property LastError : Integer Read FlastError;
+ end;
+
+{ ---------------------------------------------------------------------
+ THostResolver
+ ---------------------------------------------------------------------}
+
+ THostResolver = Class(TResolver)
+ Private
+ FHostAddress : THostAddr;
+ FAddressCount : Integer;
+ FAddresses : PHostAddr;
+ Function GetAddress (Index : Integer) : THostAddr;
+ Function GetNetAddress (Index : Integer) : THostAddr;
+ Function GetNetHostAddress : THostAddr;
+ Function GetAsString : String;
+ Procedure SaveHostEntry (Entry : Pointer);
+ Public
+ Procedure ClearData; Override;
+ Function NameLookup(Const S : String) : Boolean; override;
+ Function AddressLookup(Const S : String) : Boolean; virtual;
+ Function AddressLookup(Const Address : THostAddr) : Boolean; virtual;
+ Property HostAddress : THostAddr Read FHostAddress;
+ Property NetHostAddress : THostAddr Read GetNetHostAddress;
+ Property AddressAsString : String Read GetAsString;
+ Property AddressCount : Integer Read FAddressCount ;
+ Property Addresses [Index : Integer] : ThostAddr Read GetAddress;
+ Property NetAddresses [Index : Integer] : ThostAddr Read GetNetAddress;
+ end;
+
+{ ---------------------------------------------------------------------
+ TNetResolver
+ ---------------------------------------------------------------------}
+
+ TNetResolver = Class(TResolver)
+ Private
+ FNetAddress : TNetAddr;
+ FAddrType : Integer;
+ Function GetAsString : String;
+ Procedure SaveNetEntry(Entry : Pointer);
+ Function GetNetAddress : TNetAddr;
+ Public
+ Procedure ClearData; override;
+ Function NameLookup(Const S : String) : boolean; override;
+ Function AddressLookup(Const S : String) : Boolean; virtual;
+ Function AddressLookup(Const Address : TNetAddr) : Boolean; virtual;
+ Property NetAddress : TNetAddr Read FNetAddress;
+ Property NetNetAddress : TNetAddr Read GetNetAddress;
+ Property AddressAsString : String Read GetAsString;
+ Property AddressType : Integer Read FAddrType;
+ end;
+
+{ ---------------------------------------------------------------------
+ TServiceResolver
+ ---------------------------------------------------------------------}
+
+ TServiceResolver = Class(TResolver)
+ private
+ FProtocol : String;
+ FPort : Integer;
+ Procedure SaveServiceEntry(Entry : Pointer);
+ Function GetNetPort : Integer ;
+ public
+ Procedure ClearData; override;
+ Function NameLookup (Const S : String) : boolean; override;
+ Function NameLookup (Const S,Proto : String) : Boolean;
+ Function PortLookup (APort : Longint; Proto: string) : Boolean;
+ Property Protocol : String Read FProtocol;
+ Property Port : Integer Read FPort;
+ Property NetPort : Integer Read GetNetPort;
+ end;
+
+ TURIParser = Class(TComponent)
+ Private
+ FActive : Boolean;
+ FProtocol: String;
+ FUsername: String;
+ FPassword: String;
+ FHost: String;
+ FPort: Word;
+ FPath: String;
+ FDocument: String;
+ FParams: String;
+ FBookmark: String;
+ FURI : String;
+ Protected
+ Procedure SetElement (Index : Integer; Value : String);Virtual;
+ Function GetElement(Index : Integer) : String;
+ Procedure SetPort(Value : Word);
+ Procedure SetURI(Value : String);
+ Public
+ Procedure Clear;
+ Procedure ParseUri(AURI : String);
+ Function ComposeURI : String;
+ Published
+ Property Port: Word Read FPort Write SetPort;
+ Property Protocol: String Index 0 Read GetElement Write SetElement;
+ Property Username: String Index 1 Read GetElement Write SetElement;
+ Property Password: String Index 2 Read GetElement Write SetElement;
+ Property Host: String Index 3 Read GetElement Write SetElement;
+ Property Path: String index 4 Read GetElement Write SetElement;
+ Property Document: String index 5 read GetElement Write SetElement;
+ Property Params: String Index 6 read GetElement Write SetElement;
+ Property Bookmark: String Index 7 Read GetElement Write SetElement;
+ Property URI : String Read FURI write SetURI;
+ Property Active : Boolean Read FActive Write FActive;
+ end;
+
+
+Resourcestring
+ SErrHostByName = 'Host by name';
+ SErrHostByAddr = 'Host by address';
+ SErrNetByName = 'Net by name';
+ SErrServByName = 'Service by name';
+ SErrServByPort = 'Service by port';
+
+Implementation
+
+{ ---------------------------------------------------------------------
+ Include system dependent stuff.
+ ---------------------------------------------------------------------}
+
+{$ifdef usenetdb}
+uses netdb;
+{$else}
+{$i resolve.inc}
+{$endif}
+
+{ ---------------------------------------------------------------------
+ TResolver
+ ---------------------------------------------------------------------}
+
+Constructor TResolver.Create(AOwner : TComponent);
+
+begin
+ Inherited;
+ FAliases:=TstringList.Create;
+end;
+
+Destructor TResolver.Destroy;
+
+begin
+ ClearData;
+ FAliases.Free;
+end;
+
+Procedure TResolver.ClearData;
+
+begin
+ FName:='';
+ FAliases.Clear;
+end;
+
+Function TResolver.GetAlias(Index : Integer) : STring;
+
+begin
+ Result:=FAliases[Index];
+end;
+
+Function TResolver.GetAliasCount : Integer;
+
+begin
+ Result:=FAliases.Count;
+end;
+
+Function TResolver.GetAliasSorted : Boolean;
+
+begin
+ Result:=FAliases.Sorted;
+end;
+
+Procedure TResolver.SetAliasSorted (Value : Boolean);
+
+begin
+ FAliases.Sorted:=Value;
+end;
+
+Procedure TResolver.CheckOperation(Msg : String);
+
+begin
+end;
+
+Function TResolver.NameLookup(Const S : String) : Boolean;
+
+begin
+ ClearData;
+ FName:=S;
+ Result:=True;
+end;
+
+Procedure TResolver.SaveAliases(P : PPChar);
+
+Var
+ I : Integer;
+
+begin
+ If (P<>Nil) then
+ begin
+ I:=0;
+ While P[I]<>Nil do
+ begin
+ FAliases.Add(StrPas(P[I]));
+ Inc(I);
+ end;
+ end;
+end;
+
+
+{ ---------------------------------------------------------------------
+ THostResolver
+ ---------------------------------------------------------------------}
+
+Function THostResolver.GetAddress (Index : Integer) : THostAddr;
+
+begin
+ If (Index>=0) and (Index<FAddressCount) then
+ Result:=FAddresses[Index];
+end;
+
+Function THostResolver.GetAsString : String;
+
+begin
+ Result:=HostAddrToStr(FHostAddress);
+end;
+
+Procedure THostResolver.ClearData;
+
+begin
+ Inherited;
+ FHostAddress:=NoAddress;
+ If FAddressCount<>0 Then
+ FreeMem(FAddresses);
+ FAddressCount:=0;
+ FAddresses:=Nil;
+end;
+
+Function THostResolver.AddressLookup(Const S : String) : Boolean;
+
+begin
+ Result:=AddressLookup(StrToHostAddr(S));
+end;
+
+{$ifdef usenetdb}
+Function THostResolver.NameLookup (Const S : String) : Boolean;
+
+Var
+ H : THostEntry;
+
+begin
+ Result:=Inherited NameLookup(S);
+ If Result then
+ begin
+ Result:=GetHostByName(S,H);
+ if not Result then
+ Result:=ResolveHostByName(S,H);
+ If Result then
+ SaveHostEntry(@H);
+ end;
+end;
+
+Function THostResolver.AddressLookup (Const Address: THostAddr) : Boolean;
+
+Var
+ H : THostEntry;
+
+begin
+ ClearData;
+ Result:=ResolveHostByAddr(Address,H);
+ If Result then
+ SaveHostEntry(@H);
+end;
+
+Procedure THostResolver.SaveHostEntry(Entry : Pointer);
+
+Var
+ PH : ^THostEntry;
+ I : Integer;
+
+begin
+ PH:=ENtry;
+ FName:=PH^.Name;
+ FHostAddress:=NetToHost(PH^.Addr);
+ FAddressCount:=1;
+ GetMem(FAddresses,SizeOf(THostAddr));
+ FAddresses[0]:=NetToHost(PH^.Addr);
+ FAliases.CommaText:=PH^.Aliases;
+end;
+
+{$else}
+
+Function THostResolver.NameLookup (Const S : String) : Boolean;
+
+Var
+ FHostEntry : PHostEntry;
+
+begin
+ Result:=Inherited NameLookup(S);
+ If Result then
+ begin
+ FHostEntry:=GetHostByName(pchar(FName));
+ Result:=FHostEntry<>Nil;
+ If Result then
+ SaveHostEntry(FHostEntry)
+ else
+ begin
+ FLastError:=GetDNSError;
+ CheckOperation(SErrHostByName);
+ end;
+ end;
+end;
+
+Procedure THostResolver.SaveHostEntry(Entry : Pointer);
+
+Var
+ P : Pointer;
+ I,Count : Integer;
+
+begin
+ With PHostEntry(Entry)^ do
+ begin
+ FName:=StrPas(H_Name);
+ FAddressCount:=0;
+ While H_Addr[FAddressCount]<>Nil do
+ Inc(FAddressCount);
+ If FAddressCount>0 then
+ begin
+ GetMem(FAddresses,FAddressCount*SizeOf(THostAddr));
+ For I:=0 to FAddressCount-1 do
+ FAddresses[I]:=NetToHost(PHostAddr(H_Addr[I])^);
+ FHostAddress:=FAddresses[0];
+ end;
+ SaveAliases(H_Aliases);
+ end;
+end;
+
+Function THostResolver.AddressLookup (Const Address: THostAddr) : Boolean;
+
+Var
+ FHostEntry : PHostEntry;
+
+begin
+ ClearData;
+ FHostEntry:=GetHostByAddr(Pchar(@Address),SizeOf(Address),AF_INET);
+ Result:=FHostEntry<>Nil;
+ If Result then
+ SaveHostEntry(FHostEntry)
+ else
+ begin
+ FLastError:=GetDNSError;
+ CheckOperation(SErrHostByAddr);
+ end;
+end;
+{$endif}
+
+Function THostResolver.GetNetAddress (Index : Integer) : THostAddr;
+
+begin
+ Result:=HostToNet(Addresses[Index]);
+end;
+
+Function THostResolver.GetNetHostAddress : THostAddr;
+
+begin
+ Result:=HostToNet(FHostAddress);
+end;
+
+
+{ ---------------------------------------------------------------------
+ TNetResolver
+ ---------------------------------------------------------------------}
+
+{$ifdef usenetdb}
+Function TNetResolver.AddressLookup (Const Address: TNetAddr) : boolean;
+
+Var
+ N : TNetworkEntry;
+
+begin
+ ClearData;
+ Result:=GetNetworkByAddr(Address,N);
+ If Result then
+ SaveNetEntry(@N);
+end;
+
+Function TNetResolver.NameLookup (Const S : String) : Boolean;
+
+Var
+ N : TNetworkEntry;
+
+begin
+ Result:=Inherited NameLookup(S);
+ If Result then
+ begin
+ Result:=GetNetworkByName(S,N);
+ If Result then
+ SaveNetEntry(@N);
+ end;
+end;
+
+Procedure TNetResolver.SaveNetEntry(Entry : Pointer);
+
+Var
+ PN : ^TNetworkEntry;
+
+begin
+ PN:=ENtry;
+ FName:=PN^.Name;
+ FNetAddress:=NetToHost(PN^.Addr);
+ FAliases.CommaText:=PN^.Aliases;
+end;
+
+{$else}
+Function TNetResolver.NameLookup (Const S : String) : Boolean;
+
+Var
+ FNetEntry : PNetEntry;
+
+begin
+ Result:=Inherited NameLookup(S);
+ If Result then
+ begin
+ FNetEntry:=GetNetByName(pchar(S));
+ Result:=FNetEntry<>Nil;
+ If Result then
+ SaveNetEntry(FNetEntry)
+ else
+ begin
+ FLastError:=GetDNSError;
+ Checkoperation(SErrNetByName);
+ end;
+ end;
+end;
+
+Procedure TNetResolver.SaveNetEntry(Entry : Pointer);
+
+begin
+ With PNetEntry(Entry)^ do
+ begin
+ FName:=StrPas(N_Name);
+ FAddrType:=N_addrtype;
+ FNetAddress:=NetToHost(TNetAddr(N_net));
+ SaveAliases(N_Aliases);
+ end;
+end;
+
+Function TNetResolver.AddressLookup (Const Address: TNetAddr) : boolean;
+
+Var
+ FNetEntry : PNetEntry;
+
+begin
+ ClearData;
+{$ifndef win32}
+ FNetEntry:=GetNetByAddr(Longint(HostToNet(Address)),AF_INET);
+{$else}
+ FNetEntry:=Nil;
+{$endif}
+ Result:=FNetEntry<>Nil;
+ If Result then
+ SaveNetEntry(FNetEntry)
+ else
+ begin
+ FLastError:=GetDNSError;
+ CheckOperation(SErrNetByName);
+ end;
+end;
+
+{$endif}
+
+Function TNetResolver.AddressLookup(Const S : String) : Boolean;
+
+begin
+ Result:=AddressLookup(StrToNetAddr(S));
+end;
+
+
+Function TNetResolver.GetAsString : String;
+
+begin
+ Result:=HostAddrToStr(FNetAddress);
+end;
+
+Function TNetResolver.GetNetAddress : TNetAddr;
+
+begin
+ Result:=HostToNet(FNetAddress);
+end;
+
+
+Procedure TNetResolver.ClearData;
+
+begin
+ Inherited;
+ FNetAddress:=NoAddress;
+ FAddrType:=0;
+end;
+
+{ ---------------------------------------------------------------------
+ TServiceResolver
+ ---------------------------------------------------------------------}
+
+Function TServiceResolver.NameLookup (Const S : String) : Boolean;
+
+begin
+ Result:=NameLookup(S,'');
+end;
+
+{$ifdef usenetdb}
+
+Function TServiceResolver.NameLookup (Const S,Proto : String) : Boolean;
+
+Var
+ E : TServiceEntry;
+
+begin
+ ClearData;
+ Result:=GetServiceByName(S,Proto,E);
+ If Result then
+ SaveServiceEntry(@E);
+end;
+
+Function TServiceResolver.PortLookup (APort: Longint; Proto : String) : Boolean;
+
+Var
+ E : TServiceEntry;
+
+begin
+ ClearData;
+ Result:=GetServiceByPort(APort,Proto,E);
+ If Result then
+ SaveServiceEntry(@E);
+end;
+
+Procedure TServiceResolver.SaveServiceEntry(Entry : Pointer);
+
+Var
+ PE : ^TServiceEntry;
+
+begin
+ PE:=Entry;
+ FName:=PE^.Name;
+ FPort:=PE^.Port;
+ FProtocol:=PE^.Protocol;
+ FAliases.CommaText:=PE^.Aliases;
+end;
+
+{$else}
+
+Function TServiceResolver.NameLookup (Const S,Proto : String) : Boolean;
+
+Var
+ FServiceEntry : PServEntry;
+
+begin
+ ClearData;
+ FName:=S;
+ FProtocol:=Proto;
+ If (proto='') then
+ FServiceEntry:=GetServByName(pchar(S),Nil)
+ else
+ FServiceEntry:=GetServByName(pchar(S),PChar(FProtocol));
+ Result:=FServiceEntry<>Nil;
+ If Result then
+ SaveServiceEntry(FServiceEntry)
+ else
+ begin
+ FLastError:=GetDNSError;
+ CheckOperation(SErrServByName);
+ end;
+end;
+
+Function TServiceResolver.PortLookup (APort: Longint; Proto : String) : Boolean;
+
+Var
+ FServiceEntry : PServEntry;
+
+begin
+ ClearData;
+ APort:=ShortHostToNet(APort);
+ FProtoCol:=Proto;
+ If (Proto='') then
+ FServiceEntry:=GetServByPort(APort,Nil)
+ else
+ FServiceEntry:=GetServByPort(APort,pchar(Proto));
+ Result:=FServiceEntry<>Nil;
+ If Result then
+ SaveServiceEntry(FServiceEntry)
+ else
+ begin
+ FLastError:=GetDNSError;
+ CheckOperation(SErrServByPort);
+ end;
+end;
+
+Procedure TServiceResolver.SaveServiceEntry(Entry : Pointer);
+
+begin
+ With PServEntry(Entry)^ do
+ begin
+ FName:=strpas(s_name);
+ FPort:=ShortHostToNet(S_port);
+ FProtocol:=strpas(s_proto);
+ SaveAliases(S_aliases);
+ end;
+end;
+{$endif}
+
+Procedure TServiceResolver.ClearData;
+
+begin
+ Inherited;
+ FProtocol:='';
+ FPort:=0;
+end;
+
+Function TServiceResolver.GetNetPort : Integer;
+
+begin
+ Result:=ShortHostToNet(FPort);
+end;
+
+{ ---------------------------------------------------------------------
+ TURIParser
+ ---------------------------------------------------------------------}
+
+
+Procedure TURIParser.SetElement (Index : Integer; Value : String);
+
+begin
+ Case index of
+ 0 : FProtocol := Value;
+ 1 : FUsername := Value;
+ 2 : FPassword := Value;
+ 3 : FHost := Value;
+ 4 : FPath := Value;
+ 5 : FDocument := Value;
+ 6 : FParams := Value;
+ 7 : FBookmark := Value;
+ else
+ end;
+ If FActive and not (csLoading in ComponentState) then
+ FURI:=ComposeURI;
+end;
+
+Function TURIParser.GetElement(Index : Integer) : String;
+
+begin
+ Case Index of
+ 0 : Result := FProtocol;
+ 1 : Result := FUsername;
+ 2 : Result := FPassword;
+ 3 : Result := FHost ;
+ 4 : Result := FPath ;
+ 5 : Result := FDocument;
+ 6 : Result := FParams ;
+ 7 : Result := FBookmark;
+ else
+ Result:='';
+ end;
+end;
+
+Procedure TURIParser.SetPort(Value : Word);
+
+begin
+ FPort:=Value;
+ If FActive and not (csLoading in ComponentState) then
+ FURI:=ComposeURI;
+end;
+
+Procedure TURIParser.SetURI(Value : String);
+
+begin
+ If Active and not (csLoading in ComponentState) then
+ begin
+ Clear;
+ ParseUri(Value);
+ end;
+ FURI:=Value;
+end;
+
+Procedure TURIParser.Clear;
+
+begin
+ FProtocol :='';
+ FUsername :='';
+ FPassword :='';
+ FHost :='';
+ FPort :=0;
+ FPath :='';
+ FDocument :='';
+ FParams :='';
+ FBookmark :='';
+ FURI :='';
+end;
+
+Procedure TURIParser.ParseUri(AURI : String);
+
+Var
+ U : TURI;
+
+begin
+ U:=UriParser.ParseURI(AUri);
+ FProtocol := u.Protocol;
+ FUsername := u.Username;
+ FPassword := u.Password;
+ FHost := u.Host ;
+ FPort := u.Port ;
+ FPath := u.Path ;
+ FDocument := u.Document;
+ FParams := u.Params ;
+ FBookmark := u.Bookmark;
+end;
+
+
+Function TURIParser.ComposeURI : String;
+
+var
+ U : TURI;
+
+begin
+ U.Protocol := FProtocol;
+ U.Username := FUsername;
+ U.Password := FPassword;
+ U.Host := FHost ;
+ U.Port := FPort ;
+ U.Path := FPath ;
+ U.Document := FDocument;
+ U.Params := FParams ;
+ U.Bookmark := FBookmark;
+ Result:=EncodeUri(U);
+end;
+
+
+{$ifdef usenetdb}
+Procedure InitResolve;
+
+begin
+end;
+
+Procedure FinalResolve;
+
+begin
+end;
+{$endif}
+
+Initialization
+ InitResolve;
+
+Finalization
+ FinalResolve;
+
+end.
diff --git a/packages/fcl-net/src/ssockets.pp b/packages/fcl-net/src/ssockets.pp
new file mode 100644
index 0000000000..5ee0f729c7
--- /dev/null
+++ b/packages/fcl-net/src/ssockets.pp
@@ -0,0 +1,597 @@
+{
+ This file is part of the Free Component Library (FCL)
+ Copyright (c) 1999-2000 by the Free Pascal development team
+
+ See the file COPYING.FPC, included in this distribution,
+ for details about the copyright.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+{$MODE objfpc}
+
+unit ssockets;
+
+
+interface
+
+uses
+ SysUtils, Classes, sockets;
+
+type
+
+ TSocketErrorType = (
+ seHostNotFound,
+ seCreationFailed,
+ seBindFailed,
+ seListenFailed,
+ seConnectFailed,
+ seAcceptFailed,
+ seAcceptWouldBlock);
+
+ TSocketOption = (soDebug,soReuseAddr,soKeepAlive,soDontRoute,soBroadcast,
+ soOOBinline);
+ TSocketOptions = Set of TSocketOption;
+
+ ESocketError = class(Exception)
+ Code: TSocketErrorType;
+ constructor Create(ACode: TSocketErrorType; const MsgArgs: array of const);
+ end;
+
+ TSocketStream = class(THandleStream)
+ Private
+ FSocketOptions : TSocketOptions;
+ Procedure GetSockOptions;
+ Procedure SetSocketOptions(Value : TSocketOptions);
+ function GetLocalAddress: TSockAddr;
+ function GetRemoteAddress: TSockAddr;
+ Public
+ Constructor Create (AHandle : Longint);virtual;
+ destructor Destroy; override;
+ function Seek(Offset: Longint; Origin: Word): Longint; override;
+ Function Read (Var Buffer; Count : Longint) : longint; Override;
+ Function Write (Const Buffer; Count : Longint) :Longint; Override;
+ Property SocketOptions : TSocketOptions Read FSocketOptions
+ Write SetSocketOptions;
+ property LocalAddress: TSockAddr read GetLocalAddress;
+ property RemoteAddress: TSockAddr read GetRemoteAddress;
+ end;
+
+ TConnectEvent = Procedure (Sender : TObject; Data : TSocketStream) Of Object;
+ TConnectQuery = Procedure (Sender : TObject; ASocket : Longint; Var Allow : Boolean) of Object;
+
+ { TSocketServer }
+
+ TSocketServer = Class(TObject)
+ Private
+ FOnIdle : TNotifyEvent;
+ FNonBlocking : Boolean;
+ FSocket : longint;
+ FListened : Boolean;
+ FAccepting : Boolean;
+ FMaxConnections : Longint;
+ FQueueSize : Longint;
+ FOnConnect : TConnectEvent;
+ FOnConnectQuery : TConnectQuery;
+ Procedure DoOnIdle;
+ Protected
+ FSockType : Longint;
+ FBound : Boolean;
+ Procedure DoConnect(ASocket : TSocketStream); Virtual;
+ Function DoConnectQuery(ASocket : longint): Boolean ;Virtual;
+ Procedure Bind; Virtual; Abstract;
+ Function Accept: Longint;Virtual;Abstract;
+ Function SockToStream (ASocket : Longint) : TSocketStream;Virtual;Abstract;
+ Procedure Close; Virtual;
+ Public
+ Constructor Create(ASocket : Longint);
+ Destructor Destroy; Override;
+ Procedure Listen;
+ Procedure StartAccepting;
+ Procedure StopAccepting;
+ Procedure SetNonBlocking;
+ Property Bound : Boolean Read FBound;
+ Property MaxConnections : longint Read FMaxConnections Write FMaxConnections;
+ Property QueueSize : Longint Read FQueueSize Write FQueueSize default 5;
+ Property OnConnect : TConnectEvent Read FOnConnect Write FOnConnect;
+ Property OnConnectQuery : TConnectQuery Read FOnConnectQuery Write FOnConnectQuery;
+ Property OnIdle : TNotifyEvent Read FOnIdle Write FOnIdle;
+ Property NonBlocking : Boolean Read FNonBlocking;
+ Property Socket : Longint Read FSocket;
+ Property SockType : Longint Read FSockType;
+ end;
+
+ { TInetServer }
+
+ TInetServer = Class(TSocketServer)
+ Protected
+ FAddr : TINetSockAddr;
+ Function SockToStream (ASocket : Longint) : TSocketStream;Override;
+ Function Accept : Longint;override;
+ FPort : Word;
+ FHost: string;
+ Public
+ Procedure Bind; Override;
+ Constructor Create(APort: Word);
+ Constructor Create(const aHost: string; const APort: Word);
+ Property Port : Word Read FPort;
+ Property Host : string Read FHost;
+ end;
+
+{$ifdef Unix}
+
+ { TUnixServer }
+
+ TUnixServer = Class(TSocketServer)
+ Private
+ FUnixAddr : TUnixSockAddr;
+ FFileName : String;
+ Protected
+ Procedure Bind; Override;
+ Function Accept : Longint;override;
+ Function SockToStream (ASocket : Longint) : TSocketStream;Override;
+ Procedure Close; override;
+ Public
+ Constructor Create(AFileName : String);
+ Property FileName : String Read FFileName;
+ end;
+{$endif}
+
+ TInetSocket = Class(TSocketStream)
+ Private
+ FHost : String;
+ FPort : Word;
+ Protected
+ Procedure DoConnect(ASocket : longint); Virtual;
+ Public
+ Constructor Create(ASocket : longint); Override; Overload;
+ Constructor Create(const AHost: String; APort: Word); Overload;
+ Property Host : String Read FHost;
+ Property Port : Word Read FPort;
+ end;
+
+{$ifdef Unix}
+
+ TUnixSocket = Class(TSocketStream)
+ Private
+ FFileName : String;
+ Protected
+ Procedure DoConnect(ASocket : longint); Virtual;
+ Public
+ Constructor Create(ASocket : Longint); Overload;
+ Constructor Create(AFileName : String); Overload;
+ Property FileName : String Read FFileName;
+ end;
+{$endif}
+
+Implementation
+
+uses
+{$ifdef unix}
+ BaseUnix, Unix,
+{$endif}
+ resolve;
+
+Const
+ SocketWouldBlock = -2;
+
+{ ---------------------------------------------------------------------
+ ESocketError
+ ---------------------------------------------------------------------}
+
+resourcestring
+ strHostNotFound = 'Host name resolution for "%s" failed.';
+ strSocketCreationFailed = 'Creation of socket failed: %s';
+ strSocketBindFailed = 'Binding of socket failed: %s';
+ strSocketListenFailed = 'Listening on port #%d failed, error: %d';
+ strSocketConnectFailed = 'Connect to %s failed.';
+ strSocketAcceptFailed = 'Could not accept a client connection on socket: %d, error %d';
+ strSocketAcceptWouldBlock = 'Accept would block on socket: %d';
+
+constructor ESocketError.Create(ACode: TSocketErrorType; const MsgArgs: array of const);
+var
+ s: String;
+begin
+ Code := ACode;
+ case ACode of
+ seHostNotFound : s := strHostNotFound;
+ seCreationFailed: s := strSocketCreationFailed;
+ seBindFailed : s := strSocketBindFailed;
+ seListenFailed : s := strSocketListenFailed;
+ seConnectFailed : s := strSocketConnectFailed;
+ seAcceptFailed : s := strSocketAcceptFailed;
+ seAcceptWouldBLock : S:= strSocketAcceptWouldBlock;
+ end;
+ s := Format(s, MsgArgs);
+ inherited Create(s);
+end;
+
+{ ---------------------------------------------------------------------
+ TSocketStream
+ ---------------------------------------------------------------------}
+Constructor TSocketStream.Create (AHandle : Longint);
+
+begin
+ Inherited Create(AHandle);
+ GetSockOptions;
+end;
+
+destructor TSocketStream.Destroy;
+begin
+ {$ifdef netware}
+ CloseSocket(Handle);
+ {$else}
+ FileClose(Handle);
+ {$endif}
+ inherited Destroy;
+end;
+
+Procedure TSocketStream.GetSockOptions;
+
+begin
+end;
+
+Procedure TSocketStream.SetSocketOptions(Value : TSocketOptions);
+
+begin
+end;
+
+Function TSocketStream.Seek(Offset: Longint; Origin: Word): Longint;
+
+begin
+ Result:=0;
+end;
+
+Function TSocketStream.Read (Var Buffer; Count : Longint) : longint;
+
+Var
+ Flags : longint;
+
+begin
+ Flags:=0;
+ Result:=recv(handle,Buffer,count,flags);
+end;
+
+Function TSocketStream.Write (Const Buffer; Count : Longint) :Longint;
+
+Var
+ Flags : longint;
+
+begin
+ Flags:=0;
+ Result:=send(handle,Buffer,count,flags);
+end;
+
+function TSocketStream.GetLocalAddress: TSockAddr;
+var
+ len: LongInt;
+begin
+ len := SizeOf(TSockAddr);
+ if GetSocketName(Handle, Result, len) <> 0 then
+ FillChar(Result, SizeOf(Result), 0);
+end;
+
+function TSocketStream.GetRemoteAddress: TSockAddr;
+var
+ len: LongInt;
+begin
+ len := SizeOf(TSockAddr);
+ if GetPeerName(Handle, Result, len) <> 0 then
+ FillChar(Result, SizeOf(Result), 0);
+end;
+
+
+{ ---------------------------------------------------------------------
+ TSocketServer
+ ---------------------------------------------------------------------}
+
+Constructor TSocketServer.Create(ASocket : Longint);
+
+begin
+ FSocket:=ASocket;
+ FQueueSize :=5;
+end;
+
+Destructor TSocketServer.Destroy;
+
+begin
+ Close;
+end;
+
+Procedure TSocketServer.Close;
+
+begin
+ If FSocket<>-1 Then
+ {$ifdef netware}
+ CloseSocket(FSocket);
+ {$else}
+ FileClose(FSocket);
+ {$endif}
+ FSocket:=-1;
+end;
+
+Procedure TSocketServer.Listen;
+
+begin
+ If Not FBound then
+ Bind;
+ If Not Sockets.Listen(FSocket,FQueueSize) then
+ Raise ESocketError.Create(seListenFailed,[FSocket,SocketError]);
+end;
+
+Procedure TSocketServer.StartAccepting;
+
+Var
+ NoConnections,
+ NewSocket : longint;
+ Stream : TSocketStream;
+
+begin
+ FAccepting := True;
+ Listen;
+ Repeat
+ Repeat
+ Try
+ NewSocket:=Accept;
+ If NewSocket>=0 then
+ begin
+ Inc (NoConnections);
+ If DoConnectQuery(NewSocket) Then
+ begin
+ Stream:=SockToStream(NewSocket);
+ DoConnect(Stream);
+ end
+ end
+ except
+ On E : ESocketError do
+ begin
+ If E.Code=seAcceptWouldBlock then
+ begin
+ DoOnIdle;
+ NewSocket:=-1;
+ end
+ else
+ Raise;
+ end;
+ end;
+ Until (NewSocket>=0) or (Not NonBlocking);
+ Until Not (FAccepting) or ((FMaxConnections<>-1) and (NoConnections>=FMaxConnections));
+end;
+
+Procedure TSocketServer.StopAccepting;
+
+begin
+ FAccepting:=False;
+end;
+
+Procedure TSocketServer.DoOnIdle;
+
+begin
+ If Assigned(FOnIdle) then
+ FOnIdle(Self);
+end;
+
+Procedure TSocketServer.DoConnect(ASocket : TSocketStream);
+
+begin
+ If Assigned(FOnConnect) Then
+ FOnConnect(Self,ASocket);
+end;
+
+Function TSocketServer.DoConnectQuery(ASocket : Longint) : Boolean;
+
+begin
+ Result:=True;
+ If Assigned(FOnConnectQuery) then
+ FOnConnectQuery(Self,ASocket,Result);
+end;
+
+Procedure TSocketServer.SetNonBlocking;
+
+begin
+{$ifdef Unix}
+ fpfcntl(FSocket,F_SETFL,O_NONBLOCK);
+{$endif}
+ FNonBlocking:=True;
+end;
+
+{ ---------------------------------------------------------------------
+ TInetServer
+ ---------------------------------------------------------------------}
+
+Constructor TInetServer.Create(APort: Word);
+
+begin
+ Create('0.0.0.0', aPort);
+end;
+
+Constructor TInetServer.Create(const aHost: string; const APort: Word);
+
+Var S : longint;
+
+begin
+ FHost:=aHost;
+ FPort:=APort;
+ S:=Sockets.Socket(AF_INET,SOCK_STREAM,0);
+ If S=-1 Then
+ Raise ESocketError.Create(seCreationFailed,[Format('%d',[APort])]);
+ Inherited Create(S);
+end;
+
+Procedure TInetServer.Bind;
+
+begin
+ Faddr.family := AF_INET;
+ Faddr.port := ShortHostToNet(FPort);
+ Faddr.addr := LongWord(StrToNetAddr(FHost));
+ if not Sockets.Bind(FSocket, FAddr, Sizeof(FAddr)) then
+ raise ESocketError.Create(seBindFailed, [IntToStr(FPort)]);
+ FBound:=True;
+end;
+
+Function TInetServer.SockToStream (ASocket : Longint) : TSocketStream;
+
+begin
+ Result:=TInetSocket.Create(ASocket);
+ (Result as TInetSocket).FHost:='';
+ (Result as TInetSocket).FPort:=FPort;
+end;
+
+Function TInetServer.Accept : Longint;
+
+Var l : longint;
+
+begin
+ L:=SizeOf(FAddr);
+ Result:=Sockets.Accept(Socket,Faddr,L);
+ If Result<0 then
+{$ifdef Unix}
+ If SocketError=ESysEWOULDBLOCK then
+ Raise ESocketError.Create(seAcceptWouldBlock,[socket])
+ else
+{$endif}
+ Raise ESocketError.Create(seAcceptFailed,[Socket,SocketError]);
+end;
+
+{ ---------------------------------------------------------------------
+ TUnixServer
+ ---------------------------------------------------------------------}
+{$ifdef Unix}
+Constructor TUnixServer.Create(AFileName : String);
+
+Var S : Longint;
+
+begin
+ FFileName:=AFileName;
+ S:=Sockets.Socket(AF_UNIX,SOCK_STREAM,0);
+ If S=-1 then
+ Raise ESocketError.Create(seCreationFailed,[AFileName])
+ else
+ Inherited Create(S);
+end;
+
+Procedure TUnixServer.Close;
+begin
+ Inherited Close;
+ DeleteFile(FFileName);
+ FFileName:='';
+end;
+
+Procedure TUnixServer.Bind;
+
+var
+ AddrLen : longint;
+begin
+ Str2UnixSockAddr(FFilename,FUnixAddr,AddrLen);
+ If Not Sockets.Bind(Socket,FUnixAddr,AddrLen) then
+ Raise ESocketError.Create(seBindFailed,[FFileName]);
+ FBound:=True;
+end;
+
+Function TUnixServer.Accept : Longint;
+
+Var L : longint;
+
+begin
+ L:=Length(FFileName);
+ Result:=Sockets.Accept(Socket,FUnixAddr,L);
+ If Result<0 then
+ If SocketError=ESysEWOULDBLOCK then
+ Raise ESocketError.Create(seAcceptWouldBlock,[socket])
+ else
+ Raise ESocketError.Create(seAcceptFailed,[socket,SocketError]);
+end;
+
+Function TUnixServer.SockToStream (ASocket : Longint) : TSocketStream;
+
+begin
+ Result:=TUnixSocket.Create(ASocket);
+ (Result as TUnixSocket).FFileName:=FFileName;
+end;
+
+{$endif}
+
+{ ---------------------------------------------------------------------
+ TInetSocket
+ ---------------------------------------------------------------------}
+Constructor TInetSocket.Create(ASocket : Longint);
+
+begin
+ Inherited Create(ASocket);
+end;
+
+Constructor TInetSocket.Create(const AHost: String; APort: Word);
+
+Var
+ S : Longint;
+
+begin
+ FHost:=AHost;
+ FPort:=APort;
+ S:=Socket(AF_INET,SOCK_STREAM,0);
+ DoConnect(S);
+ Inherited Create(S);
+end;
+
+Procedure TInetSocket.DoConnect(ASocket : Longint);
+
+Var
+ TheHost: THostResolver;
+ A : THostAddr;
+ addr: TInetSockAddr;
+
+begin
+ A := StrToNetAddr(FHost);
+ if A.s_bytes[4] = 0 then
+ With THostResolver.Create(Nil) do
+ try
+ If Not NameLookup(FHost) then
+ raise ESocketError.Create(seHostNotFound, [FHost]);
+ A:=HostAddress;
+ finally
+ free;
+ end;
+ addr.family := AF_INET;
+ addr.port := ShortHostToNet(FPort);
+ addr.addr := hosttonet(a.s_addr); // hosttonet(A).s_addr;
+//Cardinal(A);
+
+ If not Sockets.Connect(ASocket, addr, sizeof(addr)) then
+ raise ESocketError.Create(seConnectFailed, [Format('%s:%d',[FHost, FPort])]);
+end;
+
+{ ---------------------------------------------------------------------
+ TUnixSocket
+ ---------------------------------------------------------------------}
+{$ifdef Unix}
+Constructor TUnixSocket.Create(ASocket : Longint);
+
+begin
+ Inherited Create(ASocket);
+end;
+
+Constructor TUnixSocket.Create(AFileName : String);
+
+Var S : Longint;
+
+begin
+ FFileName:=AFileName;
+ S:=Socket(AF_UNIX,SOCK_STREAM,0);
+ DoConnect(S);
+ Inherited Create(S);
+end;
+
+Procedure TUnixSocket.DoConnect(ASocket : longint);
+
+Var
+ UnixAddr : TUnixSockAddr;
+ AddrLen : longint;
+begin
+ Str2UnixSockAddr(FFilename,UnixAddr,AddrLen);
+ If Not Connect(ASocket,UnixAddr,AddrLen) then
+ Raise ESocketError.Create(seConnectFailed,[FFilename]);
+end;
+{$endif}
+end.
diff --git a/packages/fcl-net/src/unix/resolve.inc b/packages/fcl-net/src/unix/resolve.inc
new file mode 100644
index 0000000000..64125bffed
--- /dev/null
+++ b/packages/fcl-net/src/unix/resolve.inc
@@ -0,0 +1,86 @@
+uses
+ initc;
+
+const
+ { Net type }
+ socklib = 'c';
+ AF_INET = 2;
+
+ { Error constants. Returned by LastError method of THost, TNet}
+
+ NETDB_INTERNAL= -1; { see errno }
+ NETDB_SUCCESS = 0; { no problem }
+ HOST_NOT_FOUND= 1; { Authoritative Answer Host not found }
+ TRY_AGAIN = 2; { Non-Authoritive Host not found, or SERVERFAIL }
+ NO_RECOVERY = 3; { Non recoverable errors, FORMERR, REFUSED, NOTIMP }
+ NO_DATA = 4; { Valid name, no data record of requested type }
+ NO_ADDRESS = NO_DATA; { no address, look for MX record }
+
+
+Type
+
+ { THostEnt Object }
+ THostEnt = record
+ H_Name : pchar; { Official name }
+ H_Aliases : ppchar; { Null-terminated list of aliases}
+ H_Addrtype : longint; { Host address type }
+ H_length : longint; { Length of address }
+ H_Addr : ppchar; { null-terminated list of adresses }
+ end;
+ PHostEntry = ^THostEnt;
+
+ { TNetEnt object }
+ TNetEnt = record
+ N_Name : pchar; { Official name }
+ N_Aliases : ppchar; { Nill-terminated alias list }
+ N_AddrType : longint; { Net address type }
+ N_net : Cardinal; { Network number }
+ end;
+ PNetEntry = ^TNetEnt;
+
+ TServEnt = record
+ s_name : pchar; { Service name }
+ s_aliases : ppchar; { Null-terminated alias list }
+ s_port : longint; { Port number }
+ s_proto : pchar; { Protocol to use }
+ end;
+ PServEntry = ^TServEnt;
+
+{ C style calls, linked in from Libc }
+
+function gethostent : PHostEntry; cdecl; external socklib;
+procedure sethostent (stayopen : longint); cdecl; external socklib;
+procedure endhostent; cdecl; external socklib;
+
+function getnetent : PNetEntry; cdecl; external socklib;
+procedure setnetent ( Stayopen : Longint); cdecl; external socklib;
+procedure endnetent; cdecl; external socklib;
+
+function getservent : PServEntry; cdecl; external socklib;
+procedure setservent (StayOpen : longint); cdecl; external socklib;
+procedure endservent; cdecl; external socklib;
+
+function getnetbyaddr ( Net : Longint; nettype : Longint) : PNetEntry; cdecl; external socklib;
+function gethostbyname ( Name : Pchar) : PHostEntry; cdecl; external socklib;
+function gethostbyaddr ( Addr : PChar; Len : Longint; HType : Longint) : PHostentry ; cdecl; external socklib;
+function getnetbyname ( Name : pchar) : PNetEntry; cdecl; external socklib;
+function getservbyname (name : pchar ; protocol : pchar) : PServEntry; cdecl; external socklib;
+function getservbyport (port : longint; protocol : pchar) : PServEntry; cdecl; external socklib;
+
+function GetDNSError : libcint;
+
+begin
+ GetDNSError:=fpgetCerrno;
+end;
+
+Function InitResolve : Boolean;
+
+begin
+ Result:=True;
+end;
+
+Function FinalResolve : Boolean;
+
+begin
+ Result:=True;
+end;
diff --git a/packages/fcl-net/src/win/resolve.inc b/packages/fcl-net/src/win/resolve.inc
new file mode 100644
index 0000000000..2ee0803667
--- /dev/null
+++ b/packages/fcl-net/src/win/resolve.inc
@@ -0,0 +1,51 @@
+
+uses winsock;
+
+Type
+ PHostEntry = PHostEnt;
+ PNetEntry = PNetEnt;
+ PServEntry = PServEnt;
+
+Const
+ DNSErr : Integer = 0;
+
+function getnetbyname ( Name : pchar) : PNetEntry;
+
+begin
+ DNSErr:=-1;
+ Result:=Nil;
+end;
+
+function getnetbyaddr ( Net : Longint; nettype : Longint) : PNetEntry;
+
+begin
+ DNSErr:=-2;
+ Result:=Nil;
+end;
+
+Function GetDNSError : Longint;
+
+begin
+ If DNSErr<>0 then
+ begin
+ GetDNSError:=-DNSErr;
+ DNSErr:=0;
+ end
+ else
+ GetDNSError:=0; // Must get win32 error ?
+end;
+
+Function InitResolve : Boolean;
+
+var
+ wsaData : TWsaData;
+
+begin
+ Result:=WSAStartup(1,wsaData)=0;
+end;
+
+Function FinalResolve : Boolean;
+
+begin
+ Result:=True;
+end;
diff --git a/packages/fcl-net/src/wince/resolve.inc b/packages/fcl-net/src/wince/resolve.inc
new file mode 100644
index 0000000000..2ee0803667
--- /dev/null
+++ b/packages/fcl-net/src/wince/resolve.inc
@@ -0,0 +1,51 @@
+
+uses winsock;
+
+Type
+ PHostEntry = PHostEnt;
+ PNetEntry = PNetEnt;
+ PServEntry = PServEnt;
+
+Const
+ DNSErr : Integer = 0;
+
+function getnetbyname ( Name : pchar) : PNetEntry;
+
+begin
+ DNSErr:=-1;
+ Result:=Nil;
+end;
+
+function getnetbyaddr ( Net : Longint; nettype : Longint) : PNetEntry;
+
+begin
+ DNSErr:=-2;
+ Result:=Nil;
+end;
+
+Function GetDNSError : Longint;
+
+begin
+ If DNSErr<>0 then
+ begin
+ GetDNSError:=-DNSErr;
+ DNSErr:=0;
+ end
+ else
+ GetDNSError:=0; // Must get win32 error ?
+end;
+
+Function InitResolve : Boolean;
+
+var
+ wsaData : TWsaData;
+
+begin
+ Result:=WSAStartup(1,wsaData)=0;
+end;
+
+Function FinalResolve : Boolean;
+
+begin
+ Result:=True;
+end;
diff --git a/packages/fcl-net/src/tests/Makefile b/packages/fcl-net/tests/Makefile
index b5360ff4a5..b5360ff4a5 100644
--- a/packages/fcl-net/src/tests/Makefile
+++ b/packages/fcl-net/tests/Makefile
diff --git a/packages/fcl-net/src/tests/Makefile.fpc b/packages/fcl-net/tests/Makefile.fpc
index c21985a1b3..c21985a1b3 100644
--- a/packages/fcl-net/src/tests/Makefile.fpc
+++ b/packages/fcl-net/tests/Makefile.fpc
diff --git a/packages/fcl-net/src/tests/readme.txt b/packages/fcl-net/tests/readme.txt
index e02d89f244..e02d89f244 100644
--- a/packages/fcl-net/src/tests/readme.txt
+++ b/packages/fcl-net/tests/readme.txt
diff --git a/packages/fcl-net/src/tests/rpccli.pp b/packages/fcl-net/tests/rpccli.pp
index 541fa8caf4..541fa8caf4 100644
--- a/packages/fcl-net/src/tests/rpccli.pp
+++ b/packages/fcl-net/tests/rpccli.pp
diff --git a/packages/fcl-net/src/tests/rpcserv.pp b/packages/fcl-net/tests/rpcserv.pp
index 3d1dd606d4..3d1dd606d4 100644
--- a/packages/fcl-net/src/tests/rpcserv.pp
+++ b/packages/fcl-net/tests/rpcserv.pp
diff --git a/packages/fcl-net/src/tests/svrclass.pp b/packages/fcl-net/tests/svrclass.pp
index c20b31ca77..c20b31ca77 100644
--- a/packages/fcl-net/src/tests/svrclass.pp
+++ b/packages/fcl-net/tests/svrclass.pp
diff --git a/packages/fcl-net/src/tests/svrclass_xmlrpc.pp b/packages/fcl-net/tests/svrclass_xmlrpc.pp
index a34b047faa..a34b047faa 100644
--- a/packages/fcl-net/src/tests/svrclass_xmlrpc.pp
+++ b/packages/fcl-net/tests/svrclass_xmlrpc.pp