# W3C Library Interfaces

Any suggestions or ideas are welcome at libwww@w3.org.

This is the overall set of interfaces in the W3C Reference Library. An interface can cover multiple related C modules and it is defined by a WWW*.h include file, for example WWWCore.h. On Windows platforms, each interface corresponds to a DLL with a DLL definition file defining all exported methods and data objects. You can also have a look at the complete list of all public functions.

Every module in the Library has a HTML document associated with it containing a detailed description of the functionality and interface to other modules. This page is the top node for the implementation specific documentation and contains links to all the modules in the Library. The documentation is dynamically kept up to date as the actual include files (.h) are generated from the HTML documents using the Line Mode Browser.

When compiling the Library please make sure that you have a relatively new version of the Line Mode Browser that parses the HTML documents correctly (2.13 and newer versions). Find out what version of the Line Mode Browser you are using by typing

    	./www -version

Also remember that when editing the module interfaces or adding functionality then always use the HTML files and not the .h files!

This document is also available as one big HTML file intended for printout. Please note that not all links in this version work!

## Core Interfaces

The core interfaces must be included in all applications.

### Windows Specifics

The wwwdll library is a tiny library that contains a pointer to the TTYPrint function. When Windows loads a DLL, the exported function and data pointers get "fixed up" in the other modules. Consequently, what may be a directly addressable piece of data in it's home library will be a pointer in the other libraries and executables that dynamically link to it. The TTYPrint pointer is exported to the other modules and referenced via the TTYPrint macro in HTUtils.h. wwwdll.dll also contains the WWW_TraceFlag to the same end of macroing the indirection.

- Name of DLL: wwwdll.dll
- Definition list of exported API

### Basic Utilities

The Utility modules are mostly container modules, dynamic strings and other stuff that you can't live without when building applications. The modules are used by the core part of the W3C Reference Library but can also be used by the application. See also the main Library include file called WWWLib.h which contains all converters and protocol modules known to the Library. You can include this one if the application is to use all the functionality of the Library.

- Name of DLL: wwwutil.dll
- Definition list of exported API
- Interface include file

### Core Interface

This is the basic include file for the core of the W3C Reference Library. Together with the WWWUtil module it contains all core specific modules which are required to compile and build the Library. The core part of the Library is designed as a set of registration modules with no real functionality in itself. Instead all the functionality comes when the application registers the modules that provides a desired functionality, for example accessing HTTP servers or the local file system. The Library has a special include file called WWWApp.h which a lot of application helper modules that makes it easier to use the core.

- Name of DLL: wwwcode.dll
- Definition list of exported API
- Interface include file

## Stream Interfaces

### Persistent Cache

The cache contains details of temporary disk files which contain the contents of remote documents.

- Name of DLL: wwwcache.dll
- Definition list of exported API
- Interface include file

### HTML Parser and Generator

This is the include file for the basic HTML module that can be used together with the core of the W3C Reference Library. It contains all HTML specific modules which are required to compile and build the HTML DLL. Please note that as the HText is not included in this interface. The reason is that the HText interface only is declared by the Library but must be defined by the application. Therefore it can not be part of a DLL but must be included directly in the application.

- Name of DLL: wwwhtml.dll
- Definition list of exported API
- Interface include file

### Directory Browsing

This is the include file for the directory handling modules that can be used together with the core of the W3C Reference Library. It contains all Directory specific modules which are required to compile and build the DIRECTORY DLL.

- Name of DLL: wwwdir.dll
- Definition list of exported API
- Interface include file

### Content Type Guessing Stream

This interface provides functionality for guessing unknown media types from magic words. The stream is a one that reads first a chunk of stuff, tries to figure out the format, and calls `HTStreamStack()`. This is a kind of lazy-evaluation of `HTStreamStack()`. This could be extended arbitrarily to recognize all the possible file formats in the world, if someone only had time to do it.

- Name of DLL: wwwguess.dll
- Definition list of exported API
- Interface include file

### MIME Parser and Generator

This is the module for basic RFC822/MIME parsing that can be used together with the core of the W3C Reference Library. It contains all MIME specific modules which are required to compile and build the MIME DLL.

- Name of DLL: wwwmime.dll
- Definition list of exported API
- Interface include file

## Application Interfaces

### Rule File Management

