Commit | Line | Data |
---|---|---|
9b71f02b | 1 | /* system description header for VMS |
4b158629 GM |
2 | Copyright (C) 1986, 2001, 2002, 2003, 2004, 2005, 2006, 2007, |
3 | 2008 Free Software Foundation, Inc. | |
9b71f02b JB |
4 | |
5 | This file is part of GNU Emacs. | |
6 | ||
4b158629 | 7 | GNU Emacs is free software: you can redistribute it and/or modify |
9b71f02b | 8 | it under the terms of the GNU General Public License as published by |
4b158629 GM |
9 | the Free Software Foundation, either version 3 of the License, or |
10 | (at your option) any later version. | |
9b71f02b JB |
11 | |
12 | GNU Emacs is distributed in the hope that it will be useful, | |
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | GNU General Public License for more details. | |
16 | ||
17 | You should have received a copy of the GNU General Public License | |
4b158629 | 18 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ |
9b71f02b JB |
19 | |
20 | /* | |
21 | * Define symbols to identify the version of Unix this is. | |
22 | * Define all the symbols that apply correctly. | |
23 | */ | |
24 | ||
25 | #ifndef VMS /* Decus cpp doesn't define this but VAX C does */ | |
26 | #define VMS | |
27 | #endif /* VMS */ | |
28 | /* Note that this file is used indirectly via vms4-0.h, or some other | |
29 | such file. These other files define a symbol VMS4_0, VMS4_2, etc. */ | |
30 | ||
31 | /* SYSTEM_TYPE should indicate the kind of system you are using. | |
32 | It sets the Lisp variable system-type. */ | |
33 | ||
34 | #define SYSTEM_TYPE "vax-vms" | |
35 | ||
9b71f02b JB |
36 | /* Letter to use in finding device name of first pty, |
37 | if system supports pty's. 'a' means it is /dev/ptya0 */ | |
38 | ||
39 | #define FIRST_PTY_LETTER 'a' | |
40 | ||
9b71f02b JB |
41 | /* |
42 | * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate | |
43 | * The 4.2 opendir, etc., library functions. | |
44 | */ | |
45 | ||
46 | #define NONSYSTEM_DIR_LIBRARY | |
47 | ||
9b71f02b JB |
48 | /* Define the maximum record length for print strings, if needed. */ |
49 | ||
50 | #define MAX_PRINT_CHARS 300 | |
51 | ||
52 | \f | |
53 | /* Here, on a separate page, add any special hacks needed | |
54 | to make Emacs work on this system. For example, | |
55 | you might define certain system call names that don't | |
56 | exist on your system, or that do different things on | |
57 | your system and must be used only through an encapsulation | |
58 | (Which you should place, by convention, in sysdep.c). */ | |
59 | ||
dd546597 TTN |
60 | /* In olden days, VMS filenames did not support hyphen (i.e., the "-" |
61 | character). You can #undef this in vmsX-Y.h for newer versions. */ | |
62 | ||
63 | #define NO_HYPHENS_IN_FILENAMES | |
64 | ||
743a28c6 | 65 | /* Do you have the sharable library bug? If you link with a sharable |
9b71f02b JB |
66 | library that contains psects with the NOSHR attribute and also refer to |
67 | those psects in your program, the linker give you a private version of | |
743a28c6 | 68 | the psect which is not related to the version used by the sharable |
9b71f02b JB |
69 | library. The end result is that your references to variables in that |
70 | psect have absolutely nothing to do with library references to what is | |
71 | supposed to be the same variable. If you intend to link with the standard | |
743a28c6 | 72 | C library (NOT the sharable one) you don't need to define this. (This |
9b71f02b JB |
73 | is NOT fixed in V4.4...) */ |
74 | ||
743a28c6 | 75 | #define SHARABLE_LIB_BUG |
9b71f02b JB |
76 | |
77 | /* Partially due to the above mentioned bug and also so that we don't need | |
743a28c6 | 78 | to require that people have a sharable C library, the default for Emacs |
9b71f02b JB |
79 | is to link with the non-shared library. If you want to link with the |
80 | shared library, define this and remake xmakefile and fileio.c. This allows | |
81 | us to ship a guaranteed executable image. */ | |
82 | ||
83 | #define LINK_CRTL_SHARE | |
84 | ||
85 | /* Define this if you want to read the file SYS$SYSTEM:SYSUAF.DAT for user | |
177c0ea7 | 86 | information. If you do use this, you must either make SYSUAF.DAT world |
9b71f02b JB |
87 | readable or install Emacs with SYSPRV. */ |
88 | ||
89 | /* #define READ_SYSUAF */ | |
90 | ||
f56ced44 TTN |
91 | /* Traditionally, filenames on VMS are always upper case. */ |
92 | ||
93 | #define FILE_SYSTEM_CASE Fupcase | |
94 | ||
9b71f02b JB |
95 | /* On VMS these have a different name */ |
96 | ||
97 | #define index strchr | |
98 | #define rindex strrchr | |
99 | #define unlink delete | |
05c53e7c | 100 | |
bdee2ef3 | 101 | #ifndef __GNUC__ |
05c53e7c | 102 | extern double mth$dmod(double, double); |
05c53e7c JB |
103 | #endif |
104 | ||
743a28c6 | 105 | /* Some time routines are missing in the VAX C RTL, or needs some |
05c53e7c JB |
106 | extra bit of code */ |
107 | #define tzset sys_tzset | |
108 | #define localtime sys_localtime | |
109 | #define gmtime sys_gmtime | |
110 | ||
9b71f02b JB |
111 | /* On later versions of VMS these exist in the C run time library, but |
112 | we are using our own implementations. Hide their names to avoid | |
113 | linker errors */ | |
114 | #define rename sys_rename | |
115 | #define execvp sys_execvp | |
116 | #define system sys_system | |
117 | ||
05c53e7c | 118 | #ifndef GNU_MALLOC |
9b71f02b JB |
119 | /* Hide these names so that we don't get linker errors */ |
120 | #define malloc sys_malloc | |
121 | #define free sys_free | |
122 | #define realloc sys_realloc | |
123 | #define calloc sys_calloc | |
124 | ||
125 | /* Don't use the standard brk and sbrk */ | |
126 | #define sbrk sys_sbrk | |
127 | #define brk sys_brk | |
05c53e7c | 128 | #endif |
9b71f02b JB |
129 | |
130 | /* On VMS we want to avoid reading and writing very large amounts of | |
131 | data at once, so we redefine read and write here. */ | |
132 | ||
133 | #define read sys_read | |
134 | #define write sys_write | |
135 | ||
136 | /* sys_creat just calls the real creat with additional args of | |
137 | "rfm=var", "rat=cr" to get "normal" VMS files... */ | |
138 | #define creat sys_creat | |
139 | ||
140 | /* fwrite forces an RMS PUT on every call. This is abysmally slow, so | |
141 | we emulate fwrite with fputc, which forces buffering and is much | |
142 | faster! */ | |
143 | #define fwrite sys_fwrite | |
144 | ||
145 | /* getuid only returns the member number, which is not unique on most VMS | |
146 | systems. We emulate it with (getgid()<<16 | getuid()). */ | |
147 | #define getuid sys_getuid | |
148 | ||
149 | /* If user asks for TERM, check first for EMACS_TERM. */ | |
150 | #define getenv sys_getenv | |
177c0ea7 | 151 | |
9b71f02b JB |
152 | /* Standard C abort is less useful than it should be. */ |
153 | #define abort sys_abort | |
154 | ||
155 | /* Case conflicts with C library fread. */ | |
156 | #define Fread F_read | |
157 | ||
158 | /* Case conflicts with C library srandom. */ | |
159 | #define Srandom S_random | |
160 | ||
161 | /* Cause initialization of vmsfns.c to be run. */ | |
162 | #define SYMS_SYSTEM syms_of_vmsfns () | |
163 | ||
743a28c6 | 164 | /* VAXCRTL access doesn't deal with SYSPRV very well (among other oddities...) |
9b71f02b JB |
165 | Here, we use $CHKPRO to really determine access. */ |
166 | #define access sys_access | |
167 | ||
168 | #define PAGESIZE 512 | |
169 | ||
170 | #define _longjmp longjmp | |
171 | #define _setjmp setjmp | |
172 | ||
173 | globalref char sdata[]; | |
174 | #define DATA_START (((int) sdata + 511) & ~511) | |
175 | #define TEXT_START 512 | |
176 | ||
05c53e7c | 177 | #define PURESIZE 330000 |
9b71f02b JB |
178 | |
179 | /* Stdio FILE type has extra indirect on VMS, so must alter this macro. */ | |
180 | ||
181 | #define PENDING_OUTPUT_COUNT(FILE) ((*(FILE))->_ptr - (*(FILE))->_base) | |
9cbfb5e4 JB |
182 | |
183 | #define NULL_DEVICE "NLA0:" | |
8cf0453f | 184 | |
d620fb0c JB |
185 | /* Case conflict with Xlib XFree () */ |
186 | #define xfree emacs_xfree | |
187 | ||
188 | /* What separator do we use in paths? */ | |
189 | #define SEPCHAR ',' | |
ab5796a9 MB |
190 | |
191 | /* arch-tag: 76bc2b70-46d1-4334-8f12-955c0d0ca6d4 | |
192 | (do not change this comment) */ |