#include "a.h"

enum
{
	EPLAN9 = 0x19283745	/* see /usr/local/plan9/src/lib9/errstr.c */
};

typedef struct Error Error;
struct Error
{
	char *text;
	int err;
	int len;
};

static Error errortab[] = {
	{ "permitted", EPERM },
	{ "permission", EACCES },
	{ "access", EACCES },
	{ "exists", EEXIST },
	{ "exist", ENOENT },
	{ "no such", ENOENT },
	{ "not found", ENOENT },
	{ "input/output", EIO },
	{ "timeout", ETIMEDOUT },
	{ "timed out", ETIMEDOUT },
	{ "i/o", EIO },
	{ "too long", E2BIG },
	{ "interrupt", EINTR },
	{ "no such", ENODEV },
	{ "bad file", EBADF },
	{ " fid ", EBADF },
	{ "temporar", EAGAIN },
	{ "memory", ENOMEM },
	{ "is a directory", EISDIR },
	{ "directory", ENOTDIR },
	{ "argument", EINVAL },
	{ "pipe", EPIPE },
	{ "in use", EBUSY },
	{ "busy", EBUSY },
	{ "illegal", EINVAL },
	{ "invalid", EINVAL },
	{ "read-only", EROFS },
	{ "read only", EROFS },
#ifdef EPROTO
	{ "proto", EPROTO },
#else
	{ "proto", EINVAL },
#endif
	{ "entry", ENOENT },
};

int
errstr2errno(void)
{
	char e[ERRMAX];
	int i, len;
	
	if(errno != EPLAN9)
		return errno;

	if(errortab[0].len == 0)
		for(i=0; i<nelem(errortab); i++)
			errortab[i].len = strlen(errortab[i].text);

	rerrstr(e, sizeof e);
	len = strlen(e);
	for(i=0; i<nelem(errortab); i++)
		if(errortab[i].len <= len && cistrstr(e, errortab[i].text))
			return errortab[i].err;
	return ERANGE;	/* who knows - be blatantly wrong */
}

