blocxx
src
blocxx
System.cpp
Go to the documentation of this file.
1
/*******************************************************************************
2
* Copyright (C) 2001-2004 Novell, Inc. All rights reserved.
3
*
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions are met:
6
*
7
* - Redistributions of source code must retain the above copyright notice,
8
* this list of conditions and the following disclaimer.
9
*
10
* - Redistributions in binary form must reproduce the above copyright notice,
11
* this list of conditions and the following disclaimer in the documentation
12
* and/or other materials provided with the distribution.
13
*
14
* - Neither the name of Novell, Inc. nor the names of its
15
* contributors may be used to endorse or promote products derived from this
16
* software without specific prior written permission.
17
*
18
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
19
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21
* ARE DISCLAIMED. IN NO EVENT SHALL Novell, Inc. OR THE CONTRIBUTORS
22
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28
* POSSIBILITY OF SUCH DAMAGE.
29
*******************************************************************************/
30
35
#include "blocxx/BLOCXX_config.h"
36
#include "
blocxx/System.hpp
"
37
#include <cstring>
38
#include <cerrno>
39
40
#ifdef BLOCXX_WIN32
41
#include <winsock2.h>
42
#endif
43
44
namespace
BLOCXX_NAMESPACE
45
{
46
namespace
System
47
{
48
49
#ifdef BLOCXX_WIN32
51
String
errorMsg
(
int
errorCode
)
52
{
53
LPVOID
lpMsgBuf
;
54
if
(!
::FormatMessage
(
55
FORMAT_MESSAGE_ALLOCATE_BUFFER
56
|
FORMAT_MESSAGE_FROM_SYSTEM
57
|
FORMAT_MESSAGE_IGNORE_INSERTS
,
58
NULL
,
59
errorCode
,
60
MAKELANGID
(
LANG_NEUTRAL
,
SUBLANG_DEFAULT
),
// Default language
61
(
LPTSTR
) &
lpMsgBuf
,
62
0,
63
NULL
))
64
{
65
return
String
();
66
}
67
68
String
rmsg
((
const
char
*)
lpMsgBuf
);
69
70
// Free the buffer.
71
::LocalFree
(
lpMsgBuf
);
72
return
rmsg
;
73
}
74
76
UInt32
lastErrorMsg
(
const
String
&
a_action
,
String
&
a_errorMessage
)
77
{
78
DWORD
errcode
=
GetLastError
();
79
a_errorMessage
.format(
"%s%s%ld%s%s"
,
a_action
.c_str(),
" failed with error "
,
errcode
,
" : "
,
errorMsg
(
errcode
).c_str());
80
81
return
errcode
;
82
}
83
85
String
lastErrorMsg
(
bool
socketError
)
86
{
87
DWORD
errcode
= (
socketError
) ?
WSAGetLastError
() :
GetLastError
();
88
return
errorMsg
(
errcode
);
89
}
90
#else
91
String
errorMsg
(
int
errorCode
)
92
{
93
return
String
(
::strerror
(
errorCode
));
94
}
96
String
lastErrorMsg
(
bool
socketError
)
97
{
98
return
errorMsg
(
errno
);
99
}
100
#endif
101
102
}
// End of System namespace
103
}
// End of BLOCXX_NAMESPACE
104
System.hpp
BLOCXX_NAMESPACE::String
This String class is an abstract data type that represents as NULL terminated string of characters.
Definition
String.hpp:67
BLOCXX_NAMESPACE::System::errorMsg
String errorMsg(int errorCode)
Definition
System.cpp:91
BLOCXX_NAMESPACE::System::lastErrorMsg
String lastErrorMsg(bool socketError)
Definition
System.cpp:96
BLOCXX_NAMESPACE
Taken from RFC 1321.
Definition
AppenderLogger.cpp:48
BLOCXX_NAMESPACE::operator==
bool operator==(const Array< T > &x, const Array< T > &y)
Definition
ArrayImpl.hpp:434
Generated by
1.10.0