- Timestamp:
- Jul 3, 2009, 11:07:32 PM (16 years ago)
- Location:
- trunk/src/ws2_32
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/ws2_32/socket.cpp
r9843 r21322 281 281 NULL, NULL, lpOverlapped, lpCompletionRoutine); 282 282 } 283 284 /*********************************************************************** 285 * WSAAddressToStringA (WS2_32.27) 286 * 287 * See WSAAddressToStringW 288 */ 289 INT WINAPI WSAAddressToStringA( LPSOCKADDR sockaddr, DWORD len, 290 LPWSAPROTOCOL_INFOA info, LPSTR string, 291 LPDWORD lenstr ) 292 { 293 INT size; 294 CHAR buffer[22]; /* 12 digits + 3 dots + ':' + 5 digits + '\0' */ 295 CHAR *p; 296 297 TRACE( "(%p, %d, %p, %p, %p)\n", sockaddr, len, info, string, lenstr ); 298 299 if (!sockaddr || len < sizeof(SOCKADDR_IN)) return SOCKET_ERROR; 300 if (!string || !lenstr) return SOCKET_ERROR; 301 302 /* sin_family is guaranteed to be the first u_short */ 303 if (((SOCKADDR_IN *)sockaddr)->sin_family != AF_INET) return SOCKET_ERROR; 304 305 sprintf( buffer, "%u.%u.%u.%u:%u", 306 (unsigned int)(ntohl( ((SOCKADDR_IN *)sockaddr)->sin_addr.s_addr ) >> 24 & 0xff), 307 (unsigned int)(ntohl( ((SOCKADDR_IN *)sockaddr)->sin_addr.s_addr ) >> 16 & 0xff), 308 (unsigned int)(ntohl( ((SOCKADDR_IN *)sockaddr)->sin_addr.s_addr ) >> 8 & 0xff), 309 (unsigned int)(ntohl( ((SOCKADDR_IN *)sockaddr)->sin_addr.s_addr ) & 0xff), 310 ntohs( ((SOCKADDR_IN *)sockaddr)->sin_port ) ); 311 312 p = strchr( buffer, ':' ); 313 if (!((SOCKADDR_IN *)sockaddr)->sin_port) *p = 0; 314 315 size = strlen( buffer ); 316 317 if (*lenstr < size) 318 { 319 *lenstr = size; 320 WSASetLastError(WSAEFAULT); 321 return SOCKET_ERROR; 322 } 323 324 strcpy( string, buffer ); 325 return 0; 326 } -
trunk/src/ws2_32/ws2_32.def
r21308 r21322 45 45 ; WPUCompleteOverlappedRequest @25 46 46 WSAAccept = _WSAAccept@20 @26 47 ; WSAAddressToStringA@2747 WSAAddressToStringA = _WSAAddressToStringA@20 @27 48 48 ; WSAAddressToStringW @28 49 49
Note:
See TracChangeset
for help on using the changeset viewer.