httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From pque...@apache.org
Subject svn commit: r821352 [3/34] - /httpd/site/trunk/docs/dev/apidoc/
Date Sat, 03 Oct 2009 16:20:35 GMT
Added: httpd/site/trunk/docs/dev/apidoc/api.list
URL: http://svn.apache.org/viewvc/httpd/site/trunk/docs/dev/apidoc/api.list?rev=821352&view=auto
==============================================================================
--- httpd/site/trunk/docs/dev/apidoc/api.list (added)
+++ httpd/site/trunk/docs/dev/apidoc/api.list Sat Oct  3 16:20:11 2009
@@ -0,0 +1,4535 @@
+#;
+#; Metadata about API components.  Each record contains several fields,
+#; separated by vbars (|).  Comments begin with '#;' and continue
+#; to the end of the line.  Leading whitespace is discarded except as 
+#; noted below.  Continuation is indicated by a '\' as the last
+#; non-blank, non-comment character on a line.  
+#;
+#;  o Whitepace before a continuation character ('\') is
+#;    not discarded, EXCEPT THAT
+#;  o Whitespace between '\n' and '\' IS discarded.
+#;  o If the last significant text on a continued line is '\n', the 
+#;    leading whitespace on the continuation line is NOT discarded.  This
+#;    provides for indentation of continuation text (as in a structure
+#;    definition).
+#;
+#; By convention the '|' field delimiter appears on the same line as the
+#; field that *follows* it.
+#;
+#; Each record looks like:
+#;
+#; type|name|definition|sample-use|see-also|desc-file
+#;
+#; where type is one of
+#;	R API routine
+#;	M Macro that looks like a routine call
+#;	S structure/datatype
+#;	C constant
+#;	D global data cell
+#;	X alias for a list of cross-references (usable in the see-also field)
+#;
+#; see-also is a comma-separated list of other names in this file.  If
+#;	the current entity-name appears in the list, it's ignored.  If
+#;	the name of an 'X' alias appears in the see-also list, it will be
+#;	expanded before the list is scanned for the current entity name.
+#; desc-file is the name of a file (relative to the cwd) containing an HTML
+#;	description for the component.  Not used for 'X' records.
+#;
+#; HTML markup is permitted in all fields except type and name.
+#;
+#; Due to '|' being used as the field delimiter, vbars must be represented
+#; as '|'.
+#;
+#; Due to the interpretation of text as HTML, all ampersands ('&') must be
+#; escaped as '&'.
+#;
+#; The special tag '$*' will be replaced wherever it occurs in a record
+#; with the name of the entity being defined.
+#;
+#; NOTE: current version won't allow comments at the end of the
+#;       doc file line if $* is used in the doc filename.
+#;
+#; Example entry:
+#;
+#; R|ap_add_version_component\
+#;   |void $*(const char *component);\  #; Definition
+#;   |/*\n * Called during modules-init phase\n */\n$*("MyMod/1.0");\ #; Example
+#;   |SA-identity\                      #; Cross-references
+#;   |<dict-$*.html                     #; Entity documentation HTML file
+#;
+#;
+#; Symbols related to how the server identifies itself
+#;
+X|SA-identity\
+    |ap_get_server_built,ap_get_server_name,ap_get_server_version\
+    ,ap_add_version_component\
+    |\
+    |\
+    |
+M|ap_status_drops_connection\
+    |#define $*(x) \n \
+                   (((x) == HTTP_BAD_REQUEST)           &#124;&#124; \ \n \
+                    ((x) == HTTP_REQUEST_TIME_OUT)      &#124;&#124; \ \n \
+                    ((x) == HTTP_LENGTH_REQUIRED)       &#124;&#124; \ \n \
+                    ((x) == HTTP_REQUEST_ENTITY_TOO_LARGE) &#124;&#124; \ \n \
+                    ((x) == HTTP_REQUEST_URI_TOO_LARGE) &#124;&#124; \ \n \
+                    ((x) == HTTP_INTERNAL_SERVER_ERROR) &#124;&#124; \ \n \
+                    ((x) == HTTP_SERVICE_UNAVAILABLE)   &#124;&#124; \ \n \
+                    ((x) == HTTP_NOT_IMPLEMENTED)) \
+    |    /* \n \
+     * If we want to keep the connection, be sure that the request body \n \
+     * (if any) has been read. \n \
+     */ \n \
+    if ((r-&gt;status != HTTP_NOT_MODIFIED) &amp;&amp; (r-&gt;status != HTTP_NO_CONTENT) \n \
+        &amp;&amp; !$*(r-&gt;status) \n \
+        &amp;&amp; r-&gt;connection &amp;&amp; (r-&gt;connection-&gt;keepalive != -1)) { \n \
+        (void) ap_discard_request_body(r); \n \
+    } \
+    |SA-httpcodes\
+    |<dict-$*.html
+R|ap_field_noparam\
+    |char *$*(pool *p, const char *intype);\
+    |content_type = $*(r-&gt;pool, r-&gt;content_type);\
+    |\
+    |<dict-$*.html
+R|ap_add_version_component\
+    |void $*(const char *component);\
+    |/*\n * Called during modules-init phase\n */\n$*("MyMod/1.0");\
+    |SA-identity\
+    |<dict-$*.html
+R|ap_custom_response\
+    |void $*(request_rec *r, int status, char *string);\
+    |r->content_type = "text/plain"; \n \
+$*(r, HTTP_FORBIDDEN, "Access denied.\n"); \
+    |\
+    |<dict-$*.html
+R|ap_get_server_built\
+    |char *$*(void);\
+    |char *string;\nstring = $*();\
+    |SA-identity\
+    |<dict-$*.html
+R|ap_get_server_name\
+    |char *$*(const request_rec *r);\
+    |char *string;\nstring = $*();\
+    |SA-identity\
+    |<dict-$*.html
+R|ap_get_server_version\
+    |char *$*(void);\
+    |char *string;\nstring = $*();\
+    |SA-identity\
+    |<dict-$*.html
+#;
+#; Stuff related to the module structure
+#;
+X|SA-module\
+    |core_module,top_module,module,ap_add_module,ap_add_named_module\
+     ,ap_add_loaded_module,ap_remove_module,ap_remove_loaded_module\
+    |\
+    |\
+    |
+S|module\	#; Since this is a multi-line structure, beware when editing
+    |typedef struct module_struct { \n \
+    int version; \n \
+    int minor_version; \n \
+    int module_index; \n \
+    const char *name; \n \
+    void *dynamic_load_handle; \n \
+    struct module_struct *next; \n \
+    unsigned long magic; \n \
+#ifdef ULTRIX_BRAIN_DEATH \n \
+    void (*init) (); \n \
+    void *(*create_dir_config) (); \n \
+    void *(*merge_dir_config) (); \n \
+    void *(*create_server_config) (); \n \
+    void *(*merge_server_config) (); \n \
+#else \n \
+    void (*init) (server_rec *s, pool *p); \n \
+    void *(*create_dir_config) (pool *p, char *dir); \n \
+    void *(*merge_dir_config) (pool *p, void *base_conf, void *new_conf); \n \
+    void *(*create_server_config) (pool *p, server_rec *s); \n \
+    void *(*merge_server_config) (pool *p, \
+	void *base_conf, void *new_conf); \n \
+#endif \n \
+    const command_rec *cmds; \n \
+    const handler_rec *handlers; \n \
+    int (*translate_handler) (request_rec *r); \n \
+    int (*ap_check_user_id) (request_rec *r); \n \
+    int (*auth_checker) (request_rec *r); \n \
+    int (*access_checker) (request_rec *r); \n \
+    int (*type_checker) (request_rec *r); \n \
+    int (*fixer_upper) (request_rec *r); \n \
+    int (*logger) (request_rec *r); \n \
+    int (*header_parser) (request_rec *r); \n \
+#ifdef ULTRIX_BRAIN_DEATH \n \
+    void (*child_init) (); \n \
+    void (*child_exit) (); \n \
+#else \n \
+    void (*child_init) (server_rec *s, pool *p); \n \
+    void (*child_exit) (server_rec *s, pool *p); \n \
+#endif \n \
+    int (*post_read_request) (request_rec *)r; \n \
+} $*; \
+    |\
+$* *mpointer; \n \
+   <i>or</i> \n \
+$* action_module = \n \
+{ \n \
+    STANDARD_MODULE_STUFF, \n \
+    NULL,                       /* initializer */ \n \
+    create_action_dir_config,   /* dir config creator */ \n \
+    merge_action_dir_configs,   /* dir merger --- default is to override */ \n \
+    NULL,                       /* server config */ \n \
+    NULL,                       /* merge server config */ \n \
+    action_cmds,                /* command table */ \n \
+    action_handlers,            /* handlers */ \n \
+    NULL,                       /* filename translation */ \n \
+    NULL,                       /* check_user_id */ \n \
+    NULL,                       /* check auth */ \n \
+    NULL,                       /* check access */ \n \
+    NULL,                       /* type_checker */ \n \
+    NULL,                       /* fixups */ \n \
+    NULL,                       /* logger */ \n \
+    NULL,                       /* header parser */ \n \
+    NULL,                       /* child_init */ \n \
+    NULL,                       /* child_exit */ \n \
+    NULL                        /* post read-request */ \n \
+}; \
+    |SA-module,SA-MMN,STANDARD_MODULE_STUFF\
+    |<dict-$*.html
+R|ap_add_module\
+    |void $*(module *m);\
+    |module mod; \n$*(mod);\
+    |SA-module\
+    |
+R|ap_add_loaded_module\
+    |void $*(module *m);\
+    |module mod; \n$*(mod);\
+    |SA-module\
+    |<dict-$*.html
+R|ap_add_named_module\
+    |int $*(const char *name);\
+    |char *modname; \nint result; \nresult = $*(modname);\
+    |SA-module\
+    |
+D|core_module\
+    |module $* {<i>module-specific-info</i>};\
+    |module $* = { \n \
+   STANDARD_MODULE_STUFF, \n \
+   NULL,                        /* initializer */ \n \
+   create_core_dir_config,      /* create per-directory config structure */ \n \
+   merge_core_dir_configs,      /* merge per-directory config structures */ \n \
+   create_core_server_config,   /* create per-server config structure */ \n \
+   merge_core_server_configs,   /* merge per-server config structures */ \n \
+   core_cmds,                   /* command table */ \n \
+   core_handlers,               /* handlers */ \n \
+   core_translate,              /* translate_handler */ \n \
+   NULL,                        /* check_user_id */ \n \
+   NULL,                        /* check auth */ \n \
+   do_nothing,                  /* check access */ \n \
+   do_nothing,                  /* type_checker */ \n \
+   NULL,                        /* pre-run fixups */ \n \
+   NULL,                        /* logger */ \n \
+   NULL,                        /* header parser */ \n \
+   NULL,                        /* child_init */ \n \
+   NULL,                        /* child_exit */ \n \
+   NULL                         /* post_read_request */ \n \
+}; \
+    |SA-module\
+    |<dict-$*.html
+D|top_module\
+    |module *$*;\
+    |module *$* = NULL; \n \
+module *modp, *first; \n \
+    ...determine modules to load and order of module list... \n \
+$* = first; \n \
+\n \
+for (modp = $*; modp; modp = modp-&gt;next) { \n \
+    ...do some per directory config processing... \n \
+} \
+    |SA-module\
+    |<dict-$*.html
+#;
+#; Miscellaneous data cells
+#;
+D|ap_day_snames\
+    |const char $*[7][4];\
+    |if (strcmp(week, $*[wk]) == 0)\nbreak; \
+    |\
+    |<dict-$*.html
+D|ap_month_snames\
+    |const char $*[12][4];\
+    |if (strcmp(month, $*[mon]) == 0)\nbreak;\
+    |\
+    |<dict-$*.html
+D|ap_restart_time\
+    |time_t $*;\
+    |    time_t nowtime = time(NULL); \n \
+    time_t up_time; \n \
+    up_time = nowtime - $*; \
+    |\
+    |<dict-$*.html
+D|ap_server_argv0\
+    |char *$*;\
+    |extern char *$*; \n$* = argv[0];\
+    |\
+    |<dict-$*.html
+D|ap_server_root\
+    |char $*[MAX_STRING_LEN];\
+    |extern char $*[MAX_STRING_LEN]; \n \
+ap_cpystrn(ap_coredump_dir, $*, sizeof(ap_coredump_dir)); \
+    |\
+    |<dict-$*.html
+D|ap_suexec_enabled\
+    |int $*;\
+    |extern int $*; \n \
+if (ap_suexec_enabled) { \n \
+    ...processing for module using suexec features... \n \
+} \n \
+else { \n \
+    ...processing for module not using suexec features... \n \
+} \
+    |\
+    |<dict-$*.html
+S|child_info\
+    |struct child_info {\n\
+#ifdef WIN32\n\
+    /*\n\
+     *  These handles are used by ap_call_exec to call \n\
+     *  create process with pipe handles.\n\
+     */\n\
+    HANDLE hPipeInputRead;\n\
+    HANDLE hPipeOutputWrite;\n\
+    HANDLE hPipeErrorWrite;\n\
+#else\n\
+    /*\n\
+     * We need to put a dummy member in here to avoid compilation\n\
+     * errors under certain Unix compilers, like SGI's and HPUX's,\n\
+     * which fail to compile a zero-sized struct.  Of course\n\
+     * it would be much nicer if there was actually a use for this\n\
+     * structure under Unix.  Aah the joys of x-platform code.\n\
+     */\n\
+    int dummy;\n\
+#endif\n\
+};\
+    |\
+    |\
+    |
+S|apache_sfio\
+    |#ifdef B_SFIO\n\
+typedef struct {\n\
+    Sfdisc+t disc;\n\
+    BUFF *buff;\n\
+} $*;\
+    |$* *disc;\n\
+if (!(disc = ($* *) ap_palloc(p, sizeof($*)))) {\n\
+    return (Sfdisc_t *) disc;\n\
+}\
+    |\
+    |
+#;
+#; MD5 digesting functions
+#;
+X|SA-md5\
+    |AP_MD5_CTX,ap_md5,ap_md5context,ap_md5digest,ap_MD5Final\
+     ,ap_MD5Init,ap_MD5Update,ap_md5contextTo64\
+    |\
+    |\
+    |
+S|AP_MD5_CTX\
+    |#include "ap_md5.h"\n\n\
+     <i>This is an opaque structure; you don't need to access any of its \
+     elements.</i>\
+    |$* <var>identifier</var>\
+    |SA-md5\
+    |
+R|ap_md5\
+    |char *$*(pool *a, unsigned char *string);\
+    |\
+    |SA-md5\
+    |
+R|ap_MD5Final\
+    |void $*(unsigned char digest[16], AP_MD5_CTX *context);\
+    |\
+    |SA-md5\
+    |
+R|ap_MD5Init\
+    |void $*(AP_MD5_CTX *context);\
+    |\
+    |SA-md5\
+    |
+R|ap_MD5Update\
+    |void $*(AP_MD5_CTX *context, const unsigned char *input, \
+     unsigned int inputLen);\
+    |\
+    |SA-md5\
+    |
+R|ap_md5context\
+    |char *$*(pool *p, AP_MD5_CTX *context);\
+    |\
+    |SA-md5\
+    |
+R|ap_md5digest\
+    |char *$*(pool *p, FILE *infile);\
+    |\
+    |SA-md5\
+    |
+R|ap_md5contextTo64\
+    |char *$*(pool *p, AP_MD5_CTX *context);\
+    |\
+    |\
+    |
+#;
+#; Mutex routines
+#;
+X|SA-mutex\
+    |mutex,ap_acquire_mutex,ap_create_mutex,ap_destroy_mutex\
+     ,ap_open_mutex\
+    |\
+    |\
+    |
+S|mutex\
+    |This is an opaque structure; you don't need to access any of its \
+     elements.\
+    |$* <var>identifier</var>\
+    |\
+    |<dict-$*.html
+R|ap_acquire_mutex\
+    |int $*(mutex *mutex_id);\
+    |static mutex *alloc_mutex = NULL; \n \
+(void) $*(alloc_mutex);\
+    |SA-mutex,SA-multi\
+    |<dict-$*.html
+R|ap_create_mutex\
+    |mutex *$*(char *name);\
+    |static mutex *alloc_mutex = NULL; \n \
+alloc_mutex = $*(NULL);\
+    |SA-mutex\
+    |<dict-$*.html
+R|ap_destroy_mutex\
+    |void $*(mutex *mutex_id);\
+    |static mutex *start_mutex = NULL; \n \
+$*(start_mutex);\
+    |SA-mutex\
+    |<dict-$*.html
+R|ap_open_mutex\
+    |mutex *$*(char *name);\
+    |static mutex *start_mutex = NULL; \n \
+start_mutex = $*(NULL);\
+    |SA-mutex\
+    |<dict-$*.html
+#;
+#; Stuff for the scoreboard
+#;
+X|SA-scoreboard\
+    |scoreboard,SERVER_DEAD,SERVER_STARTING,SERVER_READY\
+     ,SERVER_BUSY_READ,SERVER_BUSY_WRITE,SERVER_BUSY_KEEPALIVE\
+     ,SERVER_BUSY_LOG,SERVER_BUSY_DNS,SERVER_GRACEFUL,SERVER_NUM_STATUS\
+     ,vtime_t,short_score,global_score,parent_score,START_PREQUEST\
+     ,STOP_PREQUEST,ap_sync_scoreboard_image,ap_exists_scoreboard_image\
+     ,ap_scoreboard_image\
+    |\
+    |\
+    |
+C|SERVER_DEAD\
+    |#include "scoreboard.h"\
+    |switch (score_record.status) {\ncase $*: \n \
+    ap_rputs("Dead", r); \n \
+    break;\n}\
+    |SA-scoreboard\
+    |<dict-$*.html
+C|SERVER_STARTING\
+    |#include "scoreboard.h"\
+    |switch (score_record.status) {\ncase $*: \n \
+    ap_rputs("Starting", r); \n \
+    break;\n}\
+    |SA-scoreboard\
+    |<dict-$*.html
+C|SERVER_READY\
+    |#include "scoreboard.h"\
+    |switch (score_record.status) {\ncase $*: \n \
+    ap_rputs("Ready", r); \n \
+    break;\n}\
+    |SA-scoreboard\
+    |<dict-$*.html
+C|SERVER_BUSY_READ\
+    |#include "scoreboard.h"\
+    |switch (score_record.status) {\ncase $*: \n \
+    ap_rputs("&lt;B&gt;Read&lt;/B&gt;", r); \n \
+    break;\n}\
+    |SA-scoreboard\
+    |<dict-$*.html
+C|SERVER_BUSY_WRITE\
+    |#include "scoreboard.h"\
+    |switch (score_record.status) {\ncase $*: \n \
+    ap_rputs("&lt;B&gt;Write&lt;/B&gt;", r); \n \
+    break;\n}\
+    |SA-scoreboard\
+    |<dict-$*.html
+C|SERVER_BUSY_KEEPALIVE\
+    |#include "scoreboard.h"\
+    |switch (score_record.status) {\ncase $*: \n \
+    ap_rputs("&lt;B&gt;Keepalive&lt;/B&gt;", r); \n \
+    break;\n}\
+    |SA-scoreboard\
+    |<dict-$*.html
+C|SERVER_BUSY_LOG\
+    |#include "scoreboard.h"\
+    |switch (score_record.status) {\ncase $*: \n \
+    ap_rputs("&lt;B&gt;Logging&lt;/B&gt;", r); \n \
+    break;\n}\
+    |SA-scoreboard\
+    |<dict-$*.html
+C|SERVER_BUSY_DNS\
+    |#include "scoreboard.h"\
+    |switch (score_record.status) {\ncase $*: \n \
+    ap_rputs("&lt;B&gt;DNS lookup&lt;/B&gt;", r); \n \
+    break;\n}\
+    |SA-scoreboard\
+    |<dict-$*.html
+C|SERVER_GRACEFUL\
+    |#include "scoreboard.h"\
+    |switch (score_record.status) {\ncase $*: \n \
+    ap_rputs("Graceful", r); \n \
+    break;\n}\
+    |SA-scoreboard\
+    |<dict-$*.html
+C|SERVER_NUM_STATUS\
+    |#include "scoreboard.h"\
+    |if (score_record.status &lt; $*) {\n    return OK;\n} \
+    |SA-scoreboard\
+    |<dict-$*.html
+C|START_PREQUEST\
+    |#include "scoreboard.h"\
+    |if (status == $*) {\n    ...deal with request start time...\n}\
+    |SA-scoreboard\
+    |<dict-$*.html
+C|STOP_PREQUEST\
+    |#include "scoreboard.h"\
+    |if (status == $*) {\n    ...deal with request stop time...\n}\
+    |SA-scoreboard\
+    |<dict-$*.html
+D|ap_scoreboard_image\
+    |extern scoreboard *$*;\
+    |$*-&gt;global.exit_generation = 0;\
+    |SA-scoreboard\
+    |<dict-$*.html
+S|vtime_t\
+    |typedef unsigned vtime_t;\
+    |short_score *ss; \n \
+parent_score *ps = &amp;ap_scoreboard_image-&gt;parent[i]; \n \
+if (ss-&gt;cur_vtime != ps-&gt;last_vtime) { \n \
+    /* it has made progress, so update its last_rtime, \n \
+    * last_vtime */ \n \
+    ps-&gt;last_rtime = now; \n \
+    ps-&gt;last_vtime = ss-&gt;cur_vtime; \n \
+} \n \
+else if (ps-&gt;last_rtime + ss-&gt;timeout_len &lt; now) { \n \
+    /* no progress, and the timeout length has been exceeded */ \n \
+    ss-&gt;timeout_len = 0; \n \
+    kill(ps-&gt;pid, SIGALRM); \n \
+} \
+    |SA-scoreboard\
+    |<dict-$*.html
+#;
+#; Here comes another bunch of confusing multi-line definitions..
+#;
+S|parent_score\
+    |typedef struct { \n \
+    pid_t pid; \n \
+#ifdef OPTIMIZE_TIMEOUTS \n \
+    time_t last_rtime; \n \
+    vtime_t last_vtime; \n \
+#endif \n \
+} $*;\
+    |$* ps_record; \n \
+for (i = 0; i &lt; HARD_SERVER_LIMIT; ++i) { \n \
+    ps_record = ap_scoreboard_image-&gt;parent[i]; \n \
+} \
+    |SA-scoreboard\
+    |<dict-$*.html
+S|global_score\
+    |typedef struct { \n \
+    int exit_generation; \n \
+} $*;\
+    |typedef struct { \n \
+    short_score servers[HARD_SERVER_LIMIT]; \n \
+    parent_score parent[HARD_SERVER_LIMIT]; \n \
+    $* global; \n \
+} scoreboard; \
+    |SA-scoreboard\
+    |<dict-$*.html
+S|short_score\
+    |typedef struct { \n \
+#ifdef OPTIMIZE_TIMEOUTS \n \
+    vtime_t cur_vtime; \n \
+    unsigned short timeout_len; \n \
+#endif \n \
+    unsigned char status; \n \
+#if defined(STATUS) \n \
+    unsigned long access_count; \n \
+    unsigned long bytes_served; \n \
+    unsigned long my_access_count; \n \
+    unsigned long my_bytes_served; \n \
+    unsigned long conn_bytes; \n \
+    unsigned short conn_count; \n \
+#if defined(NO_GETTIMEOFDAY) \n \
+    clock_t start_time; \n \
+    clock_t stop_time; \n \
+#else \n \
+    struct timeval start_time; \n \
+    struct timeval stop_time; \n \
+#endif \n \
+#ifndef NO_TIMES \n \
+    struct tms times; \n \
+#endif \n \
+#ifndef OPTIMIZE_TIMEOUTS \n \
+    time_t last_used; \n \
+#endif \n \
+    char client[32]; \n \
+    char request[64]; \n \
+    char vhost[32]; \n \
+#endif \n \
+} $*;\
+    |\
+    |SA-scoreboard\
+    |
+S|scoreboard\
+    |typedef struct { \n \
+    short_score servers[HARD_SERVER_LIMIT]; \n \
+    parent_score parent[HARD_SERVER_LIMIT]; \n \
+    global_score global; \n \
+} $*;\
+    |\
+    |SA-scoreboard\
+    |
+R|ap_sync_scoreboard_image\
+    |void $*(void);\
+    |$*();\
+    |SA-scoreboard\
+    |
+R|ap_exists_scoreboard_image\
+    |int $*(void);\
+    |if (! $*()) {\n\
+    ap_log_rerror(APLOG_MARK, APLOG_NOERRNO&#124;APLOG_ERR, r,\n\
+                  "Server status unavailable in inetd mode");\n\
+    :\
+    |SA-scoreboard\
+    |
+#;
+#; Miscellaneous structures
+#;
+S|ap_wait_t\
+    |This is an opaque structure; you don't need to access any of its \
+     elements.\
+    |$* <var>identifier</var>\
+    |\
+    |
+S|configfile_t\
+    |typedef struct { \n \
+    int (*getch) (void *param); \n \
+    void *(*getstr) (void *buf, size_t bufsiz, void *param); \n \
+    int (*close) (void *param); \n \
+    void *param; \n \
+    const char *name; \n \
+    unsigned line_number; \n \
+} configfile_t;\
+    |\
+    |\
+    |
+#;
+#; Reliable piped log stuff
+#;
+X|SA-piped-log\
+    |piped_log,ap_close_piped_log,ap_open_piped_log\
+    |\
+    |\
+    |
+S|piped_log\
+    |typedef struct piped_log { \n \
+    pool *p; \n \
+#ifndef NO_RELIABLE_PIPED_LOGS \n \
+    char *program; \n \
+    int pid; \n \
+    int fds[2]; \n \
+#else \n \
+    FILE *write_f; \n \
+#endif \n \
+} piped_log;\
+    |\
+    |SA-piped-log\
+    |
+R|ap_close_piped_log\
+    |void $*(piped_log *plp);\
+    |<i>No examples available; not used in Apache 1.3.</i>\
+    |SA-piped-log\
+    |
+R|ap_open_piped_log\
+    |piped_log *$*(pool *p, const char *program);\
+    |\
+    |SA-piped-log\
+    |
+#;
+R|ap_content_type_tolower\
+    |void $*(char *str)\
+    |tmp = ap_pstrdup(r-&gt;pool, l);\n\
+$*(tmp);\n\
+r-&gt;content_type = tmp;\
+    |\
+    |
+#;
+#; Core records and data structures
+#;
+X|SA-core-rec\
+    |conn_rec,request_rec,server_rec,cmd_parms,command_rec,BUFF,uri_components\
+     ,proxyreqtype,server_addr_rec\
+    |\
+    |\
+    |<dict-$*.html
+S|conn_rec\
+    |typedef struct conn_rec conn_rec; \n \
+struct conn_rec { \n \
+    pool *pool; \n \
+    server_rec *server; \n \
+    server_rec *base_server; \n \
+    void *vhost_lookup_data; \n \
+    int child_num; \n \
+    BUFF *client; \n \
+    struct sockaddr_in local_addr; \n \
+    struct sockaddr_in remote_addr; \n \
+    char *remote_ip; \n \
+    char *remote_host; \n \
+    char *remote_logname; \n \
+    char *user; \n \
+    char *ap_auth_type; \n \
+    unsigned aborted:1; \n \
+    signed int keepalive:2; \n \
+    unsigned keptalive:1; \n \
+    signed int double_reverse:2; \n \
+    int keepalives; \n \
+    char *local_ip; \n \
+    char *local_host; \n \
+};\
+    |\
+    |SA-core-rec\
+    |<dict-$*.html
+S|regex_t\
+    |typedef struct { \n \
+    int re_magic; \n \
+    size_t re_nsub; \n \
+    const char *re_endp; \n \
+    struct re_guts *re_g; \n \
+} regex_t;\
+    |\
+    |\
+    |
+S|regmatch_t\
+    |typedef struct {\nregoff_t rm_so;     // start of match \n \
+regoff_t rm_eo;     // end of match \n \
+} regmatch_t; \
+    |\
+    |\
+    |
+S|request_rec\
+    |typedef struct request_rec request_rec; \n \
+struct request_rec { \n \
+    pool *pool; \n \
+    conn_rec *connection; \n \
+    server_rec *server; \n \
+    request_rec *next; \n \
+    request_rec *prev; \n \
+    request_rec *main; \n \
+    char *the_request; \n \
+    int assbackwards; \n \
+    enum proxyreqtype proxyreq; \n \
+    int header_only; \n \
+    char *protocol; \n \
+    int proto_num; \n \
+    char *hostname; \n \
+    time_t request_time; \n \
+    const char *status_line; \n \
+    int status; \n \
+    const char *method; \n \
+    int method_number; \n \
+    int allowed; \n \
+    int sent_bodyct; \n \
+    long bytes_sent; \n \
+    time_t mtime; \n \
+    int chunked; \n \
+    int byterange; \n \
+    char *boundary; \n \
+    const char *range; \n \
+    long clength; \n \
+    long remaining; \n \
+    long read_length; \n \
+    int read_body; \n \
+    int read_chunked; \n \
+    unsigned expecting_100; \n \
+    table *headers_in; \n \
+    table *headers_out; \n \
+    table *err_headers_out; \n \
+    table *subprocess_env; \n \
+    table *notes; \n \
+    const char *content_type; \n \
+    const char *handler; \n \
+    const char *content_encoding; \n \
+    const char *content_language; \n \
+    array_header *content_languages; \n \
+    char *vlist_validator; \n \
+    int no_cache; \n \
+    int no_local_copy; \n \
+    char *unparsed_uri; \n \
+    char *uri; \n \
+    char *filename; \n \
+    char *path_info; \n \
+    char *args; \n \
+    struct stat finfo; \n \
+    uri_components parsed_uri; \n \
+    void *per_dir_config; \n \
+    void *request_config; \n \
+    const struct htaccess_result *htaccess; \n \
+    char *case_preserved_filename; \n \
+};\
+    |\
+    |SA-core-rec,HTTP_VERSION_MAJOR,HTTP_VERSION_MINOR\
+    |<dict-$*.html
+S|server_addr_rec\
+    |typedef struct $* $*; \n \
+struct $* { \n \
+    server_addr_rec *next; \n \
+    struct in_addr host_addr; \n \
+    unsigned short host_port; \n \
+    char *virthost; \n \
+} \
+    |\
+    |SA-core-rec\
+    |
+S|server_rec\
+    |struct server_rec { \n \
+    server_rec *next; \n \
+    const char *defn_name; \n \
+    unsigned defn_line_number; \n \
+    char *srm_confname; \n \
+    char *access_confname; \n \
+    char *server_admin; \n \
+    char *server_hostname; \n \
+    unsigned short port; \n \
+    char *error_fname; \n \
+    FILE *error_log; \n \
+    int loglevel; \n \
+    int is_virtual; \n \
+    void *module_config; \n \
+    void *lookup_defaults; \n \
+    server_addr_rec *addrs; \n \
+    int timeout; \n \
+    int keep_alive_timeout; \n \
+    int keep_alive_max; \n \
+    int keep_alive; \n \
+    int send_buffer_size; \n \
+    char *path; \n \
+    int pathlen; \n \
+    array_header *names; \n \
+    array_header *wild_names; \n \
+    uid_t server_uid;\n \
+    gid_t server_gid; \n \
+    int limit_req_line; \n \
+    int limit_req_fieldsize; \n \
+    int limit_req_fields; \n \
+}; \
+    |\
+    |SA-core-rec\
+    |<dict-$*.html
+S|BUFF\
+    |#include "buff.h"\n \
+typedef struct buff_struct $*; \n \
+struct buff_struct { \n \
+    int flags; \n \
+    unsigned char *inptr; \n \
+    int incnt; \n \
+    int outchunk; \n \
+    int outcnt; \n \
+    unsigned char *inbase; \n \
+    unsigned char *outbase; \n \
+    int bufsiz; \n \
+    void (*error) ($* *fb, int op, void *data); \n \
+    void *error_data; \n \
+    long int bytes_sent; \n \
+    ap_pool *pool; \n \
+    int fd; \n \
+    int fd_in; \n \
+#ifdef WIN32 \n \
+    HANDLE hFH \n \
+#endif \n \
+    void *t_handle; \n \
+#ifdef B_SFIO \n \
+    Sfio_t *sf_in; \n \
+    Sfio_t *sf_out; \n \
+#endif \n \
+};\
+    |\
+    |SA-core-rec\
+    |
+S|cmd_parms\
+    |typedef struct { \n \
+    void *info; \n \
+    int override; \n \
+    int limited; \n \
+    configfile_t *config_file; \n \
+    pool *pool; \n \
+    struct pool *temp_pool; \n \
+    server_rec *server; \n \
+    char *path; \n \
+    const command_rec *cmd; \n \
+    const char *end_token; \n \
+} $*;\
+    |\
+    |SA-core-rec,SA-overrides\
+    |<dict-$*.html
+S|command_rec\
+    |typedef struct command_struct {\n \
+    const char *name;\n \
+    const char *(*func) ();\n \
+    void *cmd_data;\n \
+    int req_override;\n \
+    enum cmd_how args_how;\n \
+    const char *errmsg;\n \
+} $*;\
+    |\
+    |SA-core-rec,SA-overrides\
+    |
+#;
+#; Directive overrides
+#;
+X|SA-overrides\
+    |ACCESS_CONF,OR_AUTHCFG,OR_FILEINFO,OR_INDEXES,OR_LIMIT\
+     ,OR_OPTIONS,RSRC_CONF,ap_allow_overrides,cmd_parms,command_rec\
+    |\
+    |\
+    |
+C|RSRC_CONF\
+    |#include "http_config.h"\
+    |static const command_rec module_cmds[] =\n\
+{\n\
+        .\n\
+    {"ModuleDirective", cmd_moduledirective, NULL, $*, RAW_ARGS,\n\
+     "description of directive"},\n\
+        .\n\
+    {NULL}\n\
+};\
+    |SA-overrides\
+    |<dict-$*.html
+C|ACCESS_CONF\
+    |#include "http_config.h"\
+    |static const command_rec module_cmds[] =\n\
+{\n\
+        .\n\
+    {"ModuleDirective", cmd_moduledirective, NULL, $*, RAW_ARGS,\n\
+     "description of directive"},\n\
+        .\n\
+    {NULL}\n\
+};\
+    |SA-overrides\
+    |<dict-$*.html
+C|OR_AUTHCFG\
+    |#include "http_config.h"\
+    |static const command_rec module_cmds[] =\n\
+{\n\
+        .\n\
+    {"ModuleDirective", cmd_moduledirective, NULL, $*, RAW_ARGS,\n\
+     "description of directive"},\n\
+        .\n\
+    {NULL}\n\
+};\
+    |SA-overrides\
+    |<dict-$*.html
+C|OR_LIMIT\
+    |#include "http_config.h"\
+    |static const command_rec module_cmds[] =\n\
+{\n\
+        .\n\
+    {"ModuleDirective", cmd_moduledirective, NULL, $*, RAW_ARGS,\n\
+     "description of directive"},\n\
+        .\n\
+    {NULL}\n\
+};\
+    |SA-overrides\
+    |<dict-$*.html
+C|OR_OPTIONS\
+    |#include "http_config.h"\
+    |static const command_rec module_cmds[] =\n\
+{\n\
+        .\n\
+    {"ModuleDirective", cmd_moduledirective, NULL, $*, RAW_ARGS,\n\
+     "description of directive"},\n\
+        .\n\
+    {NULL}\n\
+};\
+    |SA-overrides\
+    |<dict-$*.html
+C|OR_FILEINFO\
+    |#include "http_config.h"\
+    |static const command_rec module_cmds[] =\n\
+{\n\
+        .\n\
+    {"ModuleDirective", cmd_moduledirective, NULL, $*, RAW_ARGS,\n\
+     "description of directive"},\n\
+        .\n\
+    {NULL}\n\
+};\
+    |SA-overrides\
+    |<dict-$*.html
+C|OR_INDEXES\
+    |#include "http_config.h"\
+    |static const command_rec module_cmds[] =\n\
+{\n\
+        .\n\
+    {"ModuleDirective", cmd_moduledirective, NULL, $*, RAW_ARGS,\n\
+     "description of directive"},\n\
+        .\n\
+    {NULL}\n\
+};\
+    |SA-overrides\
+    |<dict-$*.html
+#;
+#; Random constants
+#;
+X|SA-compileflags\
+    |BIG_SECURITY_HOLE,DEFAULT_ADMIN,DOCUMENT_LOCATION,DYNAMIC_MODULE_LIMIT\
+     ,HARD_SERVER_LIMIT,HTTPD_ROOT,SECURITY_HOLE_PASS_AUTHORIZATION\
+     ,TARGET,DEFAULT_INDEX,DEFAULT_CONTENT_TYPE,DEFAULT_PATH,DEFAULT_TIMEOUT\
+     ,DEFAULT_KEEPALIVE_TIMEOUT,DEFAULT_KEEPALIVE\
+    |\
+    |\
+    |
+C|BIG_SECURITY_HOLE\
+    |Compile-time definition\
+    |env CFLAGS="-Wall -D$*" ./configure\
+    |SA-compileflags\
+    |<dict-$*.html
+C|DEFAULT_ADMIN\
+    |Compile-time definition; default defined by \
+     <code>#include "httpd.h"</code>\
+    |env CFLAGS="-Wall -D$*=\"/usr/httpd/htdocs\"" ./configure\
+    |SA-compileflags\
+    |
+C|DEFAULT_CONTENT_TYPE\
+    |Compile-time definition; default defined by \
+     <code>#include "httpd.h"</code>\
+    |env CFLAGS="-Wall -D$*=\"application/octet-stream\"" ./configure\
+z    |SA-compileflags\
+    |
+C|DEFAULT_PATH\
+    |Compile-time definition default set by <code>#include "httpd.h"</code>\
+    |env CFLAGS="-Wall -D$*=\"/usr/local/bin:/bin:/usr/bin\"" ./configure\
+    |SA-compileflags\
+    |
+C|DEFAULT_TIMEOUT\
+    |Compile-time definition; default set by <code>#include "httpd.h"</code>\
+    |env CFLAGS="-Wall -D$*=600" ./configure\
+    |SA-compileflags\
+    |
+C|DEFAULT_KEEPALIVE_TIMEOUT\
+    |Compile-time definition; default set by <code>#include "httpd.h"</code>\
+    |env CFLAGS="-Wall -D$*=20" ./configure\
+    |SA-compileflags\
+    |
+C|DEFAULT_KEEPALIVE\
+    |Compile-time definition; default set by <code>#include "httpd.h"</code>\
+    |env CFLAGS="-Wall -D$*=50" ./configure\
+    |SA-compileflags\
+    |
+C|DOCUMENT_LOCATION\
+    |Compile-time definition; default set by <code>#include "httpd.h"</code>\
+    |env CFLAGS="-Wall -D$*=\"/usr/httpd/htdocs\"" ./configure\
+    |SA-compileflags,ap_document_root\
+    |<dict-$*.html
+C|TARGET\
+    |Compile-time definition; default set by <code>#include "httpd.h"</code>\
+    |env CFLAGS="-Wall -D$*=\"apache\"" ./configure\
+    |SA-compileflags\
+    |<dict-$*.html
+C|DEFAULT_INDEX\
+    |Compile-time definition; default defined by \
+     <code>#include "httpd.h"</code>\
+    |env CFLAGS="-Wall -D$*=\"default.html\"" ./configure\
+    |SA-compileflags\
+    |<dict-$*.html
+C|DYNAMIC_MODULE_LIMIT\
+    |Compile-time definition; default set by <code>#include "httpd.h"</code>\
+    |env CFLAGS="-Wall -D$*=64" ./configure\
+    |SA-compileflags\
+    |<dict-$*.html
+C|HARD_SERVER_LIMIT\
+    |Compile-time definition; default set by <code>#include "httpd.h"</code>\
+    |env CFLAGS="-Wall -D$*=1024" ./configure \n \n \
+for (i = 0; i &lt; $*; ++i) {\n    ...per-child processing...\n}\
+    |SA-compileflags\
+    |<dict-$*.html
+C|HTTPD_ROOT\
+    |Compile-time definition; default set by <code>#include "httpd.h"</code>\
+    |env CFLAGS="-Wall -D$*=\"/usr/httpd\"" ./configure\
+    |SA-compileflags\
+    |<dict-$*.html
+C|SECURITY_HOLE_PASS_AUTHORIZATION\
+    |Compile-time definition\
+    |env CFLAGS="-Wall -D$*" ./configure\
+    |SA-compileflags\
+    |<dict-$*.html
+#;
+#; Tables..
+#;
+X|SA-tables\
+    |table,ap_clear_table,ap_copy_table,ap_make_table\
+     ,ap_overlay_tables,ap_table_add,ap_table_addn,ap_table_do\
+     ,ap_table_get,ap_table_merge,ap_table_mergen,ap_table_set\
+     ,ap_table_setn,ap_table_unset\
+    |\
+    |\
+    |
+S|table\
+    |typedef struct $* {<var>opaque-structure</var>};\
+    |$* *string_pairs;\n \
+     string_pairs = ap_make_table(p, 4);\n \
+     ap_table_set(string_pairs, "key", "value"); \
+    |SA-tables\
+    |<dict-$*.html
+R|ap_clear_table\
+    |void $*(table *t);\
+    |table tmp;\n\
+tmp = r-&gt;headers_out;\n\
+r-&gt;headers_out = r-&gt;err_headers_out;\n\
+r-&gt;err_headers_out = tmp;\n\
+$*(r-&gt;err_headers_out);\
+    |SA-tables\
+    |<dict-$*.html
+R|ap_copy_table\
+    |table *$*(pool *p, const table *t);\
+    |rnew-&gt;subprocess_env = $*(rnew-&gt;pool, r-&gt;subprocess_env);\
+    |SA-tables\
+    |<dict-$*.html
+R|ap_make_table\
+    |table *$*(pool *p, int nelts);\
+    |\
+    |SA-tables\
+    |<dict-$*.html
+R|ap_overlay_tables\
+    |table *$*(pool *p, const table *overlay, const table *base);\
+    |\
+    |SA-tables\
+    |<dict-$*.html
+R|ap_table_add\
+    |void $*(table *t, const char *k, const char *val);\
+    |\
+    |SA-tables\
+    |<dict-$*.html
+R|ap_table_addn\
+    |void $*(table *t, const char *k, const char *val);\
+    |\
+    |SA-tables\
+    |<dict-$*.html
+#;
+#; Here's an example of multiline definition with proper indenting.
+#;
+R|ap_table_do\
+    |void $*(int (*comp) (void *d, const char *k, const char *val), \n \
+                 void *rec, const table *t, ...);\
+    |\
+    |SA-tables\
+    |
+R|ap_table_get\
+    |const char *$*(const table *t, const char *key);\
+    |\
+    |SA-tables\
+    |<dict-$*.html
+R|ap_table_merge\
+    |void $*(table *t, const char *k, const char *more_val);\
+    |\
+    |SA-tables\
+    |<dict-$*.html
+R|ap_table_mergen\
+    |void $*(table *t, const char *k, const char *more_val);\
+    |\
+    |SA-tables\
+    |<dict-$*.html
+R|ap_table_set\
+    |void $*(table *t, const char *k, const char *val);\
+    |\
+    |SA-tables\
+    |<dict-$*.html
+R|ap_table_setn\
+    |void $*(table *t, const char *k, const char *val);\
+    |\
+    |SA-tables\
+    |<dict-$*.html
+R|ap_table_unset\
+    |void $*(table *t, const char *k);\
+    |\
+    |SA-tables\
+    |<dict-$*.html
+#;
+#; arrays..
+#;
+X|SA-array\
+    |array_header,ap_array_cat,ap_append_arrays,ap_copy_array\
+     ,ap_copy_array_hdr,ap_make_array,ap_push_array\
+    |\
+    |\
+    |
+S|array_header\
+    |typedef struct { \n \
+    pool *pool; \n \
+    int elt_size; \n \
+    int nelts; \n \
+    int nalloc; \n \
+    char *elts; \n \
+} array_header;\
+    |typedef struct item_t { \n \
+    int length;\n \
+    char *string; \n \
+} item_t;\n \
+    :\n \
+array_header *item_array1; \n \
+item_t *item; \n \
+    :\n \
+item_array1 = ap_make_array(p, 4, sizeof(item_t));\n \
+    :\n \
+item = ap_push_array(item_array1);\n \
+item-&gt;length = 1;\n \
+item-&gt;string = "a";\n \
+    :\n \
+item_t *list;\n \
+ \n \
+list = (item_t *) item_array1-&gt;elts;\n \
+for (i = 0; i &lt; item_array1-&gt;nelts; ++i) {\n \
+    item = &amp;list[i];\n \
+    fprintf(stderr, "Item %d: length=%d, string='%s'\\n",\n \
+            i, item-&gt;length, item-&gt;string);\n \
+}\n \
+    |SA-array\
+    |
+R|ap_array_cat\
+    |void $*(array_header *dst, const array_header *src);\
+    |$*(&amp;res-&gt;a, &amp;base-&gt;second);\
+    |SA-array\
+    |<dict-$*.html
+R|ap_copy_array\
+    |array_header *$*(pool *p, const array_header *src);\
+    |<i>No examples available; not used in Apache 1.3.</i>\
+    |SA-array\
+    |<dict-$*.html
+R|ap_copy_array_hdr\
+    |array_header *$*(pool *p, const array_header *src);\
+    |<i>No examples available; not used in Apache 1.3.</i>\
+    |SA-array\
+    |<dict-$*.html
+R|ap_make_array\
+    |array_header *$*(pool *p, int nelts, int elt_size);\
+    |\
+    |SA-array\
+    |<dict-$*.html
+R|ap_push_array\
+    |void *$*(array_header *arr);\
+    |struct ae_t { \n \
+    server_rec *s; \n \
+} \n \
+array_header *ah; \n \
+struct ae_t *ae; \n \
+ \n \
+ah = ap_make_array(p, 4, sizeof(ae_t)); \n \
+ae = (struct ae_t *) ap_push_array(ah); \n \
+ae-&gt;s-&gt;server_name = "foo"; \
+    |SA-array\
+    |<dict-$*.html
+#;
+#; now the items relating to pools
+#;
+X|SA-pool\
+    |pool,ap_pool,ap_bytes_in_pool,ap_clear_pool,ap_destroy_pool,ap_find_pool\
+     ,ap_pool_is_ancestor,ap_pool_join,ap_make_sub_pool,ap_pstrcat,ap_palloc\
+     ,ap_pcalloc,ap_pclosedir,ap_pclosef,ap_pclosesocket,ap_pduphostent\
+     ,ap_pfclose,ap_pfdopen,ap_pfopen,ap_pgethostbyname,ap_popendir\
+     ,ap_popenf,ap_pregcomp,ap_pregfree,ap_psocket,ap_pstrdup,ap_pstrndup\
+    |\
+    |\
+    |
+S|pool\
+    |typedef struct pool pool;\n \
+typedef struct pool ap_pool;\n \
+struct pool <var>opaque-structure</var>\
+    |pool *p; \
+     \nchar *foo; \
+     \nfoo = ap_pstrcat(p, "string 1", "string 2", null);\
+    |SA-pool\
+    |<dict-$*.html
+S|ap_pool\
+    |typedef struct pool pool;\n \
+typedef struct pool ap_pool;\n \
+struct pool <var>opaque-structure</var>\
+    |\
+    |SA-pool\
+    |<dict-$*.html
+R|ap_bytes_in_pool\
+    |long $*(pool *p);\
+    |<i>No examples available; not used in Apache 1.3.</i>\
+    |SA-pool\
+    |<dict-$*.html
+R|ap_clear_pool\
+    |void $*(struct pool *a);\
+    |$*(plog);\n\
+ap_open_logs(server_conf, plog);\
+    |SA-pool\
+    |<dict-$*.html
+R|ap_find_pool\
+    |pool *$*(const void *ts);\
+    |pool *p;\n\
+p = $*((const void *)r-&gt;content_type);\n\
+if (p == NULL) { \n \
+    /* r-&gt;content_type is either NULL, a constant, \n \
+     * or in memory allocated using some other method than pools */ \n \
+}\
+    |SA-pool\
+    |
+R|ap_pool_is_ancestor\
+    |int $*(pool *a, pool *b);\
+    |\
+    |SA-pool\
+    |
+R|ap_pool_join\
+    |void $*(pool *p, pool *sub);\
+    |\
+    |SA-pool\
+    |
+R|ap_make_sub_pool\
+    |pool *$*(pool *p);\
+    |\
+    |SA-pool\
+    |<dict-$*.html
+R|ap_destroy_pool\
+    |void $*(pool *p);\
+    |ap_child_exit_modules(pconf, server_conf);\n\
+$*(pchild);\
+    |SA-pool\
+    |<dict-$*.html
+R|ap_pstrcat\
+    |char *$*(struct pool *p, ...);\
+    |\
+    |SA-pool\
+    |<dict-$*.html
+R|ap_palloc\
+    |void *$*(struct pool *p, int nbytes);\
+    |\
+    |SA-pool\
+    |<dict-$*.html
+R|ap_pcalloc\
+    |void *$*(struct pool *p, int nbytes);\
+    |\
+    |SA-pool\
+    |<dict-$*.html
+R|ap_pclosedir\
+    |void $*(pool *p, dir * d);\
+    |\
+    |SA-pool\
+    |
+R|ap_pclosef\
+    |int $*(struct pool *p, int fd);\
+    |\
+    |SA-pool\
+    |<dict-$*.html
+R|ap_pclosesocket\
+    |int $*(pool *p, int sock);\
+    |\
+    |SA-pool\
+    |
+R|ap_pduphostent\
+    |struct hostent *$*(pool *p, struct hostent *hp);\
+    |\
+    |SA-pool\
+    |
+R|ap_pfclose\
+    |int $*(struct pool *p, file *f);\
+    |\
+    |SA-pool\
+    |<dict-$*.html
+R|ap_pfdopen\
+    |file *$*(struct pool *p, int fd, const char *fmode);\
+    |\
+    |SA-pool\
+    |<dict-$*.html
+R|ap_pfopen\
+    |file *$*(struct pool *p, const char *name, const char *fmode);\
+    |\
+    |SA-pool\
+    |<dict-$*.html
+R|ap_pgethostbyname\
+    |struct hostent *$*(pool *p, const char *hostname);\
+    |\
+    |SA-pool\
+    |
+R|ap_popendir\
+    |dir *$*(pool *p, const char *name);\
+    |\
+    |SA-pool\
+    |
+R|ap_popenf\
+    |int $*(struct pool *p, const char *name, int flg, int mode);\
+    |\
+    |SA-pool\
+    |<dict-$*.html
+R|ap_pregcomp\
+    |regex_t *$*(pool *p, const char *pattern, int cflags);\
+    |\
+    |SA-pool\
+    |<dict-$*.html
+R|ap_pregfree\
+    |void $*(pool *p, regex_t *reg);\
+    |\
+    |SA-pool\
+    |
+R|ap_psocket\
+    |int $*(pool *p, int i, int j, int k);\
+    |\
+    |SA-pool\
+    |
+R|ap_pstrdup\
+    |char *$*(struct pool *p, const char *s);\
+    |\
+    |SA-pool\
+    |<dict-$*.html
+R|ap_pstrndup\
+    |char *$*(struct pool *p, const char *s, int n);\
+    |\
+    |SA-pool\
+    |<dict-$*.html
+#;
+#; incomplete definitions!
+#;
+R|ap_append_arrays\
+    |array_header *$*(pool *p, const array_header *a, const array_header *b);\
+    |new-&gt;hdr_list = $*(p, add-&gt;hdr_list, base-&gt;hdr_list);\
+    |SA-array\
+    |<dict-$*.html
+R|ap_pregsub\
+    |char *$*(pool *p, const char *input, const char *source, size_t nmatch, \
+     regmatch_t pmatch[]);\
+    |\
+    |SA-pool\
+    |<dict-$*.html
+R|ap_vformatter\
+    |int $*(int (*flush_func)(ap_vformatter_buff *f), ap_vformatter_buff *b, \
+     const char *fmt, va_list ap);\
+    |\
+    |\
+    |
+s|ap_vformatter_buff\
+    |typedef struct {\n\
+    char *curpos;\n\
+    char *endpos;\n\
+} ap_vformatter_buff;\
+    |\
+    |\
+    |
+#;
+#; miscellany (for now)
+#;
+S|uri_components\
+    |typedef struct { \n \
+    char *scheme; \n \
+    char *hostinfo; \n \
+    char *user; \n \
+    char *password; \n \
+    char *hostname; \n \
+    char *port_str; \n \
+    char *path; \n \
+    char *query; \n \
+    char *fragment; \n \
+    struct hostent *hostent; \n \
+    unsigned short port; \n \
+    unsigned is_initialized:1; \n \
+    unsigned dns_looked_up:1; \n \
+    unsigned dns_resolved:1; \n \
+} $*; \
+    |\
+    |SA-core-rec\
+    |
+X|SA-dirdata\
+    |cmd_how,RAW_ARGS,TAKE1,TAKE2,ITERATE,ITERATE2,FLAG,NO_ARGS,TAKE12\
+     ,TAKE3,TAKE23,TAKE123,TAKE13\
+    |\
+    |\
+    |
+C|cmd_how\
+    |#include "httpd.h"\
+    |<code>$*</code> is an enum, but the enumeration type isn't used\n\
+     by modules, only the specific named values.\
+    |SA-dirdata\
+    |<dict-$*.html
+C|proxyreqtype\
+    |#include "httpd.h"\
+    |<code>$*</code> is an enum, but the enumeration type isn't used\n\
+     by modules, only the specific named values.\
+    |request_rec\
+    |
+C|RAW_ARGS\
+    |#include "httpd.h"\n<i>see</i> cmd_how.\
+    |static const command_rec module_cmds[] =\n\
+{\n\
+        .\n\
+    {"ModuleDirective", cmd_moduledirective, NULL, OR_LIMIT, $*,\n\
+     "directive description"},\n\
+        .\n\
+    {NULL}\n\
+};\
+    |SA-dirdata\
+    |<dict-$*.html
+C|TAKE1\
+    |#include "httpd.h"\n<i>see</i> cmd_how.\
+    |static const command_rec module_cmds[] =\n\
+{\n\
+        .\n\
+    {"ModuleDirective", cmd_moduledirective, NULL, OR_LIMIT, $*,\n\
+     "directive description"},\n\
+        .\n\
+    {NULL}\n\
+};\
+    |SA-dirdata\
+    |<dict-$*.html
+C|TAKE2\
+    |#include "httpd.h"\n<i>see</i> cmd_how.\
+    |static const command_rec module_cmds[] =\n\
+{\n\
+        .\n\
+    {"ModuleDirective", cmd_moduledirective, NULL, OR_LIMIT, $*,\n\
+     "directive description"},\n\
+        .\n\
+    {NULL}\n\
+};\
+    |SA-dirdata\
+    |<dict-$*.html
+C|ITERATE\
+    |#include "httpd.h"\n<i>see</i> cmd_how.\
+    |static const command_rec module_cmds[] =\n\
+{\n\
+        .\n\
+    {"ModuleDirective", cmd_moduledirective, NULL, OR_LIMIT, $*,\n\
+     "directive description"},\n\
+        .\n\
+    {NULL}\n\
+};\
+    |SA-dirdata\
+    |<dict-$*.html
+C|ITERATE2\
+    |#include "httpd.h"\n<i>see</i> cmd_how.\
+    |static const command_rec module_cmds[] =\n\
+{\n\
+        .\n\
+    {"ModuleDirective", cmd_moduledirective, NULL, OR_LIMIT, $*,\n\
+     "directive description"},\n\
+        .\n\
+    {NULL}\n\
+};\
+    |SA-dirdata\
+    |<dict-$*.html
+C|FLAG\
+    |#include "httpd.h"\n<i>see</i> cmd_how.\
+    |static const command_rec module_cmds[] =\n\
+{\n\
+        .\n\
+    {"ModuleDirective", cmd_moduledirective, NULL, OR_LIMIT, $*,\n\
+     "directive description"},\n\
+        .\n\
+    {NULL}\n\
+};\
+    |SA-dirdata\
+    |<dict-$*.html
+C|NO_ARGS\
+    |#include "httpd.h"\n<i>see</i> cmd_how.\
+    |static const command_rec module_cmds[] =\n\
+{\n\
+        .\n\
+    {"ModuleDirective", cmd_moduledirective, NULL, OR_LIMIT, $*,\n\
+     "directive description"},\n\
+        .\n\
+    {NULL}\n\
+};\
+    |SA-dirdata\
+    |<dict-$*.html
+C|TAKE12\
+    |#include "httpd.h"\n<i>see</i> cmd_how.\
+    |static const command_rec module_cmds[] =\n\
+{\n\
+        .\n\
+    {"ModuleDirective", cmd_moduledirective, NULL, OR_LIMIT, $*,\n\
+     "directive description"},\n\
+        .\n\
+    {NULL}\n\
+};\
+    |SA-dirdata\
+    |<dict-$*.html
+C|TAKE3\
+    |#include "httpd.h"\n<i>see</i> cmd_how.\
+    |static const command_rec module_cmds[] =\n\
+{\n\
+        .\n\
+    {"ModuleDirective", cmd_moduledirective, NULL, OR_LIMIT, $*,\n\
+     "directive description"},\n\
+        .\n\
+    {NULL}\n\
+};\
+    |SA-dirdata\
+    |<dict-$*.html
+C|TAKE23\
+    |#include "httpd.h"\n<i>see</i> cmd_how.\
+    |static const command_rec module_cmds[] =\n\
+{\n\
+        .\n\
+    {"ModuleDirective", cmd_moduledirective, NULL, OR_LIMIT, $*,\n\
+     "directive description"},\n\
+        .\n\
+    {NULL}\n\
+};\
+    |SA-dirdata\
+    |<dict-$*.html
+C|TAKE123\
+    |#include "httpd.h"\n<i>see</i> cmd_how.\
+    |static const command_rec module_cmds[] =\n\
+{\n\
+        .\n\
+    {"ModuleDirective", cmd_moduledirective, NULL, OR_LIMIT, $*,\n\
+     "directive description"},\n\
+        .\n\
+    {NULL}\n\
+};\
+    |SA-dirdata\
+    |<dict-$*.html
+C|TAKE13\
+    |#include "httpd.h"\n<i>see</i> cmd_how.\
+    |static const command_rec module_cmds[] =\n\
+{\n\
+        .\n\
+    {"ModuleDirective", cmd_moduledirective, NULL, OR_LIMIT, $*,\n\
+     "directive description"},\n\
+        .\n\
+    {NULL}\n\
+};\
+    |SA-dirdata\
+    |<dict-$*.html
+#;
+#; A whole buncha misc.functions
+#;
+R|ap_add_cgi_vars\
+    |void $*(request_rec *r);\
+    |request_rec *r;\n$*(r);\
+    |\
+    |<dict-$*.html
+R|ap_add_common_vars\
+    |void $*(request_rec *r);\
+    |request_rec *r;\n$*(r);\
+    |\
+    |<dict-$*.html
+R|ap_add_per_dir_conf\
+    |void $*(server_rec *s, void *dir_config);\
+    |<i>Private to the Apache core server; not for module use.</i>\
+    |\
+    |<dict-$*.html
+R|ap_cpystrn\
+    |char *$*(char *buf, const char *str, size_t numbytes);\
+    |char *ap_coredump_dir;\nchar *ap_server_root;\n$*(ap_coredump_dir, ap_server_root, sizeof(ap_coredump_dir));\
+    |\
+    |<dict-$*.html
+R|ap_bprintf\
+    |int $*(BUFF *fb, const char *fmt, ...);\
+    |<i>No examples available; not used in Apache 1.3.</i>\
+    |\
+    |<dict-$*.html
+R|ap_os_canonical_filename\
+    |char *$*(pool *p, const char *file);\
+    |request_rec *r;\nr-&gt;filename = $*(r-&gt;pool, r-&gt;filename);\
+    |\
+    |<dict-$*.html
+R|ap_escape_quotes\
+    |char *$*(pool *p, const char *str);\
+    |cmd_parms *cmd;\nchar *word1;\n \
+core_dir_config *aconfig = (core_dir_config *)mconfig; \n \
+aconfig-&gt;ap_auth_name = $*(cmd-&gt;pool, word1);\
+    |\
+    |<dict-$*.html
+R|ap_log_error_old\
+    |void $*(const char *err, server_rec *s);\
+    |server_rec *s;\n$*("Yow!", s);\
+    |\
+    |<dict-$*.html
+R|ap_parse_hostinfo_components\
+    |int $*(pool *p, const char *hostinfo, uri_components *uptr);\
+    |request_rec *r;\nconst char *uri;\nint status; \n \
+status = $*(r-&gt;pool, uri, &amp;r-&gt;parsed_uri);\
+    |\
+    |<dict-$*.html
+R|ap_psprintf\
+    |char *$*(struct pool *p, const char *fmt, ...);\
+    |pool *p;\nchar *real_code;\nchar base = 'x';\nint modifier = 0; \n \
+real_code = $*(p, "%c%d", base, modifier);\
+    |\
+    |<dict-$*.html
+R|ap_pvsprintf\
+    |char *$*(struct pool *p, const char *fmt, va_list);\
+    |pool *p;\nconst char *fmt;\nva_list ap;\nchar *res;\nres = $*(p, fmt, ap);\
+    |\
+    |<dict-$*.html
+R|ap_snprintf\
+    |int $*(char *buf, size_t nbytes, const char *fmt, ...);\
+    |char buffer[HUGE_STRING_LEN];\nrequest_rec *r;\n \
+$*(buffer, sizeof(buffer), "connect %s http/1.0" crlf, r-&gt;uri);\
+    |\
+    |<dict-$*.html
+R|ap_add_per_url_conf\
+    |void $*(server_rec *s, void *url_config);\
+    |server_rec *s;\nvoid *url_config;\n \
+$*(server_rec *s, void *url_config);\
+    |\
+    |
+R|ap_allow_options\
+    |int $*(request_rec *r);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    \nif (result &amp; OPT_INCLUDES) {\n \
+    /* Do something meaningful and Includes-related */\n} \
+    |SA-options\
+    |<dict-$*.html
+R|ap_allow_overrides\
+    |int $*(request_rec *r);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |SA-overrides\
+    |
+R|ap_vsnprintf\
+    |int $*(char *buf, size_t numbytes, const char *fmt, va_list ap);\
+    |const char *text;\nchar str2[512];\nva_list ap;\n \
+$*(str2, sizeof(str2), text, ap);\
+    |\
+    |<dict-$*.html
+X|SA-security\
+    |ap_auth_name,ap_auth_type,ap_validate_password\
+    |\
+    |\
+    |
+R|ap_auth_name\
+    |const char *$*(request_rec *r);\
+    |if ($*(r) == NULL) {\n \
+    /* no applicable security realm */ \n \
+    } \n \
+    |SA-security\
+    |<dict-$*.html
+R|ap_auth_type\
+    |const char *$*(request_rec *r);\
+    |if (strcasecmp($*(r), "Basic") == 0) { \n \
+    /* AuthType Basic */ \n \
+} \
+    |SA-security\
+    |<dict-$*.html
+R|ap_validate_password\
+    |char *$*(const char *passwd, const char *hash);\
+    |pwcheck = $*(pw_from_request, pw_from_file); \n \
+if (pwcheck == NULL) { \n \
+    /* Password matches */ \n \
+} \n \
+else { \n \
+    ap_log_rerror(APLOG_MARK, APLOG_NOERRNO&#124;APLOG_ERR, r, \n \
+                  "Authentication failed: %s", pwcheck); \n \
+    return HTTP_UNAUTHORIZED; \n \
+} \
+    |SA-security\
+    |
+R|ap_basic_http_header\
+    |void $*(request_rec *r);\
+    |request_rec *r;\n$*(r);\
+    |\
+    |
+S|HANDLE\
+    |Opaque data structure defined by Windows.\
+    |\
+    |\
+    |<dict-$*.html
+X|SA-BUFF\
+    |BUFF,ap_bclose,ap_bcreate,ap_bfilbuf,ap_bfileno,ap_bflsbuf,ap_bflush\
+     ,ap_bgetc\
+     ,ap_bgetopt,ap_bgets,ap_bhalfduplex,ap_bpushfd,ap_bpushh,ap_bsetopt\
+     ,ap_bsetflag,ap_bgetflag,ap_bonerror,ap_bread,ap_blookc,ap_bskiplf\
+     ,ap_bwrite,ap_bputs,ap_bvputs,ap_bprintf,ap_vbprintf,ap_bputc\
+     ,ap_bnonblock,ap_bspawn_child\
+     ,B_SFIO,B_RD,B_WR,B_RDWR,B_EOF,B_EOUT,B_RDERR,B_WRERR,B_ERROR\
+     ,B_CHUNK,B_SAFEREAD,B_SOCKET,B_ASCII2EBCDIC,B_EBCDIC2ASCII\
+     ,BO_BYTECT,kill_conditions\
+    |\
+    |\
+    |
+C|B_SFIO\
+    |env CFLAGS="-Wall -D$*" ./configure\
+    |\
+    |SA-BUFF\
+    |<dict-$*.html
+C|BO_BYTECT\
+    |#include "buff.h"\
+    |\
+    |SA-BUFF\
+    |
+C|B_RD\
+    |#include "buff.h"\
+    |\
+    |SA-BUFF\
+    |
+C|B_WR\
+    |#include "buff.h"\
+    |\
+    |SA-BUFF\
+    |
+C|B_RDWR\
+    |#include "buff.h"\
+    |\
+    |SA-BUFF\
+    |
+C|B_EOF\
+    |#include "buff.h"\
+    |\
+    |SA-BUFF\
+    |
+C|B_EOUT\
+    |#include "buff.h"\
+    |\
+    |SA-BUFF\
+    |
+C|B_RDERR\
+    |#include "buff.h"\
+    |\
+    |SA-BUFF\
+    |
+C|B_WRERR\
+    |#include "buff.h"\
+    |\
+    |SA-BUFF\
+    |
+C|B_ERROR\
+    |#include "buff.h"\
+    |\
+    |SA-BUFF\
+    |
+C|B_CHUNK\
+    |#include "buff.h"\
+    |\
+    |SA-BUFF\
+    |
+C|B_SAFEREAD\
+    |#include "buff.h"\
+    |\
+    |SA-BUFF\
+    |
+C|B_SOCKET\
+    |#include "buff.h"\
+    |\
+    |SA-BUFF\
+    |
+C|B_ASCII2EBCDIC\
+    |#include "buff.h"\
+    |\
+    |SA-BUFF\
+    |
+C|B_EBCDIC2ASCII\
+    |#include "buff.h"\
+    |\
+    |SA-BUFF\
+    |
+R|ap_bclose\
+    |int $*(BUFF *fb);\
+    |status = $*(r-&gt;connection-&gt;client);\
+    |SA-BUFF\
+    |
+R|ap_bcreate\
+    |BUFF *$*(pool *p, int flags);\
+    |c-&gt;fp = $*(p, B_RDWR &#124; B_SOCKET);\
+    |SA-BUFF\
+    |
+R|ap_bfilbuf\
+    |int $*(BUFF *fb);\
+    |SA-BUFF\
+    |ap_bgetc\
+    |<dict-$*.html
+R|ap_bfileno\
+    |int $*(BUFF *fb, int direction);\
+    |ap_pclosef(c-&gt;req-&gt;pool, $*(c-&gt;fp, B_WR);\
+    |SA-BUFF\
+    |
+R|ap_bflsbuf\
+    |int $*(int c, BUFF *fb);\
+    |<i>Not used directly, only through the ap_bputc() macro.</i>\
+    |SA-BUFF\
+    |
+R|ap_bflush\
+    |int $*(BUFF *fb);\
+    |BUFF *script_out;\n\
+int rc;\n\
+rc = $*(script_out);\
+    |SA-BUFF\
+    |
+M|ap_bgetc\
+    |#ifndef CHARSET_EBCDIC\n \
+#define $*(fb) ( ((fb)-&gt;incnt == 0) ? ap_bfilbuf(fb) \n \
+                       : ((fb)-&gt;incnt--, *((fb)-&gt;inptr++)) ) \n \
+#else\n \
+#define $*(fb) ( ((fb)-&gt;incnt == 0) ? ap_bfilbuf(fb) \ \n \
+                       :  ((fb)-&gt;incnt--, \ \n \
+                           (fb-&gt;flags &amp; B_ASCII2EBCDIC) \ \n \
+                           ? os_toebcdic[(unsigned char)*((fb)-&gt;inptr++)] \ \n \
+                           : *((fb)-&gt;inptr++)) ) \n \
+#endif\n \
+    |if ((c = $*(r-&gt;connection-&gt;client)) == CR) { \n \
+    c = $*(r-&gt;connection-&gt;client);\n}\
+    |SA-BUFF\
+    |
+M|ap_bgetflag\
+    |#define $*(fb, flag)  ((fb)-&gt;flags &amp; (flag))\
+    |int convert = $*(r-&gt;connection-&gt;client, B_EBCDIC2ASCII);\
+    |SA-BUFF\
+    |
+R|ap_bgetopt\
+    |int $*(BUFF *fb, int optname, void *optval);\
+    |long int bs;\n\
+$*r-&gt;connection-&gt;client, BO_BYTECT, &amp;bs);\
+    |SA-BUFF\
+    |
+R|ap_bgets\
+    |int $*(char *s, int n, BUFF *fb);\
+    |while ($(argsbuffer, HUGE_STRING_LEN, script_err) &gt; 0) {\n\
+    continue;\n\
+}\
+    |SA-BUFF\
+    |
+R|ap_bhalfduplex\
+    |void $*(BUFF *fb);\
+    |BUFF *fb;\n\
+$*(fb);\
+    |SA-BUFF\
+    |
+R|ap_block_alarms\
+    |void $*(void);\
+    |$*();\n\
+pid = fork();\n\
+if (pid == 0) {\n\
+    /* Do something as the child */\n\
+}\n\
+else {\n\
+    /* Do something as the parent */\n\
+}\n\
+ap_unblock_alarms();\
+    |ap_unblock_alarms\
+    |<dict-$*.html
+R|ap_blookc\
+    |int $*(char *buffer, BUFF *fb);\
+    |do {\n\
+    /* something */\n\
+} while (fold\n\
+         &amp;&amp; (retval != 1)\n\
+         &amp;&amp; (n &gt; 1)\n\
+         &amp;&amp; ($*(&amp;next, in) == 1)\n\
+         &amp;&amp; ((next == ' ')\n\
+             &#124;&#124; (next == '\\t')));\
+    |\
+    |
+R|ap_bnonblock\
+    |int $*(BUFF *fb, int direction);\
+    |$*(fb, B_RD);\
+    |\
+    |
+R|ap_bonerror\
+    |void $*(BUFF *fb, void (*error) (BUFF *b, int, void *), void *data);\
+    |<i>No examples available; not currently used in Apache 1.3.</i>\
+    |\
+    |
+R|ap_bpushfd\
+    |void $*(BUFF *fb, int fd_in, int fd_out);\
+    |$*(datam csd, -1);\
+    |\
+    |
+R|ap_bpushh\
+    |#include "buff.h"\nvoid $*(BUFF *fb, HANDLE hFH);\
+    |$*(*pipe_in, hPipeInputWrite);\
+    |\
+    |
+M|ap_bputc\
+    |#ifndef CHARSET_EBCDIC\n \
+#define $*(c, fb) ((((fb)-&gt;flags &amp; \
+     (B_EOUT&#124;B_WRERR&#124;B_WR)) != B_WR &#124;&#124; \ \n \
+        (fb)-&gt;outcnt == (fb)-&gt;bufsiz) ? ap_bflsbuf(c, (fb)) : \ \n \
+        ((fb)-&gt;outbase[(fb)-&gt;outcnt++] = (c), 0))\n \
+#else\n \
+#define $*(c, fb) ((((fb)-&gt;flags &amp; \
+   (B_EOUT&#124;B_WRERR&#124;B_WR)) != B_WR &#124;&#124; \ \n \
+        (fb)-&gt;outcnt == (fb)-&gt;bufsiz) ? ap_bflsbuf(c, (fb)) : \ \n \
+        ((fb)-&gt;outbase[(fb)-&gt;outcnt++] = (fb-&gt;flags &amp; \
+B_EBCDIC2ASCII) \ \n \
+            ? os_toascii[(unsigned char)c] : (c), 0)) \n \
+#endif\
+    |if ($*(c, r-&gt;connection-&gt;client) &lt; 0) {\n\
+    /* Do something */\n\
+}\
+    |SA-BUFF\
+    |
+R|ap_bputs\
+    |int $*(const char *x, BUFF *fb);\
+    |$*(CRLF, fp);\
+    |\
+    |
+R|ap_bread\
+    |int $*(BUFF *fb, void *buf, int nbyte);\
+    |n = $*(f, buf, IOBUFSIZE);\
+    |\
+    |
+R|ap_bsetflag\
+    |int $*(BUFF *fb, int flag, int value);\
+    |$*(r-&gt;connection-&gt;client, B_ASCII2EBCDIC, 0);\
+    |\
+    |
+R|ap_bsetopt\
+    |int $*(BUFF *fb, int optname, const void *optval);\
+    |$*(r-&gt;connection-&gt;client, BO_BYTECT, &amp;zero);\
+    |\
+    |
+R|ap_bskiplf\
+    |int $*(BUFF *fb);\
+    |if (linebuff[len - 1] != '\\n') {\n\
+    (void)$*(f);\n\
+}\
+    |\
+    |
+R|ap_bspawn_child\
+    |int $*(pool *p, int (*func) (void *data, child_info *info), \n \
+                    void *data, enum kill_conditions kill_how, \n \
+                    BUFF **pipe_in, BUFF **pipe_out, \
+BUFF **pipe_err);\
+    |if (! $*(r-&gt;pool, include_cmd_child, &amp;arg,\n\
+                      kill_after_timeout, NULL, &amp;script_in, NULL)) {\n\
+    /* Log an error */\n\
+}\
+    |SA-BUFF\
+    |
+R|ap_bvputs\
+    |int $*(BUFF *fb, ...);\
+    |if (parm-&gt;cache != NULL\n\
+    &amp;&amp;parm-&gt;cache-&gt; != NULL\n\
+    &amp;&amp;$*(parm-&gt;cache-&gt;fp, key, ": ", value, CRLF, NULL) == -1) {\n\
+    /* Log an error */\n\
+}\
+    |\
+    |
+R|ap_bwrite\
+    |int $*(BUFF *fb, const void *buf, int nbyte);\
+    |ap_reset_timeout(r);\n\
+if ($*(script_out, argsbuffer, len_read) &lt; len_read) {\n\
+    / * silly script stopped reading, soak up remaining message */\n\
+}\
+    |\
+    |
+R|ap_bytes_in_free_blocks\
+    |long $*(void);\
+    |<i>No examples available; not used in Apache 1.3.</i>\
+    |SA-pool\
+    |<dict-$*.html
+R|ap_call_exec\
+    |int $*(request_rec *r, char *argv0, char **env, int shellcmd);\
+    |child_pid = $*(r, pinfo, argv0, env, 0);\
+    |\
+    |<dict-$*.html
+R|ap_can_exec\
+    |int $*(const struct stat *fstat);\
+    |if (! $*(&amp;r-&gt;finfo)) {\n\
+    /* log an error; we can't execute the file */\n\
+}\
+    |\
+    |<dict-$*.html
+X|SA-cfgfiles\
+    |ap_cfg_closefile,ap_cfg_getc,ap_cfg_getline\
+    |\
+    |\
+    |
+R|ap_cfg_closefile\
+    |int $*(configfile_t *fp);\
+    |$*(imap);  /* we are done with the map file; close it */\
+    |SA-cfgfiles\
+    |<dict-$*.html
+R|ap_cfg_getc\
+    |int $*(configfile_t *cfp);\
+    |<i>No examples available; not used in Apache 1.3.</i>\
+    |SA-cfgfiles\
+    |<dict-$*.html
+R|ap_cfg_getline\
+    |int $*(char *buf, size_t bufsize, configfile_t *cfp);\
+    |while (! $*(l, MAX_STRING_LEN, cmd-&gt;config_file)) {\n\
+    /* Do something with the line read into l */\n\
+}\
+    |SA-cfgfiles\
+    |<dict-$*.html
+R|ap_chdir_file\
+    |void $*(const char *file);\
+    |$*(r-&gt;filename);\
+    |\
+    |<dict-$*.html
+R|ap_check_access\
+    |int $*(request_rec *);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |
+R|ap_check_alarm\
+    |int $*(void);\
+    |if (! (tv.tv_sec = $*())) {\n\
+    return (send(sock, buf, len, flags));\n\
+}\
+    |\
+    |
+R|ap_check_auth\
+    |int $*(request_rec *);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |
+R|ap_check_cmd_context\
+    |const char *$*(cmd_parms *cmd, unsigned forbidden);\
+    |const char *err;\n\
+err = $*(cmd, GLOBAL_ONLY);\n\
+if (err != NULL) {\n\
+    return err;\n\
+}\
+    |\
+    |
+R|ap_check_user_id\
+    |int $*(request_rec *r);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |
+R|ap_checkmask\
+    |int $*(const char *data, const char *mask);\
+    |if ($*(date, "## @$$ #### ##:##:## *")) {\n\
+    /* Date is in RFC 1123 format. */\n\
+}\
+    |\
+    |
+R|ap_child_exit_modules\
+    |void $*(pool *p, server_rec *s);\
+    |if (pchild) {\n\
+    $*(pchild, server_conf);\n\
+    ap_destroy_pool(pchild);\n\
+}\
+    |\
+    |
+R|ap_child_init_modules\
+    |void $*(pool *p, server_rec *s);\
+    |$*(pconf, server_conf);\
+    |\
+    |
+R|ap_child_terminate\
+    |void $*(request_rec *r);\
+    |request_rec *r;\n$*(r);\
+    |\
+    |
+R|ap_cleanup_for_exec\
+    |void $*(void);\
+    |$();\n\
+child_pid = ap_call_exec(r, pinfo, argv0, env, 0);\
+    |\
+    |<dict-$*.html
+R|ap_clear_module_list\
+    |void $*(void);\
+    |$*();\
+    |\
+    |
+R|ap_construct_server\
+    |char *$*(pool *p, const char *hostname, unsigned port, \
+     const request_rec *r);\
+    |<i>No examples available; not used in Apache 1.3.</i>\
+    |\
+    |<dict-$*.html
+R|ap_construct_url\
+    |char *$*(pool *p, const char *uri, const request_rec *r);\
+    |return $*(r-&gt;pool, r-&gt;uri, r);\
+    |\
+    |<dict-$*.html
+R|ap_core_reorder_directories\
+    |void $*(pool *, server_rec *);\
+    |/* XXX: this is really something that should be dealt with by a\n\
+ * post-config api phase */\n\
+$*(p, virt);\
+    |\
+    |
+R|ap_count_dirs\
+    |int $*(const char *path);\
+    |ap_no2slash(test_filename);\n\
+num_dirs = $*(test_filename);\
+    |\
+    |<dict-$*.html
+R|ap_create_environment\
+    |char **$*(pool *p, table *t);\
+    |ap_add_cgi_vars(r);\n\
+env = $*(r-&gt;pool, r-&gt;subprocess_env);\n\
+child_pid = ap_call_exec(r, pinfo, s, env), 1);\
+    |\
+    |
+R|ap_create_per_dir_config\
+    |void *$*(pool *p);\
+    |void *new_file_conf;\n\
+new_file_conf = $(cmd-&gt;pool);\
+    |\
+    |
+R|ap_create_request_config\
+    |void *$*(pool *p);\
+    |r-&gt;request_config = $*(r-&gt;pool);\
+    |\
+    |
+R|ap_default_port_for_request\
+    |unsigned short $*(const request_rec *r);\
+    |port = (r-&gt;parsed_uri.port != 0)\n\
+           ? r-&gt;parsed_uri.port : $(r);\
+    |\
+    |
+R|ap_default_port_for_scheme\
+    |unsigned short $*(const char *scheme_str);\
+    |uptr-&gt;port = uptr-&gt;scheme ? $(uptr-&gt;scheme) : DEFAULT_HTTP_PORT;\
+    |\
+    |
+R|ap_default_type\
+    |char *$*(request_req *r);\
+    |type = (r-&gt;content_type == NULL) ? $*(r) : r-&gt;content_type;\
+    |\
+    |
+R|ap_destroy_sub_req\
+    |void $*(request_rec *r);\
+    |request_rec *r;\n$*(r);\
+    |\
+    |<dict-$*.html
+R|ap_die\
+    |void $*(int type, request_rec *r);\
+    |if (r-&gt;method_number == M_TRACE) {\n\
+    if ((access_status = ap_send_http_trace(r))) {\n\
+        $*(access_status, r);\n\
+    }\n\
+    else {\n\
+        ap_finalize_request_protocol(r);\n\
+    }\n\
+    :\
+    |\
+    |
+R|ap_discard_request_body\
+    |int $*(request_rec *r);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |
+R|ap_document_root\
+    |const char *$*(request_rec *r);\
+    |request_rec *r;\nconst char *docroot;\ndocroot = ap_document_root(r)\n \
+    |DOCUMENT_LOCATION\
+    |<dict-$*.html
+R|ap_each_byterange\
+    |int $*(request_rec *r, long *offset, long *length);\
+    |while ($*(r, &amp;offset, &amp;length)) {\n\
+    ap_send_mmap(mm, r, offset, length);\n\
+}\
+    |\
+    |
+X|SA-logging\
+    |APLOG_ALERT,APLOG_CRIT,APLOG_DEBUG,APLOG_EMERG,APLOG_ERR,APLOG_INFO\
+     ,APLOG_LEVELMASK,APLOG_MARK,APLOG_NOERRNO,APLOG_NOTICE,APLOG_WARNING\
+     ,APLOG_WIN32ERROR,ap_log_error,ap_log_rerror,ap_error_log2stderr\
+    |\
+    |\
+    |
+R|ap_error_log2stderr\
+    |void $*(server_rec *s);\
+    |$*(r-&gt;server);\
+    |SA-logging\
+    |
+R|ap_escape_html\
+    |char *$*(pool *p, const char *s);\
+    |char *title_name;\n\
+title_name = $*(r-&gt;pool, r-&gt;uri);\
+    |\
+    |<dict-$*.html
+R|ap_escape_path_segment\
+    |char *$*(pool *p, const char *s);\
+    |<i>No examples available; not used in Apache 1.3.</i>\
+    |\
+    |<dict-$*.html
+R|ap_escape_shell_cmd\
+    |char *$*(pool *p, const char *s);\
+    |ap_unescape_url(arg_copy);\n\
+ap_table_setn(r-&gt;subprocess_env, "QUERY_STRING_UNESCAPED",\n\
+              $*(r-&gt;pool, arg_copy));\
+    |\
+    |<dict-$*.html
+R|ap_finalize_request_protocol\
+    |void $*(request_rec *r);\
+    |request_rec *r;\n$*(r);\
+    |\
+    |
+R|ap_finalize_sub_req_protocol\
+    |void $*(request_rec *r);\
+    |request_rec *r;\n$*(r);\
+    |\
+    |
+R|ap_find_command\
+    |const command_rec *$*(const char *name, const command_rec *cmds);\
+    |for (modp = *mod, modp != NULL; modp = modp-&gt;next) {\n\
+    if (modp-&gt;cmds &amp;&amp; (cmdp = $*(cmd_name, modp-&gt;cmds))) {\n\
+        *mod = modp;\n\
+        return cmdp;\n\
+    }\n\
+}\
+    |\
+    |
+R|ap_find_command_in_modules\
+    |const command_rec *$*(const char *cmd_name, module **m);\
+    |if (! (cmd = $*(cmd_name, &amp;mod))) {\n\
+    errno = EINVAL;\n\
+    return ap_pstrcat(parms-&gt;pool, "Invalid command '", cmd_name, "'", NULL);\
+    |\
+    |
+R|ap_find_last_token\
+    |int $*(pool *p, const char *line, const char *tok);\
+    |$*(r-&gt;pool,\n\
+                        ap_table_get(r-&gt;headers_out, "Transfer-Encoding"),\n\
+                        "chunked");\
+    |\
+    |
+R|ap_find_linked_module\
+    |module *$*(const char *name);\
+    |\
+    |\
+    |
+R|ap_find_module_name\
+    |const char *$*(module *m);\
+    |\
+    |\
+    |
+R|ap_find_path_info\
+    |int $*(const char *uri, const char *path_info);\
+    |\
+    |\
+    |
+R|ap_find_token\
+    |int $*(pool *p, const char *line, const char *tok);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_find_types\
+    |int $*(request_rec *r);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |
+R|ap_fini_vhost_config\
+    |void $*(pool *p, server_rec *main_server);\
+    |\
+    |\
+    |
+X|SA-fnmatch\
+    |ap_fnmatch,FNM_NOMATCH,FNM_NOESCAPE,FNM_PATHNAME,FNM_PERIOD\
+     ,FNM_CASE_BLIND\
+    |\
+    |\
+    |
+C|FNM_NOMATCH\
+    |#include "fnmatch.h"\
+    |\
+    |SA-fnmatch\
+    |
+C|FNM_NOESCAPE\
+    |#include "fnmatch.h"\
+    |\
+    |SA-fnmatch\
+    |
+C|FNM_PATHNAME\
+    |#include "fnmatch.h"\
+    |\
+    |SA-fnmatch\
+    |
+C|FNM_PERIOD\
+    |#include "fnmatch.h"\
+    |\
+    |SA-fnmatch\
+    |
+C|FNM_CASE_BLIND\
+    |#include "fnmatch.h"\
+    |\
+    |SA-fnmatch\
+    |
+R|ap_fnmatch\
+    |int $*(const char *pattern, const char *string, int flags);\
+    |#include "fnmatch.h"\n\
+    int fnflags = 0;\n\
+#ifdef WIN32\n\
+    fnflags &#124;= FNM_CASE_BLIND;\n\
+#endif\n\
+    if (ap_fnmatch("index.html", r-&gt;filename, fnflags) == 0) { \n \
+        return OK; \n \
+    }\
+    |SA-fnmatch\
+    |<dict-$*.html
+R|ap_force_library_loading\
+    |void $*(void)\
+    |\
+    |\
+    |
+R|ap_get_basic_auth_pw\
+    |int $*(request_rec *r, char **pw);\
+    |\
+    |\
+    |
+R|ap_get_client_block\
+    |long $*(request_rec *r, char *buffer, int bufsiz);\
+    |\
+    |SA-readbody\
+    |<dict-$*.html
+R|ap_get_gmtoff\
+    |struct tm *$*(int *tz);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_get_local_host\
+    |char *$*(pool *);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_get_module_config\
+    |void *$*(void *conf_vector, module *m);\
+    |\
+    |\
+    |
+R|ap_get_remote_host\
+    |const char *$*(conn_rec *conn, void *dir_config, int type);\
+    |\
+    |\
+    |
+R|ap_get_remote_logname\
+    |const char *$*(request_rec *r);\
+    |\
+    |\
+    |
+R|ap_get_server_port\
+    |unsigned $*(const request_rec *r);\
+    |const request_rec *r;\nint port;\nport = $*(r);\
+    |\
+    |<dict-$*.html
+R|ap_get_time\
+    |char *$*(void);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_get_token\
+    |char *$*(pool *p, char **accept_line, int accept_white);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_get_virthost_addr\
+    |unsigned long $*(const char *w, unsigned short *ports);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_getparents\
+    |void $*(char *name);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_getword\
+    |char *$*(pool *p, const char **line, char stop);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_getword_conf\
+    |char *$*(pool *p, const char **line);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_getword_conf_nc\
+    |char *$*(pool *p, char **line);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_getword_nc\
+    |char *$*(pool *p, char **line, char stop);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_getword_nulls\
+    |char *$*(pool *p, const char **line, char stop);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_getword_nulls_nc\
+    |char *$*(pool *p, char **line, char stop);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_getword_white\
+    |char *$*(pool *p, const char **line);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_getword_white_nc\
+    |char *$*(pool *p, char **line);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_gm_timestr_822\
+    |char *$*(pool *p, time_t t);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_gname2id\
+    |gid_t $*(const char *name);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_handle_command\
+    |const char *$*(cmd_parms *parms, void *config, const char *l);\
+    |\
+    |\
+    |
+R|ap_hard_timeout\
+    |void $*(char *reason, request_rec *r);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_header_parse\
+    |int $*(request_rec *r);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |
+R|ap_ht_time\
+    |char *$*(pool *p, time_t t, const char *fmt, int gmt);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_ind\
+    |int $*(const char *str, char c);\
+    |\
+    |\
+    |
+R|ap_index_of_response\
+    |int $*(int status);\
+    |\
+    |\
+    |
+R|ap_init_alloc\
+    |pool * $*(void);\
+    |\
+    |\
+    |
+R|ap_init_modules\
+    |void $*(pool *p, server_rec *s);\
+    |\
+    |\
+    |
+R|ap_init_vhost_config\
+    |void $*(pool *p);\
+    |\
+    |\
+    |
+R|ap_init_virtual_host\
+    |const char *$*(pool *p, const char *hostname, server_rec *main_server, \
+     server_rec **);\
+    |\
+    |\
+    |
+R|ap_internal_redirect\
+    |void $*(const char *new_uri, request_rec *r);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_internal_redirect_handler\
+    |void $*(const char *new_uri, request_rec *r);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_invoke_handler\
+    |int $*(request_rec *r)\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |
+R|ap_is_directory\
+    |int $*(const char *name);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_is_fnmatch\
+    |int $*(const char *str);\
+    |\
+    |\
+    |
+R|ap_is_initial_req\
+    |int $*(request_rec *r);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |
+R|ap_is_matchexp\
+    |int $*(const char *str);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_is_url\
+    |int $*(const char *u);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_keepalive_timeout\
+    |void $*(char *reason, request_rec *r);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_kill_cleanup\
+    |void $*(pool *p, void *data, void (*plain_cleanup) (void *));\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_kill_cleanups_for_fd\
+    |void $*(pool *p, int fd);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_kill_cleanups_for_socket\
+    |void $*(pool *p, int sock);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_kill_timeout\
+    |void $*(request_rec *r);\
+    |request_rec *r;\n$*(r);\
+    |\
+    |<dict-$*.html
+R|ap_limit_section\
+    |const char *$*(r (const char *szexp, const char *szfile, int nline);\
+    |\
+    |\
+    |
+R|ap_log_error\
+    |void $*(const char *file, int line, int level, \n \
+                      const server_rec *s, \
+     const char *fmt, ...) \n \
+                      __attribute__((format(printf,5,6)));\
+    |\
+    |SA-logging\
+    |
+R|ap_log_rerror\
+    |void $*(const char *file, int line, int level, \n \
+                   const request_rec *r, \
+     const char *fmt, ...) \n \
+                   __attribute__((format(printf,5,6)));\
+    |\
+    |SA-logging\
+    |
+C|APLOG_ALERT\
+    |#include "http_log.h"\
+    |ap_log_rerror(APLOG_MARK, APLOG_NOERRNO&#124;$*, r, "%s", message); \
+    |SA-logging\
+    |
+C|APLOG_CRIT\
+    |#include "http_log.h"\
+    |ap_log_rerror(APLOG_MARK, APLOG_NOERRNO&#124;$*, r, "%s", message); \
+    |SA-logging\
+    |
+C|APLOG_DEBUG\
+    |#include "http_log.h"\
+    |ap_log_rerror(APLOG_MARK, APLOG_NOERRNO&#124;$*, r, "%s", message); \
+    |SA-logging\
+    |
+C|APLOG_EMERG\
+    |#include "http_log.h"\
+    |ap_log_rerror(APLOG_MARK, APLOG_NOERRNO&#124;$*, r, "%s", message); \
+    |SA-logging\
+    |
+C|APLOG_ERR\
+    |#include "http_log.h"\
+    |ap_log_rerror(APLOG_MARK, APLOG_NOERRNO&#124;$*, r, "%s", message); \
+    |SA-logging\
+    |
+C|APLOG_INFO\
+    |#include "http_log.h"\
+    |ap_log_rerror(APLOG_MARK, APLOG_NOERRNO&#124;$*, r, "%s", message); \
+    |SA-logging\
+    |
+C|APLOG_NOTICE\
+    |#include "http_log.h"\
+    |ap_log_rerror(APLOG_MARK, APLOG_NOERRNO&#124;$*, r, "%s", message); \
+    |SA-logging\
+    |
+C|APLOG_WARNING\
+    |#include "http_log.h"\
+    |ap_log_rerror(APLOG_MARK, APLOG_NOERRNO&#124;$*, r, "%s", message); \
+    |SA-logging\
+    |
+C|APLOG_NOERRNO\
+    |#include "http_log.h"\
+    |ap_log_rerror(APLOG_MARK, $*&#124;APLOG_ERR, r, "%s", message); \
+    |SA-logging\
+    |
+C|APLOG_MARK\
+    |#include "http_log.h"\
+    |ap_log_rerror($*, APLOG_NOERRNO&#124;APLOG_ERR, r, "%s", message); \
+    |SA-logging\
+    |
+C|APLOG_LEVELMASK\
+    |#include "http_log.h"\
+    |if ((level &amp; $*) &gt; s-&gt;loglevel) {\n\
+    /* The level is greater than the minimum required for\n\
+     * logging, so log it.\n\
+     */\n\
+}\
+    |SA-logging\
+    |
+C|APLOG_WIN32ERROR\
+    |#include "http_log.h"\
+    |ap_log_error(APLOG_MARK, APLOG_ERR&#124;$*, NULL, \
+     "Error starting service control dispatcher");\
+    |SA-logging\
+    |
+R|ap_log_pid\
+    |void $*(pool *p, char *fname);\
+    |\
+    |\
+    |
+R|ap_log_printf\
+    |void $*(const server_rec *s, const char *fmt, ...);\
+    |\
+    |\
+    |
+R|ap_log_reason\
+    |void $*(const char *reason, const char *fname, request_rec *r);\
+    |\
+    |\
+    |
+R|ap_log_transaction\
+    |int $*(request_rec *r);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |
+R|ap_log_unixerr\
+    |void $*(const char *routine, const char *file, const char *msg, \
+     server_rec *s);\
+    |\
+    |\
+    |
+R|ap_make_dirstr\
+    |char *$*(pool *a, const char *s, int n);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_make_dirstr_parent\
+    |char *$*(pool *p, const char *s);\
+    |\
+    |\
+    |
+R|ap_make_dirstr_prefix\
+    |char *$*(char *d, const char *s, int n);\
+    |\
+    |\
+    |
+R|ap_make_full_path\
+    |char *$*(pool *a, const char *dir, const char *f);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_matches_request_vhost\
+    |int $*(request_rec *r, const char *host, unsigned port);\
+    |\
+    |\
+    |
+R|ap_meets_conditions\
+    |int $*(request_rec *r);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |
+R|ap_merge_per_dir_configs\
+    |void *$*(pool *p, void *base, void *new);\
+    |\
+    |\
+    |
+R|ap_no2slash\
+    |void $*(char *name);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_note_auth_failure\
+    |void $*(request_rec *r);\
+    |request_rec *r;\n$*(r);\
+    |\
+    |
+R|ap_note_basic_auth_failure\
+    |void $*(request_rec *r);\
+    |request_rec *r;\n$*(r);\
+    |\
+    |
+R|ap_note_cleanups_for_fd\
+    |void $*(pool *p, int fd);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_note_cleanups_for_file\
+    |void $*(pool *p, file *f);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_note_cleanups_for_socket\
+    |void $*(pool *p, int sock);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_note_digest_auth_failure\
+    |void $*(request_rec *r);\
+    |request_rec *r;\n$*(r);\
+    |\
+    |
+R|ap_note_subprocess\
+    |void $*(pool *p, int pid, enum kill_conditions how);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_null_cleanup\
+    |void $*(void *data);\
+    |\
+    |\
+    |
+R|ap_open_logs\
+    |void $*(server_rec *s, pool *p);\
+    |\
+    |\
+    |
+R|ap_os_is_path_absolute\
+    |int ap_os_is_path_absolute(const char *file);\
+    |\
+    |\
+    |
+R|ap_parseHTTPdate\
+    |time_t $*(const char *date);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_parse_htaccess\
+    |int ap_parse_htaccess(void **result, request_rec *r, int override,\n \
+        const char *path, const char *access_name); \
+    |\
+    |\
+    |
+R|ap_parse_uri\
+    |void $*(request_rec *r, const char *uri);\
+    |\
+    |\
+    |
+R|ap_parse_uri_components\
+    |int $*(pool *p, const char *uri, uri_components *uptr);\
+    |\
+    |\
+    |
+R|ap_parse_vhost_addrs\
+    |const char *$*(pool *p, const char *hostname, server_rec *s);\
+    |\
+    |\
+    |
+R|ap_pcfg_open_custom\
+    |configfile_t *$*(pool *p, const char *descr, void *param, \
+     int(*getc_func)(void*), \n \
+                                  void *(*gets_func) \
+     (void *buf, size_t bufsiz, void *param), \
+     int (*close_func) (void *a));\
+    |\
+    |\
+    |
+R|ap_pcfg_openfile\
+    |configfile_t *$*(pool *p, const char *name);\
+    |\
+    |\
+    |
+R|ap_process_request\
+    |void $*(request_rec *r);\
+    |request_rec *r;\n$*(r);\
+    |\
+    |
+R|ap_process_resource_config\
+    |void $*(request_rec *r);\
+    |request_rec *r;\n$*(r);\
+    |\
+    |
+R|ap_psignature\
+    |const char *$*(const char *prefix, request_rec *r);\
+    |\
+    |\
+    |
+R|ap_rationalize_mtime\
+    |time_t $*(request_rec *r, time_t mtime);\
+    |time_t mtime_to_use; \n \
+ \n \
+mtime_to_use = $*(r, finfo.st_mtime); \
+    |\
+    |<dict-$*.html
+R|ap_read_config\
+    |server_rec *$*(pool *conf_pool, pool *temp_pool, char *config_name); \
+    |\
+    |\
+    |
+R|ap_read_request\
+    |request_rec *$*(conn_rec *c);\
+    |\
+    |\
+    |
+R|ap_register_cleanup\
+    |void $*(pool *p, void *data, void (*plain_cleanup) (void *), \
+     void (*child_cleanup) (void *));\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_register_other_child\
+    |void $*(int pid, void (*maintenance) \
+     (int reason, void *data, int status), void *data, int write_fd);\
+    |\
+    |\
+    |
+R|ap_remove_loaded_module\
+    |void $*(module *m);\
+    |module mod; \n \
+$*(mod);\
+    |SA-module\
+    |
+R|ap_remove_module\
+    |void $*(module *m);\
+    |\
+    |SA-module\
+    |
+R|ap_requires\
+    |array_header *$*(request_rec *r);\
+    |\
+    |\
+    |
+R|ap_reset_timeout\
+    |void $*(request_rec *r);\
+    |request_rec *r;\n$*(r);\
+    |\
+    |<dict-$*.html
+R|ap_response_code_string\
+    |char *$*(request_rec *r, int error_index);\
+    |\
+    |\
+    |
+R|ap_rfc1413\
+    |char *$*(conn_rec *conn, server_rec *srv);\
+    |\
+    |\
+    |
+R|ap_rflush\
+    |int $*(request_rec *r);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |
+R|ap_rind\
+    |int $*(const char *str, char c);\
+    |\
+    |\
+    |
+R|ap_rprintf\
+    |int $*(request_rec *r, const char *fmt, ...);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_rputc\
+    |int $*(int c, request_rec *r);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_rputs\
+    |int $*(const char *str, request_rec *r);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_run_cleanup\
+    |void $*(pool *p, void *data, void (*cleanup) (void *));\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_run_fixups\
+    |int $*(request_rec *r);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |
+R|ap_run_post_read_request\
+    |int $*(request_rec *r);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |
+R|ap_run_sub_req\
+    |int $*(request_rec *r);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |<dict-$*.html
+R|ap_rvputs\
+    |int $*(request_rec *r, ...);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_rwrite\
+    |int $*(const void *buf, int nbyte, request_rec *r);\
+    |\
+    |\
+    |
+R|ap_satisfies\
+    |int $*(request_rec *r);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |
+R|ap_scan_script_header_err\
+    |int $*(request_rec *r, file *f, char *buffer);\
+    |\
+    |\
+    |
+R|ap_scan_script_header_err_buff\
+    |int $*(request_rec *r, BUFF *f, char *buffer);\
+    |\
+    |\
+    |
+R|ap_send_error_response\
+    |void $*(request_rec *r, int recursive_error);\
+    |\
+    |\
+    |
+R|ap_send_fb\
+    |long $*(BUFF *f, request_rec *r);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_send_fb_length\
+    |long $*(BUFF *f, request_rec *r, long length);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_send_fd\
+    |long $*(file *f, request_rec *r);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_send_fd_length\
+    |long $*(file *f, request_rec *r, long length);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_send_header_field\
+    |int $*(request_rec *r, const char *fieldname, const char *fieldval);\
+    |\
+    |\
+    |
+R|ap_send_http_header\
+    |void $*(request_rec *r);\
+    |request_rec *r;\n$*(r);\
+    |\
+    |<dict-$*.html
+R|ap_send_http_options\
+    |int $*(request_rec *r);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |
+R|ap_send_http_trace\
+    |int $*(request_rec *r);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |
+R|ap_send_mmap\
+    |size_t $*(void *mm, request_rec *r, size_t offset, size_t length);\
+    |\
+    |\
+    |
+R|ap_send_size\
+    |void $*(size_t size, request_rec *r);\
+    |\
+    |\
+    |
+R|ap_server_root_relative\
+    |char *$*(pool *p, char *fname);\
+    |\
+    |\
+    |
+R|ap_set_byterange\
+    |int $*(request_rec *r);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |
+R|ap_set_callback_and_alarm\
+    |unsigned int $*(void (*fn) (int), int x);\
+    |\
+    |\
+    |
+R|ap_set_content_length\
+    |int $*(request_rec *r, long length);\
+    |\
+    |\
+    |
+R|ap_set_etag\
+    |void $*(request_rec *r);\
+    |request_rec *r;\n$*(r);\
+    |\
+    |
+R|ap_set_file_slot\
+    |const char *$*(cmd_parms *cmd, char *s1, char *s2);\
+    |\
+    |\
+    |
+R|ap_set_flag_slot\
+    |const char *$*(cmd_parms *cmd, char *s1, int flag);\
+    |\
+    |\
+    |
+R|ap_set_keepalive\
+    |int $*(request_rec *r);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |
+R|ap_set_last_modified\
+    |void $*(request_rec *r);\
+    |request_rec *r;\n$*(r);\
+    |\
+    |
+R|ap_set_module_config\
+    |void $*(void *conf_vector, module *m, void *val);\
+    |\
+    |\
+    |
+R|ap_set_name_virtual_host\
+    |const char *$*(cmd_parms *cmd, void *dummy, char *arg);\
+    |\
+    |\
+    |
+R|ap_set_string_slot\
+    |const char *$*(cmd_parms *cmd, char *s1, char *s2);\
+    |\
+    |\
+    |
+R|ap_set_string_slot_lower\
+    |const char *$*(cmd_parms *cmd, char *s1, char *s2);\
+    |\
+    |\
+    |
+R|ap_set_sub_req_protocol\
+    |void $*(request_rec *rnew, const request_rec *r);\
+    |\
+    |\
+    |
+X|SA-readbody\
+    |ap_get_client_block,ap_setup_client_block,REQUEST_NO_BODY\
+     ,REQUEST_CHUNKED_ERROR,REQUEST_CHUNKED_DECHUNK,REQUEST_CHUNKED_PASS\
+    |\
+    |\
+    |
+C|REQUEST_NO_BODY\
+    |#include "httpd.h"\
+    |\
+    |SA-readbody\
+    |
+C|REQUEST_CHUNKED_ERROR\
+    |#include "httpd.h"\
+    |\
+    |SA-readbody\
+    |
+C|REQUEST_CHUNKED_DECHUNK\
+    |#include "httpd.h"\
+    |\
+    |SA-readbody\
+    |
+C|REQUEST_CHUNKED_PASS\
+    |#include "httpd.h"\
+    |\
+    |SA-readbody\
+    |
+R|ap_setup_client_block\
+    |int $*(request_rec *r, int read_policy);\
+    |\
+    |SA-readbody\
+    |<dict-$*.html
+R|ap_setup_prelinked_modules\
+    |void $*(void);\
+    |$*();\
+    |\
+    |
+R|ap_should_client_block\
+    |int $*(request_rec *r);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |<dict-$*.html
+R|ap_show_directives\
+    |void $*(void);\
+    |$*();\
+    |\
+    |
+R|ap_show_modules\
+    |void $*(void);\
+    |$*();\
+    |\
+    |
+R|ap_soft_timeout\
+    |void $*(char *str, request_rec *r);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_some_auth_required\
+    |int $*(request_rec *r);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |
+R|ap_spawn_child_err\
+    |int $*(pool *p, int (*func)(void *), void *data, enum kill_conditions, \
+     FILE **pipe_in, FILE **pipe_out, FILE **pipe_err);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_spawn_child_err_buff\
+    |int $*(pool *p, int (*func)(void *), void *data, enum kill_conditions, \n \
+                            BUFF **pipe_in, BUFF **pipe_out, BUFF **pipe_err);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_srm_command_loop\
+    |const char *$*(cmd_parms *parms, void *config);\
+    |\
+    |\
+    |
+R|ap_start_restart\
+    |void $*(int);\
+    |\
+    |\
+    |
+R|ap_start_shutdown\
+    |void $*(void);\
+    |$*();\
+    |\
+    |
+R|ap_str_tolower\
+    |void $*(char *str);\
+    |\
+    |\
+    |
+R|ap_strcasecmp_match\
+    |int $*(const char *str, const char *exp);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_strcmp_match\
+    |int $*(const char *str, const char *exp);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_sub_req_lookup_file\
+    |request_rec *$*(const char *new_file, const request_rec *r);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_sub_req_lookup_uri\
+    |request_rec *$*(const char *new_file, const request_rec *r);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_time_process_request\
+    |void $*(int child_num, int status);\
+    |\
+    |\
+    |
+R|ap_tm2sec\
+    |time_t $*(const struct tm *t);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_translate_name\
+    |int $*(request_rec *);\
+    |request_rec *r;\nint result;\nresult = $*(r);\
+    |\
+    |
+R|ap_uname2id\
+    |uid_t $*(const char *name);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_unblock_alarms\
+    |void $*(void);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_unescape_url\
+    |int $*(char *url);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_unparse_uri_components\
+    |char *$*(pool *p, const uri_components *uptr, unsigned flags);\
+    |\
+    |\
+    |
+R|ap_unregister_other_child\
+    |void $*(void *data);\
+    |\
+    |\
+    |
+R|ap_update_child_status\
+    |int $*(int child_num, int status, request_rec *r);\
+    |\
+    |\
+    |
+R|ap_update_mtime\
+    |time_t $*(request_rec *r, time_t dependency_mtime);\
+    |\
+    |\
+    |
+R|ap_update_vhost_from_headers\
+    |void $*(request_rec *r);\
+    |request_rec *r;\n$*(r);\
+    |\
+    |
+R|ap_update_vhost_given_ip\
+    |void $*(conn_rec *conn);\
+    |\
+    |\
+    |
+R|ap_util_init\
+    |void $*(void);\
+    |$*();\
+    |\
+    |
+R|ap_util_uri_init\
+    |void $*(void);\
+    |$*();\
+    |\
+    |
+R|ap_uudecode\
+    |char *$*(pool *p, const char *str);\
+    |\
+    |\
+    |<dict-$*.html
+R|ap_vbprintf\
+    |int $*(BUFF *fb, const char *fmt, va_list vlist);\
+    |\
+    |\
+    |<dict-$*.html
+#;
+#; More miscellaneous contant definitions
+#;
+#;
+#; Miscellaneous constants
+#;
+X|SA-stringconst\
+    |CR,LF,CRLF,MAX_STRING_LEN,HUGE_STRING_LEN,OS_ASC\
+    |\
+    |\
+    |
+C|CR\
+    |#include "httpd.h"\
+    |eol = strchr(string, $*);\
+    |SA-stringconst\
+    |<dict-$*.html
+C|LF\
+    |#include "httpd.h"\
+    |*++string = LF;\
+    |SA-stringconst\
+    |<dict-$*.html
+C|CRLF\
+    |#include "httpd.h"\
+    |entity = strstr(request, $* $*) + (2 * strlen($*));\
+    |SA-stringconst\
+    |<dict-$*.html
+M|HTTP_VERSION_MAJOR\
+    |#define $*(number) ((number)/1000)\
+    |if (HTTP_VERSION_MAJOR(r-&gt;proto_num) &lt; 1) {\n \
+    /* Protocol version is less than 1.0 */\n}\
+    |SA-httpcodes\
+    |
+M|HTTP_VERSION_MINOR\
+    |#define $*(number) ((number)%1000)\
+    |if (($*(r-&gt;proto_num) &gt;= 1)\n        &amp;&amp; \
+    ($*(r-&gt;proto_num) &gt; 1)) {\n \
+    /* Protocol version is greater than 1.1 */\n}\
+    |SA-httpcodes\
+    |
+M|OS_ASC\
+    |#ifndef CHARSET_EBCDIC \n \
+#define $*(c) (c) \n \
+#else \n \
+#define $*(c) (os_toascii[c]) \n \
+#endif \
+    |if (ch == CR &#124;&#124; ch == LF &#124;&#124; ($*(ch) &amp; 0x80)) {\n\
+    return 0;\n\
+}\
+    |SA-stringconst\
+    |
+C|MAX_STRING_LEN\
+    |#include "httpd.h"\
+    |char random_string[$*];\
+    |SA-stringconst\
+    |<dict-$*.html
+C|HUGE_STRING_LEN\
+    |#include "httpd.h"\
+    |char random_string[$*];\
+    |SA-stringconst\
+    |<dict-$*.html
+C|SERVER_VERSION\
+    |#include "httpd.h"\
+    |Deprecated; use ap_get_server_version() instead.\
+    |\
+    |<dict-$*.html
+C|kill_conditions\
+    |#include "ap_alloc.h"\
+    |<code>$*</code> is an enum, but the enumeration type isn't used\n\
+     by modules, only the specific named values.\
+    |\
+    |<dict-$*.html
+X|SA-MMN\
+    |MODULE_MAGIC_NUMBER,MODULE_MAGIC_NUMBER_MAJOR,MODULE_MAGIC_NUMBER_MINOR\
+     ,MODULE_MAGIC_COOKIE,MODULE_MAGIC_AT_LEAST,AP_MODULE_MAGIC_AT_LEAST\
+     ,module\
+    |\
+    |\
+    |
+C|MODULE_MAGIC_NUMBER\
+    |#include "ap_mmn.h"\
+    |module *m;\nif (m-&gt;version != $*)\n    exit(1);\n}\
+    |SA-MMN\
+    |<dict-$*.html
+C|MODULE_MAGIC_NUMBER_MAJOR\
+    |#include "ap_mmn.h"\
+    |<i>No examples available.</i>\
+    |SA-MMN\
+    |
+C|MODULE_MAGIC_NUMBER_MINOR\
+    |#include "ap_mmn.h"\
+    |<i>No examples available.</i>\
+    |SA-MMN\
+    |
+C|MODULE_MAGIC_COOKIE\
+    |#include "ap_mmn.h"\
+    |if (modp-&gt;magic != $*) {\n\
+    return "Module structure is invalid.";\n\
+}\
+    |SA-MMN\
+    |
+M|AP_MODULE_MAGIC_AT_LEAST\
+    |#include "ap_mmn.h"\
+    |    request_rec *r; \n \
+    char *x;\n \
+#if $*(19990320,4) \n \
+    x = ap_field_noparam(r-&gt;pool, ap_table_get(r-&gt;headers_in, "X-attr")\
+); \n \
+#else\n \
+    char *y;\n \
+    x = ap_table_get(r-&gt;headers_in, "X-attr"); \n \
+    y = strstr(x, ";"); \n \
+    *y = '\0'; \n \
+#endif\
+    |SA-MMN\
+    |<dict-$*.html
+M|MODULE_MAGIC_AT_LEAST\
+    |<i>Obsolete</i>\
+    |\
+    |SA-MMN\
+    |<dict-$*.html
+C|STANDARD_MODULE_STUFF\
+    |#include "ap_mmn.h"\
+    |\
+    |SA-MMN\
+    |
+C|SERVER_SUPPORT\
+    |Compile-time definition; default set by <code>#include "httpd.h"</code>\
+    |ap_snprintf(buf, sizeof(buf), "For further assistance, go to $*");\
+    |\
+    |<dict-$*.html
+#;
+#; The values that module hooks can return.  These have special meanings;
+#; real failures are indicated by using the HTTP_xxx values mentioned
+#; elsewhere.
+#;
+X|SA-dirstat\
+    |OK,DECLINED,DECLINE_CMD,DONE\
+    |\
+    |\
+    |
+C|OK\
+    |#include "httpd.h"\
+    |request_rec *r;\nif (!is_HTTP_ERROR(r-&gt;status)) { \n \
+    return $*; \n \
+} \
+    |SA-dirstat\
+    |<dict-$*.html
+C|DECLINED\
+    |#include "httpd.h"\
+    |request_rec *r;\nif (is_HTTP_ERROR(r-&gt;status)) { \n \
+    return $*; \n \
+} \
+    |SA-dirstat\
+    |<dict-$*.html
+C|DECLINE_CMD\
+    |#include "http_config.h"\
+    |request_rec *r;\nif (! our_cmd) { \n \
+    return $*; \n \
+} \
+    |SA-dirstat\
+    |
+C|DONE\
+    |#include "httpd.h"\
+    |request_rec *r;\nif (!is_HTTP_ERROR(r-&gt;status)) { \n \
+    return $*; \n \
+} \
+    |SA-dirstat\
+    |<dict-$*.html
+#;
+#; HTTP status code declarations.  Largely cadged from httpd.h.
+#;
+X|SA-httpcodes\

[... 1062 lines stripped ...]


Mime
View raw message