unixsock.inc 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. {
  2. This file is part of the Free Pascal run time library.
  3. (c) 2000-2003 by Marco van de Voort
  4. member of the Free Pascal development team.
  5. See the file COPYING.FPC, included in this distribution,
  6. for details about the copyright.
  7. socket call implementations for NetBSD
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY;without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  11. }
  12. {$warning Taken from FreeBSD, please check }
  13. {******************************************************************************
  14. Basic Socket Functions
  15. ******************************************************************************}
  16. function fpsocket (domain:cint; xtype:cint; protocol: cint):cint;
  17. Begin
  18. fpSocket:=Do_Syscall(syscall_nr_socket,Domain,xtype,Protocol);
  19. socketerror:=fpgeterrno;
  20. End;
  21. function fpsend (s:cint; msg:pointer; len:size_t; flags:cint):ssize_t;
  22. begin
  23. fpSend:=do_syscall(syscall_nr_sendto,S,TSysParam(msg),Len,Flags,0,0);
  24. socketerror:=fpgeterrno;
  25. end;
  26. function fpsendto (s:cint; msg:pointer; len:size_t; flags:cint; tox :psockaddr; tolen: tsocklen):ssize_t;
  27. begin
  28. fpSendto:=do_syscall(syscall_nr_sendto,S,TSysParam(msg),Len,Flags,TSysParam(tox),tolen);
  29. socketerror:=fpgeterrno;
  30. end;
  31. function fprecv (s:cint; buf: pointer; len: size_t; flags:cint):ssize_t;
  32. begin
  33. fpRecv:=do_syscall(syscall_nr_Recvfrom,S,tsysparam(buf),len,flags,0,0);
  34. socketerror:=fpgeterrno;
  35. end;
  36. function fprecvfrom (s:cint; buf: pointer; len: size_t; flags: cint; from : psockaddr; fromlen : psocklen):ssize_t;
  37. begin
  38. fpRecvFrom:=do_syscall(syscall_nr_Recvfrom,S,TSysParam(buf),len,flags,TSysParam(from),TSysParam(fromlen));
  39. socketerror:=fpgeterrno;
  40. end;
  41. function fpbind (s:cint; addrx : psockaddr; addrlen : tsocklen):cint;
  42. begin
  43. fpBind:=do_syscall(syscall_nr_Bind,S,TSysParam(addrx),addrlen);
  44. socketerror:=fpgeterrno;
  45. end;
  46. function fplisten (s:cint; backlog : cint):cint;
  47. begin
  48. fpListen:=do_syscall(syscall_nr_Listen,S,backlog);
  49. socketerror:=fpgeterrno;
  50. end;
  51. function fpaccept (s:cint; addrx : psockaddr; addrlen : psocklen):cint;
  52. begin
  53. fpAccept:=do_syscall(syscall_nr_accept,S,TSysParam(addrx),TSysParam(addrlen));
  54. socketerror:=fpgeterrno;
  55. end;
  56. function fpconnect (s:cint; name : psockaddr; namelen : tsocklen):cint;
  57. begin
  58. fpConnect:=do_syscall(syscall_nr_connect,S,TSysParam(name),namelen);
  59. socketerror:=fpgeterrno;
  60. end;
  61. function fpshutdown (s:cint; how:cint):cint;
  62. begin
  63. fpShutDown:=do_syscall(syscall_nr_shutdown,S,how);
  64. socketerror:=fpgeterrno;
  65. end;
  66. function fpgetsockname (s:cint; name : psockaddr; namelen : psocklen):cint;
  67. begin
  68. fpGetSockName:=do_syscall(syscall_nr_GetSockName,S,TSysParam(name),TSysParam(namelen));
  69. socketerror:=fpgeterrno;
  70. end;
  71. function fpgetpeername (s:cint; name : psockaddr; namelen : psocklen):cint;
  72. begin
  73. fpGetPeerName:=do_syscall(syscall_nr_GetPeerName,S,TSysParam(name),TSysParam(namelen));
  74. socketerror:=fpgeterrno;
  75. end;
  76. function fpsetsockopt (s:cint; level:cint; optname:cint; optval:pointer; optlen : tsocklen):cint;
  77. begin
  78. fpSetSockOpt:=do_syscall(syscall_nr_SetSockOpt,S,level,optname,TSysParam(optval),optlen);
  79. socketerror:=fpgeterrno;
  80. end;
  81. function fpgetsockopt (s:cint; level:cint; optname:cint; optval:pointer; optlen : psocklen):cint;
  82. begin
  83. fpGetSockOpt:=do_syscall(syscall_nr_GetSockOpt,S,level,TSysParam(optname),TSysParam(optval),TSysParam(optlen));
  84. socketerror:=fpgeterrno;
  85. end;
  86. function fpsocketpair (d:cint; xtype:cint; protocol:cint; sv:pcint):cint;
  87. begin
  88. fpSocketPair:=do_syscall(syscall_nr_SocketPair,d,xtype,protocol,TSysParam(sv));
  89. socketerror:=fpgeterrno;
  90. end;