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 6806 - (hide annotations) (download) (as text)
Thu Jun 15 00:37:01 2017 UTC (6 years, 9 months ago) by doda
Original Path: trunk/teraterm/teraterm/ttwsk.c
File MIME type: text/x-csrc
File size: 6683 byte(s)
TeraTerm Project としてのライセンス表記を追加

とりあえず Tera Term 本体分。
TeraTerm Project としての copyright 表記の年部分はコミットログを確認して書いたつもりだけど、ミスってたらすみません。

TODO: 過去に取り込んだパッチに関する著作権表記の追加
1 doda 6806 /*
2     * Copyright (C) 1994-1998 T. Teranishi
3     * (C) 2007-2017 TeraTerm Project
4     * All rights reserved.
5     *
6     * Redistribution and use in source and binary forms, with or without modification,
7     * are permitted provided that the following conditions are met:
8     *
9     * 1. Redistributions of source code must retain the above copyright notice,
10     * this list of conditions and the following disclaimer.
11     * 2. Redistributions in binary form must reproduce the above copyright notice,
12     * this list of conditions and the following disclaimer in the documentation
13     * and/or other materials provided with the distribution.
14     * 3. The name of the author may not be used to endorse or promote products derived
15     * from this software without specific prior written permission.
16     *
17     * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
18     * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19     * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
20     * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21     * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
22     * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
23     * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24     * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
25     * OF SUCH DAMAGE.
26     */
27 maya 3227
28     /* TERATERM.EXE, Winsock interface */
29    
30     #include "teraterm.h"
31     #include "ttwsk.h"
32 doda 4089 #include "WSAAsyncGetAddrInfo.h"
33 maya 3227
34     static HANDLE HWinsock = NULL;
35    
36     Tclosesocket Pclosesocket;
37     Tconnect Pconnect;
38     Thtonl Phtonl;
39     Thtons Phtons;
40     Tinet_addr Pinet_addr;
41     Tioctlsocket Pioctlsocket;
42     Trecv Precv;
43     Tselect Pselect;
44     Tsend Psend;
45     Tsetsockopt Psetsockopt;
46     Tsocket Psocket;
47     // Tgethostbyname Pgethostbyname;
48     TWSAAsyncSelect PWSAAsyncSelect;
49     TWSAAsyncGetHostByName PWSAAsyncGetHostByName;
50     TWSACancelAsyncRequest PWSACancelAsyncRequest;
51     TWSAGetLastError PWSAGetLastError;
52     TWSAStartup PWSAStartup;
53     TWSACleanup PWSACleanup;
54 doda 4165 // Tgetaddrinfo Pgetaddrinfo;
55     Tfreeaddrinfo Pfreeaddrinfo;
56 doda 4089 TWSAAsyncGetAddrInfo PWSAAsyncGetAddrInfo;
57 maya 3227
58     void CheckWinsock()
59     {
60     WORD wVersionRequired;
61     WSADATA WSData;
62    
63     if (HWinsock == NULL) return;
64     #if 0
65     wVersionRequired = 1*256+1;
66     if ((PWSAStartup(wVersionRequired, &WSData) != 0) ||
67     (LOBYTE(WSData.wVersion) != 1) ||
68     (HIBYTE(WSData.wVersion) != 1))
69     {
70     PWSACleanup();
71     FreeLibrary(HWinsock);
72     HWinsock = NULL;
73     }
74     #else
75     wVersionRequired = MAKEWORD(2, 2);
76     if ((PWSAStartup(wVersionRequired, &WSData) != 0) ||
77     (LOBYTE(WSData.wVersion) != 2) ||
78     (HIBYTE(WSData.wVersion) != 2))
79     {
80     PWSACleanup();
81     FreeLibrary(HWinsock);
82     HWinsock = NULL;
83     }
84     #endif
85     }
86    
87     #define IdCLOSESOCKET 3
88     #define IdCONNECT 4
89 doda 6435 #define IdHTONL 8
90     #define IdHTONS 9
91 maya 3227 #define IdINET_ADDR 10
92     #define IdIOCTLSOCKET 12
93     #define IdRECV 16
94     #define IdSELECT 18
95     #define IdSEND 19
96     #define IdSETSOCKOPT 21
97     #define IdSOCKET 23
98     // #define IdGETHOSTBYNAME 52
99     #define IdWSAASYNCSELECT 101
100     #define IdWSAASYNCGETHOSTBYNAME 103
101     #define IdWSACANCELASYNCREQUEST 108
102     #define IdWSAGETLASTERROR 111
103     #define IdWSASTARTUP 115
104     #define IdWSACLEANUP 116
105    
106     BOOL LoadWinsock()
107     {
108     BOOL Err;
109    
110     if (HWinsock == NULL)
111     {
112 maya 4134 char wsock32_dll[MAX_PATH];
113    
114     GetSystemDirectory(wsock32_dll, sizeof(wsock32_dll));
115     strncat_s(wsock32_dll, sizeof(wsock32_dll), "\\wsock32.dll", _TRUNCATE);
116     HWinsock = LoadLibrary(wsock32_dll);
117 maya 3227 if (HWinsock == NULL) return FALSE;
118    
119     Err = FALSE;
120    
121     Pclosesocket = (Tclosesocket)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdCLOSESOCKET));
122     if (Pclosesocket==NULL) Err = TRUE;
123    
124     Pconnect = (Tconnect)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdCONNECT));
125     if (Pconnect==NULL) Err = TRUE;
126    
127     Phtonl = (Thtonl)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdHTONL));
128     if (Phtonl==NULL) Err = TRUE;
129    
130     Phtons = (Thtons)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdHTONS));
131     if (Phtons==NULL) Err = TRUE;
132    
133     Pinet_addr = (Tinet_addr)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdINET_ADDR));
134     if (Pinet_addr==NULL) Err = TRUE;
135    
136     Pioctlsocket = (Tioctlsocket)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdIOCTLSOCKET));
137     if (Pioctlsocket==NULL) Err = TRUE;
138    
139     Precv = (Trecv)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdRECV));
140     if (Precv==NULL) Err = TRUE;
141    
142     Pselect = (Tselect)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdSELECT));
143     if (Pselect==NULL) Err = TRUE;
144    
145     Psend = (Tsend)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdSEND));
146     if (Psend==NULL) Err = TRUE;
147    
148     Psetsockopt = (Tsetsockopt)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdSETSOCKOPT));
149     if (Psetsockopt==NULL) Err = TRUE;
150    
151     Psocket = (Tsocket)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdSOCKET));
152     if (Psocket==NULL) Err = TRUE;
153    
154     // Pgethostbyname = (Tgethostbyname)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdGETHOSTBYNAME));
155     // if (Pgethostbyname==NULL) Err = TRUE;
156    
157     PWSAAsyncSelect = (TWSAAsyncSelect)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSAASYNCSELECT));
158     if (PWSAAsyncSelect==NULL) Err = TRUE;
159    
160     PWSAAsyncGetHostByName =
161     (TWSAAsyncGetHostByName)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSAASYNCGETHOSTBYNAME));
162     if (PWSAAsyncSelect==NULL) Err = TRUE;
163    
164     PWSACancelAsyncRequest = (TWSACancelAsyncRequest)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSACANCELASYNCREQUEST));
165     if (PWSACancelAsyncRequest==NULL) Err = TRUE;
166    
167     PWSAGetLastError = (TWSAGetLastError)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSAGETLASTERROR));
168     if (PWSAGetLastError==NULL) Err = TRUE;
169    
170     PWSAStartup = (TWSAStartup)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSASTARTUP));
171     if (PWSAStartup==NULL) Err = TRUE;
172    
173     PWSACleanup = (TWSACleanup)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSACLEANUP));
174     if (PWSACleanup==NULL) Err = TRUE;
175    
176 doda 4165 // Pgetaddrinfo = (Tgetaddrinfo)GetProcAddress(HWinsock, "getaddrinfo");
177     // if (Pgetaddrinfo==NULL) Err = TRUE;
178    
179     Pfreeaddrinfo = freeaddrinfo;
180 doda 4089 PWSAAsyncGetAddrInfo = WSAAsyncGetAddrInfo;
181    
182 maya 3227 if (Err)
183     {
184     FreeLibrary(HWinsock);
185     HWinsock = NULL;
186     return FALSE;
187     }
188     }
189    
190     CheckWinsock();
191    
192     return (HWinsock != NULL);
193     }
194    
195     void FreeWinsock()
196     {
197     HANDLE HTemp;
198    
199     if (HWinsock == NULL) return;
200     HTemp = HWinsock;
201     HWinsock = NULL;
202     PWSACleanup();
203     Sleep(50); // for safety
204     FreeLibrary(HTemp);
205     }

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