dh_installchangelogs: adjust to use ckc301.txt. changelog: explain -O1 usage
[ckermit.git] / ckusig.h
1 /*  C K U S I G . H  */
2
3 /*  Definitions and prototypes for signal handling  */
4
5 /*
6   Author: Jeffrey E Altman (jaltman@secure-endpoints.com),
7             Secure Endpoints Inc., New York City.
8
9   Copyright (C) 1985, 2009,
10     Trustees of Columbia University in the City of New York.
11     All rights reserved.  See the C-Kermit COPYING.TXT file or the
12     copyright text in the ckcmai.c module for disclaimer and permissions.
13 */
14
15 #ifdef CK_ANSIC
16 typedef void (*ck_sigfunc)(void *);
17 typedef void (*ck_sighand)(int);
18 #else
19 typedef VOID (*ck_sigfunc)();
20 typedef VOID (*ck_sighand)();
21 #endif /* CK_ANSIC */
22
23 /* Macros for POSIX vs old-style signal handling. */
24
25 #ifdef CK_POSIX_SIG
26 typedef sigjmp_buf ckjmpbuf;
27 #else
28 typedef jmp_buf ckjmpbuf;
29 #endif /* CK_POSIX_SIG */
30 /*
31   Suppose you want to pass the address of a jmp_buf bar to a function foo.
32   Since jmp_buf is normally defined (typedef'd) as an array, you would do
33   it like this:  foo(bar), where foo = foo(jmp_buf bar).  But suppose a
34   jmp_buf is (say) a struct rather than an array.  Then you must do
35   foo(&bar) where foo is foo(jmp_buf * bar).  This is controlled here in
36   the traditional fashion, by ifdefs.  By default, we assume that jmp_buf
37   is an array.  Define the symbol JBNOTARRAY if jmp_buf is not an array.
38 */
39 #ifndef JBNOTARRAY
40 #ifdef NT
41 #define JBNOTARRAY
42 #endif /* NT */
43 #endif /* JBNOTARRAY */
44
45 #ifdef JBNOTARRAY
46 typedef ckjmpbuf * ckjptr;
47 #define ckjaddr(x) & x
48 #define ckjdref(x) * x
49 #ifdef CK_POSIX_SIG
50 #define cksetjmp(x) sigsetjmp(x,1)
51 #else
52 #define cksetjmp(x) setjmp(x,1)
53 #endif /* CK_POSIX_SIG */
54 #else  /* jmp_buf is an array */
55 typedef ckjmpbuf ckjptr;
56 #define ckjaddr(x) x
57 #define ckjdref(x) x
58 #ifdef CK_POSIX_SIG
59 #define cksetjmp sigsetjmp
60 #else
61 #define cksetjmp setjmp
62 #endif /* CK_POSIX_SIG */
63 #endif /* JBNOTARRAY */
64
65 _PROTOTYP( int cc_execute, (ckjptr, ck_sigfunc, ck_sigfunc) );
66 _PROTOTYP( int alrm_execute,
67           (ckjptr,
68            int timo,
69            ck_sighand handler,
70            ck_sigfunc, ck_sigfunc) );
71 _PROTOTYP( int cc_alrm_execute,
72           (ckjptr,
73            int timo,
74            ck_sighand handler,
75            ck_sigfunc,
76            ck_sigfunc) );
77
78 /* End of ckusig.h */
79