home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
OS9
/
OSK
/
TELECOM
/
stg_v4.lzh
/
signal.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-11-11
|
1KB
|
77 lines
/*
* unix compatible signal() - OS-9 version
*/
#include "stglib.h"
#ifdef _OS9
#include <signal.h>
/* #include "stglib.h" */
struct sSignal
{
struct sSignal *psNext;
int iSignal;
void (*pfHandler)();
};
struct sSignal *_sig_list=0;
_signal_(iSignal)
int iSignal;
{
struct sSignal *psSignal;
psSignal=_sig_list;
while (psSignal)
{
if (iSignal==psSignal->iSignal)
{
if (!psSignal->pfHandler)
exit(iSignal);
if ((int)psSignal->pfHandler==SIG_IGN)
return(0);
(*psSignal->pfHandler)();
return(0);
}
psSignal=psSignal->psNext;
}
return(0);
}
signal(iSignal,pfHandler)
int iSignal;
void (*pfHandler)();
{
struct sSignal *psSignal;
psSignal = _sig_list;
while (psSignal)
{
if (iSignal==psSignal->iSignal)
{
psSignal->pfHandler=pfHandler;
return(0);
}
psSignal=psSignal->psNext;
}
if (!_sig_list)
intercept(_signal_);
psSignal=_sig_list;
_sig_list=(struct sSignal *)malloc(sizeof(*_sig_list));
_sig_list->psNext=psSignal;
_sig_list->iSignal=iSignal;
_sig_list->pfHandler=pfHandler;
return(0);
}
#endif