bump patchlevel
[alioth/cvs.git] / emx / config.h
1 /* config.h --- configuration file for OS/2 EMX
2    Thomas Epting <tepting@swol.de> --- Feb 1997  */
3
4 /* This program is free software; you can redistribute it and/or modify
5    it under the terms of the GNU General Public License as published by
6    the Free Software Foundation; either version 2, or (at your option)
7    any later version.
8
9    This program is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12    GNU General Public License for more details.  */
13
14 /* This file lives in the emx/ subdirectory, which is only included
15  * in your header search path if you use emx/Makefile (with GNU make
16  * for OS/2). Thus, this is the right place to put configuration
17  * information for OS/2.
18  */
19
20 #include <io.h>
21 #include <sys/types.h>
22 #include <sys/stat.h>
23
24 /* Define if on AIX 3.
25    System headers sometimes define this.
26    We just want to avoid a redefinition error message.  */
27 #ifndef _ALL_SOURCE
28 /* #undef _ALL_SOURCE */
29 #endif
30
31 /* Define to empty if the keyword does not work.  */
32 #undef const
33
34 /* Define to `int' if <sys/types.h> doesn't define.  */
35 /* #undef gid_t */
36
37 /* Define if you support file names longer than 14 characters.  */
38 #define HAVE_LONG_FILE_NAMES 1
39
40 /* Define if you have <sys/wait.h> that is POSIX.1 compatible.  */
41 #define HAVE_SYS_WAIT_H 1
42
43 /* Define if utime(file, NULL) sets file's timestamp to the present.  */
44 #define HAVE_UTIME_NULL 1
45
46 /* Define if on MINIX.  */
47 /* #undef _MINIX */
48
49 /* Define to `int' if <sys/types.h> doesn't define.  */
50 /* #undef mode_t */
51
52 /* Define to `int' if <sys/types.h> doesn't define.  */
53 /* #undef pid_t */
54
55 /* Define if the system does not provide POSIX.1 features except
56    with this defined.  */
57 /* #undef _POSIX_1_SOURCE */
58
59 /* Define if you need to in order for stat and other things to work.  */
60 /* #undef _POSIX_SOURCE */
61
62 /* Define as the return type of signal handlers (int or void).  */
63 #define RETSIGTYPE void
64
65 /* The default remote shell to use, if one does not specify the CVS_RSH
66    environment variable. */
67 #define RSH_DFLT "rsh"
68
69 /* Define to `unsigned' if <sys/types.h> doesn't define.  */
70 /* #undef size_t */
71
72 /* Define if the `S_IS*' macros in <sys/stat.h> do not work properly.  */
73 /* #undef STAT_MACROS_BROKEN */
74
75 /* Define if you have the ANSI C header files.  */
76 #define STDC_HEADERS 1
77
78 /* Define if you can safely include both <sys/time.h> and <time.h>.  */
79 #define TIME_WITH_SYS_TIME 1
80
81 /* Define to `int' if <sys/types.h> doesn't define.  */
82 /* #undef uid_t */
83
84 /* Define if you have MIT Kerberos version 4 available.  */
85 #undef HAVE_KERBEROS
86
87 /* Define if you want CVS to be able to be a remote repository client.  */
88 #define CLIENT_SUPPORT 1
89
90 #if 0
91 /* This doesn't work yet, and I'm sure I don't want the hassles of seeing
92    whether it will compile.  */
93 /* Define if you want CVS to be able to serve repositories to remote
94    clients.  */
95 #define SERVER_SUPPORT 1
96
97 /* Define if you want to use the password authenticated server.  */
98 #define AUTH_SERVER_SUPPORT
99 #endif /* 0 */
100
101 /* Define if you want encryption support.  */
102 /* #undef ENCRYPTION */
103
104 /* Define if you have the connect function.  */
105 #define HAVE_CONNECT 1
106
107 /* Define if you have the crypt function.  */
108 #define HAVE_CRYPT 1
109
110 /* Define if you have the fchdir function.  */
111 /* #define HAVE_FCHDIR */
112
113 /* Define if you have the fchmod function.  */
114 /* #define HAVE_FCHMOD */
115
116 /* Define if you have the fsync function.  */
117 #define HAVE_FSYNC 1
118
119 /* Define if you have the ftime function.  */
120 #define HAVE_FTIME 1
121
122 /* Define if you have the ftruncate function.  */
123 #define HAVE_FTRUNCATE 1
124
125 /* Define if you have the getpagesize function.  */
126 #define HAVE_GETPAGESIZE 1
127
128 /* Define if you have the getspnam function.  */
129 /* #define HAVE_GETSPNAM */
130
131 /* Define if you have the initgroups function.  */
132 /* #define HAVE_INITGROUPS */
133
134 /* Define if you have the krb_get_err_text function.  */
135 /* #undef HAVE_KRB_GET_ERR_TEXT */
136
137 /* Define if you have the putenv function.  */
138 #define HAVE_PUTENV 1
139
140 /* Define if you have the readlink function.  */
141 /* #define HAVE_READLINK */
142
143 /* Define if you have the sigaction function.  */
144 #define HAVE_SIGACTION 1
145
146 /* Define if you have the sigblock function.  */
147 /* #undef HAVE_SIGBLOCK */
148
149 /* Define if you have the sigprocmask function.  */
150 #define HAVE_SIGPROCMASK 1
151
152 /* Define if you have the sigsetmask function.  */
153 /* #undef HAVE_SIGSETMASK */
154
155 /* Define if you have the sigvec function.  */
156 /* #undef HAVE_SIGVEC */
157
158 /* Define if you have the timezone function.  */
159 #define HAVE_TIMEZONE 1
160
161 /* Define if you have the tzset function.  */
162 #define HAVE_TZSET 1
163
164 /* Define if you have the vfork function.  */
165 /* #undef HAVE_VFORK */
166
167 /* Define if you have the vprintf function.  */
168 #define HAVE_VPRINTF 1
169
170 /* Define if you have the <direct.h> header file.  */
171 /* #undef HAVE_DIRECT_H */
172
173 /* Define if you have the <dirent.h> header file.  */
174 #define HAVE_DIRENT_H 1
175
176 /* Define if you have the <errno.h> header file.  */
177 #define HAVE_ERRNO_H 1
178
179 /* Define if you have the <fcntl.h> header file.  */
180 #define HAVE_FCNTL_H 1
181
182 /* Define if you have the <io.h> header file.  */
183 #define HAVE_IO_H 1
184
185 /* Define if you have the <memory.h> header file.  */
186 #define HAVE_MEMORY_H 1
187
188 /* Define if you have the <ndbm.h> header file.  */
189 /* #undef HAVE_NDBM_H 1 */
190
191 /* Define if you have the <ndir.h> header file.  */
192 /* #undef HAVE_NDIR_H */
193
194 /* Define if you have the <string.h> header file.  */
195 #define HAVE_STRING_H 1
196
197 /* Define if you have the <sys/bsdtypes.h> header file.  */
198 /* #undef HAVE_SYS_BSDTYPES_H */
199
200 /* Define if you have the <sys/dir.h> header file.  */
201 #define HAVE_SYS_DIR_H 1
202
203 /* Define if you have the <sys/ndir.h> header file.  */
204 /* #undef HAVE_SYS_NDIR_H */
205
206 /* Define if you have the <sys/param.h> header file.  */
207 #define HAVE_SYS_PARAM_H 1
208
209 /* Define if you have the <sys/resource.h> header file.  */
210 #define HAVE_SYS_RESOURCE_H 1
211
212 /* Define if you have the <sys/select.h> header file.  */
213 #define HAVE_SYS_SELECT_H 1
214
215 /* Define if you have the <sys/time.h> header file.  */
216 #define HAVE_SYS_TIME_H 1
217
218 /* Define if you have the <unistd.h> header file.  */
219 #define HAVE_UNISTD_H 1
220
221 /* Define if you have the <utime.h> header file.  */
222 #define HAVE_UTIME_H 1
223
224 /* Define if you have the crypt library (-lcrypt).  */
225 #define HAVE_LIBCRYPT 1
226
227 /* Define if you have the inet library (-linet).  */
228 /* #undef HAVE_LIBINET */
229
230 /* Define if you have the nsl library (-lnsl).  */
231 #define HAVE_LIBNSL 1
232
233 /* Define if you have the nsl_s library (-lnsl_s).  */
234 /* #undef HAVE_LIBNSL_S */
235
236 /* Define if you have the sec library (-lsec).  */
237 /* #undef HAVE_LIBSEC 1 */
238
239 /* Define if you have the socket library (-lsocket).  */
240 #define HAVE_LIBSOCKET 1
241
242 /* Under OS/2, filenames are case-insensitive, and both / and \
243    are path component separators.  */
244 #define FOLD_FN_CHAR(c) (OS2_filename_classes[(unsigned char) (c)])
245 extern unsigned char OS2_filename_classes[];
246
247 /* Is the character C a path name separator?  Under OS/2, you can use
248    either / or \.  */
249 #define ISDIRSEP(c) (FOLD_FN_CHAR(c) == '/')
250
251 /* Like strcmp, but with the appropriate tweaks for file names.
252    Under OS/2, filenames are case-insensitive but case-preserving,
253    and both \ and / are path element separators.  */
254 extern int fncmp (const char *n1, const char *n2);
255
256 /* Fold characters in FILENAME to their canonical forms.
257    If FOLD_FN_CHAR is not #defined, the system provides a default
258    definition for this.  */
259 extern void fnfold (char *FILENAME);
260
261 /* This is where old bits go to die under OS/2 as well as WinNT.  */
262 #define DEVNULL "nul"
263
264 /* We actually do have a transparent rsh, whew. */
265 #undef RSH_NOT_TRANSPARENT
266 /* But it won't be transparent unless we ask it nicely! */
267 #define RSH_NEEDS_BINARY_FLAG 1
268
269 #define START_SERVER os2_start_server
270 #define SHUTDOWN_SERVER os2_shutdown_server
271
272 extern void START_SERVER (int *tofd, int *fromfd,
273                           char *client_user,
274                           char *server_user,
275                           char *server_host,
276                           char *server_cvsroot);
277 extern void SHUTDOWN_SERVER (int fd);
278
279 /* Call our own os2_initialize function */
280 #define SYSTEM_INITIALIZE(pargc,pargv) os2_initialize (pargc, pargv)
281 extern void os2_initialize (int *pargc, char ***pargv);
282
283 /* Under EMX, we already have popen() and pclose()... */
284 /* #undef USE_OWN_POPEN */
285 /* ... and we too have no need for popenRW to start the rsh server. */
286 /* #define START_RSH_WITH_POPEN_RW */
287
288 /* Socket handles and file handles share a command handle space under EMX. */
289 /* #undef NO_SOCKET_TO_FD */
290
291
292
293 #define CVS_STAT     os2_stat
294 #define CVS_CHDIR    os2_chdir
295 #define CVS_FNMATCH  os2_fnmatch
296
297 extern int os2_stat(const char *name, struct stat *buffer);
298 extern int os2_chdir(const char *name);
299 extern int os2_fnmatch(const char *pattern, const char *name, int flags);
300
301 /* Pipes need to be put into binary mode using setmode ().  */
302 #define USE_SETMODE_BINARY 1
303
304 /* The reason for this is that we don't know whether to pass -b to
305    rsh.  The system-supplied rsh on OS/2 wants it.  Some other rsh
306    replacement might not accept it.  Historically, the NT port of CVS
307    has not passed -b, and the OS/2 port has.  What a mess.  If we can
308    get away with just not accepting :ext: until we can figure out how
309    we should deal with this, then it will avoid having people rely on
310    behaviors which will need to change.  */
311 #define NO_EXT_METHOD 1
312
313 /* See above; we can't use rsh without -b.  */
314 #define RSH_NOT_TRANSPARENT 1
315
316 /* See discussion at xchmod in filesubr.c.  */
317 #define CHMOD_BROKEN 1
318
319 /*
320  * The following configuration options used to be defined in options.h.
321  */
322
323 /*
324  * When committing a permanent change, CVS and RCS make a log entry of
325  * who committed the change.  If you are committing the change logged in
326  * as "root" (not under "su" or other root-priv giving program), CVS/RCS
327  * cannot determine who is actually making the change.
328  *
329  * As such, by default, CVS disallows changes to be committed by users
330  * logged in as "root".  You can disable this option by commenting
331  * out the lines below.
332  *
333  * Under Windows NT, privileges are associated with groups, not users,
334  * so the case in which someone has logged in as root does not occur.
335  * Thus, there is no need for this hack.
336  *
337  * todo: I don't know why emx had CVS_BADROOT commented out too, but
338  * historically it has been in the obsolete options.h file.  -DRP
339  */
340 #undef CVS_BADROOT
341
342 /*
343  * For portability and heterogeneity reasons, CVS is shipped by
344  * default using my own text-file version of the ndbm database library
345  * in the src/myndbm.c file.  If you want better performance and are
346  * not concerned about heterogeneous hosts accessing your modules
347  * file, turn this option off.
348  */
349 #ifndef MY_NDBM
350 #define MY_NDBM
351 #endif
352
353 /* Directory used for storing temporary files, if not overridden by
354    environment variables or the -T global option.  There should be little
355    need to change this (-T is a better mechanism if you need to use a
356    different directory for temporary files).  */
357 #ifndef TMPDIR_DFLT
358 #define TMPDIR_DFLT     "/tmp"
359 #endif
360
361 /*
362  * The default editor to use, if one does not specify the "-e" option
363  * to cvs, or does not have an EDITOR environment variable.  I set
364  * this to just "vi", and use the shell to find where "vi" actually
365  * is.  This allows sites with /usr/bin/vi or /usr/ucb/vi to work
366  * equally well (assuming that your PATH is reasonable).
367  */
368 #ifndef EDITOR_DFLT
369 #define EDITOR_DFLT     "e"
370 #endif
371
372 /*
373  * The default umask to use when creating or otherwise setting file or
374  * directory permissions in the repository.  Must be a value in the
375  * range of 0 through 0777.  For example, a value of 002 allows group
376  * rwx access and world rx access; a value of 007 allows group rwx
377  * access but no world access.  This value is overridden by the value
378  * of the CVSUMASK environment variable, which is interpreted as an
379  * octal number.
380  */
381 #ifndef UMASK_DFLT
382 #define UMASK_DFLT      002
383 #endif
384
385 /*
386  * The cvs admin command is restricted to the members of the group
387  * CVS_ADMIN_GROUP.  If this group does not exist, all users are
388  * allowed to run cvs admin.  To disable the cvs admin for all users,
389  * create an empty group CVS_ADMIN_GROUP.  To disable access control
390  * for cvs admin, comment out the define below.
391  */
392 #ifndef CVS_ADMIN_GROUP
393 #define CVS_ADMIN_GROUP "cvsadmin"
394 #endif
395
396 /*
397  * When committing or importing files, you must enter a log message.
398  * Normally, you can do this either via the -m flag on the command
399  * line or an editor will be started for you.  If you like to use
400  * logging templates (the rcsinfo file within the $CVSROOT/CVSROOT
401  * directory), you might want to force people to use the editor even
402  * if they specify a message with -m.  Enabling FORCE_USE_EDITOR will
403  * cause the -m message to be appended to the temp file when the
404  * editor is started.
405  */
406 #ifndef FORCE_USE_EDITOR
407 /* #define      FORCE_USE_EDITOR */
408 #endif
409
410 #ifndef CVS_FUDGELOCKS
411 /* #define CVS_FUDGELOCKS */
412 #endif
413
414 /*
415  * Should we build the password-authenticating client?  Whether to
416  * include the password-authenticating _server_, on the other hand, is
417  * set in config.h.
418  */
419 #ifdef CLIENT_SUPPORT
420 #define AUTH_CLIENT_SUPPORT 1
421 #endif
422
423 /*
424  * If you are working with a large remote repository and a 'cvs
425  * checkout' is swamping your network and memory, define these to
426  * enable flow control.  You will end up with even less probability of
427  * a consistent checkout (see Concurrency in cvs.texinfo), but CVS
428  * doesn't try to guarantee that anyway.  The master server process
429  * will monitor how far it is getting behind, if it reaches the high
430  * water mark, it will signal the child process to stop generating
431  * data when convenient (ie: no locks are held, currently at the
432  * beginning of a new directory).  Once the buffer has drained
433  * sufficiently to reach the low water mark, it will be signalled to
434  * start again.  You may override the default hi/low watermarks here
435  * too.
436  */
437 #define SERVER_FLOWCONTROL
438 #define SERVER_HI_WATER (2 * 1024 * 1024)
439 #define SERVER_LO_WATER (1 * 1024 * 1024)
440
441 /* End of CVS options.h section */
442
443 /* Return non-zero iff FILENAME is absolute.
444    Trivial under Unix, but more complicated under other systems.
445    Under EMX let _fnisabs do all this work. */
446 #define ISABSOLUTE(filename) _fnisabs(filename);