The httpd-2.1 Source Tree LAYOUT
--------------------------------

./ .................... Top-Level httpd-2.5 Root Directory

  ABOUT_APACHE .......... Overview of the Apache HTTP Server
  LAYOUT ................ This file describing the source tree
  README ................ Overview of this distribution
  STATUS ................ Current project activity and commentary

build/ ................ Supporting tools for buildconf/configure

  win32/ ................ Supporting tools for Win32 MSVC builds

docs/ ................. Documentation and Examples

  cgi-examples/ ......... 

  conf/ ................. 

  docroot/ .............. 

  error/ ................ 

    include/ .............. 

  icons/ ................ 

    small/ ................ 

  man/ .................. 

  manual/ ............... 

    developer/ ............ 

    faq/ .................. 

    howto/ ................ 

    images/ ............... 

    misc/ ................. 

    mod/ .................. 

    platform/ ............. 

    programs/ ............. 

    search/ ............... 

    ssl/ .................. 

    style/ ................ 

    vhosts/ ............... 

include/ ................ 

modules/ ................ Manditory and Add-In Apache stock modules

  aaa/ .................... 

  arch/ ................... 

    netware/ ................ 

    win32/ .................. 

  cache/ .................. 

  dav/ .................... 

    fs/ ..................... 

    main/ ................... 

  echo/ ................... 

  experimental/ ........... 

  filters/ ................ 

  generators/ ............. 

  http/ ................... HTTP: protocol module

  loggers/ ................ 

  mappers/ ................ 

  metadata/ ............... 

  pop3/ ...................

  private/ ................

  proxy/ ..................

  ssl/ .................... HTTPS: SSL v2/v3 and TLS v1 protocol module

    README .................. Overview of mod_ssl
    README.dsov.fig ......... Overview diagram of mod_ssl design
    README.dsov.ps .......... Overview diagram of mod_ssl design
    Makefile.in ............. Makefile template for Unix platform
    config.m4 ............... Autoconf stub for the Apache config mechanism
    mod_ssl.c ............... main source file containing API structures
    mod_ssl.h ............... common header file of mod_ssl
    ssl_engine_config.c ..... module configuration handling
    ssl_engine_init.c ....... module initialization
    ssl_engine_io.c ......... I/O support
    ssl_engine_kernel.c ..... SSL engine kernel
    ssl_engine_log.c ........ logfile support
    ssl_engine_mutex.c ...... mutual exclusion support
    ssl_engine_pphrase.c .... pass-phrase handling
    ssl_engine_rand.c ....... PRNG support
    ssl_engine_vars.c ....... Variable Expansion support
    ssl_scache.c ............ session cache abstraction layer
    ssl_util.c .............. utility functions
    ssl_util_ssl.c .......... the OpenSSL companion source
    ssl_util_ssl.h .......... the OpenSSL companion header

  test/ ................... not distributed with released source tarballs

os/ ..................... 

  bs2000/ ................. 

  netware/ ................ 

  os2/ .................... 

  unix/ ................... 

  win32/ .................. 

server/ ................. 

  mpm/ .................... 

    event/ .................. 

    mpmt_os2/ ............... 

    netware/ ................ 

    prefork/ ................ 

    winnt/ .................. 

    worker/ ................. 

srclib/ ................... Additional Libraries

  apr/ ...................... SEE srclib/apr/LAYOUT

  apr-util/ ................. SEE srclib/apr/LAYOUT

support/ ................ Sources for Support Binaries

  SHA1/ .................. Ancient SHA1 password conversion utilities

  win32/ ................. Win32-only Support Applications

test/ ................... not distributed with released source tarballs

