unixsock.inc 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. {
  2. $Id$
  3. This file is part of the Free Pascal run time library.
  4. (c) 2000-2003 by Marco van de Voort
  5. member of the Free Pascal development team.
  6. See the file COPYING.FPC, included in this distribution,
  7. for details about the copyright.
  8. socket call implementations for FreeBSD
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY;without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  12. }
  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,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;
  91. {
  92. $Log$
  93. Revision 1.10 2004-03-16 18:03:37 marco
  94. * first changes sockets units
  95. Revision 1.9 2004/01/03 12:18:29 marco
  96. * a lot of copyright notices and CVS logs added and fixed
  97. Revision 1.8 2003/09/15 07:09:58 marco
  98. * small fixes, round 1
  99. Revision 1.7 2003/03/23 17:47:15 armin
  100. * CloseSocket added
  101. Revision 1.6 2002/09/07 16:01:18 peter
  102. * old logs removed and tabs fixed
  103. Revision 1.5 2002/02/05 07:54:34 marco
  104. * Fixed typo
  105. }