+ OS/2 implementation of unit sockets

git-svn-id: trunk@101 -
This commit is contained in:
Tomas Hajny 2005-05-25 20:51:21 +00:00
parent 77152e9d1b
commit 8e19280c79
4 changed files with 383 additions and 140 deletions

View File

@ -249,103 +249,103 @@ endif
OBJPASDIR=$(RTL)/objpas
GRAPHDIR=$(INC)/graph
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),i386-go32v2)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),i386-win32)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),i386-os2)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),i386-freebsd)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),i386-beos)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),i386-netbsd)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),i386-solaris)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),i386-qnx)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),i386-netware)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),i386-openbsd)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),i386-wdosx)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),i386-emx)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),i386-watcom)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),m68k-linux)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),m68k-amiga)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),m68k-atari)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),m68k-palmos)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),powerpc-linux)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),powerpc-macos)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),sparc-linux)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),sparc-solaris)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),x86_64-linux)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),arm-linux)
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil
override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer matrix sysutils classes math typinfo varutils winsock charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types rtlconst sysconst dateutil strutils convutil so32dll sockets
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=prt0
@ -1980,6 +1980,8 @@ pmshl$(PPUEXT) : pmshl.pas os2def$(PPUEXT) pmwin$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
pmwp$(PPUEXT) : pmwp.pas os2def$(PPUEXT) pmwin$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
pmwsock$(PPUEXT) : pmwsock.pas os2def$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
winsock$(PPUEXT) : winsock.pas pmwsock$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
so32dll$(PPUEXT) : so32dll.pas $(SYSTEMUNIT)$(PPUEXT)
sockets$(PPUEXT) : sockets.pas so32dll$(PPUEXT) ctypes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
pmbidi$(PPUEXT) : pmbidi.pas os2def$(PPUEXT) pmwin$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
dynlibs$(PPUEXT) : $(INC)/dynlibs.pp doscalls$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
dos$(PPUEXT) : dos.pas $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \

View File

@ -14,7 +14,7 @@ units=$(SYSTEMUNIT) ctypes objpas macpas strings \
sysutils classes math typinfo varutils winsock \
charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs \
video mouse keyboard variants types rtlconst sysconst dateutil \
strutils convutil
strutils convutil so32dll sockets
rsts=math varutils typinfo variants pmhelp classes sysconst dateutil
[require]
@ -133,6 +133,10 @@ pmwsock$(PPUEXT) : pmwsock.pas os2def$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
winsock$(PPUEXT) : winsock.pas pmwsock$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
so32dll$(PPUEXT) : so32dll.pas $(SYSTEMUNIT)$(PPUEXT)
sockets$(PPUEXT) : sockets.pas so32dll$(PPUEXT) ctypes$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
pmbidi$(PPUEXT) : pmbidi.pas os2def$(PPUEXT) pmwin$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
dynlibs$(PPUEXT) : $(INC)/dynlibs.pp doscalls$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)

View File

