#ifndef _APACHE_REQUEST_H #define _APACHE_REQUEST_H #include "httpd.h" #include "http_config.h" #include "http_core.h" #include "http_log.h" #include "http_main.h" #include "http_protocol.h" #include "util_script.h" #ifdef SFIO #include "sfio.h" /* sfio 2000 changed _stdopen to _stdfdopen */ #if SFIO_VERSION >= 20000101L #define _stdopen _stdfdopen #endif extern Sfio_t* _stdopen _ARG_((int, const char*)); /*1999*/ #undef FILE #define FILE Sfio_t #undef fwrite #define fwrite(p,s,n,f) sfwrite((f),(p),(s)*(n)) #undef fseek #define fseek(f,a,b) sfseek((f),(a),(b)) #undef ap_pfdopen #define ap_pfdopen(p,q,r) _stdopen((q),(r)) #undef ap_pfclose #define ap_pfclose(p,q) sfclose(q) #endif /*SFIO*/ typedef struct ApacheUpload ApacheUpload; typedef struct { table *parms; ApacheUpload *upload; int status; int parsed; int post_max; int disable_uploads; int (*upload_hook)(void *ptr, char *buf, int len, ApacheUpload *upload); void *hook_data; char* temp_dir; request_rec *r; } ApacheRequest; struct ApacheUpload { ApacheUpload *next; char *filename; char *name; char *tempname; table *info; FILE *fp; long size; ApacheRequest *req; }; #ifndef strEQ #define strEQ(s1,s2) (!strcmp(s1,s2)) #endif #ifndef strEQN #define strEQN(s1,s2,n) (!strncmp(s1,s2,n)) #endif #ifndef strcaseEQ #define strcaseEQ(s1,s2) (!strcasecmp(s1,s2)) #endif #ifndef strncaseEQ #define strncaseEQ(s1,s2,n) (!strncasecmp(s1,s2,n)) #endif #define DEFAULT_TABLE_NELTS 10 #define DEFAULT_ENCTYPE "application/x-www-form-urlencoded" #define DEFAULT_ENCTYPE_LENGTH 33 #define MULTIPART_ENCTYPE "multipart/form-data" #define MULTIPART_ENCTYPE_LENGTH 19 #ifdef __cplusplus extern "C" { #endif ApacheRequest *ApacheRequest_new(request_rec *r); int ApacheRequest_parse_multipart(ApacheRequest *req); int ApacheRequest_parse_urlencoded(ApacheRequest *req); char *ApacheRequest_script_name(ApacheRequest *req); char *ApacheRequest_script_path(ApacheRequest *req); const char *ApacheRequest_param(ApacheRequest *req, const char *key); array_header *ApacheRequest_params(ApacheRequest *req, const char *key); char *ApacheRequest_params_as_string(ApacheRequest *req, const char *key); int ApacheRequest___parse(ApacheRequest *req); #define ApacheRequest_parse(req) \ (req->status = req->parsed ? req->status : ApacheRequest___parse(req)) FILE *ApacheRequest_tmpfile(ApacheRequest *req, ApacheUpload *upload); ApacheUpload *ApacheUpload_new(ApacheRequest *req); ApacheUpload *ApacheUpload_find(ApacheUpload *upload, char *name); #define ApacheRequest_upload(req) \ ((req->parsed || (ApacheRequest_parse(req) == OK)) ? req->upload : NULL) #define ApacheUpload_FILE(upload) (upload->fp) #define ApacheUpload_size(upload) (upload->size) #define ApacheUpload_info(upload, key) \ ap_table_get(upload->info, key) #define ApacheUpload_type(upload) \ ApacheUpload_info(upload, "Content-Type") #define ApacheRequest_set_post_max(req, max) (req->post_max = max) #define ApacheRequest_set_temp_dir(req, dir) (req->temp_dir = dir) char *ApacheUtil_expires(pool *p, char *time_str, int type); #define EXPIRES_HTTP 1 #define EXPIRES_COOKIE 2 char *ApacheRequest_expires(ApacheRequest *req, char *time_str); #ifdef __cplusplus } #endif #define REQ_ERROR APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, req->r #ifdef REQDEBUG #define REQ_DEBUG(a) a #else #define REQ_DEBUG(a) #endif #endif /* _APACHE_REQUEST_H */