Source:NetHack 3.6.1/include/system.h

From NetHackWiki
(Redirected from System.h)
Jump to: navigation, search

Below is the full text to system.h from the source code of NetHack 3.6.1. To link to a particular line, write [[Source:NetHack 3.6.1/include/system.h#line123]], for example.

The NetHack General Public License applies to screenshots, source code and other content from NetHack.

This content was modified from the original NetHack source code distribution (by splitting up NetHack content between wiki pages, and possibly further editing). See the page history for a list of who changed it, and on what dates.

  1.  /* NetHack 3.6	system.h	$NHDT-Date: 1501723401 2017/08/03 01:23:21 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.13 $ */
  2.  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  3.  /*-Copyright (c) Robert Patrick Rankin, 2017. */
  4.  /* NetHack may be freely redistributed.  See license for details. */
  5.  
  6.  #ifndef SYSTEM_H
  7.  #define SYSTEM_H
  8.  
  9.  #if !defined(__cplusplus) && !defined(__GO32__)
  10.  
  11.  #define E extern
  12.  
  13.  /* some old <sys/types.h> may not define off_t and size_t; if your system is
  14.   * one of these, define them by hand below
  15.   */
  16.  #if (defined(VMS) && !defined(__GNUC__)) || defined(MAC)
  17.  #include <types.h>
  18.  #else
  19.  #ifndef AMIGA
  20.  #include <sys/types.h>
  21.  #endif
  22.  #endif
  23.  
  24.  #if (defined(MICRO) && !defined(TOS)) || defined(ANCIENT_VAXC)
  25.  #if !defined(_SIZE_T) && !defined(__size_t) /* __size_t for CSet/2 */
  26.  #define _SIZE_T
  27.  #if !((defined(MSDOS) || defined(OS2)) \
  28.        && defined(_SIZE_T_DEFINED)) /* MSC 5.1 */
  29.  #if !(defined(__GNUC__) && defined(AMIGA))
  30.  typedef unsigned int size_t;
  31.  #endif
  32.  #endif
  33.  #endif
  34.  #endif /* MICRO && !TOS */
  35.  
  36.  #if defined(__TURBOC__) || defined(MAC)
  37.  #include <time.h> /* time_t is not in <sys/types.h> */
  38.  #endif
  39.  #if defined(ULTRIX) && !(defined(ULTRIX_PROTO) || defined(NHSTDC))
  40.  /* The Ultrix v3.0 <sys/types.h> seems to be very wrong. */
  41.  #define time_t long
  42.  #endif
  43.  
  44.  #if defined(ULTRIX) || defined(VMS)
  45.  #define off_t long
  46.  #endif
  47.  #if defined(AZTEC) || defined(THINKC4) || defined(__TURBOC__)
  48.  typedef long off_t;
  49.  #endif
  50.  
  51.  #endif /* !__cplusplus && !__GO32__ */
  52.  
  53.  /* You may want to change this to fit your system, as this is almost
  54.   * impossible to get right automatically.
  55.   * This is the type of signal handling functions.
  56.   */
  57.  #if !defined(OS2) && (defined(_MSC_VER) || defined(__TURBOC__) \
  58.                        || defined(__SC__) || defined(WIN32))
  59.  #define SIG_RET_TYPE void(__cdecl *)(int)
  60.  #endif
  61.  #ifndef SIG_RET_TYPE
  62.  #if defined(NHSTDC) || defined(POSIX_TYPES) || defined(OS2) || defined(__DECC)
  63.  #define SIG_RET_TYPE void (*)()
  64.  #endif
  65.  #endif
  66.  #ifndef SIG_RET_TYPE
  67.  #if defined(ULTRIX) || defined(SUNOS4) || defined(SVR3) || defined(SVR4)
  68.  /* SVR3 is defined automatically by some systems */
  69.  #define SIG_RET_TYPE void (*)()
  70.  #endif
  71.  #endif
  72.  #ifndef SIG_RET_TYPE /* BSD, SIII, SVR2 and earlier, Sun3.5 and earlier */
  73.  #define SIG_RET_TYPE int (*)()
  74.  #endif
  75.  
  76.  #if !defined(__cplusplus) && !defined(__GO32__)
  77.  
  78.  #if defined(BSD) || defined(ULTRIX) || defined(RANDOM)
  79.  #ifdef random
  80.  #undef random
  81.  #endif
  82.  #if !defined(__SC__) && !defined(LINUX)
  83.  E long NDECL(random);
  84.  #endif
  85.  #if (!defined(SUNOS4) && !defined(bsdi) && !defined(__FreeBSD__)) \
  86.      || defined(RANDOM)
  87.  E void FDECL(srandom, (unsigned int));
  88.  #else
  89.  #if !defined(bsdi) && !defined(__FreeBSD__)
  90.  E int FDECL(srandom, (unsigned int));
  91.  #endif
  92.  #endif
  93.  #else
  94.  E long lrand48();
  95.  E void srand48();
  96.  #endif /* BSD || ULTRIX || RANDOM */
  97.  
  98.  #if !defined(BSD) || defined(ultrix)
  99.  /* real BSD wants all these to return int */
  100.  #ifndef MICRO
  101.  E void FDECL(exit, (int));
  102.  #endif /* MICRO */
  103.  /* compensate for some CSet/2 bogosities */
  104.  #if defined(OS2_CSET2) && defined(OS2_CSET2_VER_2)
  105.  #define open _open
  106.  #define close _close
  107.  #define read _read
  108.  #define write _write
  109.  #define lseek _lseek
  110.  #define chdir _chdir
  111.  #define getcwd _getcwd
  112.  #define setmode _setmode
  113.  #endif /* OS2_CSET2 && OS2_CSET2_VER_2 */
  114.         /* If flex thinks that we're not __STDC__ it declares free() to return
  115.            int and we die.  We must use __STDC__ instead of NHSTDC because
  116.            the former is naturally what flex tests for. */
  117.  #if defined(__STDC__) || !defined(FLEX_SCANNER)
  118.  #ifndef OS2_CSET2
  119.  #ifndef MONITOR_HEAP
  120.  E void FDECL(free, (genericptr_t));
  121.  #endif
  122.  #endif
  123.  #endif
  124.  #if !defined(__SASC_60) && !defined(_DCC) && !defined(__SC__)
  125.  #if defined(AMIGA) && !defined(AZTEC_50) && !defined(__GNUC__)
  126.  E int FDECL(perror, (const char *));
  127.  #else
  128.  #if !(defined(ULTRIX_PROTO) && defined(__GNUC__))
  129.  E void FDECL(perror, (const char *));
  130.  #endif
  131.  #endif
  132.  #endif
  133.  #endif
  134.  #ifndef NeXT
  135.  #ifdef POSIX_TYPES
  136.  E void FDECL(qsort, (genericptr_t, size_t, size_t,
  137.                       int (*)(const genericptr, const genericptr)));
  138.  #else
  139.  #if defined(BSD) || defined(ULTRIX)
  140.  E int qsort();
  141.  #else
  142.  #if !defined(LATTICE) && !defined(AZTEC_50)
  143.  E void FDECL(qsort, (genericptr_t, size_t, size_t,
  144.                       int (*)(const genericptr, const genericptr)));
  145.  #endif
  146.  #endif
  147.  #endif
  148.  #endif /* NeXT */
  149.  
  150.  #ifndef __SASC_60
  151.  #if !defined(AZTEC_50) && !defined(__GNUC__)
  152.  /* may already be defined */
  153.  
  154.  #ifdef ULTRIX
  155.  #ifdef ULTRIX_PROTO
  156.  E int FDECL(lseek, (int, off_t, int));
  157.  #else
  158.  E long FDECL(lseek, (int, off_t, int));
  159.  #endif
  160.  /* Ultrix 3.0 man page mistakenly says it returns an int. */
  161.  E int FDECL(write, (int, char *, int));
  162.  E int FDECL(link, (const char *, const char *));
  163.  #else
  164.  #ifndef bsdi
  165.  E long FDECL(lseek, (int, long, int));
  166.  #endif
  167.  #if defined(POSIX_TYPES) || defined(__TURBOC__)
  168.  #ifndef bsdi
  169.  E int FDECL(write, (int, const void *, unsigned));
  170.  #endif
  171.  #else
  172.  #ifndef __MWERKS__ /* metrowerks defines write via universal headers */
  173.  E int FDECL(write, (int, genericptr_t, unsigned));
  174.  #endif
  175.  #endif
  176.  #endif /* ULTRIX */
  177.  
  178.  #ifdef OS2_CSET2 /* IBM CSet/2 */
  179.  #ifdef OS2_CSET2_VER_1
  180.  E int FDECL(unlink, (char *));
  181.  #else
  182.  E int FDECL(unlink, (const char *)); /* prototype is ok in ver >= 2 */
  183.  #endif
  184.  #else
  185.  #ifndef __SC__
  186.  E int FDECL(unlink, (const char *));
  187.  #endif
  188.  #endif
  189.  
  190.  #endif /* AZTEC_50 && __GNUC__ */
  191.  
  192.  #ifdef MAC
  193.  #ifndef __CONDITIONALMACROS__          /* universal headers */
  194.  E int FDECL(close, (int));             /* unistd.h */
  195.  E int FDECL(read, (int, char *, int)); /* unistd.h */
  196.  E int FDECL(chdir, (const char *));    /* unistd.h */
  197.  E char *FDECL(getcwd, (char *, int));  /* unistd.h */
  198.  #endif
  199.  
  200.  E int FDECL(open, (const char *, int));
  201.  #endif
  202.  
  203.  #if defined(MICRO)
  204.  E int FDECL(close, (int));
  205.  #ifndef __EMX__
  206.  E int FDECL(read, (int, genericptr_t, unsigned int));
  207.  #endif
  208.  E int FDECL(open, (const char *, int, ...));
  209.  E int FDECL(dup2, (int, int));
  210.  E int FDECL(setmode, (int, int));
  211.  E int NDECL(kbhit);
  212.  #if !defined(_DCC)
  213.  #if defined(__TURBOC__)
  214.  E int FDECL(chdir, (const char *));
  215.  #else
  216.  #ifndef __EMX__
  217.  E int FDECL(chdir, (char *));
  218.  #endif
  219.  #endif
  220.  #ifndef __EMX__
  221.  E char *FDECL(getcwd, (char *, int));
  222.  #endif
  223.  #endif /* !_DCC */
  224.  #endif
  225.  
  226.  #ifdef ULTRIX
  227.  E int FDECL(close, (int));
  228.  E int FDECL(atoi, (const char *));
  229.  E long FDECL(atol, (const char *));
  230.  E int FDECL(chdir, (const char *));
  231.  #if !defined(ULTRIX_CC20) && !defined(__GNUC__)
  232.  E int FDECL(chmod, (const char *, int));
  233.  E mode_t FDECL(umask, (int));
  234.  #endif
  235.  E int FDECL(read, (int, genericptr_t, unsigned));
  236.  /* these aren't quite right, but this saves including lots of system files */
  237.  E int FDECL(stty, (int, genericptr_t));
  238.  E int FDECL(gtty, (int, genericptr_t));
  239.  E int FDECL(ioctl, (int, int, char *));
  240.  E int FDECL(isatty, (int)); /* 1==yes, 0==no, -1==error */
  241.  #include <sys/file.h>
  242.  #if defined(ULTRIX_PROTO) || defined(__GNUC__)
  243.  E int NDECL(fork);
  244.  #else
  245.  E long NDECL(fork);
  246.  #endif
  247.  #endif /* ULTRIX */
  248.  
  249.  #ifdef VMS
  250.  #ifndef abs
  251.  E int FDECL(abs, (int));
  252.  #endif
  253.  E int FDECL(atexit, (void (*)(void)));
  254.  E int FDECL(atoi, (const char *));
  255.  E long FDECL(atol, (const char *));
  256.  E int FDECL(chdir, (const char *));
  257.  E int FDECL(chown, (const char *, unsigned, unsigned));
  258.  #ifdef __DECC_VER
  259.  E int FDECL(chmod, (const char *, mode_t));
  260.  E mode_t FDECL(umask, (mode_t));
  261.  #else
  262.  E int FDECL(chmod, (const char *, int));
  263.  E int FDECL(umask, (int));
  264.  #endif
  265.  /* #include <unixio.h> */
  266.  E int FDECL(close, (int));
  267.  E int VDECL(creat, (const char *, unsigned, ...));
  268.  E int FDECL(delete, (const char *));
  269.  E int FDECL(fstat, (/*_ int, stat_t * _*/));
  270.  E int FDECL(isatty, (int)); /* 1==yes, 0==no, -1==error */
  271.  E long FDECL(lseek, (int, long, int));
  272.  E int VDECL(open, (const char *, int, unsigned, ...));
  273.  E int FDECL(read, (int, genericptr_t, unsigned));
  274.  E int FDECL(rename, (const char *, const char *));
  275.  E int FDECL(stat, (/*_ const char *,stat_t * _*/));
  276.  E int FDECL(write, (int, const genericptr, unsigned));
  277.  #endif
  278.  
  279.  #endif /* __SASC_60 */
  280.  
  281.  /* both old & new versions of Ultrix want these, but real BSD does not */
  282.  #ifdef ultrix
  283.  E void abort();
  284.  E void bcopy();
  285.  #ifdef ULTRIX
  286.  E int FDECL(system, (const char *));
  287.  #ifndef _UNISTD_H_
  288.  E int FDECL(execl, (const char *, ...));
  289.  #endif
  290.  #endif
  291.  #endif
  292.  #ifdef MICRO
  293.  E void NDECL(abort);
  294.  E void FDECL(_exit, (int));
  295.  E int FDECL(system, (const char *));
  296.  #endif
  297.  #if defined(HPUX) && !defined(_POSIX_SOURCE)
  298.  E long NDECL(fork);
  299.  #endif
  300.  
  301.  #ifdef POSIX_TYPES
  302.  /* The POSIX string.h is required to define all the mem* and str* functions */
  303.  #include <string.h>
  304.  #else
  305.  #if defined(SYSV) || defined(VMS) || defined(MAC) || defined(SUNOS4)
  306.  #if defined(NHSTDC) || (defined(VMS) && !defined(ANCIENT_VAXC))
  307.  #if !defined(_AIX32) && !(defined(SUNOS4) && defined(__STDC__))
  308.  /* Solaris unbundled cc (acc) */
  309.  E int FDECL(memcmp, (const void *, const void *, size_t));
  310.  E void *FDECL(memcpy, (void *, const void *, size_t));
  311.  E void *FDECL(memset, (void *, int, size_t));
  312.  #endif
  313.  #else
  314.  #ifndef memcmp /* some systems seem to macro these back to b*() */
  315.  E int memcmp();
  316.  #endif
  317.  #ifndef memcpy
  318.  E char *memcpy();
  319.  #endif
  320.  #ifndef memset
  321.  E char *memset();
  322.  #endif
  323.  #endif
  324.  #else
  325.  #ifdef HPUX
  326.  E int FDECL(memcmp, (char *, char *, int));
  327.  E void *FDECL(memcpy, (char *, char *, int));
  328.  E void *FDECL(memset, (char *, int, int));
  329.  #endif
  330.  #endif
  331.  #endif /* POSIX_TYPES */
  332.  
  333.  #if defined(MICRO) && !defined(LATTICE)
  334.  #if defined(TOS) && defined(__GNUC__)
  335.  E int FDECL(memcmp, (const void *, const void *, size_t));
  336.  E void *FDECL(memcpy, (void *, const void *, size_t));
  337.  E void *FDECL(memset, (void *, int, size_t));
  338.  #else
  339.  #if defined(AZTEC_50) || defined(NHSTDC) || defined(WIN32)
  340.  E int FDECL(memcmp, (const void *, const void *, size_t));
  341.  E void *FDECL(memcpy, (void *, const void *, size_t));
  342.  E void *FDECL(memset, (void *, int, size_t));
  343.  #else
  344.  E int FDECL(memcmp, (char *, char *, unsigned int));
  345.  E char *FDECL(memcpy, (char *, char *, unsigned int));
  346.  E char *FDECL(memset, (char *, int, int));
  347.  #endif /* AZTEC_50 || NHSTDC */
  348.  #endif /* TOS */
  349.  #endif /* MICRO */
  350.  
  351.  #if defined(BSD) && defined(ultrix) /* i.e., old versions of Ultrix */
  352.  E void sleep();
  353.  #endif
  354.  #if defined(ULTRIX) || defined(SYSV)
  355.  E unsigned sleep();
  356.  #endif
  357.  #if defined(HPUX)
  358.  E unsigned int FDECL(sleep, (unsigned int));
  359.  #endif
  360.  #ifdef VMS
  361.  E int FDECL(sleep, (unsigned));
  362.  #endif
  363.  
  364.  E char *FDECL(getenv, (const char *));
  365.  E char *getlogin();
  366.  #if defined(HPUX) && !defined(_POSIX_SOURCE)
  367.  E long NDECL(getuid);
  368.  E long NDECL(getgid);
  369.  E long NDECL(getpid);
  370.  #else
  371.  #ifdef POSIX_TYPES
  372.  E pid_t NDECL(getpid);
  373.  E uid_t NDECL(getuid);
  374.  E gid_t NDECL(getgid);
  375.  #ifdef VMS
  376.  E pid_t NDECL(getppid);
  377.  #endif
  378.  #else          /*!POSIX_TYPES*/
  379.  #ifndef getpid /* Borland C defines getpid() as a macro */
  380.  E int NDECL(getpid);
  381.  #endif
  382.  #ifdef VMS
  383.  E int NDECL(getppid);
  384.  E unsigned NDECL(getuid);
  385.  E unsigned NDECL(getgid);
  386.  #endif
  387.  #if defined(ULTRIX) && !defined(_UNISTD_H_)
  388.  E unsigned NDECL(getuid);
  389.  E unsigned NDECL(getgid);
  390.  E int FDECL(setgid, (int));
  391.  E int FDECL(setuid, (int));
  392.  #endif
  393.  #endif /*?POSIX_TYPES*/
  394.  #endif /*?(HPUX && !_POSIX_SOURCE)*/
  395.  
  396.  /* add more architectures as needed */
  397.  #if defined(HPUX)
  398.  #define seteuid(x) setreuid(-1, (x));
  399.  #endif
  400.  
  401.  /*# string(s).h #*/
  402.  #if !defined(_XtIntrinsic_h) && !defined(POSIX_TYPES)
  403.  /* <X11/Intrinsic.h> #includes <string[s].h>; so does defining POSIX_TYPES */
  404.  
  405.  #if (defined(ULTRIX) || defined(NeXT)) && defined(__GNUC__)
  406.  #include <strings.h>
  407.  #else
  408.  E char *FDECL(strcpy, (char *, const char *));
  409.  E char *FDECL(strncpy, (char *, const char *, size_t));
  410.  E char *FDECL(strcat, (char *, const char *));
  411.  E char *FDECL(strncat, (char *, const char *, size_t));
  412.  E char *FDECL(strpbrk, (const char *, const char *));
  413.  
  414.  #if defined(SYSV) || defined(MICRO) || defined(MAC) || defined(VMS) \
  415.      || defined(HPUX)
  416.  E char *FDECL(strchr, (const char *, int));
  417.  E char *FDECL(strrchr, (const char *, int));
  418.  #else /* BSD */
  419.  E char *FDECL(index, (const char *, int));
  420.  E char *FDECL(rindex, (const char *, int));
  421.  #endif
  422.  
  423.  E int FDECL(strcmp, (const char *, const char *));
  424.  E int FDECL(strncmp, (const char *, const char *, size_t));
  425.  #if defined(MICRO) || defined(MAC) || defined(VMS)
  426.  E size_t FDECL(strlen, (const char *));
  427.  #else
  428.  #ifdef HPUX
  429.  E unsigned int FDECL(strlen, (char *));
  430.  #else
  431.  #if !(defined(ULTRIX_PROTO) && defined(__GNUC__))
  432.  E int FDECL(strlen, (const char *));
  433.  #endif
  434.  #endif /* HPUX */
  435.  #endif /* MICRO */
  436.  #endif /* ULTRIX */
  437.  
  438.  #endif /* !_XtIntrinsic_h_ && !POSIX_TYPES */
  439.  
  440.  #if defined(ULTRIX) && defined(__GNUC__)
  441.  E char *FDECL(index, (const char *, int));
  442.  E char *FDECL(rindex, (const char *, int));
  443.  #endif
  444.  
  445.  /* Old varieties of BSD have char *sprintf().
  446.   * Newer varieties of BSD have int sprintf() but allow for the old char *.
  447.   * Several varieties of SYSV and PC systems also have int sprintf().
  448.   * If your system doesn't agree with this breakdown, you may want to change
  449.   * this declaration, especially if your machine treats the types differently.
  450.   * If your system defines sprintf, et al, in stdio.h, add to the initial
  451.   * #if.
  452.   */
  453.  #if defined(ULTRIX) || defined(__DECC) || defined(__SASC_60) || defined(WIN32)
  454.  #define SPRINTF_PROTO
  455.  #endif
  456.  #if (defined(SUNOS4) && defined(__STDC__)) || defined(_AIX32)
  457.  #define SPRINTF_PROTO
  458.  #endif
  459.  #if defined(TOS) || defined(AZTEC_50) || defined(__sgi) || defined(__GNUC__)
  460.  /* problem with prototype mismatches */
  461.  #define SPRINTF_PROTO
  462.  #endif
  463.  #if defined(__MWERKS__) || defined(__SC__)
  464.  /* Metrowerks already has a prototype for sprintf() */
  465.  #define SPRINTF_PROTO
  466.  #endif
  467.  
  468.  #ifndef SPRINTF_PROTO
  469.  #if defined(POSIX_TYPES) || defined(DGUX) || defined(NeXT) || !defined(BSD)
  470.  E int FDECL(sprintf, (char *, const char *, ...));
  471.  #else
  472.  #define OLD_SPRINTF
  473.  E char *sprintf();
  474.  #endif
  475.  #endif
  476.  #ifdef SPRINTF_PROTO
  477.  #undef SPRINTF_PROTO
  478.  #endif
  479.  
  480.  #ifndef __SASC_60
  481.  #ifdef NEED_VARARGS
  482.  #if defined(USE_STDARG) || defined(USE_VARARGS)
  483.  #if !defined(SVR4) && !defined(apollo)
  484.  #if !(defined(ULTRIX_PROTO) && defined(__GNUC__))
  485.  #if !(defined(SUNOS4) && defined(__STDC__)) /* Solaris unbundled cc (acc) */
  486.  E int FDECL(vsprintf, (char *, const char *, va_list));
  487.  E int FDECL(vfprintf, (FILE *, const char *, va_list));
  488.  E int FDECL(vprintf, (const char *, va_list));
  489.  #endif
  490.  #endif
  491.  #endif
  492.  #else
  493.  #ifdef vprintf
  494.  #undef vprintf
  495.  #endif
  496.  #define vprintf printf
  497.  #ifdef vfprintf
  498.  #undef vfprintf
  499.  #endif
  500.  #define vfprintf fprintf
  501.  #ifdef vsprintf
  502.  #undef vsprintf
  503.  #endif
  504.  #define vsprintf sprintf
  505.  #endif
  506.  #endif /* NEED_VARARGS */
  507.  #endif
  508.  
  509.  #ifdef MICRO
  510.  E int FDECL(tgetent, (const char *, const char *));
  511.  E void FDECL(tputs, (const char *, int, int (*)()));
  512.  E int FDECL(tgetnum, (const char *));
  513.  E int FDECL(tgetflag, (const char *));
  514.  E char *FDECL(tgetstr, (const char *, char **));
  515.  E char *FDECL(tgoto, (const char *, int, int));
  516.  #else
  517.  #if !(defined(HPUX) && defined(_POSIX_SOURCE))
  518.  E int FDECL(tgetent, (char *, const char *));
  519.  E void FDECL(tputs, (const char *, int, int (*)()));
  520.  #endif
  521.  E int FDECL(tgetnum, (const char *));
  522.  E int FDECL(tgetflag, (const char *));
  523.  E char *FDECL(tgetstr, (const char *, char **));
  524.  E char *FDECL(tgoto, (const char *, int, int));
  525.  #endif
  526.  
  527.  #if defined(ALLOC_C) || defined(MAKEDEFS_C)
  528.  E genericptr_t FDECL(malloc, (size_t));
  529.  E genericptr_t FDECL(realloc, (genericptr_t, size_t));
  530.  #endif
  531.  
  532.  /* time functions */
  533.  
  534.  #ifndef LATTICE
  535.  #if !(defined(ULTRIX_PROTO) && defined(__GNUC__))
  536.  E struct tm *FDECL(localtime, (const time_t *));
  537.  #endif
  538.  #endif
  539.  
  540.  #if defined(ULTRIX) || (defined(BSD) && defined(POSIX_TYPES))          \
  541.      || defined(SYSV) || defined(MICRO) || defined(VMS) || defined(MAC) \
  542.      || (defined(HPUX) && defined(_POSIX_SOURCE))
  543.  E time_t FDECL(time, (time_t *));
  544.  #else
  545.  E long FDECL(time, (time_t *));
  546.  #endif /* ULTRIX */
  547.  
  548.  #ifdef VMS
  549.  /* used in makedefs.c, but missing from gcc-vms's <time.h> */
  550.  E char *FDECL(ctime, (const time_t *));
  551.  #endif
  552.  
  553.  #ifdef MICRO
  554.  #ifdef abs
  555.  #undef abs
  556.  #endif
  557.  E int FDECL(abs, (int));
  558.  #ifdef atoi
  559.  #undef atoi
  560.  #endif
  561.  E int FDECL(atoi, (const char *));
  562.  #endif
  563.  
  564.  #undef E
  565.  
  566.  #endif /*  !__cplusplus && !__GO32__ */
  567.  
  568.  #endif /* SYSTEM_H */