home *** CD-ROM | disk | FTP | other *** search
/ BUG 14 / BUGCD1998_05.ISO / internet / tcp4u / tcp4u330.exe / tcp4u.330 / src / port.h < prev    next >
C/C++ Source or Header  |  1998-03-05  |  8KB  |  226 lines

  1. /*
  2.  * Tcp4u v 3.30
  3.  *
  4.  *===========================================================================
  5.  *
  6.  * Project: Tcp4u,      Library for tcp protocol
  7.  * File:    port.h
  8.  * Purpose: Portability header file. Allow an uniq code
  9.  *
  10.  *===========================================================================
  11.  *
  12.  * This software is Copyright (c) 1996-1998 by Philippe Jounin
  13.  *
  14.  * This library is free software; you can redistribute it and/or
  15.  * modify it under the terms of the GNU Library General Public
  16.  * License as published by the Free Software Foundation; either
  17.  * version 2 of the License, or (at your option) any later version.
  18.  * 
  19.  * This library is distributed in the hope that it will be useful,
  20.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  21.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  22.  * Library General Public License for more details.
  23.  * 
  24.  * You should have received a copy of the GNU Library General Public
  25.  * License along with this library; if not, write to the
  26.  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  27.  * Boston, MA  02111-1307, USA.
  28.  *
  29.  *
  30.  *  If you make modifications to this software that you feel
  31.  *  increases it usefulness for the rest of the community, please
  32.  *  email the changes, enhancements, bug fixes as well as any and
  33.  *  all ideas to me. This software is going to be maintained and
  34.  *  enhanced as deemed necessary by the community.
  35.  *
  36.  *
  37.  *             Philippe Jounin (ph.jounin@computer.org)
  38.  */
  39.  
  40.  
  41.  
  42. /*
  43.  * Fichier d'equivalence Windows/Unix
  44.  * ----------------------------------
  45.  *
  46.  * Cette serie de declarations definit si necessaire
  47.  *          SOCKET  -> un descripteur de socket
  48.  *          HTASK   -> un descripteur de process
  49.  *          BOOL    -> le type VRAI/FAUX
  50.  *          HFILE   -> un descripteur de fichier
  51.  *          API4U   -> le type des APIs
  52.  *          UINT    -> unsigned int
  53.  *          DWORD   -> entier 4 octets
  54.  *          far     -> signification uniquement pour Windows 16
  55.  *          TRUE
  56.  *          FALSE
  57.  *          NULL
  58.  *          CALLBACK 
  59.  *          FARPROC
  60.  *  les fonctions :
  61.  *          GetCurrentTask -> rend un identifiant de tache
  62.  *          WSAIsBlocking() -> rend VRAI si une fonction bloquante en cours
  63.  *          WSACancelBlockingCall()
  64.  *          WSAGetLastError()
  65.  *          WSACleanup()
  66.  *          WSAIsBadWritePtr()
  67.  *          IsCancelled()  -> L'ordre a-t-il ete interrompu
  68.  *          CloseSocket()
  69.  *          IoctlSocket()  -> operation "de bas niveau"
  70.  *          Write          -> ecriture dans un fichier HFILE
  71.  *          Close          -> close et _hclose un fichier HFILE
  72.  *          Open           -> open et _hopen  un fichier HFILE
  73.  *          Strlen         -> fonction standard C, lstrlen en Windows
  74.  *          Strcpy         -> fonction standard C, lstrcpy en Windows
  75.  *          Strcat         -> fonction standard C, lstrcat en Windows
  76.  *          Strcpyn        -> lstrcpyn en Windows
  77.  *          Strcmpn        -> lstrcmpn en Windows
  78.  *          Sprintf        -> fonction standard C, wsprintf en Windows 
  79.  *          Calloc         -> Allocation de N*P octets
  80.  *          Free           -> liberation des octets
  81.  *          OutputDebugString -> fprintf (stderr, ...)
  82.  *  et le fichier
  83.  *          TCP4U_INCLUDE   -> include tcp4ux.h / tcp4w.h
  84.  *
  85.  * 
  86.  * Note: Sous Windows certaines definitions sont inutiles pour tcp4w, mais ce
  87.  * fichier est aussi utilise par d'autres projets...
  88.  *
  89.  */
  90.  
  91. /* ****************************************************************** */
  92. /* Common Declarations                                                */
  93. /* ****************************************************************** */
  94.  
  95.  
  96. /* ****************************************************************** */
  97. /* Declarations Windows                                               */
  98. /* ****************************************************************** */
  99.  
  100. /* #include LIBCO_VERS_H */
  101. #ifdef  _WINDOWS
  102.  
  103. #define  NEED_PROTO
  104.  
  105. #define WRITE_CR            0
  106. #define Write(fd,buf,len)  _lwrite(fd,buf,len)
  107. #define Open(fic,mode)     _lcreat(fic,mode)
  108. #define Close(fd)          _lclose(fd)
  109. #define Sprintf            wsprintf
  110. #define Strlen             lstrlen
  111. #define Strcpy             lstrcpy
  112. #define Strcat             lstrcat
  113. #define Strcpy             lstrcpy
  114. #define Strcpyn            lstrcpyn
  115. #define IsCancelled()      (WSAGetLastError()==WSAEINTR)
  116. #define Calloc(n,s)         (void far *)GlobalAllocPtr(GMEM_SHARE | GMEM_ZEROINIT,n*s)
  117. #define Free(p)             GlobalFreePtr (p)
  118. #define IoctlSocket         ioctlsocket
  119. #define CloseSocket(s)      closesocket(s)
  120. #define Strstr(s1,s2)       strstr(s1,s2)                 
  121. #define Vsprintf            wvsprintf
  122.  
  123. #define SYSTEM_EOL         "\r\n"
  124.  
  125. /* ----------------------------------- */
  126. /* 16 bits declarations                */
  127. /* ----------------------------------- */
  128. #ifndef _WIN32
  129. #  define Unlink(fic)        _unlink(fic)
  130. #  define MAKEWORD(a, b)      ((WORD)(((BYTE)(a)) | ((WORD)((BYTE)(b))) << 8))
  131. #endif  /* Windows 3.1 */
  132.  
  133. /* ----------------------------------- */
  134. /* 32 bits redeclarations              */
  135. /* ----------------------------------- */
  136. #ifdef _WIN32
  137. #  define Unlink(fic)         DeleteFile(fic)
  138. #  define _export
  139. #  define GetCurrentTask()    GetCurrentThread()          
  140. #  define WRITE               OF_WRITE
  141. #  define READ                OF_READ
  142. #  define IsTask(x)  (   GetThreadPriority(x)!= THREAD_PRIORITY_ERROR_RETURN \
  143.               || GetLastError() != ERROR_INVALID_HANDLE)
  144. #endif  /* Windows95 / Windows NT */
  145.  
  146.  
  147. /* ----------------------------------- */
  148. /* functions defined for compatibility */
  149. /* ----------------------------------- */
  150.  
  151. HINSTANCE GetTaskInstance (HWND hParentWindow);
  152. #endif /* _WINDOWS */
  153.  
  154.  
  155. /* ****************************************************************** */
  156. /* Declarations Unix                                                  */
  157. /* ****************************************************************** */
  158. #ifdef UNIX 
  159.  
  160. #define  GetCurrentTask()        (int) getpid ()
  161. #define  WSACleanup()
  162. #define  WSAGetLastError()       errno
  163. #define  IsBadWritePtr(a,b)      FALSE
  164. #define  WSAIsBlocking()         FALSE
  165. #define  WSACancelBlockingCall()
  166. #define  IsCancelled()          (errno==EINTR)
  167. #define  Write(fd,buf,len)       write(fd,buf,len)
  168. #define  Open(fic,mode)          open(fic,mode,0666) /* rw-rw-rw - umask */
  169. #define  Close(fd)               close(fd)
  170. #define  Sprintf                 sprintf
  171. #define  Strlen                  strlen
  172. #define  Strcpy                  strcpy
  173. #define  Strcat                  strcat
  174. #define  Strcpyn(a,b,n)          strncpy(a,b,n-1), a[n-1]=0
  175. #ifdef __cplusplus  
  176. #   define  Calloc(n,s)             (char *) calloc(n,s)
  177. #else /* c++ */
  178. #   define  Calloc(n,s)             calloc(n,s)
  179. #endif /* not c++ */
  180. #define  Free(p)                 free (p)
  181. #define  IoctlSocket             ioctl
  182. #define  CloseSocket(s)          close (s)
  183. #define  Unlink(fic)             unlink(fic)
  184. #define  Strstr(s1,s2)           strstr(s1,s2)                 
  185. #define  Vsprintf                vsprintf
  186. #define  OutputDebugString(x)    fputs (x, stderr)
  187.  
  188. #ifndef FALSE
  189. #  define FALSE   (0==1)
  190. #endif /* FALSE */
  191. #ifndef TRUE
  192. #  define TRUE    (1==1)
  193. #endif /* TRUE */
  194. #ifndef NULL
  195. #  define NULL ((void *) 0)
  196. #endif
  197. #define CALLBACK 
  198. #define FARPROC     HTTP4U_CALLBACK
  199. #ifndef min
  200. #  define min(a,b) ((a)<(b)?(a):(b))
  201. #endif
  202. #define WRITE_CR  (O_WRONLY | O_CREAT | O_TRUNC)
  203. #define   UINT    unsigned int
  204. #define   far
  205.  
  206. #define SYSTEM_EOL         "\r\n"
  207.  
  208. #ifndef TYPE_SOCKET_DEF
  209.    typedef unsigned int SOCKET;
  210. #define TYPE_SOCKET_DEF +
  211. #endif /* TYPE_SOCKET_DEF */
  212. #ifndef TYPE_HTASK_DEF
  213.    typedef unsigned int HTASK;
  214. #define TYPE_HTASK_DEF  +
  215. #endif /* TYPE_HTASK_DEF */
  216. #ifndef TYPE_BOOL_DEF
  217.    typedef int BOOL;
  218. #define TYPE_BOOL_DEF   +
  219. #endif /* TYPE_BOOL_DEF */
  220. #ifndef TYPE_HFILE_DEF
  221.    typedef int HFILE;
  222. #define TYPE_HFILE_DEF  +
  223. #endif /* TYPE_HFILE_DEF */
  224.  
  225. #endif /* UNIX */
  226.