#include "common.h"

int errnum;                  // 0=no error
oserror theerror;
int priority;                // If >0 the higher priority (should allow up to 255)
void reseterror(void)
{
errnum=0;
priority=0;
}

void seterror(const char* m,int p)
{
if(p >= priority)
 {
 priority = p;
 errnum=1;
 theerror.errnum = 0;
 strncpy(theerror.errmess,m,250);
 }
}

void seterror(const char* m)
{
seterror(m,0);
}

void seterror(const char* m,char* t,int p)
{
if(p >= priority)
 {
 priority = p;
 if(t == NULL) { seterror(m); return; }
 errnum=1;
 theerror.errnum = 0;
 std::string out;
             out=m;
             out+=" : ";
             out+=t;
 strncpy(theerror.errmess,out.c_str(),250);
 }
}

void seterror(const char* m,char* t)
{
seterror(m,t,0);
}

oserror* rtnerror(void)
{
if(errnum == 0)
 {
 errnum = 0;
 return (_kernel_oserror*)0;
 }
else
 {
 errnum = 0;
 return &theerror;
 }
}

oserror* rtnerror(const char* e)
{
seterror(e);
return rtnerror();
}