A way to initialize applications is to use a rule file, also known as a configuration file. This is for example the case with the W3C httpd and the W3C Line Mode Browser. This module provides basic support for configuration file management and the application can use this is desired. The module is not referred to by the Library. Reading a rule file is implemented as a stream converter so that a rule file can come from anywhere, even across the network!

Applications do not have to provide native support for all protocols, they can in many situations rely on the support of proxies and gateways to help doing the job. Proxy servers are often used to carry client requests through a firewall where they can provide services like corporate caching and other network optimizations. Both Proxy servers and gateways can serve as "protocol translators" which can convert a request in the main Web protocol, HTTP, to an equivalent request in another protocol, for example NNTP, FTP, or Gopher. In case a proxy server or a gateway is available to the application, it can therefore by use of HTTP forward all requests to for example a proxy server which then handle the communications with the remote server, for example using FTP about the document and return it to the application (proxy client) using HTTP.

- Name of DLL: wwwrules.dll
- Definition list of exported API
- Interface include file

### Application Specific

This module provides some "make life easier" functions in order to get the application going. They help you generate the first anchor, also called the home anchor. It also contains a nice set of default WWW addresses.

- Name of DLL: wwwapp.dll
- Definition list of exported API
- Interface include file

### Initialization Modules

The core parts of the Library is a framework for adding functionality. It has hooks for adding protocol modules, like for example HTTP, FTP, and also for adding streams that can convert from one media type to some other type, or presenting the result to the user. In the distribution file of the Library you will find a large set of protocol modules and streams already implemented. However, in order to use these you need to initialize them. This can be done by using the methods in the WWWInit module. You can modify these modules as you like to fit your particular needs. The modules in this interface are not part of any DLL and so must be included directly if desired.

- WWWInit Interface include file

## Protocol Interfaces

### Local File Access

This is the include file for local file handling modules that can be used together with the core of the W3C Reference Library. It contains modules which are required to compile and build the FILE DLL.

- Name of DLL: wwwfile.dll
- Definition list of exported API
- Interface include file

### FTP Access

This is the include file for the basic FTP module that can be used together with the core of the W3C Reference Library. It contains all FTP specific modules which are required to compile and build the FTP DLL.

- Name of DLL: wwwftp.dll
- Definition list of exported API
- Interface include file

### Gopher Access

This is the include file for the basic GOPHER module that can be used together with the core of the W3C Reference Library. It contains all GOPHER specific modules which are required to compile and build the GOPHER DLL.

- Name of DLL: wwwgophe.dll
- Definition list of exported API
- Interface include file

### HTTP Access

This is the include file for all HTTP access including the server side and the client side. It can be used together with the core of the W3C Reference Library. It contains all HTTP specific modules which are required to compile and build the HTTP DLL.

- Name of DLL: wwwhttp.dll
- Definition list of exported API
- Interface include file

### News Access

This is the include file for the basic NNTP module that can be used together with the core of the W3C Reference Library. It contains all News specific modules which are required to compile and build the News DLL.

- Name of DLL: wwwnews.dll
- Definition list of exported API
- Interface include file

### Telnet Access

This is the include file for the basic Telnet, rlogin, and TN3270 module that can be used together with the core of the W3C Reference Library. It contains all Telnet, rlogin, and TN3270 specific modules which are required to compile and build the Telnet, rlogin, and TN3270 DLL.

- Name of DLL: wwwtelnt.dll
- Definition list of exported API
- Interface include file

### WAIS Access

This is the include file for the basic WAIS module that can be used together with the core of the W3C Reference Library. It contains all WAIS specific modules which are required to compile and build the WAIS DLL.

- Name of DLL: wwwwais.dll
- Definition list of exported API
- Interface include file

Non-Mandatory Application Include File

# Non-Mandatory Application Include File

    /*
    **	(c) COPYRIGHT MIT 1995.
    **	Please first read the full copyright statement in the file COPYRIGH.
    */

In addition top the basic W3C Reference Library include file called WWWLib.h you can also include this file called WWWApp.h depending on the needs of your application. However, it is not required and none of the files included below are ever used in the core part of the Library itself. Only if this file is included, the extra modules will get included in the linked object code. It is also possible to include only a subset of the files below if the functionality you are after is covered by them.

    #ifndef WWWAPP_H
    #define WWWAPP_H

    #ifdef __cplusplus
    extern "C" {
    #endif

## Generating the First Anchor

This module provides some "make life easier" functions in order to get the application going. They help you generate the first anchor, also called the home anchor. It also contains a nice set of default WWW addresses.

    #include "HTHome.h"

## User Dialogs and Messages

You can register a set of callback functions to handle user prompting, error messages, confimations etc. Here we give a set of functions that can be used on almost anu thinkable platform. If you want to provide your own platform dependent implementation then fine :-)

    #include "HTDialog.h"

