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