generic.h
上传用户:shhspump
上传日期:2007-01-07
资源大小:85k
文件大小:7k
源码类别:

远程控制编程

开发平台:

Visual C++

  1. /* generic.h -- anything you don't #undef at the end remains in effect.
  2.    The ONLY things that go in here are generic indicator flags; it's up
  3.    to your programs to declare and call things based on those flags.
  4.    You should only need to make changes via a minimal system-specific section
  5.    at the end of this file.  To build a new section, rip through this and
  6.    check everything it mentions on your platform, and #undef that which needs
  7.    it.  If you generate a system-specific section you didn't find in here,
  8.    please mail me a copy so I can update the "master".
  9.    I realize I'm probably inventing another pseudo-standard here, but
  10.    goddamnit, everybody ELSE has already, and I can't include all of their
  11.    hairball schemes too.  HAVE_xx conforms to the gnu/autoconf usage and
  12.    seems to be the most common format.  In fact, I dug a lot of these out
  13.    of autoconf and tried to common them all together using "stupidh" to
  14.    collect data from platforms.
  15.    In disgust...  _H*  940910, 941115.  Pseudo-version: 1.1  */
  16. #ifndef GENERIC_H /* only run through this once */
  17. #define GENERIC_H
  18. /* =============================== */
  19. /* System calls, lib routines, etc */
  20. /* =============================== */
  21. /* How does your system declare malloc, void or char?  Usually void, but go
  22.    ask the SunOS people why they had to be different... */
  23. #define VOID_MALLOC
  24. /* notably from fwtk/firewall.h: posix locking? */
  25. #define HAVE_FLOCK /* otherwise it's lockf() */
  26. /* if you don't have setsid(), you might have setpgrp().
  27. #define HAVE_SETSID
  28. /* random() is generally considered better than rand() */
  29. /* xxx: rand48? */
  30. #define HAVE_RANDOM
  31. /* if your machine doesn't have lstat(), it should have stat() [dos...] */
  32. #define HAVE_LSTAT
  33. /* different kinds of term ioctls.  How to recognize them, very roughly:
  34.    sysv/POSIX_ME_HARDER:  termio[s].h, struct termio[s], tty.c_*[]
  35.    bsd/old stuff:  sgtty.h, ioctl(TIOCSETP), sgttyb.sg_*, tchars.t_*
  36. #define HAVE_TERMIOS
  37. /* dbm vs ndbm */
  38. #define HAVE_NDBM
  39. /* extended utmp/wtmp stuff.  MOST machines still do NOT have this SV-ism */
  40. #define UTMPX
  41. /* some systems have nice() which takes *relative* values... [resource.h] */
  42. #define HAVE_SETPRIORITY
  43. /* a sysvism, I think, but ... */
  44. #define HAVE_SYSINFO
  45. /* punted for now: setown / siocspgrp ... see firewall.h */
  46. /* ============= */
  47. /* Include files */
  48. /* ============= */
  49. /* Presence of these can be determined via a script that sniffs them
  50.    out if you aren't sure. */
  51. /* stdlib comes with most modern compilers, but ya never know */
  52. #define HAVE_STDLIB_H
  53. /* not on a DOS box! */
  54. #define HAVE_UNISTD_H
  55. /* stdarg is a weird one */
  56. #define HAVE_STDARG_H
  57. /* dir.h or maybe ndir.h otherwise. */
  58. #define HAVE_DIRENT_H
  59. /* string or strings */
  60. #define HAVE_STRINGS_H
  61. /* if you don't have lastlog.h, what you want might be in login.h */
  62. #define HAVE_LASTLOG_H
  63. /* predefines for _PATH_various */
  64. #define HAVE_PATHS_H
  65. /* assorted others */
  66. #define HAVE_PARAM_H
  67. #define HAVE_SYSMACROS_H /* in sys/! */
  68. #define HAVE_TTYENT_H /* securetty et al */
  69. /* ==================== */
  70. /* Still maybe have to do something about the following, if it's even
  71.    worth it.  I just grepped a lot of these out of various code, without
  72.    looking them up yet:
  73.    
  74. #define HAVE_EINPROGRESS
  75. #define HAVE_F_SETOWN
  76. #define HAVE_SETENV ... now *there's* a hairy one; **environ is portable
  77. #define BIG_ENDIAN/little_endian ... *please* try to avoid this stupidity
  78. #define HAVE_GETUSERSHELL ... you could always pull it out of getpwent()
  79. #define HAVE_SETE[UG]ID ... lib or syscall, it varies on diff platforms
  80. #define HAVE_STRCHR ... should actually be handled by string/strings
  81. #define HAVE_PSTAT
  82. #define HAVE_ST_BLKSIZE ... a stat() thing?
  83. #define HAVE_IP_TOS
  84. #define HAVE_STRFTIME ... screw this, we should just INCLUDE one for lame
  85.    old boxes that don't have it [sunos 3.x, early 4.x?]
  86. #define HAVE_VFPRINTF
  87. #define HAVE_SHADOW_PASSWD  ... in its multitudinous schemes?? ... how
  88.    about sumpin' like #define SHADOW_PASSWD_TYPE ... could get grody.
  89. #define SIG*  ... what a swamp, punt for now; should all be in signal.h
  90. #define HAVE_STRCSPN  ... see larry wall's comment in the fwtk regex code
  91. #define ULTRIX_AUTH  ... bwahaha.
  92. #define HAVE_YP  or NIS or whatever you wanna call it this week
  93. randomness about VARARGS??
  94. There's also the issue about WHERE various .h files live, sys/ or otherwise.
  95. There's a BIG swamp lurking where network code of any sort lives.
  96. */
  97. /* ======================== */
  98. /* System-specific sections */
  99. /* ======================== */
  100. /* By turning OFF various bits of the above,  you can customize for
  101.    a given platform.  /*
  102. /* DOS boxes, with MSC; you may need to adapt to a different compiler. */
  103. #ifdef MSDOS
  104. #undef HAVE_FLOCK
  105. #undef HAVE_RANDOM
  106. #undef HAVE_LSTAT
  107. #undef HAVE_TERMIOS
  108. #undef UTMPX
  109. #undef HAVE_SYSINFO
  110. #undef HAVE_UNISTD_H
  111. #undef HAVE_DIRENT_H /* unless you have the k00l little wrapper from L5!! */
  112. #undef HAVE_STRINGS_H
  113. #undef HAVE_LASTLOG_H
  114. #undef HAVE_PATHS_H
  115. #undef HAVE_PARAM_H
  116. #undef HAVE_SYSMACROS_H
  117. #undef HAVE_TTYENT_H
  118. #endif /* MSDOS */
  119. /* buglix 4.x; dunno about 3.x on down.  should be bsd4.2. */
  120. #ifdef ULTRIX
  121. #undef UTMPX
  122. #undef HAVE_PATHS_H
  123. #undef HAVE_SYSMACROS_H
  124. #endif /* buglix */
  125. /* some of this might still be broken on older sunoses */
  126. #ifdef SUNOS
  127. #undef VOID_MALLOC
  128. #undef UTMPX
  129. #undef HAVE_PATHS_H
  130. #endif /* sunos */
  131. /* "contact your vendor for a fix" */
  132. #ifdef SOLARIS
  133. /* has UTMPX */
  134. #undef HAVE_SETPRIORITY
  135. #undef HAVE_STRINGS_H /* this is genuinely the case, go figure */
  136. #undef HAVE_PATHS_H
  137. #undef HAVE_TTYENT_H
  138. #endif /* SOLARIS */
  139. /* whatever aix variant MIT had at the time */
  140. #ifdef AIX
  141. #undef UTMPX
  142. #undef HAVE_LASTLOG_H
  143. #define HAVE_LOGIN_H /* "special", in the educational sense */
  144. #endif /* aix */
  145. /* linux, which is trying as desperately as the gnu folks can to be
  146.    POSIXLY_CORRECT.  I think I'm gonna hurl... */
  147. #ifdef LINUX
  148. #undef UTMPX
  149. #undef HAVE_SYSINFO
  150. #undef HAVE_TTYENT_H
  151. #endif /* linux */
  152. /* irix 5.x; may not be correct for earlier ones */
  153. #ifdef IRIX
  154. /* wow, does irix really have everything?! */
  155. #endif /* irix */
  156. /* osf on alphas */
  157. #ifdef OSF
  158. #undef UTMPX
  159. #endif /* osf */
  160. /* they's some FUCKED UP paths in this one! */
  161. #ifdef FREEBSD
  162. #undef UTMPX
  163. #undef HAVE_SYSINFO
  164. #undef HAVE_LASTLOG_H
  165. #undef HAVE_SYSMACROS_H
  166. #endif /* freebsd */
  167. /* From the sidewinder site, of all places; may be unreliable */
  168. #ifdef BSDI
  169. #undef UTMPX
  170. #undef HAVE_LASTLOG_H
  171. #undef HAVE_SYSMACROS_H
  172. #undef HAVE_TTYENT_H
  173. /* and their malloc.h was in sys/ ?! */
  174. #endif /* bsdi */
  175. /* netbsd/44lite, jives with amiga-netbsd from cactus */
  176. #ifdef NETBSD
  177. #undef UTMPX
  178. #undef HAVE_SYSINFO
  179. #undef HAVE_LASTLOG_H
  180. #endif /* netbsd */
  181. /* Make some "generic" assumptions if all else fails */
  182. #ifdef GENERIC
  183. #undef HAVE_FLOCK
  184. #if defined(SYSV) && (SYSV < 4)  /* TW leftover: old SV doesnt have symlinks */
  185. #undef HAVE_LSTAT
  186. #endif /* old SYSV */
  187. #undef HAVE_TERMIOS
  188. #undef UTMPX
  189. #undef HAVE_PATHS_H
  190. #endif /* generic */
  191. /* ================ */
  192. #endif /* GENERIC_H */