1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /* C K U S I G . H */
- /* Definitions and prototypes for signal handling */
- /*
- Author: Jeffrey E Altman (jaltman@secure-endpoints.com),
- Secure Endpoints Inc., New York City.
- Copyright (C) 1985, 2009,
- Trustees of Columbia University in the City of New York.
- All rights reserved. See the C-Kermit COPYING.TXT file or the
- copyright text in the ckcmai.c module for disclaimer and permissions.
- */
- #ifdef CK_ANSIC
- typedef void (*ck_sigfunc)(void *);
- typedef void (*ck_sighand)(int);
- #else
- typedef VOID (*ck_sigfunc)();
- typedef VOID (*ck_sighand)();
- #endif /* CK_ANSIC */
- /* Macros for POSIX vs old-style signal handling. */
- #ifdef CK_POSIX_SIG
- typedef sigjmp_buf ckjmpbuf;
- #else
- typedef jmp_buf ckjmpbuf;
- #endif /* CK_POSIX_SIG */
- /*
- Suppose you want to pass the address of a jmp_buf bar to a function foo.
- Since jmp_buf is normally defined (typedef'd) as an array, you would do
- it like this: foo(bar), where foo = foo(jmp_buf bar). But suppose a
- jmp_buf is (say) a struct rather than an array. Then you must do
- foo(&bar) where foo is foo(jmp_buf * bar). This is controlled here in
- the traditional fashion, by ifdefs. By default, we assume that jmp_buf
- is an array. Define the symbol JBNOTARRAY if jmp_buf is not an array.
- */
- #ifndef JBNOTARRAY
- #ifdef NT
- #define JBNOTARRAY
- #endif /* NT */
- #endif /* JBNOTARRAY */
- #ifdef JBNOTARRAY
- typedef ckjmpbuf * ckjptr;
- #define ckjaddr(x) & x
- #define ckjdref(x) * x
- #ifdef CK_POSIX_SIG
- #define cksetjmp(x) sigsetjmp(x,1)
- #else
- #define cksetjmp(x) setjmp(x,1)
- #endif /* CK_POSIX_SIG */
- #else /* jmp_buf is an array */
- typedef ckjmpbuf ckjptr;
- #define ckjaddr(x) x
- #define ckjdref(x) x
- #ifdef CK_POSIX_SIG
- #define cksetjmp sigsetjmp
- #else
- #define cksetjmp setjmp
- #endif /* CK_POSIX_SIG */
- #endif /* JBNOTARRAY */
- _PROTOTYP( int cc_execute, (ckjptr, ck_sigfunc, ck_sigfunc) );
- _PROTOTYP( int alrm_execute,
- (ckjptr,
- int timo,
- ck_sighand handler,
- ck_sigfunc, ck_sigfunc) );
- _PROTOTYP( int cc_alrm_execute,
- (ckjptr,
- int timo,
- ck_sighand handler,
- ck_sigfunc,
- ck_sigfunc) );
- /* End of ckusig.h */
|