Develop and Download Open Source Software

Browse Subversion Repository

Annotation of /branches/ttcomtester/teraterm/teraterm/ttwsk.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4158 - (hide annotations) (download) (as text)
Fri Nov 19 04:06:40 2010 UTC (13 years, 4 months ago) by doda
Original Path: trunk/teraterm/teraterm/ttwsk.c
File MIME type: text/x-csrc
File size: 5081 byte(s)
NO_INET6 でビルドが通るようにした。

1 maya 3227 /* Tera Term
2     Copyright(C) 1994-1998 T. Teranishi
3     All rights reserved. */
4    
5     /* TERATERM.EXE, Winsock interface */
6    
7     #include "teraterm.h"
8     #include "ttwsk.h"
9 doda 4158 #ifndef NO_INET6
10 doda 4089 #include "WSAAsyncGetAddrInfo.h"
11 doda 4158 #endif /* NO_INET6 */
12 maya 3227
13     static HANDLE HWinsock = NULL;
14    
15     Tclosesocket Pclosesocket;
16     Tconnect Pconnect;
17     Thtonl Phtonl;
18     Thtons Phtons;
19     Tinet_addr Pinet_addr;
20     Tioctlsocket Pioctlsocket;
21     Trecv Precv;
22     Tselect Pselect;
23     Tsend Psend;
24     Tsetsockopt Psetsockopt;
25     Tsocket Psocket;
26     // Tgethostbyname Pgethostbyname;
27     TWSAAsyncSelect PWSAAsyncSelect;
28     TWSAAsyncGetHostByName PWSAAsyncGetHostByName;
29     TWSACancelAsyncRequest PWSACancelAsyncRequest;
30     TWSAGetLastError PWSAGetLastError;
31     TWSAStartup PWSAStartup;
32     TWSACleanup PWSACleanup;
33 doda 4089 TWSAAsyncGetAddrInfo PWSAAsyncGetAddrInfo;
34 maya 3227
35     void CheckWinsock()
36     {
37     WORD wVersionRequired;
38     WSADATA WSData;
39    
40     if (HWinsock == NULL) return;
41     #if 0
42     wVersionRequired = 1*256+1;
43     if ((PWSAStartup(wVersionRequired, &WSData) != 0) ||
44     (LOBYTE(WSData.wVersion) != 1) ||
45     (HIBYTE(WSData.wVersion) != 1))
46     {
47     PWSACleanup();
48     FreeLibrary(HWinsock);
49     HWinsock = NULL;
50     }
51     #else
52     wVersionRequired = MAKEWORD(2, 2);
53     if ((PWSAStartup(wVersionRequired, &WSData) != 0) ||
54     (LOBYTE(WSData.wVersion) != 2) ||
55     (HIBYTE(WSData.wVersion) != 2))
56     {
57     PWSACleanup();
58     FreeLibrary(HWinsock);
59     HWinsock = NULL;
60     }
61     #endif
62     }
63    
64     #define IdCLOSESOCKET 3
65     #define IdCONNECT 4
66     #define IdHTONL 8
67     #define IdHTONS 9
68     #define IdINET_ADDR 10
69     #define IdIOCTLSOCKET 12
70     #define IdRECV 16
71     #define IdSELECT 18
72     #define IdSEND 19
73     #define IdSETSOCKOPT 21
74     #define IdSOCKET 23
75     // #define IdGETHOSTBYNAME 52
76     #define IdWSAASYNCSELECT 101
77     #define IdWSAASYNCGETHOSTBYNAME 103
78     #define IdWSACANCELASYNCREQUEST 108
79     #define IdWSAGETLASTERROR 111
80     #define IdWSASTARTUP 115
81     #define IdWSACLEANUP 116
82    
83     BOOL LoadWinsock()
84     {
85     BOOL Err;
86    
87     if (HWinsock == NULL)
88     {
89 maya 4134 char wsock32_dll[MAX_PATH];
90    
91     GetSystemDirectory(wsock32_dll, sizeof(wsock32_dll));
92     strncat_s(wsock32_dll, sizeof(wsock32_dll), "\\wsock32.dll", _TRUNCATE);
93     HWinsock = LoadLibrary(wsock32_dll);
94 maya 3227 if (HWinsock == NULL) return FALSE;
95    
96     Err = FALSE;
97    
98     Pclosesocket = (Tclosesocket)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdCLOSESOCKET));
99     if (Pclosesocket==NULL) Err = TRUE;
100    
101     Pconnect = (Tconnect)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdCONNECT));
102     if (Pconnect==NULL) Err = TRUE;
103    
104     Phtonl = (Thtonl)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdHTONL));
105     if (Phtonl==NULL) Err = TRUE;
106    
107     Phtons = (Thtons)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdHTONS));
108     if (Phtons==NULL) Err = TRUE;
109    
110     Pinet_addr = (Tinet_addr)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdINET_ADDR));
111     if (Pinet_addr==NULL) Err = TRUE;
112    
113     Pioctlsocket = (Tioctlsocket)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdIOCTLSOCKET));
114     if (Pioctlsocket==NULL) Err = TRUE;
115    
116     Precv = (Trecv)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdRECV));
117     if (Precv==NULL) Err = TRUE;
118    
119     Pselect = (Tselect)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdSELECT));
120     if (Pselect==NULL) Err = TRUE;
121    
122     Psend = (Tsend)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdSEND));
123     if (Psend==NULL) Err = TRUE;
124    
125     Psetsockopt = (Tsetsockopt)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdSETSOCKOPT));
126     if (Psetsockopt==NULL) Err = TRUE;
127    
128     Psocket = (Tsocket)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdSOCKET));
129     if (Psocket==NULL) Err = TRUE;
130    
131     // Pgethostbyname = (Tgethostbyname)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdGETHOSTBYNAME));
132     // if (Pgethostbyname==NULL) Err = TRUE;
133    
134     PWSAAsyncSelect = (TWSAAsyncSelect)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSAASYNCSELECT));
135     if (PWSAAsyncSelect==NULL) Err = TRUE;
136    
137     PWSAAsyncGetHostByName =
138     (TWSAAsyncGetHostByName)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSAASYNCGETHOSTBYNAME));
139     if (PWSAAsyncSelect==NULL) Err = TRUE;
140    
141     PWSACancelAsyncRequest = (TWSACancelAsyncRequest)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSACANCELASYNCREQUEST));
142     if (PWSACancelAsyncRequest==NULL) Err = TRUE;
143    
144     PWSAGetLastError = (TWSAGetLastError)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSAGETLASTERROR));
145     if (PWSAGetLastError==NULL) Err = TRUE;
146    
147     PWSAStartup = (TWSAStartup)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSASTARTUP));
148     if (PWSAStartup==NULL) Err = TRUE;
149    
150     PWSACleanup = (TWSACleanup)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSACLEANUP));
151     if (PWSACleanup==NULL) Err = TRUE;
152    
153 doda 4158 #ifndef NO_INET6
154 doda 4089 PWSAAsyncGetAddrInfo = WSAAsyncGetAddrInfo;
155 doda 4158 #endif /* NO_INET6 */
156 doda 4089
157 maya 3227 if (Err)
158     {
159     FreeLibrary(HWinsock);
160     HWinsock = NULL;
161     return FALSE;
162     }
163     }
164    
165     CheckWinsock();
166    
167     return (HWinsock != NULL);
168     }
169    
170     void FreeWinsock()
171     {
172     HANDLE HTemp;
173    
174     if (HWinsock == NULL) return;
175     HTemp = HWinsock;
176     HWinsock = NULL;
177     PWSACleanup();
178     Sleep(50); // for safety
179     FreeLibrary(HTemp);
180     }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26