OSDN Git Service

* include/ws2tcpip.h (gai_strerror{AW}): Implement as inline function.
authorpapadopo <papadopo>
Fri, 14 Apr 2006 16:40:30 +0000 (16:40 +0000)
committerpapadopo <papadopo>
Fri, 14 Apr 2006 16:40:30 +0000 (16:40 +0000)
winsup/w32api/ChangeLog
winsup/w32api/include/ws2tcpip.h

index 8e2b9eb..4ff0d1c 100644 (file)
@@ -1,5 +1,9 @@
 2006-04-14  Dimitri Papadopoulos  <papadopo@users.sourceforge.net>
 
+       * include/ws2tcpip.h (gai_strerror{AW}): Implement as inline function.
+
+2006-04-14  Dimitri Papadopoulos  <papadopo@users.sourceforge.net>
+
        * include/wsahelp.h (system_header): Add pragma.
        * include/ws2spi.h (system_header): Add pragma.
        * include/rasdlg.h (system_header): Add pragma.
index 8251f98..6ae0ea5 100644 (file)
@@ -304,17 +304,33 @@ int WSAAPI getnameinfo(const struct sockaddr*,socklen_t,char*,DWORD,
 /* FIXME: Need WS protocol-independent API helpers.  */
 #endif
 
-#if 0
-/* These are not exported from any known w32api library.  Are they
-   implemented as macros or inline finctions?  */
-char* WSAAPI gai_strerrorA(int);
-WCHAR* WSAAPI gai_strerrorW(int);
+static __inline char*
+gai_strerrorA(int ecode)
+{
+       static char message[1024+1];
+       DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM
+                     | FORMAT_MESSAGE_IGNORE_INSERTS
+                     | FORMAT_MESSAGE_MAX_WIDTH_MASK;
+       DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT);
+       FormatMessageA(dwFlags, NULL, ecode, dwLanguageId, (LPSTR)message, 1024, NULL);
+       return message;
+}
+static __inline WCHAR*
+gai_strerrorW(int ecode)
+{
+       static WCHAR message[1024+1];
+       DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM
+                     | FORMAT_MESSAGE_IGNORE_INSERTS
+                     | FORMAT_MESSAGE_MAX_WIDTH_MASK;
+       DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT);
+       FormatMessageW(dwFlags, NULL, ecode, dwLanguageId, (LPWSTR)message, 1024, NULL);
+       return message;
+}
 #ifdef UNICODE
-#define gai_strerror   gai_strerrorW
+#define gai_strerror gai_strerrorW
 #else
-#define gai_strerror   gai_strerrorA
-#endif  /* UNICODE */
-#endif /* 0 */
+#define gai_strerror gai_strerrorA
+#endif
 
 /* Some older IPv4/IPv6 compatibility stuff */
 
@@ -360,5 +376,4 @@ typedef struct _OLD_INTERFACE_INFO {
 #ifdef  __cplusplus
 }
 #endif
-
-#endif /* _WS2TCPIP_H */
+#endif