global.h
上传用户:hepax88
上传日期:2007-01-03
资源大小:1101k
文件大小:7k
源码类别:

TCP/IP协议栈

开发平台:

Visual C++

  1. #ifndef _GLOBAL_H
  2. #define _GLOBAL_H
  3. #include <stdlib.h>
  4. #include <string.h>
  5. /* Global definitions used by every source file.
  6.  * Some may be compiler dependent.
  7.  *
  8.  * This file depends only on internal macros or those defined on the
  9.  * command line, so it may be safely included first.
  10.  */
  11. #if !defined(AMIGA) && (defined(LATTICE) || defined(MAC) || defined(__TURBOC__))
  12. /* These compilers require special open modes when reading binary files.
  13.  *
  14.  * "The single most brilliant design decision in all of UNIX was the
  15.  * choice of a SINGLE character as the end-of-line indicator" -- M. O'Dell
  16.  *
  17.  * "Whoever picked the end-of-line conventions for MS-DOS and the Macintosh
  18.  * should be shot!" -- P. Karn's corollary to O'Dell's declaration
  19.  */
  20. #define READ_BINARY "rb"
  21. #define WRITE_BINARY "wb"
  22. #define APPEND_BINARY "ab+"
  23. #define READ_TEXT "rt"
  24. #define WRITE_TEXT "wt"
  25. #define APPEND_TEXT "at+"
  26. #else
  27. #define READ_BINARY "r"
  28. #define WRITE_BINARY "w"
  29. #define APPEND_BINARY "a+"
  30. #define READ_TEXT "r"
  31. #define WRITE_TEXT "w"
  32. #define APPEND_TEXT "a+"
  33. #endif
  34. /* These two lines assume that your compiler's longs are 32 bits and
  35.  * shorts are 16 bits. It is already assumed that chars are 8 bits,
  36.  * but it doesn't matter if they're signed or unsigned.
  37.  */
  38. typedef long int32; /* 32-bit signed integer */
  39. typedef unsigned long uint32; /* 32-bit unsigned integer */
  40. typedef unsigned short uint16; /* 16-bit unsigned integer */
  41. typedef unsigned char byte_t; /*  8-bit unsigned integer */
  42. typedef unsigned char uint8; /* 8-bit unsigned integer */
  43. #define MAXINT16 0xffff /* Largest 16-bit integer */
  44. #define MAXINT32 0xffffffff /* Largest 32-bit integer */
  45. #define NBBY 8 /* 8 bits/byte */
  46. #define HASHMOD 7 /* Modulus used by hash_ip() function */
  47. /* The "interrupt" keyword is non-standard, so make it configurable */
  48. #if defined(__TURBOC__) && defined(MSDOS)
  49. #define INTERRUPT void interrupt
  50. #else
  51. #define INTERRUPT void
  52. #endif
  53. /* Note that these definitions are on by default if none of the Turbo-C style
  54.  * memory model definitions are on; this avoids having to change them when
  55.  * porting to 68K environments.
  56.  */
  57. #if !defined(__TINY__) && !defined(__SMALL__) && !defined(__MEDIUM__) && !defined(__GNUC__)
  58. #define LARGEDATA 1
  59. #endif
  60. #if !defined(__TINY__) && !defined(__SMALL__) && !defined(__COMPACT__) && !defined(__GNUC__)
  61. #define LARGECODE 1
  62. #endif
  63. /* Since not all compilers support structure assignment, the ASSIGN()
  64.  * macro is used. This controls how it's actually implemented.
  65.  */
  66. #ifdef NOSTRUCTASSIGN /* Version for old compilers that don't support it */
  67. #define ASSIGN(a,b) memcpy((char *)&(a),(char *)&(b),sizeof(b);
  68. #else /* Version for compilers that do */
  69. #define ASSIGN(a,b) ((a) = (b))
  70. #endif
  71. /* Define null object pointer in case stdio.h isn't included */
  72. #ifndef NULL
  73. /* General purpose NULL pointer */
  74. #define NULL 0
  75. #endif
  76. /* standard boolean constants */
  77. #define FALSE 0
  78. #define TRUE 1
  79. #define NO 0
  80. #define YES 1
  81. #define CTLA 0x1
  82. #define CTLB 0x2
  83. #define CTLC 0x3
  84. #define CTLD 0x4
  85. #define CTLE 0x5
  86. #define CTLF 0x6
  87. #define CTLG 0x7
  88. #define CTLH 0x8
  89. #define CTLI 0x9
  90. #define CTLJ 0xa
  91. #define CTLK 0xb
  92. #define CTLL 0xc
  93. #define CTLM 0xd
  94. #define CTLN 0xe
  95. #define CTLO 0xf
  96. #define CTLP 0x10
  97. #define CTLQ 0x11
  98. #define CTLR 0x12
  99. #define CTLS 0x13
  100. #define CTLT 0x14
  101. #define CTLU 0x15
  102. #define CTLV 0x16
  103. #define CTLW 0x17
  104. #define CTLX 0x18
  105. #define CTLY 0x19
  106. #define CTLZ 0x1a
  107. #define BELL CTLG
  108. #define BS CTLH
  109. #define TAB CTLI
  110. #define LF CTLJ
  111. #define FF CTLL
  112. #define CR CTLM
  113. #define XON CTLQ
  114. #define XOFF CTLS
  115. #define ESC 0x1b
  116. #define DEL 0x7f
  117. /* string equality shorthand */
  118. #define STREQ(x,y) (strcmp(x,y) == 0)
  119. /* Extract a short from a long */
  120. #define hiword(x) ((uint16)((x) >> 16))
  121. #define loword(x) ((uint16)(x))
  122. /* Extract a byte from a short */
  123. #define hibyte(x) ((unsigned char)((x) >> 8))
  124. #define lobyte(x) ((unsigned char)(x))
  125. /* Extract nibbles from a byte */
  126. #define hinibble(x) (((x) >> 4) & 0xf)
  127. #define lonibble(x) ((x) & 0xf)
  128. /* Various low-level and miscellaneous functions */
  129. int availmem(void);
  130. void *callocw(unsigned nelem,unsigned size);
  131. int32 clock();
  132. int dirps(void);
  133. void free(void *);
  134. #define FREE(p) {free(p); p = NULL;}
  135. int getopt(int argc,char *argv[],char *opts);
  136. void getrand(unsigned char *buf,int len);
  137. int htob(char c);
  138. int htoi(char *);
  139. int readhex(uint8 *,char *,int);
  140. long htol(char *);
  141. char *inbuf(uint16 port,char *buf,uint16 cnt);
  142. uint16 hash_ip(int32 addr);
  143. int istate(void);
  144. void logmsg(int s,char *fmt, ...);
  145. int ilog2(uint16 x);
  146. void *ltop(long);
  147. void *malloc(size_t nb);
  148. void *mallocw(size_t nb);
  149. int memcnt(uint8 *buf,uint8 c,int size);
  150. void memxor(uint8 *,uint8 *,unsigned int);
  151. char *outbuf(uint16 port,char *buf,uint16 cnt);
  152. int32 rdclock(void);
  153. void restore(int);
  154. void rip(char *);
  155. char *smsg(char *msgs[],unsigned nmsgs,unsigned n);
  156. void stktrace(void);
  157. #if !defined __TURBOC__
  158. char *strdup(const char *);
  159. #endif
  160. int urandom(unsigned int n);
  161. int wildmat(char *s,char *p,char **argv);
  162. #ifdef AZTEC
  163. #define rewind(fp) fseek(fp,0L,0);
  164. #endif
  165. #if defined(__TURBOC__) && defined(MSDOS)
  166. #define movblock(so,ss,do,ds,c) movedata(ss,so,ds,do,c)
  167. #else
  168. /* General purpose function macros already defined in turbo C */
  169. #ifndef min
  170. #define min(x,y) ((x)<(y)?(x):(y)) /* Lesser of two args */
  171. #endif
  172. #ifndef max
  173. #define max(x,y) ((x)>(y)?(x):(y)) /* Greater of two args */
  174. #endif
  175. #ifdef MSDOS
  176. #define MK_FP(seg,ofs) ((void far *) 
  177. (((unsigned long)(seg) << 16) | (unsigned)(ofs)))
  178. #endif
  179. #endif /* __TURBOC __ */
  180. #ifdef AMIGA
  181. /* super kludge de WA3YMH */
  182. #ifndef fileno
  183. #include <stdio.h>
  184. #endif
  185. #define fclose(fp) amiga_fclose(fp)
  186. extern int amiga_fclose(FILE *);
  187. extern FILE *tmpfile(void);
  188. extern char *sys_errlist[];
  189. extern int errno;
  190. #endif
  191. /* Externals used by getopt */
  192. extern int optind;
  193. extern char *optarg;
  194. /* Threshold setting on available memory */
  195. extern int32 Memthresh;
  196. /* System clock - count of ticks since startup */
  197. extern int32 Clock;
  198. /* Various useful strings */
  199. extern char Badhost[];
  200. extern char Nospace[];
  201. extern char Notval[];
  202. extern char *Hostname;
  203. extern char Version[];
  204. extern char Whitespace[];
  205. /* Your system's end-of-line convention */
  206. extern char Eol[];
  207. /* Your system OS - set in files.c */
  208. extern char System[];
  209. /* Your system's temp directory */
  210. extern char *Tmpdir;
  211. extern unsigned Nfiles; /* Maximum number of open files */
  212. extern unsigned Nsock; /* Maximum number of open sockets */
  213. extern void (*Gcollect[])();
  214. #endif /* _GLOBAL_H */