Removed incorrect string length calculation.
[wine] / dlls / wininet / internet.h
1 #ifndef _WINE_INTERNET_H_
2 #define _WINE_INTERNET_H_
3
4 #include <time.h>
5
6 typedef enum
7 {
8     WH_HINIT = INTERNET_HANDLE_TYPE_INTERNET,
9     WH_HFTPSESSION = INTERNET_HANDLE_TYPE_CONNECT_FTP,
10     WH_HGOPHERSESSION = INTERNET_HANDLE_TYPE_CONNECT_GOPHER,
11     WH_HHTTPSESSION = INTERNET_HANDLE_TYPE_CONNECT_HTTP,
12     WH_HFILE = INTERNET_HANDLE_TYPE_FTP_FILE,
13     WH_HFINDNEXT = INTERNET_HANDLE_TYPE_FTP_FIND,
14     WH_HHTTPREQ = INTERNET_HANDLE_TYPE_HTTP_REQUEST,
15 } WH_TYPE;
16
17 typedef struct _WININETHANDLEHEADER
18 {
19     WH_TYPE htype;
20     DWORD  dwFlags;
21     DWORD  dwContext;
22     DWORD  dwError;
23     struct _WININETHANDLEHEADER *lpwhparent;
24 } WININETHANDLEHEADER, *LPWININETHANDLEHEADER;
25
26
27 typedef struct
28 {
29     WININETHANDLEHEADER hdr;
30     LPSTR  lpszAgent;
31     LPSTR  lpszProxy;
32     LPSTR  lpszProxyBypass;
33     DWORD   dwAccessType;
34     INTERNET_STATUS_CALLBACK lpfnStatusCB;
35 } WININETAPPINFOA, *LPWININETAPPINFOA;
36
37
38 typedef struct
39 {
40     WININETHANDLEHEADER hdr;
41     LPSTR  lpszServerName;
42     LPSTR  lpszUserName;
43     INTERNET_PORT nServerPort;
44     struct sockaddr_in socketAddress;
45     struct hostent *phostent;
46 } WININETHTTPSESSIONA, *LPWININETHTTPSESSIONA;
47
48 #define HDR_ISREQUEST           0x0001
49 #define HDR_COMMADELIMITED      0x0002
50 #define HDR_SEMIDELIMITED       0x0004
51
52 typedef struct
53 {
54     LPSTR lpszField;
55     LPSTR lpszValue;
56     WORD wFlags;
57     WORD wCount;
58 } HTTPHEADERA, *LPHTTPHEADERA;
59
60
61 typedef struct
62 {
63     WININETHANDLEHEADER hdr;
64     LPSTR lpszPath;
65     LPSTR lpszVerb;
66     LPSTR lpszHostName;
67     INT nSocketFD;
68     HTTPHEADERA StdHeaders[HTTP_QUERY_MAX+1];
69     HTTPHEADERA *pCustHeaders;
70     INT nCustHeaders;
71 } WININETHTTPREQA, *LPWININETHTTPREQA;
72
73
74 typedef struct
75 {
76     WININETHANDLEHEADER hdr;
77     int sndSocket;
78     int lstnSocket;
79     int pasvSocket; /* data socket connected by us in case of passive FTP */
80     struct sockaddr_in socketAddress;
81     struct sockaddr_in lstnSocketAddress;
82     struct hostent *phostent;
83     LPSTR  lpszPassword;
84     LPSTR  lpszUserName;
85 } WININETFTPSESSIONA, *LPWININETFTPSESSIONA;
86
87
88 typedef struct
89 {
90     WININETHANDLEHEADER hdr;
91     int nDataSocket;
92 } WININETFILE, *LPWININETFILE;
93
94
95 typedef struct
96 {
97     BOOL bIsDirectory;
98     LPSTR lpszName;
99     DWORD nSize;
100     struct tm tmLastModified;
101     unsigned short permissions;
102 } FILEPROPERTIESA, *LPFILEPROPERTIESA;
103
104
105 typedef struct
106 {
107     WININETHANDLEHEADER hdr;
108     int index;
109     DWORD size;
110     LPFILEPROPERTIESA lpafp;
111 } WININETFINDNEXTA, *LPWININETFINDNEXTA;
112
113 typedef enum
114 {
115     FTPPUTFILEA,
116     FTPSETCURRENTDIRECTORYA,
117     FTPCREATEDIRECTORYA,
118     FTPFINDFIRSTFILEA,
119     FTPGETCURRENTDIRECTORYA,
120     FTPOPENFILEA,
121     FTPGETFILEA,
122     FTPDELETEFILEA,
123     FTPREMOVEDIRECTORYA,
124     FTPRENAMEFILEA,
125     INTERNETFINDNEXTA,
126     HTTPSENDREQUESTA,
127     HTTPOPENREQUESTA,
128 } ASYNC_FUNC;
129
130 typedef struct WORKREQ
131 {
132     ASYNC_FUNC asyncall;
133     DWORD param1;
134 #define HFTPSESSION       param1
135
136     DWORD param2;
137 #define LPSZLOCALFILE     param2
138 #define LPSZREMOTEFILE    param2
139 #define LPSZFILENAME      param2
140 #define LPSZSRCFILE       param2
141 #define LPSZDIRECTORY     param2
142 #define LPSZSEARCHFILE    param2
143 #define LPSZHEADER        param2
144 #define LPSZVERB          param2
145
146     DWORD param3;
147 #define LPSZNEWREMOTEFILE param3
148 #define LPSZNEWFILE       param3
149 #define LPFINDFILEDATA    param3
150 #define LPDWDIRECTORY     param3
151 #define FDWACCESS         param3
152 #define LPSZDESTFILE      param3
153 #define DWHEADERLENGTH    param3
154 #define LPSZOBJECTNAME    param3
155
156     DWORD param4;
157 #define DWFLAGS           param4
158 #define LPOPTIONAL        param4
159
160     DWORD param5;
161 #define DWCONTEXT         param5
162 #define DWOPTIONALLENGTH  param5
163
164     DWORD param6;
165 #define FFAILIFEXISTS     param6
166 #define LPSZVERSION       param6
167
168     DWORD param7;
169 #define DWLOCALFLAGSATTRIBUTE param7
170 #define LPSZREFERRER          param7
171
172     DWORD param8;
173 #define LPSZACCEPTTYPES       param8
174
175     struct WORKREQ *next;
176     struct WORKREQ *prev;
177
178 } WORKREQUEST, *LPWORKREQUEST;
179
180
181 time_t ConvertTimeString(LPCSTR asctime);
182
183 HINTERNET FTP_Connect(HINTERNET hInterent, LPCSTR lpszServerName, 
184         INTERNET_PORT nServerPort, LPCSTR lpszUserName,
185         LPCSTR lpszPassword, DWORD dwFlags, DWORD dwContext);
186
187 HINTERNET HTTP_Connect(HINTERNET hInterent, LPCSTR lpszServerName, 
188         INTERNET_PORT nServerPort, LPCSTR lpszUserName,
189         LPCSTR lpszPassword, DWORD dwFlags, DWORD dwContext);
190
191 BOOL GetAddress(LPCSTR lpszServerName, INTERNET_PORT nServerPort,
192         struct hostent **phe, struct sockaddr_in *psa);
193
194 int INTERNET_WriteDataToStream(int nDataSocket, LPCVOID Buffer, DWORD BytesToWrite);
195 int INTERNET_ReadDataFromStream(int nDataSocket, LPVOID Buffer, DWORD BytesToRead);
196 void INTERNET_SetLastError(DWORD dwError);
197 DWORD INTERNET_GetLastError();
198 BOOL INTERNET_AsyncCall(LPWORKREQUEST lpWorkRequest);
199 LPSTR INTERNET_GetResponseBuffer();
200 LPSTR INTERNET_GetNextLine(INT nSocket, LPSTR lpszBuffer, LPDWORD dwBuffer);
201
202 BOOL FTP_CloseSessionHandle(LPWININETFTPSESSIONA lpwfs);
203 BOOL FTP_CloseFindNextHandle(LPWININETFINDNEXTA lpwfn);
204 BOOLAPI FTP_FtpPutFileA(HINTERNET hConnect, LPCSTR lpszLocalFile,
205     LPCSTR lpszNewRemoteFile, DWORD dwFlags, DWORD dwContext);
206 BOOLAPI FTP_FtpSetCurrentDirectoryA(HINTERNET hConnect, LPCSTR lpszDirectory);
207 BOOLAPI FTP_FtpCreateDirectoryA(HINTERNET hConnect, LPCSTR lpszDirectory);
208 INTERNETAPI HINTERNET WINAPI FTP_FtpFindFirstFileA(HINTERNET hConnect,
209     LPCSTR lpszSearchFile, LPWIN32_FIND_DATAA lpFindFileData, DWORD dwFlags, DWORD dwContext);
210 BOOLAPI FTP_FtpGetCurrentDirectoryA(HINTERNET hFtpSession, LPSTR lpszCurrentDirectory, 
211         LPDWORD lpdwCurrentDirectory);
212 BOOL FTP_ConvertFileProp(LPFILEPROPERTIESA lpafp, LPWIN32_FIND_DATAA lpFindFileData);
213 BOOL FTP_FtpRenameFileA(HINTERNET hFtpSession, LPCSTR lpszSrc, LPCSTR lpszDest);
214 BOOL FTP_FtpRemoveDirectoryA(HINTERNET hFtpSession, LPCSTR lpszDirectory);
215 BOOL FTP_FtpDeleteFileA(HINTERNET hFtpSession, LPCSTR lpszFileName);
216 HINTERNET FTP_FtpOpenFileA(HINTERNET hFtpSession, LPCSTR lpszFileName, 
217         DWORD fdwAccess, DWORD dwFlags, DWORD dwContext);
218 BOOLAPI FTP_FtpGetFileA(HINTERNET hInternet, LPCSTR lpszRemoteFile, LPCSTR lpszNewFile,
219         BOOL fFailIfExists, DWORD dwLocalFlagsAttribute, DWORD dwInternetFlags,
220         DWORD dwContext);
221
222 BOOLAPI HTTP_HttpSendRequestA(HINTERNET hHttpRequest, LPCSTR lpszHeaders,
223         DWORD dwHeaderLength, LPVOID lpOptional ,DWORD dwOptionalLength);
224 INTERNETAPI HINTERNET WINAPI HTTP_HttpOpenRequestA(HINTERNET hHttpSession,
225         LPCSTR lpszVerb, LPCSTR lpszObjectName, LPCSTR lpszVersion,
226         LPCSTR lpszReferrer , LPCSTR *lpszAcceptTypes, 
227         DWORD dwFlags, DWORD dwContext);
228 void HTTP_CloseHTTPSessionHandle(LPWININETHTTPSESSIONA lpwhs);
229 void HTTP_CloseHTTPRequestHandle(LPWININETHTTPREQA lpwhr);
230
231
232 #define MAX_REPLY_LEN           0x5B4
233
234
235 #endif /* _WINE_INTERNET_H_ */