#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;
}
