summaryrefslogtreecommitdiff
path: root/sapi/pi3web/pi3web_sapi.h
blob: 36e08e798206b2f807a6b239be8089a5075ea9c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#ifndef _PI3WEB_SAPI_H_
#define _PI3WEB_SAPI_H_

#ifdef PHP_WIN32
#	include <windows.h>
#	include <httpext.h>
#	ifdef SAPI_EXPORTS
#		define MODULE_API __declspec(dllexport) 
#	else
#		define MODULE_API __declspec(dllimport) 
#	endif
#else
#	define far
#	define MODULE_API

	typedef int BOOL;
	typedef void far *LPVOID;
	typedef LPVOID HCONN;
	typedef unsigned long DWORD;
	typedef DWORD far *LPDWORD;
	typedef char CHAR;
	typedef CHAR *LPSTR;
	typedef unsigned char BYTE;
	typedef BYTE far *LPBYTE;
#endif

#ifdef __cplusplus
extern "C" {
#endif

#define PHP_MODE_STANDARD  1
#define PHP_MODE_HIGHLIGHT 2
#define PHP_MODE_INDENT    3
#define PHP_MODE_LINT	   4

//
// passed to the procedure on a new request
//
typedef struct _CONTROL_BLOCK {
    DWORD     cbSize;                 // size of this struct.
    HCONN     ConnID;                 // Context number not to be modified!
    DWORD     dwHttpStatusCode;       // HTTP Status code
    CHAR      lpszLogData[80];        // null terminated log info

    LPSTR     lpszMethod;             // REQUEST_METHOD
    LPSTR     lpszQueryString;        // QUERY_STRING
    LPSTR     lpszPathInfo;           // PATH_INFO
    LPSTR     lpszPathTranslated;     // PATH_TRANSLATED
	LPSTR     lpszFileName;           // FileName to PHP3 physical file
	LPSTR     lpszUri;		          // The request URI
	LPSTR     lpszReq;		          // The whole HTTP request line
	LPSTR     lpszUser;		          // The authenticated user
	LPSTR     lpszPassword;	          // The authenticated password

    DWORD     cbTotalBytes;           // Total bytes indicated from client
    DWORD     cbAvailable;            // Available number of bytes
    LPBYTE    lpbData;                // pointer to cbAvailable bytes

    LPSTR     lpszContentType;        // Content type of client data
	DWORD     dwBehavior;			  // PHP behavior (standard, highlight, intend

    BOOL (* GetServerVariable) ( HCONN       hConn,
                                 LPSTR       lpszVariableName,
                                 LPVOID      lpvBuffer,
                                 LPDWORD     lpdwSize );

    BOOL (* WriteClient)  ( HCONN      ConnID,
                            LPVOID     Buffer,
                            LPDWORD    lpdwBytes,
                            DWORD      dwReserved );

    BOOL (* ReadClient)  ( HCONN      ConnID,
                           LPVOID     lpvBuffer,
                           LPDWORD    lpdwSize );

    BOOL (* SendHeaderFunction)( HCONN      hConn,
                                 LPDWORD    lpdwSize,
                                 LPDWORD    lpdwDataType );

} CONTROL_BLOCK, *LPCONTROL_BLOCK;

DWORD PHP4_wrapper(LPCONTROL_BLOCK lpCB);
BOOL PHP4_startup();
BOOL PHP4_shutdown();

// the following type declaration is for the server side
typedef DWORD ( * PFN_WRAPPERFUNC )( CONTROL_BLOCK *pCB );



#ifdef __cplusplus
}
#endif

#endif  // end definition _PI3WEB_SAPI_H_