home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / mint / netlib / lib / socket.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-12-27  |  1007 b   |  60 lines

  1. /*
  2.  *    socket() emulation for MiNT-Net, (w) '93, kay roemer.
  3.  */
  4.  
  5. #include "socklib.h"
  6. #ifdef KERNEL
  7. #include "kerbind.h"
  8. #else
  9. #include <osbind.h>
  10. #include <mintbind.h>
  11. #endif
  12. #include "file.h"
  13. #include "sys/socket.h"
  14. #include "mintsock.h"
  15.  
  16. #define SOCKDEV        "u:\\dev\\socket"
  17.  
  18. #ifndef KERNEL
  19. extern int errno;
  20. #endif
  21.  
  22. int
  23. socket (domain, type, proto)
  24.     int domain, type, proto;
  25. {
  26.     struct socket_cmd cmd;
  27.     int sockfd, r;
  28.  
  29. #ifdef KERNEL
  30.     sockfd = f_open (SOCKDEV, O_RDWR|O_GLOBAL);
  31.     if (sockfd < 0) return sockfd;
  32. #else
  33.     sockfd = Fopen (SOCKDEV, O_RDWR);
  34.     if (sockfd < 0) {
  35.         errno = -sockfd;
  36.         return -1;
  37.     }
  38. #endif
  39.     cmd.cmd =    SOCKET_CMD;
  40.     cmd.domain =    domain;
  41.     cmd.type =    type;
  42.     cmd.protocol =    proto;
  43.  
  44. #ifdef KERNEL
  45.     r = f_cntl (sockfd, (long)&cmd, SOCKETCALL);
  46.     if (r < 0) {
  47.         f_close (sockfd);
  48.         return r;
  49.     }
  50. #else
  51.     r = Fcntl (sockfd, (long)&cmd, SOCKETCALL);
  52.     if (r < 0) {
  53.         errno = -r;
  54.         Fclose (sockfd);
  55.         return -1;
  56.     }
  57. #endif
  58.     return sockfd;
  59. }
  60.