@ -2,6 +2,7 @@
This file is part of the Free Pascal run time library.
Copyright (c) 2000, 2001 by madded2 (madded@vao.udmnet.ru).
Copyright (c) 2002, 2004 Yuri Prokushev (prokushev@freemail.ru).
Copyright (c) 2005 Soren Ager
Interface to OS/2 32-bit sockets library
@ -37,6 +38,7 @@ interface
{$MODE ObjFPC}
{$ASMMODE Intel}
{$PACKRECORDS 1}
(***************************************************************************)
(* *)
@ -1030,7 +1032,140 @@ type
tv_usec : Longint; // Number of microseconds
end;
{
* ioctl & ip trace support
}
const
FIONREAD = (Ord('f') SHL 8) OR 127;
FIONBIO = (Ord('f') SHL 8) OR 126;
FIOASYNC = (Ord('f') SHL 8) OR 125;
FIOTCPCKSUM = (Ord('f') SHL 8) OR 128;
FIONSTATUS = (Ord('f') SHL 8) OR 120;
FIONURG = (Ord('f') SHL 8) OR 121;
SIOCSHIWAT = (Ord('s') SHL 8) OR 0;
SIOCGHIWAT = (Ord('s') SHL 8) OR 1;
SIOCSLOWAT = (Ord('s') SHL 8) OR 2;
SIOCGLOWAT = (Ord('s') SHL 8) OR 3;
SIOCATMARK = (Ord('s') SHL 8) OR 7;
SIOCSPGRP = (Ord('s') SHL 8) OR 8;
SIOCGPGRP = (Ord('s') SHL 8) OR 9;
SIOCSHOSTID = (Ord('s') SHL 8) OR 10;
SIOCADDRT = (Ord('r') SHL 8) OR 10;
SIOCDELRT = (Ord('r') SHL 8) OR 11;
SIOMETRIC1RT = (Ord('r') SHL 8) OR 12;
SIOMETRIC2RT = (Ord('r') SHL 8) OR 13;
SIOMETRIC3RT = (Ord('r') SHL 8) OR 14;
SIOMETRIC4RT = (Ord('r') SHL 8) OR 15;
SIOCREGADDNET = (Ord('r') SHL 8) OR 12;
SIOCREGDELNET = (Ord('r') SHL 8) OR 13;
SIOCREGROUTES = (Ord('r') SHL 8) OR 14;
SIOCFLUSHROUTES=(Ord('r') SHL 8) OR 15;
SIOCSIFADDR = (Ord('i') SHL 8) OR 12;
SIOCGIFADDR = (Ord('i') SHL 8) OR 13;
SIOCSIFDSTADDR= (Ord('i') SHL 8) OR 14;
SIOCGIFDSTADDR= (Ord('i') SHL 8) OR 15;
SIOCSIFFLAGS = (Ord('i') SHL 8) OR 16;
SIOCGIFFLAGS = (Ord('i') SHL 8) OR 17;
SIOCGIFBRDADDR= (Ord('i') SHL 8) OR 18;
SIOCSIFBRDADDR= (Ord('i') SHL 8) OR 19;
SIOCGIFCONF = (Ord('i') SHL 8) OR 20;
SIOCGIFNETMASK= (Ord('i') SHL 8) OR 21;
SIOCSIFNETMASK= (Ord('i') SHL 8) OR 22;
SIOCGIFMETRIC = (Ord('i') SHL 8) OR 23;
SIOCSIFMETRIC = (Ord('i') SHL 8) OR 24;
SIOCSIFSETSIG = (Ord('i') SHL 8) OR 25;
SIOCSIFCLRSIG = (Ord('i') SHL 8) OR 26;
SIOCSIFBRD = (Ord('i') SHL 8) OR 27; { SINGLE-rt bcst. using old # for bkw cmpt }
SIOCSIFALLRTB = (Ord('i') SHL 8) OR 63; { added to configure all-route broadcst }
SIOCGIFLOAD =(Ord('i') SHL 8) OR 27;
SIOCSIFFILTERSRC=(Ord('i') SHL 8) OR 28;
SIOCGIFFILTERSRC=(Ord('i') SHL 8) OR 29;
SIOCSARP = (Ord('i') SHL 8) OR 30;
SIOCGARP = (Ord('i') SHL 8) OR 31;
SIOCDARP = (Ord('i') SHL 8) OR 32;
SIOCSIFSNMPSIG= (Ord('i') SHL 8) OR 33;
SIOCSIFSNMPCLR= (Ord('i') SHL 8) OR 34;
SIOCSIFSNMPCRC= (Ord('i') SHL 8) OR 35;
SIOCSIFPRIORITY=(Ord('i') SHL 8) OR 36;
SIOCGIFPRIORITY=(Ord('i') SHL 8) OR 37;
SIOCSIFFILTERDST=(Ord('i') SHL 8) OR 38;
SIOCGIFFILTERDST=(Ord('i') SHL 8) OR 39;
SIOCSIF802_3 = (Ord('i') SHL 8) OR 40;
SIOCSIFNO802_3= (Ord('i') SHL 8) OR 41;
SIOCSIFNOREDIR= (Ord('i') SHL 8) OR 42;
SIOCSIFYESREDIR= (Ord('i') SHL 8) OR 43;
SIOCSIFMTU = (Ord('i') SHL 8) OR 45;
SIOCSIFFDDI = (Ord('i') SHL 8) OR 46;
SIOCSIFNOFDDI = (Ord('i') SHL 8) OR 47;
SIOCSRDBRD = (Ord('i') SHL 8) OR 48;
SIOCSARP_TR = (Ord('i') SHL 8) OR 49;
SIOCGARP_TR = (Ord('i') SHL 8) OR 50;
{ multicast ioctls }
SIOCADDMULTI = (Ord('i') SHL 8) OR 51; { add m'cast addr }
SIOCDELMULTI = (Ord('i') SHL 8) OR 52; { del m'cast addr }
SIOCMULTISBC = (Ord('i') SHL 8) OR 61; { use broadcast to send IP multicast }
SIOCMULTISFA = (Ord('i') SHL 8) OR 62; { use functional addr to send IP multicast }
{$IFDEF SLBOOTP}
SIOCGUNIT = (Ord('i') SHL 8) OR 70; { Used to retreive unit number on }
{ serial interface }
{$ENDIF}
SIOCSIFSPIPE = (Ord('i') SHL 8) OR 71; { used to set pipe size on interface }
{ this is used as tcp send buffer size }
SIOCSIFRPIPE = (Ord('i') SHL 8) OR 72; { used to set pipe size on interface }
{ this is used as tcp recv buffer size }
SIOCSIFTCPSEG = (Ord('i') SHL 8) OR 73; { set the TCP segment size on interface }
SIOCSIFUSE576 = (Ord('i') SHL 8) OR 74; { enable/disable the automatic change of mss to 576 }
{ if going through a router }
SIOCGIFVALID = (Ord('i') SHL 8) OR 75; { to check if the interface is Valid or not }
{ sk June 14 1995 }
SIOCGIFBOUND = (Ord('i') SHL 8) OR 76; { ioctl to return bound/shld bind ifs }
{ Interface Tracing Support }
SIOCGIFEFLAGS = (Ord('i') SHL 8) OR 150;
SIOCSIFEFLAGS = (Ord('i') SHL 8) OR 151;
SIOCGIFTRACE = (Ord('i') SHL 8) OR 152;
SIOCSIFTRACE = (Ord('i') SHL 8) OR 153;
{$IFDEF SLSTATS}
SIOCSSTAT = (Ord('i') SHL 8) OR 154;
SIOCGSTAT = (Ord('i') SHL 8) OR 155;
{$ENDIF}
{ NETSTAT stuff }
SIOSTATMBUF = (Ord('n') SHL 8) OR 40;
SIOSTATTCP = (Ord('n') SHL 8) OR 41;
SIOSTATUDP = (Ord('n') SHL 8) OR 42;
SIOSTATIP = (Ord('n') SHL 8) OR 43;
SIOSTATSO = (Ord('n') SHL 8) OR 44;
SIOSTATRT = (Ord('n') SHL 8) OR 45;
SIOFLUSHRT = (Ord('n') SHL 8) OR 46;
SIOSTATICMP = (Ord('n') SHL 8) OR 47;
SIOSTATIF = (Ord('n') SHL 8) OR 48;
SIOSTATAT = (Ord('n') SHL 8) OR 49;
SIOSTATARP = (Ord('n') SHL 8) OR 50;
SIOSTATIF42 = (Ord('n') SHL 8) OR 51;
(* From fpc 2.0.0
SIOCGIFFLAGS = $6900 + 17; // get interface flags
{ Interface Tracing Support }
SIOCGIFEFLAGS = $6900 + 150; // get interface enhanced flags
SIOCSIFEFLAGS = $6900 + 151; // set interface enhanced flags
SIOCGIFTRACE = $6900 + 152; // get interface trace data
SIOCSIFTRACE = $6900 + 153; // set interface trace data
{ sorry, i skip other ioctl commands, see SYS\ioctl.h from toolkit for it.. }
*)
(* !!TODO Check all macros from sys/itypes.h
@ -1066,7 +1201,7 @@ function getinetversion(var version):Longint; cdecl;
function sock_errno:Longint; cdecl;
{ print last err string + str if not NIL }
procedure psock_errno(const str:PChar); cdecl;
procedure psock_errno(var str:PChar); cdecl;
{ * sockets creation / close funcs }
@ -1096,10 +1231,10 @@ function soabort(sock:Longint):Longint; cdecl;
function accept(sock:Longint; var s_addr:sockaddr; s_addr_len:Longint):Longint; cdecl;
{ bind a local name to the socket }
function bind(sock:Longint; const s_addr: sockaddr; s_addr_len:Longint):Longint; cdecl;
function bind(sock:Longint; var s_addr: sockaddr; s_addr_len:Longint):Longint; cdecl;
{ connect socket to remote host }
function connect(sock:Longint; const s_addr:sockaddr; s_addr_len:Longint):Longint; cdecl;
function connect(sock:Longint; var s_addr:sockaddr; s_addr_len:Longint):Longint; cdecl;
{ listen on socket. max_conn - queue size of listen. }
function listen(sock,max_conn:Longint):Longint; cdecl;
@ -1114,13 +1249,13 @@ function listen(sock,max_conn:Longint):Longint; cdecl;
function recv(sock:Longint; var buf; buf_len,flags:Longint):Longint; cdecl;
{ send data to socket. ! return N of sent bytes. -1 - err }
function send(sock:Longint; const buf; buf_len,flags:Longint):Longint; cdecl;
function send(sock:Longint; var buf; buf_len,flags:Longint):Longint; cdecl;
{ read data from socket. ! return N of readed bytes, or 0 (closed) or -1 }
function recvfrom(sock:Longint; var buf; buf_len,flags:Longint; var s_addr:sockaddr; var s_addr_len:Longint):Longint; cdecl;
{ send data to socket. ! return N of sent bytes. -1 - err }
function sendto(sock:Longint; const buf; buf_len,flags:Longint; var s_addr:sockaddr; s_addr_len:Longint):Longint; cdecl;
function sendto(sock:Longint; var buf; buf_len,flags:Longint; var s_addr:sockaddr; s_addr_len:Longint):Longint; cdecl;
{ read data into iov_count number of buffers iov.
! return N of readed bytes, or 0 (closed) or -1 }
@ -1148,7 +1283,7 @@ function sendmsg(sock:Longint; var msgbuf:msghdr; flags:Longint):Longint; cdecl
function os2_select(var sockets; N_reads, N_writes, N_exepts, timeout:Longint):Longint; cdecl;
{ bsd select here. heavy voodoo.. }
function select(nfds:Longint; const readfds,writefds,exceptfds:fd_set; const timeout:timeval):Longint; cdecl;
function select(nfds:Longint; var readfds,writefds,exceptfds:fd_set; var timeout:timeval):Longint; cdecl;
(***************************************************************************)
(* *)
@ -1175,7 +1310,7 @@ function getsockname(sock:Longint; var s_addr:sockaddr; var s_addr_len:Longint):
function getsockopt(sock,level,optname:Longint; var buf; var buf_len:Longint):Longint; cdecl;
{ set socket options }
function setsockopt(sock,level,optname:Longint; const buf; buf_len:Longint):Longint; cdecl;
function setsockopt(sock,level,optname:Longint; var buf; buf_len:Longint):Longint; cdecl;
{ f@$king ioctl. use sys/ioctl.h }
function os2_ioctl(sock,cmd:Longint; var data; data_len:Longint):Longint; cdecl;
@ -1208,8 +1343,8 @@ asm
end;
function accept(sock:Longint; var s_addr: sockaddr; s_addr_len:Longint):Longint; cdecl; external 'SO32DLL' index 1;
function bind(sock:Longint; const s_addr: sockaddr; s_addr_len:Longint):Longint; cdecl; external 'SO32DLL' index 2;
function connect(sock:Longint; const s_addr:sockaddr; s_addr_len:Longint):Longint; cdecl; external 'SO32DLL' index 3;
function bind(sock:Longint; var s_addr: sockaddr; s_addr_len:Longint):Longint; cdecl; external 'SO32DLL' index 2;
function connect(sock:Longint; var s_addr:sockaddr; s_addr_len:Longint):Longint; cdecl; external 'SO32DLL' index 3;
function gethostid: Longint; cdecl; external 'SO32DLL' index 4;
function getpeername(sock:Longint; var s_addr:sockaddr; var s_addr_len:Longint):Longint; cdecl; external 'SO32DLL' index 5;
function getsockname(sock:Longint; var s_addr:sockaddr; var s_addr_len:Longint):Longint; cdecl; external 'SO32DLL' index 6;
@ -1219,9 +1354,9 @@ function listen(sock,max_conn:Longint):Longint; cdecl; external 'SO32DLL' index
function recv(sock:Longint; var buf; buf_len,flags:Longint):Longint; cdecl; external 'SO32DLL' index 10;
function recvfrom(sock:Longint; var buf; buf_len,flags:Longint;var s_addr:sockaddr; var s_addr_len:Longint):Longint; cdecl; external 'SO32DLL' index 11;
function os2_select(var sockets; N_reads, N_writes, N_exepts, timeout:Longint):Longint; cdecl; external 'SO32DLL' index 12;
function send(sock:Longint; const buf; buf_len,flags:Longint):Longint; cdecl; external 'SO32DLL' index 13;
function sendto(sock:Longint; const buf; buf_len,flags:Longint;var s_addr:sockaddr; s_addr_len:Longint):Longint; cdecl; external 'SO32DLL' index 14;
function setsockopt(sock,level,optname:Longint; const buf; buf_len:Longint):Longint; cdecl; external 'SO32DLL' index 15;
function send(sock:Longint; var buf; buf_len,flags:Longint):Longint; cdecl; external 'SO32DLL' index 13;
function sendto(sock:Longint; var buf; buf_len,flags:Longint;var s_addr:sockaddr; s_addr_len:Longint):Longint; cdecl; external 'SO32DLL' index 14;
function setsockopt(sock,level,optname:Longint; var buf; buf_len:Longint):Longint; cdecl; external 'SO32DLL' index 15;
function socket(domain,stype,protocol:Longint):Longint; cdecl; external 'SO32DLL' index 16;
function soclose(sock:Longint):Longint; cdecl; external 'SO32DLL' index 17;
function so_cancel(sock:Longint):Longint; cdecl; external 'SO32DLL' index 18;
@ -1236,31 +1371,33 @@ function sock_init:Longint; cdecl; external 'SO32DLL' index 26;
function addsockettolist(sock:Longint):Longint; cdecl; external 'SO32DLL' index 27;
function removesocketfromlist(sock:Longint):Longint; cdecl; external 'SO32DLL' index 28;
{ entry 29 not used }
procedure psock_errno(const str:PChar); cdecl; external 'SO32DLL' index 30;
procedure psock_errno(var str:PChar); cdecl; external 'SO32DLL' index 30;
function getinetversion(var version):Longint; cdecl; external 'SO32DLL' index 31;
function select(nfds:Longint;
const readfds,writefds,exceptfds:fd_set;
const timeout:timeval):Longint; cdecl; external 'SO32DLL' index 32;
var readfds,writefds,exceptfds:fd_set;
var timeout:timeval):Longint; cdecl; external 'SO32DLL' index 32;
function htonl(a:Longint):Longint;
begin Result:=LSwap(a); end;
begin htonl:=LSwap(a); end;
{ host -> network for long (4 bytes) }
function ntohl(a:Longint):Longint;
begin Result:=LSwap(a); end;
begin ntohl:=LSwap(a); end;
{ network -> host for long (4 bytes) }
function htons(a:Word):Word;
begin Result:=WSwap(a); end;
begin htons:=WSwap(a); end;
{ host -> network for small (2 bytes) }
function ntohs(a:Word):Word;
begin Result:=WSwap(a); end;
begin ntohs:=WSwap(a); end;
{ network -> host for small (2 bytes) }
end.
(* !!TODO Following code not revised as yet
{*
* User-settable options (used with setsockopt).
*}
@ -1272,10 +1409,6 @@ end.
TCP_CC = $06; // RFC 1644 (Connection Count)
{
* Structures returned by network data base library. All addresses are
* supplied in host order, and returned in network order (suitable for
@ -1335,19 +1468,7 @@ type
pservent = ^servent;
{
* ioctl & ip trace support
}
const
SIOCGIFFLAGS = $6900 + 17; // get interface flags
{ Interface Tracing Support }
SIOCGIFEFLAGS = $6900 + 150; // get interface enhanced flags
SIOCSIFEFLAGS = $6900 + 151; // set interface enhanced flags
SIOCGIFTRACE = $6900 + 152; // get interface trace data
SIOCSIFTRACE = $6900 + 153; // set interface trace data
{ sorry, i skip other ioctl commands, see SYS\ioctl.h from toolkit for it.. }
IFF_UP = $1; // interface is up
IFF_BROADCAST = $2; // broadcast address valid
IFF_DEBUG = $4; // turn on debugging
@ -1575,10 +1696,3 @@ const
³ 00039 ³ GETSOCKETFROMLIST
À´Done
*)
{
$Log: so32dll.pas,v $
Revision 1.3 2005/02/14 17:13:31 peter
* truncate log
}

View File

@ -1,6 +1,7 @@
{
This file is part of the Free Pascal run time library.
Copyright (c) 2002 Yuri Prokushev
Copyright (c) 2005 Soren Ager
Sockets implementation for OS/2
@ -14,15 +15,16 @@
**********************************************************************}
{$MODE ObjFPC}
{ $DEFINE notUnix} // To make ssockets.pp compile
unit Sockets;
Interface
Uses
so32dll;
so32dll,ctypes;
Const
AF_LOCAL = so32dll.AF_LOCAL;
// AF_LOCAL = so32dll.AF_LOCAL;
AF_OS2 = so32dll.AF_OS2;
AF_IMPLINK = so32dll.AF_IMPLINK; // arpanet imp addresses
AF_PUP = so32dll.AF_PUP; // pup protocols: e.g. BSP
@ -59,7 +61,7 @@ Const
AF_MAX = so32dll.AF_MAX;
PF_LOCAL = so32dll.PF_LOCAL;
// PF_LOCAL = so32dll.PF_LOCAL;
PF_OS2 = so32dll.PF_OS2;
PF_IMPLINK = so32dll.PF_IMPLINK;
PF_PUP = so32dll.PF_PUP;
@ -92,6 +94,17 @@ Const
PF_MAX = so32dll.PF_MAX;
Type
cushort=word;
cuint16=word;
cuint32=cardinal;
size_t =cuint32;
ssize_t=cuint16;
cint =longint;
pcint =^cint;
tsocklen=cint;
psocklen=^tsocklen;
// OS/2 stack based on BSD stack
{$DEFINE BSD}
{$I socketsh.inc}
@ -117,20 +130,12 @@ end;
Function Send(Sock:Longint;Const Buf;BufLen,Flags:Longint):Longint;
begin
Send:=so32dll.Send(Sock,Buf,BufLen,Flags);
if Send<0 then
SocketError:=so32dll.sock_errno
else
SocketError:=0;
Send:=fpSend(Sock,@Buf,BufLen,Flags);
end;
Function SendTo(Sock:Longint;Const Buf;BufLen,Flags:Longint;Var Addr; AddrLen : Longint):Longint;
begin
SendTo:=so32dll.SendTo(Sock,Buf,BufLen,Flags,so32dll.SockAddr(Addr),AddrLen);
if SendTo<0 then
SocketError:=so32dll.sock_errno
else
SocketError:=0;
SendTo:=fpSendTo(Sock,@Buf,BufLen,Flags,@Addr,AddrLen);
end;
Function Recv(Sock:Longint;Var Buf;BufLen,Flags:Longint):Longint;
@ -142,9 +147,7 @@ begin
SocketError:=0;
end;
Function RecvFrom(Sock : Longint; Var Buf; Buflen,Flags : Longint; Var Addr; AddrLen : Integer) : longint;
Function RecvFrom(Sock : Longint; Var Buf; Buflen,Flags : Longint; Var Addr; var AddrLen : longInt) : longint;
begin
RecvFrom:=so32dll.RecvFrom(Sock,Buf,BufLen,Flags,so32dll.SockAddr(Addr),AddrLen);
if RecvFrom<0 then
@ -154,20 +157,8 @@ begin
end;
Function Bind(Sock:Longint;Const Addr;AddrLen:Longint):Boolean;
var
l : longint;
begin
l:=so32dll.Bind(Sock,so32dll.sockaddr(Addr),AddrLen);
if l<0 then
begin
SocketError:=so32dll.sock_errno;
Bind:=false;
end
else
begin
SocketError:=0;
Bind:=true;
end;
Bind:=fpBind(Sock,@Addr,AddrLen)=0;
end;
Function Listen(Sock,MaxConnect:Longint):Boolean;
@ -176,15 +167,14 @@ var
begin
l:=so32dll.Listen(Sock,MaxConnect);
if l<0 then
begin
SocketError:=so32dll.sock_errno;
Listen:=false;
end
else
begin
SocketError:=0;
Listen:=true;
end;
begin
SocketError:=so32dll.sock_errno;
Listen:=false;
end else
begin
SocketError:=0;
Listen:=true;
end;
end;
Function Accept(Sock:Longint;Var Addr;Var Addrlen:Longint):Longint;
@ -196,13 +186,9 @@ begin
SocketError:=0;
end;
Function Connect(Sock:Longint;Const Addr;Addrlen:Longint):Boolean;
Function Connect(Sock:Longint;const Addr; Addrlen:Longint):Boolean;
begin
Connect:=so32dll.Connect(Sock,so32dll.SockAddr(Addr),AddrLen)=0;
if not Connect then
SocketError:=so32dll.sock_errno
else
SocketError:=0;
Connect:=fpConnect(Sock,@Addr,AddrLen)=0;
end;
Function Shutdown(Sock:Longint;How:Longint):Longint;
@ -234,11 +220,7 @@ end;
Function SetSocketOptions(Sock,Level,OptName:Longint;Const OptVal;optlen:longint):Longint;
begin
SetSocketOptions:=so32dll.SetSockOpt(Sock,Level,OptName,OptVal,OptLen);
if SetSocketOptions<0 then
SocketError:=so32dll.sock_errno
else
SocketError:=0;
SetSocketOptions:=fpSetSockOpt(Sock,Level,OptName,@OptVal,OptLen);
end;
Function GetSocketOptions(Sock,Level,OptName:Longint;Var OptVal;Var optlen:longint):Longint;
@ -252,17 +234,17 @@ end;
Function SocketPair(Domain,SocketType,Protocol:Longint;var Pair:TSockArray):Longint;
begin
{!!TODO!!
SocketPair:=so32dll.socketpair(Domain,SocketType,Protocol,Pair);}
//SocketCall(Socket_Sys_SocketPair,Domain,SocketType,Protocol,longint(@Pair),0,0);
SocketPair:=-1;
end;
{ mimic the linux fdWrite/fdRead calls for the file/text socket wrapper }
function fdWrite(handle : longint;Const bufptr;size : dword) : dword;
begin
fdWrite := so32dll.send(handle, bufptr, size, 0);
if fdWrite = -1 then
fdWrite := dword(fpsend(handle, @bufptr, size, 0));
if fdWrite = dword(-1) then
begin
SocketError := so32dll.sock_errno;
fdWrite := 0;
@ -275,32 +257,173 @@ function fdRead(handle : longint;var bufptr;size : dword) : dword;
var
d : dword;
begin
{!!TODO!!
if so32dll.ioctlsocket(handle,FIONREAD,@d) = -1 then
d:=dword(so32dll.os2_ioctl(handle,FIONREAD,d,SizeOf(d)));
if d=dword(-1) then
begin
SocketError:=so32dll.sock_errno;
fdRead:=0;
exit;
end;
}
if d>0 then
end else
begin
if size>d then
size:=d;
fdRead := so32dll.recv(handle, bufptr, size, 0);
if fdRead = -1 then
size:=d;
fdRead := dword(so32dll.recv(handle, bufptr, size, 0));
if fdRead = dword(-1) then
begin
SocketError:= so32dll.sock_errno;
fdRead := 0;
end else
SocketError:=0;
end
else
SocketError:=0;
end;
end;
{$i sockets.inc}
function fpsocket (domain:cint; xtype:cint; protocol: cint):cint;
begin
fpSocket:=so32dll.Socket(Domain,xtype,ProtoCol);
if fpSocket<0 then
SocketError:=so32dll.sock_errno
else
SocketError:=0;
end;
function fpsend (s:cint; msg:pointer; len:size_t; flags:cint):ssize_t;
begin
fpSend:=so32dll.Send(S,msg^,len,flags);
if fpSend<0 then
SocketError:=so32dll.sock_errno
else
SocketError:=0;
end;
function fpsendto (s:cint; msg:pointer; len:size_t; flags:cint; tox :psockaddr; tolen: tsocklen):ssize_t;
begin
// Dubious construct, this should be checked. (IPV6 fails ?)
fpSendTo:=so32dll.SendTo(S,msg^,Len,Flags,so32dll.SockAddr(tox^),toLen);
if fpSendTo<0 then
SocketError:=so32dll.sock_errno
else
SocketError:=0;
end;
function fprecv (s:cint; buf: pointer; len: size_t; flags: cint):ssize_t;
begin
fpRecv:=so32dll.Recv(S,Buf,Len,Flags);
if fpRecv<0 then
SocketError:=so32dll.sock_errno
else
SocketError:=0;
end;
function fprecvfrom (s:cint; buf: pointer; len: size_t; flags: cint; from : psockaddr; fromlen : psocklen):ssize_t;
begin
fpRecvFrom:=so32dll.RecvFrom(S,Buf,Len,Flags,so32dll.SockAddr(from^),FromLen^);
if fpRecvFrom<0 then
SocketError:=so32dll.sock_errno
else
SocketError:=0;
end;
function fpconnect (s:cint; name : psockaddr; namelen : tsocklen):cint;
begin
fpConnect:=so32dll.Connect(S,so32dll.SockAddr(name^),nameLen);
if fpConnect<0 then
SocketError:=so32dll.sock_errno
else
SocketError:=0;
end;
function fpshutdown (s:cint; how:cint):cint;
begin
fpShutDown:=so32dll.ShutDown(S,How);
if fpShutDown<0 then
SocketError:=so32dll.sock_errno
else
SocketError:=0;
end;
function fpbind (s:cint; addrx : psockaddr; addrlen : tsocklen):cint;
begin
fpbind:=so32dll.Bind(S,so32dll.SockAddr(Addrx^),AddrLen);
if fpbind<0 then
SocketError:=so32dll.sock_errno
else
SocketError:=0;
end;
function fplisten (s:cint; backlog : cint):cint;
begin
fplisten:=so32dll.Listen(S,backlog);
if fplisten<0 then
SocketError:=so32dll.sock_errno
else
SocketError:=0;
end;
function fpaccept (s:cint; addrx : psockaddr; addrlen : psocklen):cint;
begin
fpAccept:=so32dll.Accept(S,so32dll.SockAddr(Addrx^),longint(@AddrLen));
if fpAccept<0 then
SocketError:=so32dll.sock_errno
else
SocketError:=0;
end;
function fpgetsockname (s:cint; name : psockaddr; namelen : psocklen):cint;
begin
fpGetSockName:=so32dll.GetSockName(S,so32dll.SockAddr(name^),nameLen^);
if fpGetSockName<0 then
SocketError:=so32dll.sock_errno
else
SocketError:=0;
end;
function fpgetpeername (s:cint; name : psockaddr; namelen : psocklen):cint;
begin
fpGetPeerName:=so32dll.GetPeerName(S,so32dll.SockAddr(name^),NameLen^);
if fpGetPeerName<0 then
SocketError:=so32dll.sock_errno
else
SocketError:=0;
end;
function fpgetsockopt (s:cint; level:cint; optname:cint; optval:pointer; optlen : psocklen):cint;
begin
fpGetSockOpt:=so32dll.GetSockOpt(S,Level,OptName,OptVal,OptLen^);
if fpGetSockOpt<0 then
SocketError:=so32dll.sock_errno
else
SocketError:=0;
end;
function fpsetsockopt (s:cint; level:cint; optname:cint; optval:pointer; optlen :tsocklen):cint;
begin
fpSetSockOpt:=so32dll.SetSockOpt(S,Level,OptName,OptVal,OptLen);
if fpSetSockOpt<0 then
SocketError:=so32dll.sock_errno
else
SocketError:=0;
end;
function fpsocketpair (d:cint; xtype:cint; protocol:cint; sv:pcint):cint;
begin
fpsocketpair:=-1;
end;
Function CloseSocket(Sock:Longint):Longint;
begin
CloseSocket:=so32dll.soclose (Sock);
if CloseSocket<>0 then
begin
SocketError:=so32dll.sock_errno;
end else
begin
CloseSocket := 0;
SocketError := 0;
end;
end;
Begin
so32dll.sock_init;
End.