home *** CD-ROM | disk | FTP | other *** search
- #include "amiga.h"
- #include "signals.h"
-
- int sigvec(int sig, struct sigvec *vec, struct sigvec *ovec)
- {
- chkabort();
- if (sig >= 1 && sig < NSIG)
- {
- if (ovec) *ovec = _sig_handlers[sig];
- if (vec) _sig_handlers[sig] = *vec;
- return 0;
- }
- errno = EINVAL;
- return -1;
- }
-
- void (*signal(int sig,void (*fn)(int)))(int)
- {
- struct sigvec vec, ovec;
-
- vec.sv_handler = fn;
- vec.sv_mask = 0;
- /*vec.sv_flags = 0;*/
- if (sigvec(sig, &vec, &ovec)) return -1;
- return ovec.sv_handler;
- }
-