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 4134 - (hide annotations) (download) (as text)
Sun Oct 24 04:43:01 2010 UTC (13 years, 5 months ago) by maya
Original Path: trunk/teraterm/teraterm/ttwsk.c
File MIME type: text/x-csrc
File size: 4999 byte(s)
システムディレクトリの dll 読み込み時にフルパスを指定するようにした。
インストーラが、TERATERM.INI に書き込まれた notepad.exe をフルパスにするようにした。
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 4089 #include "WSAAsyncGetAddrInfo.h"
10 maya 3227
11     static HANDLE HWinsock = NULL;
12    
13     Tclosesocket Pclosesocket;
14     Tconnect Pconnect;
15     Thtonl Phtonl;
16     Thtons Phtons;
17     Tinet_addr Pinet_addr;
18     Tioctlsocket Pioctlsocket;
19     Trecv Precv;
20     Tselect Pselect;
21     Tsend Psend;
22     Tsetsockopt Psetsockopt;
23     Tsocket Psocket;
24     // Tgethostbyname Pgethostbyname;
25     TWSAAsyncSelect PWSAAsyncSelect;
26     TWSAAsyncGetHostByName PWSAAsyncGetHostByName;
27     TWSACancelAsyncRequest PWSACancelAsyncRequest;
28     TWSAGetLastError PWSAGetLastError;
29     TWSAStartup PWSAStartup;
30     TWSACleanup PWSACleanup;
31 doda 4089 TWSAAsyncGetAddrInfo PWSAAsyncGetAddrInfo;
32 maya 3227
33     void CheckWinsock()
34     {
35     WORD wVersionRequired;
36     WSADATA WSData;
37    
38     if (HWinsock == NULL) return;
39     #if 0
40     wVersionRequired = 1*256+1;
41     if ((PWSAStartup(wVersionRequired, &WSData) != 0) ||
42     (LOBYTE(WSData.wVersion) != 1) ||
43     (HIBYTE(WSData.wVersion) != 1))
44     {
45     PWSACleanup();
46     FreeLibrary(HWinsock);
47     HWinsock = NULL;
48     }
49     #else
50     wVersionRequired = MAKEWORD(2, 2);
51     if ((PWSAStartup(wVersionRequired, &WSData) != 0) ||
52     (LOBYTE(WSData.wVersion) != 2) ||
53     (HIBYTE(WSData.wVersion) != 2))
54     {
55     PWSACleanup();
56     FreeLibrary(HWinsock);
57     HWinsock = NULL;
58     }
59     #endif
60     }
61    
62     #define IdCLOSESOCKET 3
63     #define IdCONNECT 4
64     #define IdHTONL 8
65     #define IdHTONS 9
66     #define IdINET_ADDR 10
67     #define IdIOCTLSOCKET 12
68     #define IdRECV 16
69     #define IdSELECT 18
70     #define IdSEND 19
71     #define IdSETSOCKOPT 21
72     #define IdSOCKET 23
73     // #define IdGETHOSTBYNAME 52
74     #define IdWSAASYNCSELECT 101
75     #define IdWSAASYNCGETHOSTBYNAME 103
76     #define IdWSACANCELASYNCREQUEST 108
77     #define IdWSAGETLASTERROR 111
78     #define IdWSASTARTUP 115
79     #define IdWSACLEANUP 116
80    
81     BOOL LoadWinsock()
82     {
83     BOOL Err;
84    
85     if (HWinsock == NULL)
86     {
87 maya 4134 char wsock32_dll[MAX_PATH];
88    
89     GetSystemDirectory(wsock32_dll, sizeof(wsock32_dll));
90     strncat_s(wsock32_dll, sizeof(wsock32_dll), "\\wsock32.dll", _TRUNCATE);
91     HWinsock = LoadLibrary(wsock32_dll);
92 maya 3227 if (HWinsock == NULL) return FALSE;
93    
94     Err = FALSE;
95    
96     Pclosesocket = (Tclosesocket)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdCLOSESOCKET));
97     if (Pclosesocket==NULL) Err = TRUE;
98    
99     Pconnect = (Tconnect)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdCONNECT));
100     if (Pconnect==NULL) Err = TRUE;
101    
102     Phtonl = (Thtonl)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdHTONL));
103     if (Phtonl==NULL) Err = TRUE;
104    
105     Phtons = (Thtons)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdHTONS));
106     if (Phtons==NULL) Err = TRUE;
107    
108     Pinet_addr = (Tinet_addr)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdINET_ADDR));
109     if (Pinet_addr==NULL) Err = TRUE;
110    
111     Pioctlsocket = (Tioctlsocket)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdIOCTLSOCKET));
112     if (Pioctlsocket==NULL) Err = TRUE;
113    
114     Precv = (Trecv)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdRECV));
115     if (Precv==NULL) Err = TRUE;
116    
117     Pselect = (Tselect)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdSELECT));
118     if (Pselect==NULL) Err = TRUE;
119    
120     Psend = (Tsend)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdSEND));
121     if (Psend==NULL) Err = TRUE;
122    
123     Psetsockopt = (Tsetsockopt)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdSETSOCKOPT));
124     if (Psetsockopt==NULL) Err = TRUE;
125    
126     Psocket = (Tsocket)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdSOCKET));
127     if (Psocket==NULL) Err = TRUE;
128    
129     // Pgethostbyname = (Tgethostbyname)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdGETHOSTBYNAME));
130     // if (Pgethostbyname==NULL) Err = TRUE;
131    
132     PWSAAsyncSelect = (TWSAAsyncSelect)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSAASYNCSELECT));
133     if (PWSAAsyncSelect==NULL) Err = TRUE;
134    
135     PWSAAsyncGetHostByName =
136     (TWSAAsyncGetHostByName)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSAASYNCGETHOSTBYNAME));
137     if (PWSAAsyncSelect==NULL) Err = TRUE;
138    
139     PWSACancelAsyncRequest = (TWSACancelAsyncRequest)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSACANCELASYNCREQUEST));
140     if (PWSACancelAsyncRequest==NULL) Err = TRUE;
141    
142     PWSAGetLastError = (TWSAGetLastError)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSAGETLASTERROR));
143     if (PWSAGetLastError==NULL) Err = TRUE;
144    
145     PWSAStartup = (TWSAStartup)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSASTARTUP));
146     if (PWSAStartup==NULL) Err = TRUE;
147    
148     PWSACleanup = (TWSACleanup)GetProcAddress(HWinsock, MAKEINTRESOURCE(IdWSACLEANUP));
149     if (PWSACleanup==NULL) Err = TRUE;
150    
151 doda 4089 PWSAAsyncGetAddrInfo = WSAAsyncGetAddrInfo;
152    
153 maya 3227 if (Err)
154     {
155     FreeLibrary(HWinsock);
156     HWinsock = NULL;
157     return FALSE;
158     }
159     }
160    
161     CheckWinsock();
162    
163     return (HWinsock != NULL);
164     }
165    
166     void FreeWinsock()
167     {
168     HANDLE HTemp;
169    
170     if (HWinsock == NULL) return;
171     HTemp = HWinsock;
172     HWinsock = NULL;
173     PWSACleanup();
174     Sleep(50); // for safety
175     FreeLibrary(HTemp);
176     }

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