xref: /plan9/sys/src/ape/cmd/pdksh/conf-end.h (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
1 /*
2  * End of configuration stuff for PD ksh.
3  *
4  * RCSid: $Id$
5  */
6 
7 #if defined(EMACS) || defined(VI)
8 # define	EDIT
9 #else
10 # undef		EDIT
11 #endif
12 
13 /* Editing implies history */
14 #if defined(EDIT) && !defined(HISTORY)
15 # define HISTORY
16 #endif /* EDIT */
17 
18 /*
19  * if you don't have mmap() you can't use Peter Collinson's history
20  * mechanism.  If that is the case, then define EASY_HISTORY
21  */
22 #if defined(HISTORY) && (!defined(COMPLEX_HISTORY) || !defined(HAVE_MMAP) || !defined(HAVE_FLOCK))
23 # undef COMPLEX_HISTORY
24 # define EASY_HISTORY			/* sjg's trivial history file */
25 #endif
26 
27 /* Can we safely catch sigchld and wait for processes? */
28 #if (defined(HAVE_WAITPID) || defined(HAVE_WAIT3)) \
29     && (defined(POSIX_SIGNALS) || defined(BSD42_SIGNALS))
30 # define JOB_SIGS
31 #endif
32 
33 #if !defined(JOB_SIGS) || !(defined(POSIX_PGRP) || defined(BSD_PGRP))
34 # undef JOBS /* if no JOB_SIGS, no job control support */
35 #endif
36 
37 /* pdksh assumes system calls return EINTR if a signal happened (this so
38  * the signal handler doesn't have to longjmp()).  I don't know if this
39  * happens (or can be made to happen) with sigset() et. al. (the bsd41 signal
40  * routines), so, the autoconf stuff checks what they do and defines
41  * SIGNALS_DONT_INTERRUPT if signals don't interrupt read().
42  * If SIGNALS_DONT_INTERRUPT isn't defined and your compiler chokes on this,
43  * delete the hash in front of the error (and file a bug report).
44  */
45 #ifdef SIGNALS_DONT_INTERRUPT
46   # error pdksh needs interruptable system calls.
47 #endif /* SIGNALS_DONT_INTERRUPT */
48 
49 #ifdef HAVE_GCC_FUNC_ATTR
50 # define GCC_FUNC_ATTR(x)	__attribute__((x))
51 # define GCC_FUNC_ATTR2(x,y)	__attribute__((x,y))
52 #else
53 # define GCC_FUNC_ATTR(x)
54 # define GCC_FUNC_ATTR2(x,y)
55 #endif /* HAVE_GCC_FUNC_ATTR */
56