Wikihack
Advertisement

Below is the full text to include/system.h from NetHack 3.4.3. To link to a particular line, write [[system.h#line123]], for example.

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