## After Terminating a Request

When a request is terminated, the application often has to do some action as a result of the request (and of the result of the request). The Application part of the Library provides two following modules to handle logging and history management. You can register a POST request handler in the Net Manager as described in the User's Guide.

You can find a function called `HTLoadTerminate` in the HTHome module that enables all the functionality for handling a request result.

### Logging

Often it is required to log the requests issued to the Library. This can either be the case if the application is a server or it can also be useful in a client application. This module provides a simple logging mechanism which can be enabled if needed.

    #include "HTLog.h"

### History Management

Another type of logging is keeping track of which documents a user has visited when browsing along on the Web. The Library history manager provides a basic set of functionality to keep track of a linear history list.

    #include "HTHist.h"

End of application specific modules

    #ifdef __cplusplus
    } /* end extern C definitions */
    #endif

    #endif

End of WWWAPP definition
Declaration of W3C Reference PERSISTENT CACHE MODULE

# Declaration of W3C Reference PERSISTENT CACHE MODULE

    /*
    **	(c) COPYRIGHT MIT 1995.
    **	Please first read the full copyright statement in the file COPYRIGH.
    */

### Cache Manager

Caching is a required part of any efficient Internet access applications as it saves bandwidth and improves access performance significantly in almost all types of accesses. The Library supports two different types of cache: The memory cache and the file cache. The two types differ in several ways which reflects their two main purposes: The memory cache is for short term storage of graphic objects whereas the file cache is for intermediate term storage of data objects. Often it is desirable to have both a memory and a file version of a cached document, so the two types do not exclude each other.

The cache contains details of temporary disk files which contain the contents of remote documents. There is also a list of cache items for each URL in its anchor object.

There are various ways of handling Expires header when met in a history list. Either it can be ignored all together, the user can be notified with a warning, or the document can be reloaded automatically. This flag decides what action to be taken. The default action is HT_EXPIRES_IGNORE. In HT_EXPIRES_NOTIFY mode you can specify a message to tell the user (NULL is valid in which case my own message pops up - watch out it might be in Danish ;-))

