version 1.79, 2007/09/11 17:56:33
|
version 1.79.2.2, 2008/03/20 06:16:41
|
|
|
// Not implemented | // Not implemented |
} | } |
| |
|
#ifdef PEGASUS_ENABLE_IPV6 |
|
void _getInterfaceAddrs(Array<String> &ips, int af) |
|
{ |
|
SOCKET sock; |
|
|
|
if (INVALID_SOCKET != (sock = WSASocket(af, SOCK_RAW, |
|
0, NULL, 0, 0))) |
|
{ |
|
DWORD bytesReturned; |
|
char buf[2048]; |
|
int interfaces = 0; |
|
char str[PEGASUS_INET6_ADDRSTR_LEN]; |
|
void *p; |
|
if (0 == WSAIoctl(sock, SIO_ADDRESS_LIST_QUERY, NULL, 0, |
|
buf, 2048, &bytesReturned, NULL, |
|
NULL)) |
|
{ |
|
|
|
SOCKET_ADDRESS_LIST *addr_list; |
|
SOCKET_ADDRESS *addr; |
|
struct sockaddr *sin; |
|
addr_list = (SOCKET_ADDRESS_LIST *)buf; |
|
addr = addr_list->Address; |
|
for (sin = (struct sockaddr *) addr->lpSockaddr ; |
|
interfaces < addr_list->iAddressCount; |
|
interfaces++) |
|
{ |
|
if (af == AF_INET) |
|
{ |
|
p = &((struct sockaddr_in*)sin)->sin_addr; |
|
} |
|
else |
|
{ |
|
p = &((struct sockaddr_in6*)sin)->sin6_addr; |
|
} |
|
// Don't gather loopback addrs |
|
if (!System::isLoopBack(af, p)) |
|
{ |
|
HostAddress::convertBinaryToText(af, p, str, sizeof(str)); |
|
ips.append(str); |
|
} |
|
addr++; |
|
sin = (struct sockaddr*)addr->lpSockaddr; |
|
} |
|
} |
|
} |
|
} |
|
#endif |
|
|
|
Array<String> System::getInterfaceAddrs() |
|
{ |
|
Array<String> ips; |
|
|
|
#ifdef PEGASUS_ENABLE_IPV6 |
|
_getInterfaceAddrs(ips, AF_INET); |
|
_getInterfaceAddrs(ips, AF_INET6); |
|
#endif |
|
|
|
return ips; |
|
} |
| |
| |
// System ID constants for Logger::put and Logger::trace | // System ID constants for Logger::put and Logger::trace |
|
|
return false; | return false; |
} | } |
| |
|
String System::getErrorMSG_NLS(int errorCode,int errorCode2) |
|
{ |
|
LPVOID winErrorMsg = NULL; |
| |
|
if (FormatMessage( |
|
FORMAT_MESSAGE_ALLOCATE_BUFFER | |
|
FORMAT_MESSAGE_FROM_SYSTEM | |
|
FORMAT_MESSAGE_IGNORE_INSERTS, |
|
NULL, |
|
errorCode, |
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), |
|
(LPTSTR)&winErrorMsg, |
|
0, |
|
NULL)) |
|
{ |
|
MessageLoaderParms parms( |
|
"Common.System.ERROR_MESSAGE.STANDARD", |
|
"$0 (error code $1)",(char*)winErrorMsg,errorCode); |
|
LocalFree(winErrorMsg); |
|
return MessageLoader::getMessage(parms); |
|
} |
|
|
|
MessageLoaderParms parms( |
|
"Common.System.ERROR_MESSAGE.STANDARD", |
|
"$0 (error code $1)","",errorCode); |
|
return MessageLoader::getMessage(parms); |
|
|
|
} |
|
|
|
String System::getErrorMSG(int errorCode,int errorCode2) |
|
{ |
|
|
|
String buffer; |
|
LPVOID winErrorMsg = NULL; |
|
|
|
char strErrorCode[32]; |
|
sprintf(strErrorCode, "%d", errorCode); |
|
|
|
if (FormatMessage( |
|
FORMAT_MESSAGE_ALLOCATE_BUFFER | |
|
FORMAT_MESSAGE_FROM_SYSTEM | |
|
FORMAT_MESSAGE_IGNORE_INSERTS, |
|
NULL, |
|
errorCode, |
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), |
|
(LPTSTR)&winErrorMsg, |
|
0, |
|
NULL)) |
|
{ |
|
buffer.append((char*)winErrorMsg); |
|
LocalFree(winErrorMsg); |
|
} |
|
|
|
buffer.append(" (error code "); |
|
buffer.append(strErrorCode); |
|
buffer.append(")"); |
|
|
|
return buffer; |
|
} |
| |
/////////////////////////////////////////////////////////////////////////////// | /////////////////////////////////////////////////////////////////////////////// |
// AutoFileLock class | // AutoFileLock class |