home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume35 / ncftp / part03 / sys.h < prev   
C/C++ Source or Header  |  1993-01-24  |  7KB  |  325 lines

  1. /* sys.h */
  2.  
  3. /*
  4.  * ncftp may need work arounds for some things due to the differences
  5.  * in implementations of unix.  The following systems are taken care
  6.  * of automatically:
  7.  *
  8.  *    SunOS/Solaris (but use gcc)
  9.  *    Silicon Graphics IRIX
  10.  *    AIX
  11.  *    SINIX
  12.  *    Ultrix
  13.  *    NeXT
  14.  *
  15.  * For those systems, you should be able to 'make' ncftp without any
  16.  * problems.  Otherwise you will have to configure ncftp manually.
  17.  * You will need to add these things to the SDEFS line in the Makefile
  18.  * as applicable.
  19.  *
  20.  * For these systems, some things are taken care of automatically, but
  21.  * you still need to add something to CFLAGS or SDEFS:
  22.  *
  23.  *     Hewlett-Packard HP-UX:  If you have 7.0, you'll need to find
  24.  *       a copy of <ftp.h> from somewhere (8.0 has it though). Then
  25.  *       set CFLAGS= -Aa.  You may also need to use gcc if your
  26.  *       compiler is non-ANSI.
  27.  *
  28.  *     SCO Unix:  Add -DSCO324 to SDEFS, and -lsocket to MORELIBS.
  29.  *
  30.  *     Bull DPX/2: Add -DBULL to SDEFS, add -linet to MORELIBS, and
  31.  *       use gcc.
  32.  *
  33.  *     Sequent's DYNIX: Use gcc and add -DDYNIX (if necessary) to SDEFS.
  34.  *       You may also be short several string functions which you will
  35.  *       have to get elsewhere.
  36.  *
  37.  * Is your system closer to System V or BSD?  Your SDEFS line should have
  38.  * either -DBSD or -DSYSV.  If you don't know, try leaving it blank first;
  39.  * some compilers automatically define it for you.  So far, defining
  40.  * SYSV just defines a couple of macros for similar functions in BSD.
  41.  *
  42.  * You may need to add -DRINDEX if your system uses strrchr instead.
  43.  * If SYSV is defined, RINDEX is defined automatically because System V
  44.  * uses strrchr.
  45.  *
  46.  * Add -DCONST if your compiler chokes on the const directive.
  47.  *
  48.  * Add -DSYSSELECTH if you need <sys/select.h> included for definitions
  49.  * of fd_set, etc.
  50.  *
  51.  * Add -DNO_UNISTDH if you don't have <unistd.h>.
  52.  *
  53.  * Add -DNO_STDLIBH if you don't have <stdlib.h>.
  54.  *
  55.  * Add -DGETPASS if you would rather use the standard getpass() system
  56.  * call, instead of our version, getpass2(), which takes more than 8
  57.  * characters.  You may want to define this if you are having problems
  58.  * with compile errors in cmds.c where getpass2() is located.
  59.  *
  60.  * If you haven't given up on our getpass2(), you can try adding -DSGTTYB
  61.  * if you want to use a struct sgttyb instead of a struct termio.  By default,
  62.  * BSD systems define SGTTYB automatically.  You can also try adding -DTERMIOS
  63.  * to use a POSIX compliant struct termios instead.  Don't pull your hair out
  64.  * trying to get the getpass2 code to compile;  if it gives you problems just
  65.  * define -DGETPASS and hope your system's getpass can handle passwords
  66.  * longer than 8 characters.
  67.  *
  68.  * Add -DBAD_INETADDR if your inet_addr() function returns a struct in_addr
  69.  * instead of a u_long, as it should (in DG/UX 5.4.1).
  70.  *
  71.  * (Optional) Add -DGETCWDSIZET if your system's getcwd() takes a size_t
  72.  * as the second parameter instead of an int.
  73.  *
  74.  * (Optional) Add -DHERROR if you know you have the herror() system
  75.  * call.
  76.  *
  77.  * (Optional) Add -DU_WAIT if you know your wait system call takes
  78.  * a pointer to a 'union wait.'  Defined automatically if you define
  79.  * BSD.
  80.  *
  81.  * (Optional) Add -DHOSTNAME=\"machine.domain.nam\" if your system
  82.  * doesn't generate it's own hostname.  To check this, compile ncftp
  83.  * then run it and type 'set.'  Look at the variable anon-password.
  84.  * If the hostname is wrong, recompile it with HOSTNAME set to your
  85.  * machine's address.
  86.  */
  87.  
  88. #ifdef __sun
  89. #    ifndef sun
  90. #        define sun 1
  91. #    endif
  92. #endif
  93.  
  94. #ifdef sun
  95. #    ifndef __GNUC__
  96. #        error "You will need to use gcc since Sun's cc isn't ANSI.  Set CC=gcc in the Makefile." 
  97. #    endif
  98. #    define System "SunOS"
  99. #    ifndef RINDEX
  100. #        define RINDEX 1
  101. #    endif
  102. #endif /* sun */
  103.  
  104. #ifdef __sgi
  105. #    ifndef sgi
  106. #        define sgi 1
  107. #    endif
  108. #endif
  109.  
  110. #ifdef sgi
  111. #    define System "IRIX"
  112. #    ifndef SYSV
  113. #        define SYSV 1
  114. #    endif
  115. #    ifndef HERROR
  116. #        define HERROR 1
  117. #    endif
  118. #    ifndef U_WAIT
  119. #        define U_WAIT 1
  120. #    endif
  121. #endif /* sgi */
  122.  
  123. #ifdef _AIX
  124. #    define System "AIX"
  125. #    define SYSSELECTH 1
  126. #endif    /* _AIX */
  127.  
  128. #ifdef SCO324
  129. #    define System "SCO Unix"
  130. #    ifndef SYSV
  131. #        define SYSV 1
  132. #    endif
  133. #endif    /* SCO */
  134.  
  135. #ifdef NeXT
  136. #    ifndef RINDEX
  137. #        define RINDEX 1
  138. #    endif
  139. #    ifndef BSD
  140. #        define BSD 1
  141. #    endif
  142. #    ifndef NO_UNISTDH
  143. #        define NO_UNISTDH 1
  144. #    endif
  145. #endif
  146.  
  147. #ifdef DYNIX
  148. #    define System "Dynix"
  149. #    ifndef BSD
  150. #        define BSD 1
  151. #    endif
  152. #    ifndef SGTTYB
  153. #        define SGTTYB 1
  154. #    endif
  155. #    ifndef NO_STDLIBH
  156. #        define NO_STDLIBH 1
  157. #    endif
  158. #endif    /* DYNIX */
  159.  
  160. #ifdef ultrix
  161. #    define System "Ultrix"
  162. #    ifndef BSD
  163. #        define BSD 1
  164. #    endif
  165. #    ifndef CONST
  166. #        define CONST
  167. #    endif
  168. #endif    /* ultrix */
  169.  
  170. #ifdef __hpux
  171. #    ifndef HPUX
  172. #        define HPUX 1
  173. #    endif
  174. #endif
  175.  
  176. #ifdef HPUX 
  177. #    define System "HP-UX"
  178. #    ifndef _HPUX_SOURCE
  179. #        define _HPUX_SOURCE 1
  180. #    endif
  181. #    ifndef GETCWDSIZET
  182. #        define GETCWDSIZET 1
  183. #    endif
  184. #    define SYSV 1
  185. #endif    /* HPUX */
  186.  
  187. #ifdef SINIX
  188. #    define System "SINIX"
  189. #    ifndef SYSV
  190. #        define SYSV 1
  191. #    endif
  192. /* You may need to add -lresolv, -lport, -lcurses to MORELIBS in Makefile. */
  193. #endif
  194.  
  195. #ifdef BULL          /* added 23nov92 for Bull DPX/2 */
  196. #    define _POSIX_SOURCE
  197. #    define _XOPEN_SOURCE
  198. #    define _BULL_SOURCE
  199. #    ifndef SYSV
  200. #        define SYSV 1
  201. #    endif
  202. #    define bull
  203. #    define System "Bull DPX/2 BOS"
  204. #    include <sys/types.h>
  205. #    define SYSSELECTH
  206. #endif  /* BULL */   /* added 23nov92 for Bull DPX/2 */
  207.  
  208. #ifdef __dgux
  209. #     ifndef DGUX
  210. #             define DGUX 1
  211. #     endif
  212. #endif
  213.  
  214. #ifdef DGUX
  215. #     ifndef _DGUX_SOURCE
  216. #             define _DGUX_SOURCE
  217. #     endif
  218. #     define GETCWDSIZET 1
  219. #     define BAD_INETADDR 1
  220. #     define SYSV 1
  221. #     define System "DG/UX"
  222. #endif  /* DGUX */
  223.  
  224. #ifdef apollo
  225. #    define TERMIOS
  226. #    ifndef BSD
  227. #        define BSD 1
  228. #    endif
  229. #endif
  230.  
  231. /* -------------------------------------------------------------------- */
  232.  
  233. #ifdef _SYSV
  234. #    ifndef SYSV
  235. #        define SYSV 1
  236. #    endif
  237. #endif
  238.  
  239. #ifdef USG
  240. #    ifndef SYSV
  241. #        define SYSV 1
  242. #    endif
  243. #endif
  244.  
  245. #ifdef _BSD
  246. #    ifndef BSD
  247. #        define BSD 1
  248. #    endif
  249. #endif
  250.  
  251. #ifdef SYSV
  252. #    ifndef RINDEX
  253. #        define RINDEX 1
  254. #    endif
  255. #    define bcopy(s,d,l) memcpy((d),(s),(l))
  256. #    define bzero(cp,l) memset((cp),0,(l))
  257. #endif
  258.  
  259. #ifdef BSD
  260. #    ifndef SYSDIRH
  261. #        define SYSDIRH 1
  262. #    endif
  263. #    ifndef U_WAIT
  264. #        define U_WAIT 1 /* Use a 'union wait' parameter with wait(). */
  265. #    endif
  266. #    ifndef SGTTYB
  267. #        define SGTTYB
  268. #    endif
  269. #endif
  270.  
  271. /*
  272.  * Some systems besides System V don't use rindex/index (like SunOS).
  273.  * Add -DRINDEX to your SDEFS line if you need to.
  274.  */
  275. #ifdef RINDEX
  276.     /* or #include <strings.h> if you have it. */
  277. #    define rindex strrchr
  278. #    define index strchr
  279. #endif /* RINDEX */
  280.  
  281. /* Turn on the redir command. */
  282. #ifndef REDIR
  283. #    define REDIR 1
  284. #endif
  285.  
  286. #ifdef GETPASS
  287. #    define getpass2 getpass
  288. #endif
  289.  
  290. #ifdef _POSIX_SOURCE
  291. #    define TERMIOS
  292. #endif
  293.  
  294. #include <stdio.h>
  295. #ifndef NO_STDLIBH
  296. #    include <stdlib.h>
  297. #else
  298. extern void *malloc(size_t);
  299. extern void *calloc(size_t, size_t);
  300. extern void *malloc(size_t);
  301. extern void    free(void *);
  302. extern void *realloc(void *, size_t);
  303. extern void    exit(int);
  304.  
  305. #ifdef CONST
  306. extern char *getenv(char *);
  307. extern int atoi(char *);
  308. #else
  309. extern char *getenv(const char *);
  310. extern int atoi(const char *);
  311. #endif
  312.  
  313. #endif    /* NO_STDLIBH */
  314.  
  315. #ifdef NO_UNISTDH
  316. char *getlogin (void);
  317. #ifdef CONST
  318. extern char *getenv(char *);
  319. #else
  320. extern char *getenv(const char *);
  321. #endif
  322. #endif    /* NO_UNISTDH */
  323.  
  324. /* eof sys.h */
  325.