/* public domain pause(), by ers */

#include <mintbind.h>
#include <signal.h>
#include <errno.h>

extern int __mint;

void
pause()
{
	if (__mint)
		(void)Pause();
	/* do nothing for TOS */
}

/*
 * Aargh! Can you say "race condition"? We definitely need a Psigpause()
 * call in the MiNT kernel, but for now, we fake it...
 */

void
sigpause(mask)
	long mask;
{
	long oldmask;

	if (__mint == 0) {
	/* for TOS, we just toggle the signal mask -- maybe
	 * there's a pending signal that we can receive.
         */
		oldmask = sigsetmask(mask);
		sigsetmask(oldmask);
		return;
	}

	oldmask = Psigsetmask(mask);
	(void)Pause();
	(void)Psigsetmask(oldmask);
}
