2 Copyright © 2012, The AROS Development Team. All rights reserved.
6 #include <proto/exec.h>
13 #include "__arosc_privdata.h"
16 struct signal_func_data
*__sig_getfuncdata(int signum
)
18 struct aroscbase
*aroscbase
= __aros_getbase();
21 if (signum
< SIGHUP
|| signum
> _SIGMAX
)
27 if (aroscbase
->acb_sigfunc_array
== NULL
)
29 aroscbase
->acb_sigfunc_array
=
30 AllocPooled(aroscbase
->acb_internalpool
,
31 _SIGMAX
*sizeof(struct signal_func_data
)
34 if (!aroscbase
->acb_sigfunc_array
)
40 for (i
= 0; i
< _SIGMAX
; i
++)
42 aroscbase
->acb_sigfunc_array
[i
].sigfunc
= SIG_DFL
;
43 aroscbase
->acb_sigfunc_array
[i
].flags
= 0;
47 return &aroscbase
->acb_sigfunc_array
[signum
-1];
50 /* Handler for SIG_DFL */
51 void __sig_default(int signum
)
56 fprintf(stderr
, "Program aborted.\n");
60 fprintf(stderr
, "Program terminated.\n");
64 fprintf(stderr
, "Caught signal %d; aborting...\n", signum
);
68 __arosc_jmp2exit(0, 20);
70 assert(0); /* Should not be reached */