coar        98/05/03 12:45:56

  Added:       apidoc   api.list
  Log:
        Here's the data file which defines all the API entities.  It's
        documented internally as to format.
  
  Revision  Changes    Path
  1.1                  apache-devsite/apidoc/api.list
  
  Index: api.list
  ===================================================================
  #;
  #; Metadata about API components.  Each line 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 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
  #;    S structure/datatype
  #;    C constant
  #;    D global data cell
  #;    X name 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.
  #; 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
  #;
  #;
  #; Symbols related to how the server identifies itself
  #;
  X|SA-identity\
      |\                                        #; Definition
      |\                                        #; Examples
      |ap_get_server_built,ap_get_server_name,ap_get_server_version\
      |
  R|ap_get_server_built\
      |char *$*(void);\         #; Definition
      |char *string;\nstring = $*();\   #; Examples
      |SA-identity\                     #; Cross-references
      |                                 #; Entity documention HTML file
  R|ap_get_server_name\
      |char *$*(void);\
      |char *string;\nstring = $*();\
      |SA-identity\
      |
  R|ap_get_server_version\
      |char *$*(void);\
      |char *string;\nstring = $*();\
      |SA-identity\
      |
  #;
  #; Stuff related to the module structure
  #;
  X|SA-module\
      |\
      |\
      |core_module,top_module,module,ap_add_module,ap_add_named_module\
      |
  S|module\     #; Since this is a multi-line structure, beware when editing
      |typedef struct module_struct { \n \
      int version; \n \
      int module_index; \n \
      const char *name; \n \
      void *dynamic_load_handle; \n \
      struct module_struct *next; \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 \
  } module; \
      |\
  $* *mpointer; \n \
     <EM>or</EM> \n \
  module action_module = \n \
  { \n \
      STANDARD_MODULE_STUFF, \n \
      NULL,                       /* initializer */ \n \
      create_action_dir_config,   /* dir config creater */ \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\
      |
  R|ap_add_module\
      |void $*(module *m);\
      |\
      |SA-module\
      |
  R|ap_add_named_module\
      |int $*(const char *name);\
      |\
      |SA-module\
      |
  D|core_module\
      |module $* {<EM>module-specific-info</EM>};\
      |\
      |SA-module\
      |
  D|top_module\
      |module *$*;\
      |\
      |SA-module\
      |
  #;
  #; Miscellaneous data cells
  #;
  D|ap_day_snames\
      |const char $*[7][4];\
      |\
      |\
      |
  D|ap_month_snames\
      |const char $*[12][4];\
      |\
      |\
      |
  D|ap_restart_time\
      |time_t $*;\
      |\
      |\
      |
  D|ap_server_argv0\
      |char *$*;\
      |\
      |\
      |
  D|ap_server_root\
      |char $*[MAX_STRING_LEN];\
      |\
      |\
      |
  D|ap_suexec_enabled\
      |int $*;\
      |\
      |\
      |
  #;
  #; 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\
      |This is an opaque structure; you don't need to access any of its \
       elements.\
      |$* <EM>identifier</EM>\
      |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\
      |\
      |\
      |\
      |
  #;
  #; 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.\
      |$* <EM>identifier</EM>\
      |\
      |
  R|ap_acquire_mutex\
      |int $*(mutex *mutex_id);\
      |\
      |SA-mutex\
      |
  R|ap_create_mutex\
      |mutex *$*(char *name);\
      |\
      |SA-mutex\
      |
  R|ap_destroy_mutex\
      |void $*(mutex *mutex_id);\
      |\
      |SA-mutex\
      |
  R|ap_open_mutex\
      |mutex *$*(char *name);\
      |\
      |SA-mutex\
      |
  #;
  #; 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\
      |#define $* <EM>value</EM>\
      |\
      |SA-scoreboard\
      |
  C|SERVER_STARTING\
      |#define $* <EM>value</EM>\
      |\
      |SA-scoreboard\
      |
  C|SERVER_READY\
      |#define $* <EM>value</EM>\
      |\
      |SA-scoreboard\
      |
  C|SERVER_BUSY_READ\
      |#define $* <EM>value</EM>\
      |\
      |SA-scoreboard\
      |
  C|SERVER_BUSY_WRITE\
      |#define $* <EM>value</EM>\
      |\
      |SA-scoreboard\
      |
  C|SERVER_BUSY_KEEPALIVE\
      |#define $* <EM>value</EM>\
      |\
      |SA-scoreboard\
      |
  C|SERVER_BUSY_LOG\
      |#define $* <EM>value</EM>\
      |\
      |SA-scoreboard\
      |
  C|SERVER_BUSY_DNS\
      |#define $* <EM>value</EM>\
      |\
      |SA-scoreboard\
      |
  C|SERVER_GRACEFUL\
      |#define $* <EM>value</EM>\
      |\
      |SA-scoreboard\
      |
  C|SERVER_NUM_STATUS\
      |#define $* <EM>value</EM>\
      |\
      |SA-scoreboard\
      |
  C|START_PREQUEST\
      |#define $* <EM>value</EM>\
      |\
      |SA-scoreboard\
      |
  C|STOP_PREQUEST\
      |#define $* <EM>value</EM>\
      |\
      |SA-scoreboard\
      |
  D|ap_scoreboard_image\
      |extern scoreboard *$*;\
      |\
      |SA-scoreboard\
      |
  S|vtime_t\
      |typedef unsigned vtime_t;\
      |\
      |SA-scoreboard\
      |
  #;
  #; 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 \
  } $*;\
      |\
      |SA-scoreboard\
      |
  S|global_score\
      |typedef struct { \n \
      int exit_generation; \n \
  } $*;\
      |\
      |SA-scoreboard\
      |
  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\
      |\
      |\
      |SA-scoreboard\
      |
  R|ap_exists_scoreboard_image\
      |\
      |\
      |SA-scoreboard\
      |
  #;
  #; Miscellaneous structures
  #;
  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);\
      |\
      |SA-piped-log\
      |
  R|ap_open_piped_log\
      |piped_log *$*(pool *p, const char *program);\
      |\
      |SA-piped-log\
      |
  #;
  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 \
  };\
      |\
      |\
      |
  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\
      |\
      |\
      |\
      |
  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 \
      int proxyreq; \n \
      int header_only; \n \
      char *protocol; \n \
      int proto_num; \n \
      char *hostname; \n \
      time_t request_time; \n \
      char *status_line; \n \
      int status; \n \
      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 \
      char *range; \n \
      long clength; \n \
      long remaining; \n \
      long read_length; \n \
      int read_body; \n \
      int read_chunked; \n \
      table *headers_in; \n \
      table *headers_out; \n \
      table *err_headers_out; \n \
      table *subprocess_env; \n \
      table *notes; \n \
      char *content_type; \n \
      char *handler; \n \
      char *content_encoding; \n \
      char *content_language; \n \
      array_header *content_languages; \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 \
  };\
      |\
      |\
      |
  S|server_rec\
      |\
      |\
      |\
      |
  S|BUFF\
      |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 \
      pool *pool; \n \
      int fd; \n \
      int fd_in; \n \
      void *t_handle; \n \
  #ifdef B_SFIO \n \
      Sfio_t *sf_in; \n \
      Sfio_t *sf_out; \n \
  #endif \n \
  };\
      |\
      |\
      |
  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 \
  } $*;\
      |\
      |\
      |
  S|command_rec\
      |typedef 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 \
  } $*;\
      |\
      |\
      |
  #;
  #; Directive overrides
  #;
  X|SA-overrides\
      |\
      |\
      |ACCESS_CONF,OR_AUTHCFG,OR_FILEINFO,OR_INDEXES,OR_LIMIT\
       ,OR_OPTIONS,RSRC_CONF\
      |
  C|RSRC_CONF\
      |#define $* <EM>value</EM>\
      |\
      |SA-overrides\
      |
  C|ACCESS_CONF\
      |#define $* <EM>value</EM>\
      |\
      |SA-overrides\
      |
  C|OR_AUTHCFG\
      |#define $* <EM>value</EM>\
      |\
      |SA-overrides\
      |
  C|OR_LIMIT\
      |#define $* <EM>value</EM>\
      |\
      |SA-overrides\
      |
  C|OR_OPTIONS\
      |#define $* <EM>value</EM>\
      |\
      |SA-overrides\
      |
  C|OR_FILEINFO\
      |#define $* <EM>value</EM>\
      |\
      |SA-overrides\
      |
  C|OR_INDEXES\
      |#define $* <EM>value</EM>\
      |\
      |SA-overrides\
      |
  #;
  #; 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 $* {<EM>opaque-structure</EM>};\
      |\
      |SA-tables\
      |
  R|ap_clear_table\
      |void $*(table *t);\
      |\
      |SA-tables\
      |
  R|ap_copy_table\
      |table *$*(pool *p, const table *t);\
      |\
      |SA-tables\
      |
  R|ap_make_table\
      |table *$*(pool *p, int nelts);\
      |\
      |SA-tables\
      |
  R|ap_overlay_tables\
      |table *$*(pool *p, const table *overlay, const table *base);\
      |\
      |SA-tables\
      |
  R|ap_table_add\
      |void $*(table *t, const char *key, const char *val);\
      |\
      |SA-tables\
      |
  R|ap_table_addn\
      |void $*(table *t, const char *key, const char *val);\
      |\
      |SA-tables\
      |
  #;
  #; Here's an example of multiline definition with proper indenting.
  #;
  R|ap_table_do\
      |void $*(int (*comp) (void *d, const char *key, const char *val), \n \
                   void *rec, const table *t, ...);\
      |\
      |SA-tables\
      |
  R|ap_table_get\
      |\
      |\
      |SA-tables\
      |
  R|ap_table_merge\
      |\
      |\
      |SA-tables\
      |
  R|ap_table_mergen\
      |\
      |\
      |SA-tables\
      |
  R|ap_table_set\
      |\
      |\
      |SA-tables\
      |
  R|ap_table_setn\
      |\
      |\
      |SA-tables\
      |
  R|ap_table_unset\
      |\
      |\
      |SA-tables\
      |
  #;
  #; 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;\
      |\
      |SA-array\
      |
  R|ap_array_cat\
      |void $*(array_header *dst, const array_header *src);\
      |\
      |SA-array\
      |
  R|ap_copy_array\
      |array_header *$*(pool *p, const array_header *src);\
      |\
      |SA-array\
      |
  R|ap_copy_array_hdr\
      |array_header *$*(pool *p, const array_header *src);\
      |\
      |SA-array\
      |
  R|ap_make_array\
      |array_header *$*(pool *p, int nelts, int elt_size);\
      |\
      |SA-array\
      |
  R|ap_push_array\
      |void *$*(array_header *a);\
      |\
      |SA-array\
      |
  #;
  #; Now the items relating to pools
  #;
  X|SA-pool\
      |\
      |\
      |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\
      |[struct] pool <EM>opaque-structure</EM>\
      |pool *p; \
       \nchar *foo; \
       \nfoo = ap_pstrcat(p, "string 1", "string 2", NULL);\
      |SA-pool\
      |
  R|ap_bytes_in_pool\
      |\
      |\
      |SA-pool\
      |
  R|ap_clear_pool\
      |\
      |\
      |SA-pool\
      |
  R|ap_find_pool\
      |\
      |\
      |SA-pool\
      |
  R|ap_pool_is_ancestor\
      |\
      |\
      |SA-pool\
      |
  R|ap_pool_join\
      |\
      |\
      |SA-pool\
      |
  R|ap_make_sub_pool\
      |pool *$*(pool *p);\
      |\
      |SA-pool\
      |dict-ap_make_sub_pool.html               #; Hey!  A real docco file!!
  R|ap_destroy_pool\
      |void $*(pool *p);\
      |\
      |SA-pool\
      |dict-ap_destroy_pool.html
  R|ap_pstrcat\
      |char *$*(struct pool *p, ...);\
      |\
      |SA-pool\
      |
  R|ap_palloc\
      |void *$*(struct pool *p, int nbytes);\
      |\
      |SA-pool\
      |
  R|ap_pcalloc\
      |void *$*(struct pool *p, int nbytes);\
      |\
      |SA-pool\
      |
  R|ap_pclosedir\
      |void $*(pool *p, DIR * d);\
      |\
      |SA-pool\
      |
  R|ap_pclosef\
      |int $*(struct pool *p, int fd);\
      |\
      |SA-pool\
      |
  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\
      |
  R|ap_pfdopen\
      |FILE *$*(struct pool *p, int fd, const char *fmode);\
      |\
      |SA-pool\
      |
  R|ap_pfopen\
      |FILE *$*(struct pool *p, const char *name, const char *fmode);\
      |\
      |SA-pool\
      |
  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\
      |
  R|ap_pregcomp\
      |regex_t *$*(pool *p, const char *pattern, int cflags);\
      |\
      |SA-pool\
      |
  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\
      |
  R|ap_pstrndup\
      |char *$*(struct pool *p, const char *s, int n);\
      |\
      |SA-pool\
      |
  #;
  #; Incomplete definitions!
  #;
  R|ap_append_arrays\
      |array_header *$*(pool *p, const array_header *a, const array_header *b);\
      |\
      |SA-array\
      |
  R|ap_pregsub\
      |char *$*(pool *p, const char *input, const char *source, size_t nmatch, \
       regmatch_t pmatch[]);\
      |\
      |SA-pool\
      |
  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 \
  } uri_components; \
      |\
      |\
      |
  X|SA-dirdata\
      |\
      |\
      |cmd_how,RAW_ARGS,TAKE1,TAKE2,ITERATE,ITERATE2,FLAG,NO_ARGS,TAKE12\
       ,TAKE3,TAKE23,TAKE123,TAKE13\
      |
  C|cmd_how\
      |enum cmd_how { \n \
      RAW_ARGS, \n \
      TAKE1, \n \
      TAKE2, \n \
      ITERATE, \n \
      ITERATE2, \n \
      FLAG, \n \
      NO_ARGS, \n \
      TAKE12, \n \
      TAKE3, \n \
      TAKE23, \n \
      TAKE123, \n \
      TAKE13 \n \
  }; \
      |\
      |SA-dirdata\
      |
  C|RAW_ARGS\
      |<EM>See</EM> cmd_how.\
      |static const command_rec autoindex_cmds[] =\n\
  {\n\
          :\n\
      {"IndexOptions", add_opts, NULL, DIR_CMD_PERMS, RAW_ARGS,\n\
       "one or more index options"},\n\
          :\n\
      {NULL}\n\
  };\
      |SA-dirdata\
      |
  C|TAKE1\
      |<EM>See</EM> cmd_how.\
      |static const command_rec autoindex_cmds[] =\n\
  {\n\
          :\n\
      {"HeaderName", add_header, NULL, DIR_CMD_PERMS, TAKE1, "a filename"},\n\
          :\n\
      {NULL}\n\
  };\
      |SA-dirdata\
      |
  C|TAKE2\
      |<EM>See</EM> cmd_how.\
      |static const command_rec action_cmds[] =\n\
  {\n\
      {"Action", add_action, NULL, OR_FILEINFO, TAKE2,\n\
       "a media type followed by a script name"},\n\
          :\n\
      {NULL}\n\
  };\
      |SA-dirdata\
      |
  C|ITERATE\
      |<EM>See</EM> cmd_how.\
      |static const command_rec autoindex_cmds[] =\n\
  {\n\
          :\n\
      {"IndexIgnore", add_ignore, NULL, DIR_CMD_PERMS, ITERATE,\n\
       "one or more file extensions"},\n\
          :\n\
      {NULL}\n\
  };\
      |SA-dirdata\
      |
  C|ITERATE2\
      |<EM>See</EM> cmd_how.\
      |static const command_rec autoindex_cmds[] =\n\
  {\n\
      {"AddIcon", add_icon, BY_PATH, DIR_CMD_PERMS, ITERATE2,\n\
       "an icon URL followed by one or more filenames"},\n\
          :\n\
      {NULL}\n\
  };\
      |SA-dirdata\
      |
  C|FLAG\
      |<EM>See</EM> cmd_how.\
      |static const command_rec autoindex_cmds[] =\n\
  {\n\
          :\n\
      {"FancyIndexing", fancy_indexing, NULL, DIR_CMD_PERMS, FLAG,\n\
       "Limited to 'on' or 'off' (superseded by IndexOptions 
FancyIndexing)"},\n\
          :\n\
      {NULL}\n\
  };\
      |SA-dirdata\
      |
  C|NO_ARGS\
      |<EM>See</EM> cmd_how.\
      |static const command_rec negotiation_cmds[] =\n\
  {\n\
      {"CacheNegotiatedDocs", cache_negotiated_docs, NULL, RSRC_CONF, 
NO_ARGS,\n\
       "no arguments (either present or absent)"},\n\
          :\n\
      {NULL}\n\
  };\
      |SA-dirdata\
      |
  C|TAKE12\
      |<EM>See</EM> cmd_how.\
      |static const command_rec config_log_cmds[] =\n\
  {\n\
          :\n\
      {"LogFormat", log_format, NULL, RSRC_CONF, TAKE12,\n\
       "a log format string (see docs) and an optional format name"},\n\
          :\n\
      {NULL}\n\
  };\
      |SA-dirdata\
      |
  C|TAKE3\
      |<EM>See</EM> cmd_how.\
      |\
      |SA-dirdata\
      |
  C|TAKE23\
      |<EM>See</EM> cmd_how.\
      |static const command_rec headers_cmds[] =\n\
  {\n\
      {"Header", header_cmd, NULL, OR_FILEINFO, TAKE23,\n\
       "an action, header and value"},\n\
          :\n\
      {NULL}\n\
  };\
      |SA-dirdata\
      |
  C|TAKE123\
      |<EM>See</EM> cmd_how.\
      |\
      |SA-dirdata\
      |
  C|TAKE13\
      |<EM>See</EM> cmd_how.\
      |\
      |SA-dirdata\
      |
  #;
  R|ap_add_cgi_vars\
      |void $*(request_rec *r);\
      |\
      |\
      |
  R|ap_add_common_vars\
      |void $*(request_rec *r);\
      |\
      |\
      |
  R|ap_add_per_dir_conf\
      |void $*(server_rec *s, void *dir_config);\
      |\
      |\
      |
  R|ap_cpystrn\
      |char *$*(char *buf, const char *str, size_t numbytes);\
      |\
      |\
      |dict-ap_cpystrn.html             #; Zut!  Another doc file!
  R|ap_bprintf\
      |int $*(BUFF *fb, const char *fmt, ...);\
      |\
      |\
      |
  R|ap_os_canonical_filename\
      |char *$*(pool *p, const char *file);\
      |\
      |\
      |
  R|ap_escape_quotes\
      |char *$*(pool *p, const char *str);\
      |\
      |\
      |
  R|ap_log_error_old\
      |void $*(const char *err, server_rec *s);\
      |\
      |\
      |
  R|ap_parse_hostinfo_components\
      |int $*(pool *p, const char *hostinfo, uri_components *uptr);\
      |\
      |\
      |
  R|ap_psprintf\
      |char *$*(struct pool *p, const char *fmt, ...);\
      |\
      |\
      |
  R|ap_pvsprintf\
      |char *$*(struct pool *p, const char *fmt, va_list);\
      |\
      |\
      |
  R|ap_snprintf\
      |int $*(char *buf, size_t nbytes, const char *fmt, ...);\
      |\
      |\
      |
  R|ap_add_per_url_conf\
      |void $*(server_rec *s, void *url_config);\
      |\
      |\
      |
  R|ap_allow_options\
      |int $*(request_rec *r);\
      |\
      |\
      |
  R|ap_allow_overrides\
      |int $*(request_rec *r);\
      |\
      |\
      |
  R|ap_vsnprintf\
      |int $*(char *buf, size_t numbytes, const char *fmt, va_list ap);\
      |\
      |\
      |
  R|ap_auth_name\
      |char *$*(request_rec *r);\
      |\
      |\
      |
  R|ap_auth_type\
      |char *$*(request_rec *r);\
      |\
      |\
      |
  R|ap_basic_http_header\
      |void $*(request_rec *r);\
      |\
      |\
      |
  R|ap_bclose\
      |int $*(BUFF *fb);\
      |\
      |\
      |
  R|ap_bcreate\
      |BUFF *$*(pool *p, int flags);\
      |\
      |\
      |
  R|ap_bfilbuf\
      |int $*(BUFF *fb);\
      |\
      |\
      |
  R|ap_bfileno\
      |int $*(BUFF *fb, int direction);\
      |\
      |\
      |
  R|ap_bflsbuf\
      |int $*(int c, BUFF *fb);\
      |\
      |\
      |
  R|ap_bflush\
      |int $*(BUFF *fb);\
      |\
      |\
      |
  R|ap_bgetopt\
      |int $*(BUFF *fb, int optname, void *optval);\
      |\
      |\
      |
  R|ap_bgets\
      |int $*(char *s, int n, BUFF *fb);\
      |\
      |\
      |
  R|ap_bhalfduplex\
      |void $*(BUFF *fb);\
      |\
      |\
      |
  R|ap_block_alarms\
      |void $*(void);\
      |\
      |\
      |
  R|ap_blookc\
      |int $*(char *buff, BUFF *fb);\
      |\
      |\
      |
  R|ap_bnonblock\
      |int $*(BUFF *fb, int direction);\
      |\
      |\
      |
  R|ap_bonerror\
      |void $*(BUFF *fb, void (*error) (BUFF *b, int, void *), void *data);\
      |\
      |\
      |
  R|ap_bpushfd\
      |void $*(BUFF *fb, int fd_in, int fd_out);\
      |\
      |\
      |
  R|ap_bputs\
      |int $*(const char *x, BUFF *fb);\
      |\
      |\
      |
  R|ap_bread\
      |int $*(BUFF *fb, void *buf, int nbyte);\
      |\
      |\
      |
  R|ap_bsetflag\
      |int $*(BUFF *fb, int flag, int value);\
      |\
      |\
      |
  R|ap_bsetopt\
      |int $*(BUFF *fb, int optname, const void *optval);\
      |\
      |\
      |
  R|ap_bskiplf\
      |int $*(BUFF *fb);\
      |\
      |\
      |
  R|ap_bvputs\
      |int $*(BUFF *fb, ...);\
      |\
      |\
      |
  R|ap_bwrite\
      |int $*(BUFF *fb, const void *buf, int nbyte);\
      |\
      |\
      |
  R|ap_bytes_in_free_blocks\
      |long $*(void);\
      |\
      |\
      |
  R|ap_call_exec\
      |int $*(request_rec *r, char *argv0, char **env, int shellcmd);\
      |\
      |\
      |
  R|ap_can_exec\
      |int $*(const struct stat *fstat);\
      |\
      |\
      |
  R|ap_cfg_closefile\
      |int $*(configfile_t *fp);\
      |\
      |\
      |
  R|ap_cfg_getc\
      |int $*(configfile_t *cfp);\
      |\
      |\
      |
  R|ap_cfg_getline\
      |int $*(char *buf, size_t bufsize, configfile_t *cfp);\
      |\
      |\
      |
  R|ap_chdir_file\
      |void $*(const char *file);\
      |\
      |\
      |
  R|ap_check_access\
      |\
      |\
      |\
      |
  R|ap_check_alarm\
      |int $*(void);\
      |\
      |\
      |
  R|ap_check_auth\
      |\
      |\
      |\
      |
  R|ap_check_cmd_context\
      |const char *$*(cmd_parms *cmd, unsigned forbidden);\
      |\
      |\
      |
  R|ap_check_user_id\
      |\
      |\
      |\
      |
  R|ap_checkmask\
      |int $*(const char *data, const char *mask);\
      |\
      |\
      |
  R|ap_child_exit_modules\
      |\
      |\
      |\
      |
  R|ap_child_init_modules\
      |\
      |\
      |\
      |
  R|ap_child_terminate\
      |void $*(request_rec *r);\
      |\
      |\
      |
  R|ap_cleanup_for_exec\
      |void $*(void);\
      |\
      |\
      |
  R|ap_clear_module_list\
      |void $*(void);\
      |\
      |\
      |
  R|ap_construct_server\
      |char *$*(pool *p, const char *hostname, unsigned port, \
       const request_rec *r);\
      |\
      |\
      |
  R|ap_construct_url\
      |char *$*(pool *p, const char *uri, const request_rec *r);\
      |\
      |\
      |
  R|ap_core_reorder_directories\
      |\
      |\
      |\
      |
  R|ap_count_dirs\
      |int $*(const char *path);\
      |\
      |\
      |
  R|ap_create_environment\
      |char **$*(pool *p, table *t);\
      |\
      |\
      |
  R|ap_create_per_dir_config\
      |void *$*(pool *p);\
      |\
      |\
      |
  R|ap_create_request_config\
      |\
      |\
      |\
      |
  R|ap_default_port_for_request\
      |unsigned short $*(const request_rec *r);\
      |\
      |\
      |
  R|ap_default_port_for_scheme\
      |unsigned short $*(const char *scheme_str);\
      |\
      |\
      |
  R|ap_default_type\
      |char *$*(request_req *r);\
      |\
      |\
      |
  R|ap_destroy_sub_req\
      |void $*(request_rec *r);\
      |\
      |\
      |
  R|ap_die\
      |\
      |\
      |\
      |
  R|ap_discard_request_body\
      |int $*(request_rec *r);\
      |\
      |\
      |
  R|ap_document_root\
      |char *$*(request_rec *r);\
      |\
      |\
      |
  R|ap_each_byterange\
      |int $*(request_rec *r, long *offset, long *length);\
      |\
      |\
      |
  R|ap_error_log2stderr\
      |void $*(server_rec *s);\
      |\
      |\
      |
  R|ap_escape_html\
      |char *$*(pool *p, const char *s);\
      |\
      |\
      |
  R|ap_escape_path_segment\
      |char *$*(pool *p, const char *s);\
      |\
      |\
      |
  R|ap_escape_shell_cmd\
      |char *$*(pool *p, const char *s);\
      |\
      |\
      |
  R|ap_finalize_request_protocol\
      |\
      |\
      |\
      |
  R|ap_finalize_sub_req_protocol\
      |\
      |\
      |\
      |
  R|ap_find_command\
      |const command_rec *$*(const char *name, const command_rec *cmds);\
      |\
      |\
      |
  R|ap_find_command_in_modules\
      |const command_rec *$*(const char *cmd_name, module **m);\
      |\
      |\
      |
  R|ap_find_last_token\
      |int $*(pool *p, const char *line, const char *tok);\
      |\
      |\
      |
  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);\
      |\
      |\
      |
  R|ap_find_types\
      |\
      |\
      |\
      |
  R|ap_fini_vhost_config\
      |\
      |\
      |\
      |
  R|ap_fnmatch\
      |int $*(const char *s1, const char *s2, int n);\
      |\
      |\
      |
  R|ap_force_library_loading\
      |\
      |\
      |\
      |
  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);\
      |\
      |\
      |
  R|ap_get_gmtoff\
      |struct tm *$*(int *tz);\
      |\
      |\
      |
  R|ap_get_local_host\
      |\
      |\
      |\
      |
  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 *r);\
      |\
      |\
      |
  R|ap_get_time\
      |char *$*(void);\
      |\
      |\
      |
  R|ap_get_token\
      |char *$*(pool *p, char **accept_line, int accept_white);\
      |\
      |\
      |
  R|ap_get_virthost_addr\
      |\
      |\
      |\
      |
  R|ap_getparents\
      |void $*(char *name);\
      |\
      |\
      |
  R|ap_getword\
      |char *$*(pool *p, const char **line, char stop);\
      |\
      |\
      |
  R|ap_getword_conf\
      |char *$*(pool *p, const char **line);\
      |\
      |\
      |
  R|ap_getword_conf_nc\
      |char *$*(pool *p, char **line);\
      |\
      |\
      |
  R|ap_getword_nc\
      |char *$*(pool *p, char **line, char stop);\
      |\
      |\
      |
  R|ap_getword_nulls\
      |char *$*(pool *p, const char **line, char stop);\
      |\
      |\
      |
  R|ap_getword_nulls_nc\
      |char *$*(pool *p, char **line, char stop);\
      |\
      |\
      |
  R|ap_getword_white\
      |char *$*(pool *p, const char **line);\
      |\
      |\
      |
  R|ap_getword_white_nc\
      |char *$*(pool *p, char **line);\
      |\
      |\
      |
  R|ap_gm_timestr_822\
      |char *$*(pool *p, time_t t);\
      |\
      |\
      |
  R|ap_gname2id\
      |gid_t $*(const char *name);\
      |\
      |\
      |
  R|ap_handle_command\
      |const char *$*(cmd_parms *parms, void *config, const char *l);\
      |\
      |\
      |
  R|ap_hard_timeout\
      |void $*(char *reason, request_rec *r);\
      |\
      |\
      |
  R|ap_header_parse\
      |\
      |\
      |\
      |
  R|ap_ht_time\
      |char *$*(pool *p, time_t t, const char *fmt, int gmt);\
      |\
      |\
      |
  R|ap_ind\
      |int $*(const char *str, char c);\
      |\
      |\
      |
  R|ap_index_of_response\
      |int $*(int status);\
      |\
      |\
      |
  R|ap_init_alloc\
      |\
      |\
      |\
      |
  R|ap_init_modules\
      |\
      |\
      |\
      |
  R|ap_init_vhost_config\
      |\
      |\
      |\
      |
  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);\
      |\
      |\
      |
  R|ap_internal_redirect_handler\
      |void $*(const char *new_uri, request_rec *r);\
      |\
      |\
      |
  R|ap_invoke_handler\
      |\
      |\
      |\
      |
  R|ap_is_directory\
      |int $*(const char *name);\
      |\
      |\
      |
  R|ap_is_fnmatch\
      |int $*(const char *str);\
      |\
      |\
      |
  R|ap_is_initial_req\
      |int $*(request_rec *r);\
      |\
      |\
      |
  R|ap_is_matchexp\
      |int $*(const char *str);\
      |\
      |\
      |
  R|ap_is_url\
      |int $*(const char *u);\
      |\
      |\
      |
  R|ap_keepalive_timeout\
      |\
      |\
      |\
      |
  R|ap_kill_cleanup\
      |void $*(pool *p, void *data, void (*plain_cleanup) (void *));\
      |\
      |\
      |
  R|ap_kill_cleanups_for_fd\
      |void $*(pool *p, int fd);\
      |\
      |\
      |
  R|ap_kill_cleanups_for_socket\
      |void $*(pool *p, int sock);\
      |\
      |\
      |
  R|ap_kill_timeout\
      |void $*(request_rec *r);\
      |\
      |\
      |
  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, const server_rec *s, \
       const char *fmt, ...) __attribute__((format(printf,5,6)));\
      |\
      |\
      |
  R|ap_log_pid\
      |\
      |\
      |\
      |
  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\
      |\
      |\
      |\
      |
  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);\
      |\
      |\
      |
  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);\
      |\
      |\
      |
  R|ap_matches_request_vhost\
      |int $*(request_rec *r, const char *host, unsigned port);\
      |\
      |\
      |
  R|ap_meets_conditions\
      |int $*(request_rec *r);\
      |\
      |\
      |
  R|ap_merge_per_dir_configs\
      |\
      |\
      |\
      |
  R|ap_no2slash\
      |void $*(char *name);\
      |\
      |\
      |
  R|ap_note_auth_failure\
      |void $*(request_rec *r);\
      |\
      |\
      |
  R|ap_note_basic_auth_failure\
      |void $*(request_rec *r);\
      |\
      |\
      |
  R|ap_note_cleanups_for_fd\
      |void $*(pool *p, int fd);\
      |\
      |\
      |
  R|ap_note_cleanups_for_file\
      |void $*(pool *p, FILE *f);\
      |\
      |\
      |
  R|ap_note_cleanups_for_socket\
      |void $*(pool *p, int sock);\
      |\
      |\
      |
  R|ap_note_digest_auth_failure\
      |void $*(request_rec *r);\
      |\
      |\
      |
  R|ap_note_subprocess\
      |void $*(pool *p, int pid, enum kill_conditions how);\
      |\
      |\
      |
  R|ap_null_cleanup\
      |void $*(void *data);\
      |\
      |\
      |
  R|ap_open_logs\
      |\
      |\
      |\
      |
  R|ap_escape_path\
      |char *$*(pool *p, const char *path, int partial);\
      |\
      |\
      |
  R|ap_os_is_path_absolute\
      |\
      |\
      |\
      |
  R|ap_parseHTTPdate\
      |time_t $*(const char *date);\
      |\
      |\
      |
  R|ap_parse_htaccess\
      |\
      |\
      |\
      |
  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\
      |\
      |\
      |\
      |
  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\
      |\
      |\
      |\
      |
  R|ap_process_resource_config\
      |\
      |\
      |\
      |
  R|ap_psignature\
      |const char *$*(const char *prefix, request_rec *r);\
      |\
      |\
      |
  R|ap_rationalize_mtime\
      |time_t $*(request_rec *r, time_t mtime);\
      |\
      |\
      |
  R|ap_read_config\
      |\
      |\
      |\
      |
  R|ap_read_request\
      |\
      |\
      |\
      |
  R|ap_register_cleanup\
      |void $*(pool *p, void *data, void (*plain_cleanup) (void *), \
       void (*child_cleanup) (void *));\
      |\
      |\
      |
  R|ap_register_other_child\
      |void $*(int pid, void (*maintenance) \
       (int reason, void *data, int status), void *data, int write_fd);\
      |\
      |\
      |
  R|ap_remove_module\
      |void $*(module *m);\
      |\
      |\
      |
  R|ap_requires\
      |array_header *$*(request_rec *r);\
      |\
      |\
      |
  R|ap_reset_timeout\
      |void $*(request_rec *r);\
      |\
      |\
      |
  R|ap_response_code_string\
      |\
      |\
      |\
      |
  R|ap_rfc1413\
      |\
      |\
      |\
      |
  R|ap_rflush\
      |int $*(request_rec *r);\
      |\
      |\
      |
  R|ap_rind\
      |int $*(const char *str, char c);\
      |\
      |\
      |
  R|ap_rprintf\
      |int $*(request_rec *r, const char *fmt, ...);\
      |\
      |\
      |
  R|ap_rputc\
      |int $*(int c, request_rec *r);\
      |\
      |\
      |
  R|ap_rputs\
      |int $*(const char *str, request_rec *r);\
      |\
      |\
      |
  R|ap_run_cleanup\
      |void $*(pool *p, void *data, void (*cleanup) (void *));\
      |\
      |\
      |
  R|ap_run_fixups\
      |\
      |\
      |\
      |
  R|ap_run_post_read_request\
      |\
      |\
      |\
      |
  R|ap_run_sub_req\
      |int $*(request_rec *r);\
      |\
      |\
      |
  R|ap_rvputs\
      |int $*(request_rec *r, ...);\
      |\
      |\
      |
  R|ap_rwrite\
      |int $*(const void *buf, int nbyte, request_rec *r);\
      |\
      |\
      |
  R|ap_satisfies\
      |int $*(request_rec *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\
      |\
      |\
      |\
      |
  R|ap_send_fb\
      |long $*(BUFF *f, request_rec *r);\
      |\
      |\
      |
  R|ap_send_fb_length\
      |long $*(BUFF *f, request_rec *r, long length);\
      |\
      |\
      |
  R|ap_send_fd\
      |long $*(FILE *f, request_rec *r);\
      |\
      |\
      |
  R|ap_send_fd_length\
      |long $*(FILE *f, request_rec *r, long length);\
      |\
      |\
      |
  R|ap_send_header_field\
      |int $*(request_rec *r, const char *fieldname, const char *fieldval);\
      |\
      |\
      |
  R|ap_send_http_header\
      |void $*(request_rec *r);\
      |\
      |\
      |
  R|ap_send_http_options\
      |\
      |\
      |\
      |
  R|ap_send_http_trace\
      |\
      |\
      |\
      |
  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);\
      |\
      |\
      |
  R|ap_set_callback_and_alarm\
      |\
      |\
      |\
      |
  R|ap_set_content_length\
      |int $*(request_rec *r, long length);\
      |\
      |\
      |
  R|ap_set_etag\
      |void $*(request_rec *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);\
      |\
      |\
      |
  R|ap_set_last_modified\
      |void $*(request_rec *r);\
      |\
      |\
      |
  R|ap_set_module_config\
      |void $*(void *conf_vector, module *m, void *val);\
      |\
      |\
      |
  R|ap_set_name_virtual_host\
      |\
      |\
      |\
      |
  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\
      |\
      |\
      |\
      |
  R|ap_setup_client_block\
      |int $*(request_rec *r, int read_policy);\
      |\
      |\
      |
  R|ap_setup_prelinked_modules\
      |\
      |\
      |\
      |
  R|ap_should_client_block\
      |int $*(request_rec *r);\
      |\
      |\
      |\
      
  R|ap_show_directives\
      |\
      |\
      |\
      |
  R|ap_show_modules\
      |\
      |\
      |\
      |
  R|ap_soft_timeout\
      |void $*(char *str, request_rec *r);\
      |\
      |\
      |
  R|ap_some_auth_required\
      |int $*(request_rec *r);\
      |\
      |\
      |
  R|ap_spawn_child_err\
      |int $*(pool *p, int (*)(void *), void *, enum kill_conditions, \
       FILE **pipe_in, FILE **pipe_out, FILE **pipe_err);\
      |\
      |\
      |
  R|ap_spawn_child_err_buff\
      |int $*(pool *p, int (*)(void *), void *, enum kill_conditions, \n \
                              BUFF **pipe_in, BUFF **pipe_out, BUFF 
**pipe_err);\
      |\
      |\
      |
  R|ap_srm_command_loop\
      |const char *$*(cmd_parms *parms, void *config);\
      |\
      |\
      |
  R|ap_start_restart\
      |\
      |\
      |\
      |
  R|ap_start_shutdown\
      |\
      |\
      |\
      |
  R|ap_str_tolower\
      |void $*(char *str);\
      |\
      |\
      |
  R|ap_strcasecmp_match\
      |int $*(const char *str, const char *exp);\
      |\
      |\
      |
  R|ap_strcmp_match\
      |int $*(const char *str, const char *exp);\
      |\
      |\
      |
  R|ap_sub_req_lookup_file\
      |request_rec *$*(const char *new_file, const request_rec *r);\
      |\
      |\
      |
  R|ap_sub_req_lookup_uri\
      |request_rec *$*(const char *new_file, const request_rec *r);\
      |\
      |\
      |
  R|ap_time_process_request\
      |\
      |\
      |\
      |
  R|ap_tm2sec\
      |time_t $*(const struct tm *t);\
      |\
      |\
      |
  R|ap_translate_name\
      |\
      |\
      |\
      |
  R|ap_uname2id\
      |uid_t $*(const char *name);\
      |\
      |\
      |
  R|ap_unblock_alarms\
      |void $*(void);\
      |\
      |\
      |
  R|ap_unescape_url\
      |int $*(char *url);\
      |\
      |\
      |
  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\
      |\
      |\
      |\
      |
  R|ap_update_mtime\
      |time_t $*(request_rec *r, time_t dependency_mtime);\
      |\
      |\
      |
  R|ap_update_vhost_from_headers\
      |\
      |\
      |\
      |
  R|ap_update_vhost_given_ip\
      |\
      |\
      |\
      |
  R|ap_util_init\
      |\
      |\
      |\
      |
  R|ap_util_uri_init\
      |\
      |\
      |\
      |
  R|ap_uudecode\
      |char *$*(pool *p, const char *str);\
      |\
      |\
      |
  R|ap_vbprintf\
      |int $*(BUFF *fb, const char *fmt, va_list vlist);\
      |\
      |\
      |
  #;
  #; More miscellaneous contant definitions
  #;
  #;
  #; Miscellaneous constants
  #;
  C|MAX_STRING_LEN\
      |#define $* <EM>numbytes</EM>\
      |char random_string[$*];\
      |\
      |
  C|SERVER_VERSION\
      |#define $* <EM>string</EM>\
      |Deprecated; use ap_get_server_version() instead.\
      |\
      |
  C|HARD_SERVER_LIMIT\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|kill_conditions\
      |enum $* { \n \
      kill_never, \n \
      kill_always, \n \
      kill_after_timeout, \n \
      just_wait, \n \
      kill_only_once \n \
  };\
      |\
      |\
      |
  C|MODULE_MAGIC_NUMBER\
      |#define $* <EM>monotonically-increasing-value</EM>\
      |\
      |\
      |
  C|SERVER_SUPPORT\
      |#define $* "http://www.apache.org/"\
      |\
      |\
      |
  #;
  #; 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,DONE\
      |
  C|OK\
      |#define $* <EM>value</EM>\
      |\
      |SA-dirstat\
      |
  C|DECLINED\
      |#define $* <EM>value</EM>\
      |\
      |SA-dirstat\
      |
  C|DONE\
      |#define $* <EM>value</EM>\
      |\
      |SA-dirstat\
      |
  #;
  #; HTTP status code declarations.
  #;
  C|HTTP_CONTINUE\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_SWITCHING_PROTOCOLS\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_OK\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_CREATED\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_ACCEPTED\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_NON_AUTHORITATIVE\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_NO_CONTENT\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_RESET_CONTENT\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_PARTIAL_CONTENT\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_MULTIPLE_CHOICES\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_MOVED_PERMANENTLY\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_MOVED_TEMPORARILY\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_SEE_OTHER\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_NOT_MODIFIED\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_USE_PROXY\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_BAD_REQUEST\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_UNAUTHORIZED\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_PAYMENT_REQUIRED\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_FORBIDDEN\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_NOT_FOUND\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_METHOD_NOT_ALLOWED\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_NOT_ACCEPTABLE\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_PROXY_AUTHENTICATION_REQUIRED\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_REQUEST_TIME_OUT\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_CONFLICT\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_GONE\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_LENGTH_REQUIRED\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_PRECONDITION_FAILED\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_REQUEST_ENTITY_TOO_LARGE\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_REQUEST_URI_TOO_LARGE\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_UNSUPPORTED_MEDIA_TYPE\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_INTERNAL_SERVER_ERROR\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_NOT_IMPLEMENTED\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_BAD_GATEWAY\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_SERVICE_UNAVAILABLE\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_GATEWAY_TIME_OUT\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_VERSION_NOT_SUPPORTED\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  C|HTTP_VARIANT_ALSO_VARIES\
      |#define $* <EM>value</EM>\
      |\
      |\
      |
  #;
  #; These are macros, but they are invoked as though they were routines -
  #; so that's how we list them.
  #;
  X|SA-status-check\
      |\
      |\
      |is_HTTP_INFO,is_HTTP_SUCCESS,is_HTTP_REDIRECT\
       ,is_HTTP_ERROR,is_HTTP_CLIENT_ERROR,is_HTTP_SERVER_ERROR\
       ,status_drops_connection\
      |
  R|is_HTTP_INFO\
      |#define $*(x) (((x) &gt;= 100) &amp;&amp; ((x) &lt; 200))\
      |\
      |SA-status-check\
      |
  R|is_HTTP_SUCCESS\
      |#define $*(x) (((x) &gt;= 200) &amp;&amp; ((x) &lt; 300))\
      |\
      |SA-status-check\
      |
  R|is_HTTP_REDIRECT\
      |#define $*(x) (((x) &gt;= 300) &amp;&amp; ((x) &lt; 400))\
      |\
      |SA-status-check\
      |
  R|is_HTTP_ERROR\
      |#define $*(x) (((x) &gt;= 400) &amp;&amp; ((x) &lt; 600))\
      |\
      |SA-status-check\
      |
  R|is_HTTP_CLIENT_ERROR\
      |#define $*(x) (((x) &gt;= 400) &amp;&amp; ((x) &lt; 500))\
      |\
      |SA-status-check\
      |
  R|is_HTTP_SERVER_ERROR\
      |#define $*(x) (((x) &gt;= 500) &amp;&amp; ((x) &lt; 600))\
      |\
      |SA-status-check\
      |
  #;
  #; This is another messy definition; the spacing has to be done
  #; correctly for horizontal alignment in the final <PRE> block.
  #;
  R|status_drops_connection\
  |#define $*(x) (((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))\
      |\
      |SA-status-check\
      |
  X|SA-methods\
      |\
      |\
      |M_GET,M_PUT,M_POST,M_DELETE,M_CONNECT,M_OPTIONS,M_TRACE,M_INVALID\
      |
  C|M_GET\
      |#define $* <EM>value</EM>\
      |\
      |SA-methods\
      |
  C|M_PUT\
      |#define $* <EM>value</EM>\
      |\
      |SA-methods\
      |
  C|M_POST\
      |#define $* <EM>value</EM>\
      |\
      |SA-methods\
      |
  C|M_DELETE\
      |#define $* <EM>value</EM>\
      |\
      |SA-methods\
      |
  C|M_CONNECT\
      |#define $* <EM>value</EM>\
      |\
      |SA-methods\
      |
  C|M_OPTIONS\
      |#define $* <EM>value</EM>\
      |\
      |SA-methods\
      |
  C|M_TRACE\
      |#define $* <EM>value</EM>\
      |\
      |SA-methods\
      |
  C|M_INVALID\
      |#define $* <EM>value</EM>\
      |\
      |SA-methods\
      |
  
  
  

Reply via email to