35#define APR_WANT_STRFUNC
66#ifdef HAVE_SYS_LOADAVG_H
67#include <sys/loadavg.h>
79#undef APLOG_MODULE_INDEX
80#define APLOG_MODULE_INDEX AP_CORE_MODULE_INDEX
83#ifndef AP_MAX_FNMATCH_DIR_DEPTH
84#define AP_MAX_FNMATCH_DIR_DEPTH (128)
128 if (*
f !=
'%')
continue;
179 for (x = 0,
y = 0; expected[
y]; ++
y, ++x) {
180 if (expected[
y] ==
'*') {
181 while (expected[++
y] ==
'*');
193 else if ((expected[
y] !=
'?') && (
str[x] != expected[
y]))
196 return (
str[x] !=
'\0');
203 for (x = 0,
y = 0; expected[
y]; ++
y, ++x) {
204 if (!
str[x] && expected[
y] !=
'*')
206 if (expected[
y] ==
'*') {
207 while (expected[++
y] ==
'*');
217 else if (expected[
y] !=
'?'
221 return (
str[x] !=
'\0');
243 if ((*
str ==
'*') || (*
str ==
'?'))
381 if (maxlen > 0 &&
len >= maxlen)
394 while ((
c = *
src++) !=
'\0') {
401 if (
c ==
'\\' && *
src)
413 if (
len >= maxlen && maxlen > 0)
431 while ((
c = *
src++) !=
'\0') {
438 if (
c ==
'\\' && *
src)
454#ifndef AP_PREGSUB_MAXLEN
455#define AP_PREGSUB_MAXLEN (HUGE_STRING_LEN * 8)
482static char x2c(
const char *
what);
484#define IS_SLASH_OR_NUL(s) (s == '\0' || AP_IS_SLASH(s))
500 if (
path[0] ==
'*' &&
path[1] ==
'\0') {
513 while (
path[l] !=
'\0') {
546 if (
path[l] ==
'.') {
628 if ((*
d++ = *
s) ==
'/') {
678 if (*
s ==
'\0' || (*
s ==
'/' && (--
n) == 0)) {
712 for (x = 0,
n = 0;
path[x]; x++)
725 const char *pos = *line;
729 while ((*pos !=
stop) && *pos) {
737 while (*pos ==
stop) {
753 const char *pos = *line;
812 for (
i = 0;
i <
len; ++
i) {
821#if RESOLVE_ENV_PER_TOKEN
935 "Done with config file %s", cfp->
name);
970 "Internal error: pcfg_openfile() called with NULL filename");
978 "Opening config file %s (%s)",
996 "Access to file %s denied by server: not a regular file",
1014 unsigned char buf[4];
1018 ||
memcmp(
buf,
"\xEF\xBB\xBF", 3) != 0) {
1070 return apr_psprintf(
p,
"Error reading %s at line %d: Line too long",
1111 if (cp >
buf && cp[-1] ==
LF) {
1113 if (cp >
buf && cp[-1] ==
CR)
1115 if (cp >
buf && cp[-1] ==
'\\') {
1155 if (
i > 0 &&
buf[
i-1] ==
'\\') {
1190#ifdef DEBUG_CFG_LINES
1256 const unsigned char *ptr = (
const unsigned char *)*
field;
1257 const unsigned char *token;
1294 if ((*
len = (ptr - token)) == 0) {
1295 *
field = (
const char *)ptr;
1304 *
field = (
const char *)ptr;
1305 return (
const char *)token;
1317 const unsigned char *ptr;
1335 for (ptr = (
const unsigned char *)
tok_start, pos = (
unsigned char *)token;
1412 const unsigned char *pos;
1413 const unsigned char *ptr = (
const unsigned char *)line;
1416 if (!line || !tok) {
1423 if (*tok ==
'W' && (*(tok+1)) ==
'/' && (*(tok+2)) ==
'\"') {
1426 else if (*tok !=
'\"') {
1443 if (*ptr ==
'W' && (*(ptr+1)) ==
'/' && (*(ptr+2)) ==
'\"') {
1446 else if (*ptr !=
'\"') {
1460 for (pos = (
const unsigned char *)tok;
1467 good = (*pos++ == *ptr);
1473 good = good && (*pos++ ==
' ');
1474 good = good && (*pos++ == *ptr);
1480 good = good && (*pos++ ==
' ');
1481 good = good && (*pos++ == *ptr);
1487 good = good && (*pos++ ==
' ');
1488 good = good && (*pos++ == *ptr);
1493 good = good && (*pos++ == *ptr);
1500 good = (*pos++ == *ptr);
1508 good = good && (*pos++ == *ptr);
1513 good = (*pos++ ==
' ');
1515 good = good && (*pos++ == *ptr);
1527 }
while (*ptr && !good);
1580 const unsigned char c = (
unsigned char)*
cur;
1588 return "Encountered illegal whitespace in token";
1591 else if (
c ==
' ' ||
c ==
'\t') {
1604 else if (
c ==
',' ||
c ==
'\0') {
1640 "'\\x%.2x'", (
unsigned int)
c);
1706 && *ptr !=
';' && *ptr !=
',') {
1729 const unsigned char *
s;
1734 s = (
const unsigned char *)line;
1766 llen = strlen(line);
1801 while (--
s > line) {
1802 if (*
s !=
' ')
break;
1806 if (*
s ==
',' || *
s ==
' ') {
1816 const unsigned char *
s;
1819 d = (
unsigned char *)
cmd;
1820 s = (
const unsigned char *)
str;
1823#if defined(OS2) || defined(WIN32)
1829 if (*
s ==
'\r' || *
s ==
'\n') {
1849#if !APR_CHARSET_EBCDIC
1894 for (x =
y; *
y; ++x, ++
y) {
2023 unsigned char *
where)
2025#if APR_CHARSET_EBCDIC
2051 const unsigned char *
s = (
const unsigned char *)
segment;
2052 unsigned char *
d = (
unsigned char *)copy;
2076 const unsigned char *
s = (
const unsigned char *)
path;
2077 unsigned char *
d = (
unsigned char *)copy;
2104 const unsigned char *
s = (
const unsigned char *)
buffer;
2105 unsigned char *
d = (
unsigned char *)copy;
2112 else if (
c ==
' ') {
2137 for (
i = 0, j = 0;
s[
i] !=
'\0';
i++) {
2141 if (
s[
i] ==
'<' ||
s[
i] ==
'>')
2143 else if (
s[
i] ==
'&')
2145 else if (
s[
i] ==
'"')
2155 for (
i = 0, j = 0;
s[
i] !=
'\0';
i++, j++)
2157 memcpy(&x[j],
"<", 4);
2160 else if (
s[
i] ==
'>') {
2161 memcpy(&x[j],
">", 4);
2164 else if (
s[
i] ==
'&') {
2165 memcpy(&x[j],
"&", 5);
2168 else if (
s[
i] ==
'"') {
2169 memcpy(&x[j],
""", 6);
2187 const unsigned char *
s;
2195 s = (
const unsigned char *)
str;
2212 d = (
unsigned char *)
ret;
2213 s = (
const unsigned char *)
str;
2254 unsigned char *
d, *
ep;
2255 const unsigned char *
s;
2261 d = (
unsigned char *)
dest;
2262 s = (
const unsigned char *)
source;
2265 for (;
d <
ep && *
s; ++
s) {
2311 return (
d - (
unsigned char *)
dest);
2316 const unsigned char *
in =
src;
2366 if (next[-1] !=
'/') {
2381 for (x = 0;
u[x] !=
':'; x++) {
2384 (
u[x] !=
'+') && (
u[x] !=
'-') && (
u[x] !=
'.'))) {
2431#ifndef MAXHOSTNAMELEN
2432#define MAXHOSTNAMELEN 256
2435 char *server_hostname =
NULL;
2441 "%s: apr_gethostname() failed to determine ServerName",
2444 str[
sizeof(
str) - 1] =
'\0';
2449 return server_hostname;
2458 "%s: apr_sockaddr_info_get() failed for %s",
2463 if (!server_hostname)
2467 "%s: Could not reliably determine the server's fully qualified "
2468 "domain name, using %s. Set the 'ServerName' directive globally "
2469 "to suppress this message",
2472 return server_hostname;
2490 int l = strlen(
string);
2534 while (*
inchr !=
'\0') {
2535 if (*
inchr ==
'"') {
2542 else if ((*
inchr ==
'\\') && (
inchr[1] !=
'\0')) {
2576 while (*
inchr !=
'\0') {
2577 if (*
inchr ==
'"') {
2580 else if ((*
inchr ==
'\\') && (
inchr[1] !=
'\0')) {
2621#define CHECK_OVERFLOW(a, b) if (a > b) return APR_EGENERAL
2628 const char *time_str;
2636 if (!endp || !*endp) {
2647 switch (*time_str) {
2659 switch (*(++time_str)) {
2681#undef CHECK_OVERFLOW
2712 void **ptr = (
void **)
data_;
2843 if (bucket->
length == 0) {
2859 else if (
'&' ==
c) {
2924 }
while (!seen_eos);
2939#define VARBUF_SMALL_SIZE 2048
2940#define VARBUF_MAX_SIZE (APR_SIZE_MAX - 1 - \
2941 APR_ALIGN_DEFAULT(sizeof(struct ap_varbuf_info)))
3001 if (
new == vb->
buf + vb->
avail + 1) {
3103 if (
buf->avail &&
buf->strlen) {
3105 buf->strlen = strlen(
buf->buf);
3106 vec[
i].iov_base = (
void *)
buf->buf;
3111 vec[
i].iov_base = (
void *)append;
3133static const char *
const oom_message =
"[crit] Memory allocation failed, "
3142 if (written ==
count)
3178#if APR_VERSION_AT_LEAST(1,8,0) && !defined(AP_NO_THREAD_LOCAL)
3180#define ap_thread_current_create apr_thread_current_create
3184#if AP_HAS_THREAD_LOCAL
3250#if AP_HAS_THREAD_LOCAL
3258#if AP_HAS_THREAD_LOCAL
3265#if AP_HAS_THREAD_LOCAL
3316 ld->bytes_served = 0;
3317 ld->access_count = 0;
3333 if (!
ps->quiescing &&
ps->pid) {
3345 if (
ws->access_count != 0
3347 ld->access_count +=
ws->access_count;
3348 ld->bytes_served +=
ws->bytes_served;
3353 total = busy + ready;
3355 ld->idle = ready * 100 / total;
3356 ld->busy = busy * 100 / total;
3364 ld->loadavg5 = -1.0;
3365 ld->loadavg15 = -1.0;
3388 const char *
const *
argv)
3418 if (
c ==
'\n' ||
c ==
'\r')
3452#if !APR_CHARSET_EBCDIC
3460 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
3461 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf,
3462 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
3463 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
3464 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
3465 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
3466 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
3467 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
3468 0x40,
'a',
'b',
'c',
'd',
'e',
'f',
'g',
3469 'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
3470 'p',
'q',
'r',
's',
't',
'u',
'v',
'w',
3471 'x',
'y',
'z', 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
3472 0x60,
'a',
'b',
'c',
'd',
'e',
'f',
'g',
3473 'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
3474 'p',
'q',
'r',
's',
't',
'u',
'v',
'w',
3475 'x',
'y',
'z', 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
3476 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
3477 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
3478 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
3479 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
3480 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
3481 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
3482 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
3483 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
3484 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
3485 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
3486 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
3487 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
3488 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
3489 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
3490 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
3491 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
3507 0x00, 0x01, 0x02, 0x03, 0x9C, 0x09, 0x86, 0x7F,
3508 0x97, 0x8D, 0x8E, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
3509 0x10, 0x11, 0x12, 0x13, 0x9D, 0x85, 0x08, 0x87,
3510 0x18, 0x19, 0x92, 0x8F, 0x1C, 0x1D, 0x1E, 0x1F,
3511 0x80, 0x81, 0x82, 0x83, 0x84, 0x0A, 0x17, 0x1B,
3512 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x05, 0x06, 0x07,
3513 0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,
3514 0x98, 0x99, 0x9A, 0x9B, 0x14, 0x15, 0x9E, 0x1A,
3515 0x20, 0xA0, 0xE2, 0xE4, 0xE0, 0xE1, 0xE3, 0xE5,
3516 0xE7, 0xF1, 0xA2, 0x2E, 0x3C, 0x28, 0x2B, 0x7C,
3517 0x26, 0xE9, 0xEA, 0xEB, 0xE8, 0xED, 0xEE, 0xEF,
3518 0xEC, 0xDF, 0x21, 0x24, 0x2A, 0x29, 0x3B, 0xAC,
3519 0x2D, 0x2F, 0xC2, 0xC4, 0xC0, 0xC1, 0xC3, 0xC5,
3520 0xC7, 0xD1, 0xA6, 0x2C, 0x25, 0x5F, 0x3E, 0x3F,
3521 0xF8, 0xC9, 0xCA, 0xCB, 0xC8, 0xCD, 0xCE, 0xCF,
3522 0xCC, 0x60, 0x3A, 0x23, 0x40, 0x27, 0x3D, 0x22,
3523 0xD8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
3524 0x68, 0x69, 0xAB, 0xBB, 0xF0, 0xFD, 0xFE, 0xB1,
3525 0xB0, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70,
3526 0x71, 0x72, 0xAA, 0xBA, 0xE6, 0xB8, 0xC6, 0xA4,
3527 0xB5, 0x7E, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
3528 0x79, 0x7A, 0xA1, 0xBF, 0xD0, 0xDD, 0xDE, 0xAE,
3529 0x5E, 0xA3, 0xA5, 0xB7, 0xA9, 0xA7, 0xB6, 0xBC,
3530 0xBD, 0xBE, 0x5B, 0x5D, 0xAF, 0xA8, 0xB4, 0xD7,
3531 0x7B, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
3532 0x68, 0x69, 0xAD, 0xF4, 0xF6, 0xF2, 0xF3, 0xF5,
3533 0x7D, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70,
3534 0x71, 0x72, 0xB9, 0xFB, 0xFC, 0xF9, 0xFA, 0xFF,
3535 0x5C, 0xF7, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
3536 0x79, 0x7A, 0xB2, 0xD4, 0xD6, 0xD2, 0xD3, 0xD5,
3537 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
3538 0x38, 0x39, 0xB3, 0xDB, 0xDC, 0xD9, 0xDA, 0x9F
3544 const unsigned char *
str1 = (
const unsigned char *)
s1;
3545 const unsigned char *
str2 = (
const unsigned char *)
s2;
3561 const unsigned char *
str1 = (
const unsigned char *)
s1;
3562 const unsigned char *
str2 = (
const unsigned char *)
s2;
3619 return apr_psprintf(w->
p,
"%sDirectory '%s' exceeds the maximum include "
3620 "directory nesting level of %u. You have "
3632 return apr_psprintf(w->
p,
"%sCould not open directory %s: %pm",
3655 for (current = 0; current <
candidates->nelts; ++current) {
3723 return apr_psprintf(w->
p,
"%sCould not open directory %s: %pm",
3742 fnew->fname = full_path;
3757 for (current = 0; current <
candidates->nelts; ++current) {
3773 return apr_psprintf(w->
p,
"%sNo matches for the wildcard '%s' in '%s', failing",
Symbol export macros and hook functions.
#define AP_DECLARE_NONSTD(type)
Apache Multi-Processing Module library.
const char apr_size_t ap_regmatch_t * pmatch
const char apr_size_t len
const char apr_size_t nmatch
APR-UTIL Base64 Encoding.
APR general purpose library routines.
apr_size_t const unsigned char unsigned int unsigned int d
APR Standard Headers Support.
apr_status_t ap_pool_cleanup_set_null(void *data_)
const char * ap_pcfg_strerror(apr_pool_t *p, ap_configfile_t *cfp, apr_status_t rc)
int ap_cfg_closefile(ap_configfile_t *cfp)
apr_status_t ap_pcfg_openfile(ap_configfile_t **ret_cfg, apr_pool_t *p, const char *name)
apr_status_t ap_cfg_getc(char *ch, ap_configfile_t *cfp)
request_rec int int apr_table_t const char * path
const char server_rec server_rec ** ps
apr_status_t ap_cfg_getline(char *buf, apr_size_t bufsize, ap_configfile_t *cfp)
#define ap_is_default_port(port, r)
apr_status_t ap_get_brigade(ap_filter_t *filter, apr_bucket_brigade *bucket, ap_input_mode_t mode, apr_read_type_e block, apr_off_t readbytes)
const char * ap_server_argv0
const unsigned char * buf
int ap_map_http_request_error(apr_status_t rv, int status)
int ap_discard_request_body(request_rec *r)
apr_status_t ap_varbuf_cfg_getline(struct ap_varbuf *vb, ap_configfile_t *cfp, apr_size_t max_len)
void ap_varbuf_free(struct ap_varbuf *vb)
void ap_varbuf_grow(struct ap_varbuf *vb, apr_size_t new_len)
void ap_varbuf_strmemcat(struct ap_varbuf *vb, const char *str, int len)
#define AP_VARBUF_UNKNOWN
apr_status_t ap_varbuf_regsub(struct ap_varbuf *vb, const char *input, const char *source, apr_size_t nmatch, ap_regmatch_t pmatch[], apr_size_t maxlen)
char * ap_varbuf_pdup(apr_pool_t *p, struct ap_varbuf *buf, const char *prepend, apr_size_t prepend_len, const char *append, apr_size_t append_len, apr_size_t *new_len)
void ap_varbuf_init(apr_pool_t *p, struct ap_varbuf *vb, apr_size_t init_size)
const char apr_port_t port
#define APR_BRIGADE_INSERT_TAIL(b, e)
apr_file_t apr_off_t start
#define APR_BUCKET_NEXT(e)
#define APR_BRIGADE_SENTINEL(b)
#define apr_bucket_delete(e)
#define APR_BUCKET_IS_EOS(e)
apr_brigade_flush void * ctx
apr_bucket apr_bucket_brigade * a
#define APR_BRIGADE_FIRST(b)
#define apr_bucket_read(e, str, len, block)
apr_pool_t apr_dbd_t const char * query
apr_pool_t const char apr_dbd_t const char ** error
apr_pool_t apr_dbd_t apr_dbd_results_t ** res
const char apr_ssize_t int flags
const void apr_size_t int colon
const char apr_ssize_t int partial
const char apr_ssize_t const char * forbid
const void apr_size_t srclen
const char apr_ssize_t const char const char * reserved
const char apr_ssize_t int quote
const char apr_ssize_t int toasc
#define HTTP_REQUEST_ENTITY_TOO_LARGE
char * ap_append_pid(apr_pool_t *p, const char *string, const char *delim)
#define AP_NORMALIZE_DECODE_UNRESERVED
#define AP_NORMALIZE_ALLOW_RELATIVE
int ap_array_str_index(const apr_array_header_t *array, const char *s, int start)
char * ap_getword_white(apr_pool_t *p, const char **line)
int ap_strcmp_match(const char *str, const char *expected)
int ap_strcasecmp_match(const char *str, const char *expected)
char * ap_get_exec_line(apr_pool_t *p, const char *cmd, const char *const *argv)
#define AP_DIR_FLAG_RECURSIVE
char * ap_getword_white_nc(apr_pool_t *atrans, char **line)
int ap_is_chunked(apr_pool_t *p, const char *line)
int ap_is_directory(apr_pool_t *p, const char *path)
char * ap_getword_nulls_nc(apr_pool_t *atrans, char **line, char stop)
char * ap_escape_urlencoded_buffer(char *copy, const char *buffer)
char * ap_get_local_host(apr_pool_t *a)
int ap_is_url(const char *u)
char * ap_make_full_path(apr_pool_t *a, const char *src1, const char *src2)
int ap_count_dirs(const char *path)
const char * ap_scan_http_token(const char *ptr)
char * ap_getword_conf2(apr_pool_t *p, const char **line)
int ap_cstr_casecmp(const char *s1, const char *s2)
const char * ap_parse_token_list_strict(apr_pool_t *p, const char *str_in, apr_array_header_t **tokens, int skip_invalid)
char * ap_pbase64encode(apr_pool_t *p, char *string)
#define AP_UNESCAPE_URL_KEEP_SLASHES
char * ap_make_dirstr_prefix(char *d, const char *s, int n)
void ap_get_loadavg(ap_loadavg_t *ld)
int ap_unescape_url_ex(char *url, unsigned int flags)
char * ap_getword(apr_pool_t *atrans, const char **line, char stop)
char * ap_escape_logitem(apr_pool_t *p, const char *str)
char * ap_escape_path_segment(apr_pool_t *p, const char *segment)
int ap_normalize_path(char *path, unsigned int flags)
#define ap_strrchr_c(s, c)
char * ap_strcasestr(const char *s1, const char *s2)
int ap_find_etag_weak(apr_pool_t *p, const char *line, const char *tok)
char * ap_getword_conf_nc(apr_pool_t *p, char **line)
char * ap_escape_path_segment_buffer(char *copy, const char *segment)
void ap_bin2hex(const void *src, apr_size_t srclen, char *dest)
int ap_unescape_urlencoded(char *query)
#define AP_UNESCAPE_URL_KEEP_UNRESERVED
char * ap_escape_shell_cmd(apr_pool_t *p, const char *str)
#define ap_strchr_c(s, c)
char * ap_get_token(apr_pool_t *p, const char **accept_line, int accept_white)
#define AP_NORMALIZE_MERGE_SLASHES
const char * ap_resolve_env(apr_pool_t *p, const char *word)
char * ap_get_list_item(apr_pool_t *p, const char **field)
void ap_no2slash(char *name)
int ap_find_etag_strong(apr_pool_t *p, const char *line, const char *tok)
int ap_unescape_all(char *url)
apr_status_t ap_str2_alnum(const char *src, char *dest)
void ap_str_toupper(char *str)
char * ap_make_dirstr_parent(apr_pool_t *p, const char *s)
int ap_rind(const char *s, char c)
char * ap_pregsub(apr_pool_t *p, const char *input, const char *source, apr_size_t nmatch, ap_regmatch_t pmatch[])
#define AP_DEBUG_ASSERT(exp)
void ap_abort_on_oom(void)
int ap_is_rdirectory(apr_pool_t *p, const char *path)
char * ap_getword_conf2_nc(apr_pool_t *p, char **line)
int ap_request_has_body(request_rec *r)
char * ap_pbase64decode(apr_pool_t *p, const char *bufcoded)
const char * ap_scan_vchar_obstext(const char *ptr)
void ap_content_type_tolower(char *str)
int ap_find_token(apr_pool_t *p, const char *line, const char *tok)
void ap_getparents(char *name)
int ap_parse_form_data(request_rec *r, ap_filter_t *f, apr_array_header_t **ptr, apr_size_t num, apr_size_t usize)
char * ap_getword_nulls(apr_pool_t *atrans, const char **line, char stop)
apr_status_t ap_pregsub_ex(apr_pool_t *p, char **result, const char *input, const char *source, apr_size_t nmatch, ap_regmatch_t pmatch[], apr_size_t maxlen)
int ap_cstr_casecmpn(const char *s1, const char *s2, apr_size_t n)
void * ap_calloc(size_t nelem, size_t size)
char * ap_escape_html2(apr_pool_t *p, const char *s, int toasc)
int ap_is_matchexp(const char *str)
const char * ap_scan_http_field_content(const char *ptr)
char * ap_ht_time(apr_pool_t *p, apr_time_t t, const char *fmt, int gmt)
#define AP_UNESCAPE_URL_FORBID_SLASHES
void ap_no2slash_ex(char *name, int is_fs_path)
void ap_str_tolower(char *str)
int ap_parse_strict_length(apr_off_t *len, const char *str)
char * ap_escape_urlencoded(apr_pool_t *p, const char *buffer)
apr_size_t ap_escape_errorlog_item(char *dest, const char *source, apr_size_t buflen)
int ap_array_str_contains(const apr_array_header_t *array, const char *s)
int ap_unescape_url(char *url)
char * ap_construct_server(apr_pool_t *p, const char *hostname, apr_port_t port, const request_rec *r)
int ap_ind(const char *s, char c)
apr_status_t ap_pstr2_alnum(apr_pool_t *p, const char *src, const char **dest)
ap_regex_t * ap_pregcomp(apr_pool_t *p, const char *pattern, int cflags)
char * ap_field_noparam(apr_pool_t *p, const char *intype)
const char * ap_size_list_item(const char **field, int *len)
#define AP_NORMALIZE_NOT_ABOVE_ROOT
void * ap_realloc(void *ptr, size_t size)
int ap_unescape_url_keep2f(char *url, int decode_slashes)
void ap_pregfree(apr_pool_t *p, ap_regex_t *reg)
const char * ap_stripprefix(const char *bigstring, const char *prefix)
char * ap_os_escape_path(apr_pool_t *p, const char *path, int partial)
#define AP_DIR_FLAG_OPTIONAL
void ap_get_sload(ap_sload_t *ld)
int ap_find_list_item(apr_pool_t *p, const char *line, const char *tok)
apr_status_t ap_timeout_parameter_parse(const char *timeout_parameter, apr_interval_time_t *timeout, const char *default_time_unit)
char * ap_getword_nc(apr_pool_t *atrans, char **line, char stop)
void * ap_malloc(size_t size)
char * ap_escape_quotes(apr_pool_t *p, const char *instring)
int ap_find_last_token(apr_pool_t *p, const char *line, const char *tok)
char * ap_getword_conf(apr_pool_t *p, const char **line)
int ap_os_is_path_absolute(apr_pool_t *p, const char *dir)
apr_uint32_t apr_uint32_t cmp
const char int apr_pool_t * pool
apr_seek_where_t apr_off_t * offset
const char apr_file_t * file
apr_array_header_t ** result
#define APR_ALIGN_DEFAULT(size)
apr_vformatter_buff_t const char * fmt
apr_vformatter_buff_t * c
apr_sockaddr_t apr_sockaddr_t apr_sockaddr_t * source
apr_sockaddr_t * sockaddr
apr_interval_time_t apr_int32_t * num
apr_interval_time_t apr_pollcb_cb_t func
int(* apr_abortfunc_t)(int retcode)
apr_abortfunc_t apr_allocator_t * allocator
#define apr_pcalloc(p, size)
apr_pool_t apr_abortfunc_t abort_fn
#define APR_ARRAY_PUSH(ary, type)
#define APR_ARRAY_IDX(ary, i, type)
void *(APR_THREAD_FUNC * apr_thread_start_t)(apr_thread_t *, void *)
apr_int32_t apr_int32_t apr_int32_t err
const char const char *const const char *const apr_procattr_t * attr
#define apr_time_as_msec(time)
#define apr_time_from_msec(msec)
apr_int64_t apr_interval_time_t
#define apr_time_sec(time)
#define apr_time_from_sec(sec)
apr_status_t ap_mpm_query(int query_code, int *result)
#define AP_MPMQ_HARD_LIMIT_THREADS
#define AP_MPMQ_GENERATION
#define AP_MPMQ_HARD_LIMIT_DAEMONS
apr_os_thread_t apr_os_thread_current()
apr_status_t apr_threadattr_detach_set(apr_threadattr_t *attr, apr_int32_t on)
apr_status_t apr_threadattr_create(apr_threadattr_t **new, apr_pool_t *pool)
apr_status_t apr_thread_create(apr_thread_t **new, apr_threadattr_t *attr, apr_thread_start_t func, void *data, apr_pool_t *pool)
scoreboard * ap_scoreboard_image
process_score * ap_get_scoreboard_process(int x)
#define T_HTTP_TOKEN_STOP
#define T_ESCAPE_URLENCODED
#define T_ESCAPE_PATH_SEGMENT
#define T_ESCAPE_SHELL_CMD
static apr_status_t ap_cfg_getline_core(char *buf, apr_size_t bufsize, apr_size_t offset, ap_configfile_t *cfp)
static apr_status_t cfg_close(void *param)
static apr_status_t varbuf_cleanup(void *info_)
#define VARBUF_SMALL_SIZE
static char x2c(const char *what)
static apr_status_t cfg_getstr(void *buf, apr_size_t bufsiz, void *param)
static apr_status_t regex_cleanup(void *preg)
static apr_status_t regsub_core(apr_pool_t *p, char **result, struct ap_varbuf *vb, const char *input, const char *source, apr_size_t nmatch, ap_regmatch_t pmatch[], apr_size_t maxlen)
static const char c2x_table[]
static int find_list_item(apr_pool_t *p, const char *line, const char *tok, ap_etag_e type)
static char * substring_conf(apr_pool_t *p, const char *start, int len, char quote)
static apr_status_t cfg_getch(char *ch, void *param)
static char *const varbuf_empty
#define AP_PREGSUB_MAXLEN
static APR_INLINE unsigned char * c2x(unsigned what, unsigned char prefix, unsigned char *where)
static int unescape_url(char *url, const char *forbid, const char *reserved, unsigned int flags)
ap_configfile_t * ap_pcfg_open_custom(apr_pool_t *p, const char *descr, void *param, apr_status_t(*getc_func)(char *ch, void *param), apr_status_t(*gets_func)(void *buf, apr_size_t bufsize, void *param), apr_status_t(*close_func)(void *param))
ap_dir_match_t * ap_dir_cfgmatch(cmd_parms *cmd, int flags, const char *(*cb)(ap_dir_match_t *w, const char *fname), void *ctx)
const char * ap_dir_fnmatch(ap_dir_match_t *w, const char *path, const char *fname)
#define IS_SLASH_OR_NUL(s)
#define AP_MAX_FNMATCH_DIR_DEPTH
static const short ucharmap[]
#define CHECK_OVERFLOW(a, b)
const char * ap_dir_nofnmatch(ap_dir_match_t *w, const char *fname)
static const char *const oom_message
static int cfg_trim_line(char *buf)
static int fname_alphasort(const void *fn1, const void *fn2)
static const char * find_last_token(apr_pool_t *p, const char *line, const char *tok)
apr_status_t(* getch)(char *ch, void *param)
apr_status_t(* close)(void *param)
apr_status_t(* getstr)(void *buf, apr_size_t bufsiz, void *param)
const char *(* cb)(ap_dir_match_t *w, const char *fname)
The representation of a filter chain.
A structure to hold various server loadavg.
A structure to hold server load params.
apr_allocator_t * allocator
struct apr_memnode_t * node
struct ap_varbuf_info * info
struct apr_bucket_alloc_t * bucket_alloc
A structure that represents the current request.
apr_bucket_brigade * kept_body
struct ap_filter_t * input_filters
apr_status_t apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted, apr_dir_t *thedir)
apr_status_t apr_dir_close(apr_dir_t *thedir)
apr_status_t apr_dir_open(apr_dir_t **new, const char *dirname, apr_pool_t *pool)
apr_status_t apr_gethostname(char *buf, apr_int32_t len, apr_pool_t *cont)
apr_status_t apr_strftime(char *s, apr_size_t *retsize, apr_size_t max, const char *format, apr_time_exp_t *xt)
Utilities for EBCDIC conversion.
Apache resizable variable length buffer library.
typedef int(WSAAPI *apr_winapi_fpt_WSAPoll)(IN OUT LPWSAPOLLFD fdArray