The Library has two notions of a local cache: a file cache and a memory cache. The memory cache is handled by the client and the file cache is handled by the Library. Often the format of a object cached in memory is in the form of a hypertext object ready to be displayed (that is, it's already parsed).

    #ifndef WWWCACHE_H
    #define WWWCACHE_H

## Library Includes

    #ifdef __cplusplus
    extern "C" {
    #endif

    #include "HTCache.h"

End of CACHE module

    #ifdef __cplusplus
    } /* end extern C definitions */
    #endif

    #endif

End of WWWCACHE API definition
Declaration of W3C Reference Library CORE

# Declaration of W3C Reference Library CORE

    /*
    **	(c) COPYRIGHT MIT 1995.
    **	Please first read the full copyright statement in the file COPYRIGH.
    */

This is the basic include file for the core of the W3C Reference Library. Togrther with the WWWUtil module it contains all core specific modules which are required to compile and build the Library.

The core part of the Library is designed as a set of registration modules with no real functionality in itself. Instead all the functionality comes when the applciation registeres the modules that provides a desired functionaly, for example accessing HTTP servers or the local file system. The Library has a special include file called WWWApp.h which contains all converters, protocol modules, and a lot of other "sugar" modules that can make the core a very powerful Web interface. You can include this one if the application is to use all the functionality of the Library.

    #ifndef WWWCORE_H
    #define WWWCORE_H

## System dependencies

    #include "tcp.h"

## Library Includes

    #ifdef __cplusplus
    extern "C" {
    #endif

## Core Modules

    #include "HTAccess.h"			/* Document access network code */
    #include "HTAlert.h"			/* User Messages and Dialogs */
    #include "HTAnchor.h"			/* Anchor class Definition */
    #include "HTBind.h"			/* Binding to file suffixes */
    #include "HTConLen.h"			/* Content Length Counter */
    #include "HTDNS.h"			/* Host name cache */
    #include "HTError.h"			/* Error manager */
    #include "HTEscape.h"			/* Escape and unescape URLs */
    #include "HTEvntrg.h"			/* Event manager */
    #include "HTFWrite.h"			/* Write to an ANSI file descriptor */
    #include "HTFormat.h"			/* Stream Stack and content neg. */
    #include "HTMethod.h"			/* Request methods like PUT, GET */
    #include "HTNet.h"			/* public part of Net Manager */
    #include "HTParse.h"			/* Parse URLs */
    #include "HTProt.h"			/* Protocol Manager */
    #include "HTReq.h"			/* public part of Request Manager */
    #include "HTSocket.h"			/* public part of Net Manager */
    #include "HTTCP.h"			/* GetXbyY functions */
    #include "HTTee.h"			/* T streem for splitting a stream */
    #include "HTWWWStr.h"			/* Web Related String Functions */
    #include "HTWriter.h"			/* Write to a unix file descriptor */

End of Core modules

    #ifdef __cplusplus
    } /* end extern C definitions */
    #endif

    #endif

End of WWWCore API definition
Declaration of W3C Reference DIRECTORY MODULE

# Declaration of W3C Reference DIRECTORY MODULE

    /*
    **	(c) COPYRIGHT MIT 1995.
    **	Please first read the full copyright statement in the file COPYRIGH.
    */

This is the include file for the directory handling modules that can be used together with the core of the W3C Reference Library. It contains all Directory specific modules which are required to compile and build the DIRECTORY DLL.

    #ifndef WWWDIR_H
    #define WWWDIR_H

## Library Includes

    #ifdef __cplusplus
    extern "C" {
    #endif

    #include "HTIcons.h"
    #include "HTDescpt.h"
    #include "HTDir.h"

End of DIR module

    #ifdef __cplusplus
    } /* end extern C definitions */
    #endif

    #endif

End of WWWDir API definition
Declaration of W3C Reference FTP MODULE

# Declaration of W3C Reference FTP MODULE

    /*
    **	(c) COPYRIGHT MIT 1995.
    **	Please first read the full copyright statement in the file COPYRIGH.
    */

This is the include file for the basic FTP module that can be used together with the core of the W3C Reference Library. It contains all FTP specific modules which are required to compile and build the FTP DLL.

    #ifndef WWWFTP_H
    #define WWWFTP_H

## Library Includes

    #ifdef __cplusplus
    extern "C" {
    #endif

    #include "HTFTP.h"			/* FTP client state machine */
    #include "HTFTPDir.h"			/* Streams for parsing FTP output */

End of FTP module

    #ifdef __cplusplus
    } /* end extern C definitions */
    #endif

    #endif

End of WWWFTP API definition
Declaration of W3C Reference FILE MODULE

# Declaration of W3C Reference FILE MODULE

    /*
    **	(c) COPYRIGHT MIT 1995.
    **	Please first read the full copyright statement in the file COPYRIGH.
    */

This is the include file for local file handling modules that can be used together with the core of the W3C Reference Library. It contains modules which are required to compile and build the FILE DLL.

    #ifndef WWWFILE_H
    #define WWWFILE_H

## Library Includes

    #ifdef __cplusplus
    extern "C" {
    #endif

    #include "HTMulti.h"
    #include "HTFile.h"

End of FILE module

    #ifdef __cplusplus
    } /* end extern C definitions */
    #endif

    #endif

End of WWWFile API definition
Declaration of W3C Reference GOPHER MODULE

# Declaration of W3C Reference GOPHER MODULE

    /*
    **	(c) COPYRIGHT MIT 1995.
    **	Please first read the full copyright statement in the file COPYRIGH.
    */

This is the include file for the basic GOPHER module that can be used together with the core of the W3C Reference Library. It contains all GOPHER specific modules which are required to compile and build the GOPHER DLL.

    #ifndef WWWGOPHER_H
    #define WWWGOPHER_H

## Library Includes

    #ifdef __cplusplus
    extern "C" {
    #endif

    #include "HTGopher.h"			      /* GOPHER client state machine */

End of GOPHER module

    #ifdef __cplusplus
    } /* end extern C definitions */
    #endif

    #endif

End of WWWGophe API definition
Declaration of W3C Reference Content Guess MODULE

# Declaration of W3C Reference CONTENT GUESS MODULE

    /*
    **	(c) COPYRIGHT MIT 1995.
    **	Please first read the full copyright statement in the file COPYRIGH.
    */

This interface provides functionality for guessing unknown media types from magic words. The stream is a one that reads first a chunk of stuff, tries to figure out the format, and calls `HTStreamStack()`. This is a kind of lazy-evaluation of `HTStreamStack()`. This could be extended arbitrarily to recognize all the possible file formats in the world, if someone only had time to do it.

    #ifndef WWWGUESS_H
    #define WWWGUESS_H

## Library Includes

    #ifdef __cplusplus
    extern "C" {
    #endif

    #include "HTGuess.h"

End of GUESS module

    #ifdef __cplusplus
    } /* end extern C definitions */
    #endif

    #endif

End of WWWGUESS API definition
Declaration of W3C Reference HTML MODULE

# Declaration of W3C Reference HTML MODULE

    /*
    **	(c) COPYRIGHT MIT 1995.
    **	Please first read the full copyright statement in the file COPYRIGH.
    */

This is the include file for the basic HTML module that can be used together with the core of the W3C Reference Library. It contains all HTML specific modules which are required to compile and build the HTML DLL. Please note that as the HText is not included in this interface. The reason is that the HText interface only is declared by the Library but must be defined by the application. Therefore it can not be part of a DLL but must be included directly in the application.

    #ifndef WWWHTML_H
    #define WWWHTML_H

## Library Includes

    #ifdef __cplusplus
    extern "C" {
    #endif

    #include "HTMLPDTD.h"
    #include "SGML.h"
    #include "HTMLGen.h"
    #include "HTTeXGen.h"

End of HTML module

    #ifdef __cplusplus
    } /* end extern C definitions */
    #endif

    #endif

End of WWWHTML API definition
Declaration of W3C Reference HTTP MODULE

# Declaration of W3C Reference HTTP MODULE

    /*
    **	(c) COPYRIGHT MIT 1995.
    **	Please first read the full copyright statement in the file COPYRIGH.
    */

This is the include file for all HTTP access including the server side and the client side. It can be used together with the core of the W3C Reference Library. It contains all HTTP specific modules which are required to compile and build the HTTP DLL.

    #ifndef WWWHTTP_H
    #define WWWHTTP_H

## Library Includes

    #ifdef __cplusplus
    extern "C" {
    #endif

    #include "HTTPUtil.h"			/* Basic things */
    #include "HTTP.h"			/* HTTP client state machine */
    #include "HTTPServ.h"			/* HTTP server state machine */

    #include "HTTPGen.h"			/* General HTTP Header Stream */
    #include "HTTPReq.h"			/* Stream for generating requests */
    #include "HTTPRes.h"			/* Stream for gererating responses */

    #include "HTAAUtil.h"			/* Access authentication */
    #include "HTAABrow.h"			/* Access authentication */

End of HTTP module

    #ifdef __cplusplus
    } /* end extern C definitions */
    #endif

    #endif

End of WWWHTTP API definition
Non-Mandatory Initialization Module

# Non-Mandatory Initialization Module

    /*
    **	(c) COPYRIGHT MIT 1995.
    **	Please first read the full copyright statement in the file COPYRIGH.
    */

    #ifndef WWWINIT_H
    #define WWWINIT_H

The core parts of the Library is a framework for adding functionality. It has hooks for adding protocol modules, like for example HTTP, FTP, and also for adding streams that can convert from one media type to some other type, or presenting the result to the user. In the distribution file of the Library you will find a large set of protocol modules and streams already implemented. However, in order to use these you need to initialize them. This can be done by using the files in the HTInit module. You can modify this module as you like to fit your particular needs.

    #ifdef __cplusplus
    extern "C" {
    #endif

    #include "HTInit.h"
    #include "HTBInit.h"

    #ifdef __cplusplus
    } /* end extern C definitions */
    #endif

    #endif

End of WWWINIT declaration
Include file for W3C Reference Library

# Include file for W3C Reference Library

    /*
    **	(c) COPYRIGHT MIT 1995.
    **	Please first read the full copyright statement in the file COPYRIGH.
    */

This is the basic include files and the core include files necessary in order to use the W3C Reference Library. It contains all core specific modules which are required to compile and build the Library. No converter streams or protocol modules are included in this file as they are for the application to set up. The Library has a special include file called WWWApp.h which contains all converters and protocol modules known to the Library. You can include this one if the application is to use all the functionality of the Library.

    #ifndef WWWLIB_H
    #define WWWLIB_H

    #ifdef __cplusplus
    extern "C" {
    #endif

## General Utilities

    #include "WWWUtil.h"			/* Basic utility modules */

## Core Modules

    #include "WWWCore.h"			/* Core modules */

    #ifdef __cplusplus
    } /* end extern C definitions */
    #endif

    #endif

End of WWWLib API definition
Declaration of W3C Reference MIME MODULE

# Declaration of W3C Reference MIME MODULE

    /*
    **	(c) COPYRIGHT MIT 1995.
    **	Please first read the full copyright statement in the file COPYRIGH.
    */

This is the module for basic RFC822/MIME parsing that can be used together with the core of the W3C Reference Library. It contains all MIME specific modules which are required to compile and build the MIME DLL.

    #ifndef WWWMIME_H
    #define WWWMIME_H

## Library Includes

    #ifdef __cplusplus
    extern "C" {
    #endif

    #include "HTMIME.h"			/* MIME response parser */
    #include "HTMIMERq.h"			/* MIME request generator */
    #include "HTBound.h"			/* Multipart MIME parser */
    #include "HTMulpar.h"			/* Multipart MIME generator stream */
    #include "HTHeader.h"			/* Extra Header parser and generator */

End of MIME module

    #ifdef __cplusplus
    } /* end extern C definitions */
    #endif

    #endif

End of WWWMIME API definition
Declaration of W3C Reference NEWS MODULE

# Declaration of W3C Reference NEWS MODULE

    /*
    **	(c) COPYRIGHT MIT 1995.
    **	Please first read the full copyright statement in the file COPYRIGH.
    */

This is the include file for the basic NNTP module that can be used together with the core of the W3C Reference Library. It contains all News specific modules which are required to compile and build the News DLL.

    #ifndef WWWNEWS_H
    #define WWWNEWS_H

## Library Includes

    #ifdef __cplusplus
    extern "C" {
    #endif

    #include "HTNews.h"			/* NNTP client state machine */
    #include "HTNewsLs.h"			/* Streams for parsing News output */
    #include "HTNDir.h"			/* HTML Generator */

End of News module

    #ifdef __cplusplus
    } /* end extern C definitions */
    #endif

    #endif

End of WWWNews API definition
Rule Files and Proxies

# Rule Files and Proxies

    /*
    **	(c) COPYRIGHT MIT 1995.
    **	Please first read the full copyright statement in the file COPYRIGH.
    */

In addition top the basic W3C Reference Library include file called WWWLib.h you can also include this file depending on the needs of your application. However, it is not required and none of the files included below are ever used in the core part of the Library itself. Only if this file is included, the extra modules will get included in the linked object code. It is also possible to include only a subset of the files below if the functionality you are after is covered by them.

    #ifndef WWWRULES_H
    #define WWWRULES_H

    #ifdef __cplusplus
    extern "C" {
    #endif

### Rule File Management

Another way to initialize applications is to use a rule file, also known as a configuration file. This is for example the case with the W3C httpd and the W3C Line Mode Browser. This module provides basic support for configuration file management and the application can use this is desired. The module is not referred to by the Library. Reading a rule file is implemented as a stream converter so that a rule file can come from anywhere, even across the network!

    #include "HTRules.h"

### Proxies and Gateways

Applications do not have to provide native support for all protocols, they can in many situations rely on the support of proxies and gateways to help doing the job. Proxy servers are often used to carry client requests through a firewall where they can provide services like corporate caching and other network optimizations. Both Proxy servers and gateways can serve as "protocol translators" which can convert a request in the main Web protocol, HTTP, to an equivalent request in another protocol, for example NNTP, FTP, or Gopher. In case a proxy server or a gateway is available to the application, it can therefore by use of HTTP forward all requests to for example a proxy server which then handle the communications with the remote server, for example using FTP about the document and return it to the application (proxy client) using HTTP.

    #include "HTProxy.h"

End of application specific modules

    #ifdef __cplusplus
    } /* end extern C definitions */
    #endif

    #endif

End of WWWRules declaration
Declaration of W3C Reference Telnet, rlogin, and TN3270 MODULE

# Declaration of W3C Reference Telnet, rlogin, and TN3270 MODULE

    /*
    **	(c) COPYRIGHT MIT 1995.
    **	Please first read the full copyright statement in the file COPYRIGH.
    */

This is the include file for the basic Telnet, rlogin, and TN3270 module that can be used together with the core of the W3C Reference Library. It contains all Telnet, rlogin, and TN3270 specific modules which are required to compile and build the Telnet, rlogin, and TN3270 DLL.

    #ifndef WWWTELNET_H
    #define WWWTELNET_H

## Library Includes

    #ifdef __cplusplus
    extern "C" {
    #endif

    #include "HTTelnet.h"			      /* TELNET client state machine */

End of TELNET module

    #ifdef __cplusplus
    } /* end extern C definitions */
    #endif

    #endif

End of WWWTelnet API definition
Declaration of W3C Reference Library UTILITIES

# Declaration of W3C Reference Library UTILITIES

    /*
    **	(c) COPYRIGHT MIT 1995.
    **	Please first read the full copyright statement in the file COPYRIGH.
    */

The Utility modules are mostly container modules, dynamic strings and otherstuff that you can't live without when building applications. The modules are used by the core part of the W3C Reference Library but can also be used by the application. See also the main Library include file called WWWLib.h which contains all converters and protocol modules known to the Library. You can include this one if the application is to use all the functionality of the Library.

    #ifndef WWWUTIL_H
    #define WWWUTIL_H

## System dependencies

The tcp.h file includes system-specific include files and flags for I/O to network and disk. The only reason for this file is that the Internet world is more complicated than Posix and ANSI.

    #include "tcp.h"

## Library Includes

    #ifdef __cplusplus
    extern "C" {
    #endif

### Basic Macros etc

This module includes file contains things we need everywhere, generally macros for declarations, booleans, etc.

    #include "HTUtils.h"

### Dynamic Arrays

This module implements a flexible array of pointers. It is a general utility module. An array is a structure which may be extended. These routines create and append data to arrays, automatically reallocating them as necessary. It is garanteed that the last entry in an array is NULL

    #include "HTArray.h"

### Association Lists

This is a small module build on top of the HTList module that provides a way to store Name-Value pairs in an easy way.

    #include "HTAssoc.h"

### Atoms

Atoms are strings which are given representative pointer values so that they can be stored more efficiently, and comparisons for equality done more efficiently. The pointer values are in fact entries into a hash table.

    #include "HTAtom.h"

### Dynamic Strings

A Chunk is a block wise expandable array of type (char *) and is a sort of apology for real strings in C. Chunks make it easier to handle dynamic strings of unknown size. It is often faster than using the String Copy Routines.

    #include "HTChunk.h"

### Linked Lists

This module provides the functionality for managing a generic list of data objects. The module is implemented as a single linked list using the scheme first in - last out (FILO).

    #include "HTList.h"

### Dymamic Memory Management

This module implements a dynamic memory API that is used throughout the Library. The API covers three types of functionality:

- Handling of allocation and deallocation of dynamic memory
- Recovering from temporary lack of available memory
- Panic handling in case a new allocation fails

    #include "HTMemory.h"

### String Utilities

Routines for dynamic arrays of characters include string copy, case insensitive comparison etc.

    #include "HTString.h"

### UU encode and decode

File module provides functions functions for uuencode and decode strings which convert a buffer of bytes to/from RFC 1113 printable encoding format. This technique is similar to the familiar Unix uuencode format in that it maps 6 binary bits to one ASCII character (or more aptly, 3 binary bytes to 4 ASCII characters). However, RFC 1113 does not use the same mapping to printable characters as uuencode.

    #include "HTUU.h"

End of utility modules

    #ifdef __cplusplus
    } /* end extern C definitions */
    #endif

    #endif

End of WWWUtil.h declaration
Declaration of W3C Reference WAIS MODULE

# Declaration of W3C Reference WAIS MODULE

    /*
    **	(c) COPYRIGHT MIT 1995.
    **	Please first read the full copyright statement in the file COPYRIGH.
    */

This is the include file for the basic WAIS module that can be used together with the core of the W3C Reference Library. It contains all WAIS specific modules which are required to compile and build the WAIS DLL.

    #ifndef WWWWAIS_H
    #define WWWWAIS_H

## Library Includes

    #ifdef __cplusplus
    extern "C" {
    #endif

    #include "HTWais.h"			        /* WAIS client state machine */

End of WAIS module

    #ifdef __cplusplus
    } /* end extern C definitions */
    #endif

    #endif

End of WWWWais API definition