#include "db_config.h"
#include "db_int.h"
int
__os_get_errno_ret_zero()
{
return (errno);
}
int
__os_get_errno()
{
if (errno == 0)
__os_set_errno(EAGAIN);
return (errno);
}
int
__os_get_syserr()
{
if (errno == 0)
__os_set_errno(EAGAIN);
return (errno);
}
void
__os_set_errno(evalue)
int evalue;
{
errno =
evalue >= 0 ? evalue : (evalue == DB_RUNRECOVERY ? EFAULT : EINVAL);
}
char *
__os_strerror(error, buf, len)
int error;
char *buf;
size_t len;
{
char *p;
switch (error) {
case EBADFILENAME:
p = "EBADFILENAME";
break;
case EBADSEEKPOS:
p = "EBADSEEKPOS";
break;
#ifndef HAVE_BREW_SDK2
case EDIRNOEXISTS:
p = "EDIRNOEXISTS";
break;
#endif
case EDIRNOTEMPTY:
p = "EDIRNOTEMPTY";
break;
case EFILEEOF:
p = "EFILEEOF";
break;
case EFILEEXISTS:
p = "EFILEEXISTS";
break;
case EFILENOEXISTS:
p = "EFILENOEXISTS";
break;
case EFILEOPEN:
p = "EFILEOPEN";
break;
case EFSFULL:
p = "EFSFULL";
break;
#ifndef HAVE_BREW_SDK2
case EINVALIDOPERATION:
p = "EINVALIDOPERATION";
break;
case ENOMEDIA:
p = "ENOMEDIA";
break;
#endif
case ENOMEMORY:
p = "ENOMEMORY";
break;
case EOUTOFNODES:
p = "EOUTOFNODES";
break;
default:
p = __db_unknown_error(error);
break;
}
(void)strncpy(buf, p, len - 1);
buf[len - 1] = '\0';
return (buf);
}
int
__os_posix_err(error)
int error;
{
int ret;
switch (error) {
case EBADFILENAME:
#ifndef HAVE_BREW_SDK2
case EDIRNOEXISTS:
#endif
case EDIRNOTEMPTY:
case EFILENOEXISTS:
ret = ENOENT;
break;
case EOUTOFNODES:
ret = EMFILE;
break;
case ENOMEMORY:
ret = ENOMEM;
break;
case EFSFULL:
ret = ENOSPC;
break;
#ifndef HAVE_BREW_SDK2
case EINVALIDOPERATION:
ret = DB_OPNOTSUP;
break;
#endif
case EFILEEXISTS:
ret = EEXIST;
break;
case EBADSEEKPOS:
case EFILEEOF:
ret = EIO;
break;
default:
ret = EFAULT;
break;
}
return (ret);
}