00001
00002
00003
00004
00005
00006
00007
#include "wverror.h"
00008
#include <assert.h>
00009
00010
#ifdef _WIN32
00011
#include "windows.h"
00012
#endif
00013
00014 WvError::~WvError()
00015 {
00016
00017 }
00018
00019
00020 WvString WvError::errstr()
const
00021
{
00022
if (
errnum == -1)
00023 {
00024 assert(!!
errstring);
00025
return errstring;
00026 }
00027
else
00028 {
00029
#ifndef _WIN32
00030
return strerror(
errnum);
00031
#else
00032
char msg[4096];
00033
const HMODULE module = GetModuleHandle(
"winsock.dll");
00034 DWORD result = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, module,
errnum, 0, msg,
sizeof(msg), 0);
00035
if (result)
00036
return msg;
00037
else
00038 {
00039 DWORD e = GetLastError();
00040
return "Unknown error";
00041 }
00042
#endif
00043
}
00044 }
00045
00046
00047 void WvError::seterr(
int _errnum)
00048 {
00049
if (!
errnum)
00050
errnum = _errnum;
00051 }
00052
00053
00054 void WvError::seterr(
WvStringParm specialerr)
00055 {
00056
if (!
errnum)
00057 {
00058
errstring = specialerr;
00059
seterr(-1);
00060 }
00061 }
00062
00063
00064 void WvError::seterr(
const WvError &err)
00065 {
00066
if (err.
geterr() > 0)
00067
seterr(err.
geterr());
00068
else if (err.
geterr() < 0)
00069
seterr(err.
errstr());
00070 }