OSDN Git Service

no bone
[nethackexpress/trunk.git] / include / vmsconf.h
1 /*      SCCS Id: @(#)vmsconf.h  3.4     2003/05/19      */
2 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
3 /* NetHack may be freely redistributed.  See license for details. */
4
5 #ifdef VMS
6 #ifndef VMSCONF_H
7 #define VMSCONF_H
8
9 /*
10  * Edit these to choose values appropriate for your site.
11  * WIZARD is the username allowed to use the debug option of nethack; no harm
12  *   is done by leaving it as a username that doesn't exist at your site.
13  * HACKDIR can be overridden at run-time with the logical name HACKDIR, as in
14  *   $ define hackdir disk$users:[games.nethack]
15  * Trailing NULs are present in the default values in order to make some
16  *   extra room for patching longer values into an existing executable.
17  */
18 #define Local_WIZARD    "NHWIZARD\0\0\0\0"
19 #define Local_HACKDIR   "DISK$USERS:[GAMES.NETHACK.3_4_X.PLAY]\0\0\0\0\0\0\0\0"
20
21 /*
22  * This section cleans up the stuff done in config.h so that it
23  * shouldn't need to be modified.  It's conservative so that if
24  * config.h is actually edited, the changes won't impact us.
25  */
26 #ifdef UNIX
27 # undef UNIX
28 #endif
29 #ifdef HACKDIR
30 # undef HACKDIR
31 #endif
32 #ifdef WIZARD
33 # undef WIZARD
34 #endif
35 #ifdef WIZARD_NAME
36 # undef WIZARD_NAME
37 #endif
38 #define HACKDIR Local_HACKDIR
39 #ifndef KR1ED
40 # define WIZARD Local_WIZARD
41 # define WIZARD_NAME WIZARD
42 #else
43 # define WIZARD 1
44 # define WIZARD_NAME Local_WIZARD
45 #endif
46
47 /* filenames require punctuation to avoid redirection via logical names */
48 #undef RECORD
49 #define RECORD  "record;1"      /* scoreboard file (retains high scores) */
50 #undef LOGFILE
51 #define LOGFILE "logfile;0"     /* optional file (records all games) */
52
53 #define HLOCK   "perm;1"        /* an empty file used for locking purposes */
54
55 /* want compression--for level & save files--performed within NetHack itself */
56 #ifdef COMPRESS
57 # undef COMPRESS
58 #endif
59 #ifndef INTERNAL_COMP
60 # define INTERNAL_COMP
61 #endif
62
63 /*
64  * If nethack.exe will be installed with privilege so that the playground
65  * won't need to be left unprotected, define SECURE to suppress a couple
66  * of file protection fixups (protection of bones files and ownership of
67  * save files).
68  */
69 /* #define SECURE */
70
71 /*
72  * Put the readonly data files into a single container rather than into
73  * separate files in the playground directory.
74  */
75 #define DLB     /* use data librarian code */
76
77 /*
78  * You may define TEXTCOLOR if your system has any terminals that recognize
79  * ANSI color sequences of the form ``<ESCAPE>[#;#m'', where the first # is
80  * a number between 40 and 47 represented background color, and the second
81  * # is a number between 30 and 37 representing the foreground color.
82  * GIGI terminals and DECterm windows on color VAXstations support these
83  * color escape sequences, as do some 3rd party terminals and many micro
84  * computers.
85  */
86 /* #define TEXTCOLOR */
87
88 /*
89  * If you define USE_QIO_INPUT, then you'll get raw characters from the
90  * keyboard, not unlike those of the unix version of Nethack.  This will
91  * allow you to use the Escape key in normal gameplay, and the appropriate
92  * control characters in Wizard mode.  It will work most like the unix version.
93  * It will also avoid "<interrupt>" being displayed when ^Y is pressed.
94  *
95  * Otherwise, the VMS SMG calls will be used.  These calls block use of
96  * the escape key, as well as certain control keys, so gameplay is not
97  * the same, although the differences are fairly negligible.  You must
98  * then use a VTxxx function key or two <escape>s to give an ESC response.
99  */
100 #define USE_QIO_INPUT   /* use SYS$QIOW instead of SMG$READ_KEYSTROKE */
101
102 /*
103  * Allow the user to decide whether to pause via timer or excess screen
104  * output for various display effects like explosions and moving objects.
105  */
106 #define TIMED_DELAY     /* enable the `timed_delay' run-time option */
107
108 /*
109  * If you define MAIL, then NetHack will capture incoming broadcast
110  * messages such as "New mail from so-and-so" and "Print job completed,"
111  * and then deliver them to the player.  For mail and phone broadcasts
112  * a scroll of mail will be created, which when read will cause NetHack
113  * to prompt the player for a command to spawn in order to respond.  The
114  * latter capability will not be available if SHELL is disabled below.
115  * If you undefine MAIL, broadcasts will go straight to the terminal,
116  * resulting in disruption of the screen display; use <ctrl/R> to redraw.
117  */
118 #define MAIL            /* enable broadcast trapping */
119
120 /*
121  * SHELL enables the player to 'escape' into a spawned subprocess via
122  * the '!' command.  Logout or attach back to the parent to resume play.
123  * If the player attaches back to NetHack, then a subsequent escape will
124  * re-attach to the existing subprocess.  Any such subprocess left over
125  * at game exit will be deleted by an exit handler.
126  * SUSPEND enables someone running NetHack in a subprocess to reconnect
127  * to the parent process with the <ctrl/Z> command; this is not very
128  * close to Unix job control, but it's better than nothing.
129  */
130 #define SHELL           /* do not delete the '!' command */
131 #define SUSPEND         /* don't delete the ^Z command, such as it is */
132
133 #define RANDOM          /* use sys/share/random.c instead of vaxcrtl rand */
134
135 #define FCMASK  0660    /* file creation mask */
136
137
138 /*
139  * The remainder of the file should not need to be changed.
140  */
141
142 /* data librarian defs */
143 #ifdef DLB
144 # define DLBFILE        "nh-data.dlb"
145         /*
146          * Since we can do without case insensitive filename comparison,
147          * avoid enabling it because that requires compiling and linking
148          * src/hacklib into util/dlb_main.
149          */
150 /* # define FILENAME_CMP strcmpi */     /* case insensitive */
151 #endif
152
153 #if defined(VAXC) && !defined(ANCIENT_VAXC)
154 # ifdef volatile
155 #  undef volatile
156 # endif
157 # ifdef const
158 #  undef const
159 # endif
160 #endif
161
162 #ifdef __DECC
163 # define STRICT_REF_DEF /* used in lev_main.c */
164 #endif
165 #ifdef STRICT_REF_DEF
166 # define DEFINE_OSPEED
167 #endif
168
169 #ifndef alloca
170         /* bison generated foo_yacc.c might try to use alloca() */
171 # ifdef __GNUC__
172 #  define alloca __builtin_alloca
173 # else
174 #  define ALLOCA_HACK   /* used in util/panic.c */
175 # endif
176 #endif
177
178 #ifdef _DECC_V4_SOURCE
179 /* <types.h> excludes some necessary typedefs when _DECC_V4_SOURCE is defined */
180 #include <types.h>
181 # ifndef __PID_T
182 # define __PID_T
183 typedef __pid_t pid_t;
184 # endif
185 # ifndef __UID_T
186 # define __UID_T
187 typedef __uid_t uid_t;
188 # endif
189 # ifndef __GID_T
190 # define __GID_T
191 typedef __gid_t gid_t;
192 # endif
193 # ifndef __MODE_T
194 # define __MODE_T
195 typedef __mode_t mode_t;
196 # endif
197 #endif  /* _DECC_V4_SOURCE */
198
199 #include <time.h>
200 #if 0   /* <file.h> is missing for old gcc versions; skip it to save time */
201 #include <file.h>
202 #else   /* values needed from missing include file */
203 # define O_RDONLY 0
204 # define O_WRONLY 1
205 # define O_RDWR   2
206 # define O_CREAT 0x200
207 # define O_TRUNC 0x400
208 #endif
209
210 #ifndef REDO
211 # define Getchar nhgetch
212 #endif
213 #define tgetch vms_getchar
214
215 #include "system.h"
216
217 #define index   strchr
218 #define rindex  strrchr
219
220 /* Use the high quality random number routines. */
221 #if defined(RANDOM)
222 #define Rand()  random()
223 /* VMS V7 adds these entry points to DECC$SHR; stick with the nethack-supplied
224    code to avoid having to deal with version-specific conditionalized builds */
225 #define random          nh_random
226 #define srandom         nh_srandom
227 #define initstate       nh_initstate
228 #define setstate        nh_setstate
229 #else
230 #define Rand()  rand()
231 #endif
232
233 #ifndef __GNUC__
234 # ifndef bcopy
235 #define bcopy(s,d,n)    memcpy((d),(s),(n))     /* vaxcrtl */
236 # endif
237 #endif
238 #define abort()         vms_abort()             /* vmsmisc.c */
239 #define creat(f,m)      vms_creat(f,m)          /* vmsfiles.c */
240 #define exit(sts)       vms_exit(sts)           /* vmsmisc.c */
241 #define getuid()        vms_getuid()            /* vmsunix.c */
242 #define link(f1,f2)     vms_link(f1,f2)         /* vmsfiles.c */
243 #define open(f,k,m)     vms_open(f,k,m)         /* vmsfiles.c */
244 /* #define unlink(f0)   vms_unlink(f0)          /* vmsfiles.c */
245 #ifdef VERYOLD_VMS
246 #define unlink(f0)      delete(f0)              /* vaxcrtl */
247 #else
248 #define unlink(f0)      remove(f0)              /* vaxcrtl, decc$shr */
249 #endif
250 #define C$$TRANSLATE(n) c__translate(n)         /* vmsfiles.c */
251
252 /* VMS global names are case insensitive... */
253 #define An vms_an
254 #define The vms_the
255 #define Shk_Your vms_shk_your
256
257 /* avoid global symbol in Alpha/VMS V1.5 STARLET library (link trouble) */
258 #define ospeed vms_ospeed
259
260 /* used in several files which don't #include "extern.h" */
261 extern void FDECL(vms_exit, (int));
262 extern int FDECL(vms_open, (const char *,int,unsigned));
263
264 #endif  /* VMSCONF_H */
265 #endif  /* VMS */