moved directory list formatting to qse_httpd_rcb_t.

added some entask variants
modified qse_mbsadup()/qse_mbsxadup()/qse_wcsadup(0/qse_wcsxadup() to return length
This commit is contained in:
2012-10-16 08:54:07 +00:00
parent 7940a758d0
commit c6530a1c13
13 changed files with 502 additions and 305 deletions

View File

@ -994,11 +994,13 @@ qse_mchar_t* qse_mbsxdup2 (
qse_mchar_t* qse_mbsadup (
const qse_mchar_t* str[],
qse_size_t* len,
qse_mmgr_t* mmgr
);
qse_mchar_t* qse_mbsxadup (
const qse_mcstr_t str[],
qse_size_t* len,
qse_mmgr_t* mmgr
);
@ -1029,11 +1031,13 @@ qse_wchar_t* qse_wcsxdup2 (
qse_wchar_t* qse_wcsadup (
const qse_wchar_t* str[],
qse_size_t* len,
qse_mmgr_t* mmgr
);
qse_wchar_t* qse_wcsxadup (
const qse_wcstr_t str[],
qse_size_t* len,
qse_mmgr_t* mmgr
);
@ -1042,15 +1046,15 @@ qse_wchar_t* qse_wcsxadup (
# define qse_strdup2(s1,s2,mmgr) qse_mbsdup2(s1,s2,mmgr)
# define qse_strxdup(s,l,mmgr) qse_mbsxdup(s,l,mmgr)
# define qse_strxdup2(s1,l1,s2,l2,mmgr) qse_mbsxdup(s1,l1,s2,l2,mmgr)
# define qse_stradup(sa,mmgr) qse_mbsadup(sa,mmgr)
# define qse_strxadup(sa,mmgr) qse_mbsxadup(sa,mmgr)
# define qse_stradup(sa,len,mmgr) qse_mbsadup(sa,len,mmgr)
# define qse_strxadup(sa,len,mmgr) qse_mbsxadup(sa,len,mmgr)
#else
# define qse_strdup(s,mmgr) qse_wcsdup(s,mmgr)
# define qse_strdup2(s1,s2,mmgr) qse_wcsdup2(s1,s2,mmgr)
# define qse_strxdup(s,l,mmgr) qse_wcsxdup(s,l,mmgr)
# define qse_strxdup2(s1,l1,s2,l2,mmgr) qse_wcsxdup(s1,l1,s2,l2,mmgr)
# define qse_stradup(sa,mmgr) qse_wcsadup(sa,mmgr)
# define qse_strxadup(sa,mmgr) qse_wcsxadup(sa,mmgr)
# define qse_stradup(sa,len,mmgr) qse_wcsadup(sa,len,mmgr)
# define qse_strxadup(sa,len,mmgr) qse_wcsxadup(sa,len,mmgr)
#endif
/**

View File

@ -163,6 +163,10 @@ int qse_comparehttpversions (
const qse_http_version_t* v2
);
const qse_mchar_t* qse_httpstatustombs (
int code
);
const qse_mchar_t* qse_httpmethodtombs (
qse_http_method_t type
);

View File

@ -46,6 +46,7 @@ enum qse_httpd_errnum_t
QSE_HTTPD_EEXIST,
QSE_HTTPD_EINTR,
QSE_HTTPD_EAGAIN,
QSE_HTTPD_ENOBUF,
QSE_HTTPD_EIOMUX,
QSE_HTTPD_EDISCON, /* client disconnnected */
@ -255,6 +256,14 @@ struct qse_httpd_rcb_t
qse_httpd_t* httpd, qse_httpd_client_t* client, qse_htre_t* req);
int (*handle_request) (
qse_httpd_t* httpd, qse_httpd_client_t* client, qse_htre_t* req);
int (*format_error) (
qse_httpd_t* httpd, qse_httpd_client_t* client,
int code, qse_mchar_t* buf, int bufsz);
int (*format_dir) (
qse_httpd_t* httpd, qse_httpd_client_t* client,
const qse_mchar_t* qpath, const qse_httpd_dirent_t* dirent,
qse_mchar_t* buf, int bufsz);
};
typedef struct qse_httpd_task_t qse_httpd_task_t;
@ -358,6 +367,7 @@ enum qse_httpd_rsrc_type_t
QSE_HTTPD_RSRC_FILE,
QSE_HTTPD_RSRC_PROXY,
QSE_HTTPD_RSRC_RELOC,
QSE_HTTPD_RSRC_REDIR,
QSE_HTTPD_RSRC_TEXT
};
typedef enum qse_httpd_rsrc_type_t qse_httpd_rsrc_type_t;
@ -384,7 +394,6 @@ struct qse_httpd_rsrc_t
struct
{
const qse_mchar_t* path;
const qse_mchar_t* css;
} dir;
struct
@ -403,11 +412,17 @@ struct qse_httpd_rsrc_t
qse_nwad_t dst;
qse_nwad_t src;
} proxy;
struct
{
const qse_mchar_t* dst;
} reloc;
struct
{
const qse_mchar_t* dst;
} redir;
struct
{
const qse_mchar_t* ptr;
@ -488,7 +503,7 @@ enum qse_httpd_server_xtn_cfg_idx_t
struct qse_httpd_server_xtn_t
{
qse_mxstr_t cfg[QSE_HTTPD_SERVER_XTN_CFG_MAX];
qse_mchar_t* cfg[QSE_HTTPD_SERVER_XTN_CFG_MAX];
qse_httpd_server_cbstd_t* cbstd;
qse_httpd_server_cgistd_t* cgistd;
qse_httpd_server_mimestd_t* mimestd;
@ -699,12 +714,27 @@ qse_httpd_task_t* qse_httpd_entaskreloc (
qse_htre_t* req
);
qse_httpd_task_t* qse_httpd_entaskredir (
qse_httpd_t* httpd,
qse_httpd_client_t* client,
qse_httpd_task_t* pred,
const qse_mchar_t* dst,
qse_htre_t* req
);
qse_httpd_task_t* qse_httpd_entasknomod (
qse_httpd_t* httpd,
qse_httpd_client_t* client,
qse_httpd_task_t* pred,
qse_htre_t* req
);
qse_httpd_task_t* qse_httpd_entaskdir (
qse_httpd_t* httpd,
qse_httpd_client_t* client,
qse_httpd_task_t* pred,
const qse_mchar_t* name,
const qse_mchar_t* css,
qse_htre_t* req
);