diff options
Diffstat (limited to 'WWW/Library/Implementation/HTFormat.h')
-rw-r--r-- | WWW/Library/Implementation/HTFormat.h | 544 |
1 files changed, 0 insertions, 544 deletions
diff --git a/WWW/Library/Implementation/HTFormat.h b/WWW/Library/Implementation/HTFormat.h deleted file mode 100644 index c4bc9587..00000000 --- a/WWW/Library/Implementation/HTFormat.h +++ /dev/null @@ -1,544 +0,0 @@ -/* HTFormat: The format manager in the WWW Library - MANAGE DIFFERENT DOCUMENT FORMATS - - Here we describe the functions of the HTFormat module which handles conversion between - different data representations. (In MIME parlance, a representation is known as a - content-type. In WWW the term "format" is often used as it is shorter). - - This module is implemented by HTFormat.c. This hypertext document is used to generate - the HTFormat.h include file. Part of the WWW library. - -Preamble - - */ -#ifndef HTFORMAT_H -#define HTFORMAT_H - -#include <HTStream.h> -#include <HTAtom.h> -#include <HTList.h> -#include <HTAnchor.h> - -#ifdef USE_SOURCE_CACHE -#include <HTChunk.h> -#endif - -#ifdef USE_BZLIB -#include <bzlib.h> -#endif - -#ifdef USE_ZLIB -#include <zlib.h> -#endif - -#ifdef __cplusplus -extern "C" { -#endif -/* - - These macros (which used to be constants) define some basic internally - referenced representations. The www/xxx ones are of course not MIME - standard. - - www/source is an output format which leaves the input untouched. It is - useful for diagnostics, and for users who want to see the original, whatever - it is. - - *//* Internal ones *//* #define WWW_SOURCE HTAtom_for("www/source") *//* Whatever it was originally */ extern HTAtom *WWW_SOURCE; - /* calculated once, heavy used */ - -/* - - www/present represents the user's perception of the document. If you - convert to www/present, you present the material to the user. - - */ -#define WWW_PRESENT HTAtom_for("www/present") /* The user's perception */ - -#define WWW_DEBUG HTAtom_for("www/debug") -/* - - WWW_DEBUG represents the user's perception of debug information, for example - sent as a HTML document in a HTTP redirection message. - - */ - -/* - - The message/rfc822 format means a MIME message or a plain text message with - no MIME header. This is what is returned by an HTTP server. - - */ -#define WWW_MIME HTAtom_for("www/mime") /* A MIME message */ - -/* - For parsing only the header. - kw - */ -#define WWW_MIME_HEAD HTAtom_for("message/x-rfc822-head") - -/* - - www/print is like www/present except it represents a printed copy. - - */ -#define WWW_PRINT HTAtom_for("www/print") /* A printed copy */ - -/* - - www/unknown is a really unknown type. Some default action is appropriate. - - */ -#define WWW_UNKNOWN HTAtom_for("www/unknown") - -#ifdef DIRED_SUPPORT -/* - www/dired signals directory edit mode. -*/ -#define WWW_DIRED HTAtom_for("www/dired") -#endif - -/* - - These are regular MIME types. HTML is assumed to be added by the W3 code. - application/octet-stream was mistakenly application/binary in earlier libwww - versions (pre 2.11). - - */ -#define WWW_PLAINTEXT HTAtom_for("text/plain") -#define WWW_POSTSCRIPT HTAtom_for("application/postscript") -#define WWW_RICHTEXT HTAtom_for("application/rtf") -#define WWW_AUDIO HTAtom_for("audio/basic") -#define WWW_HTML HTAtom_for("text/html") -#define WWW_BINARY HTAtom_for("application/octet-stream") - - typedef HTAtom *HTEncoding; - -/* - * The following are values for the MIME types: - */ -#define WWW_ENC_7BIT HTAtom_for("7bit") -#define WWW_ENC_8BIT HTAtom_for("8bit") -#define WWW_ENC_BINARY HTAtom_for("binary") - -/* - * We also add - */ -#define WWW_ENC_COMPRESS HTAtom_for("compress") - -/* - * Does a string designate a real encoding, or is it just - * a "dummy" as for example 7bit, 8bit, and binary? - */ -#define IsUnityEncStr(senc) \ - ((senc)==NULL || *(senc)=='\0' || !strcmp(senc,"identity") ||\ - !strcmp(senc,"8bit") || !strcmp(senc,"binary") || !strcmp(senc,"7bit")) - -#define IsUnityEnc(enc) \ - ((enc)==NULL || (enc)==HTAtom_for("identity") ||\ - (enc)==WWW_ENC_8BIT || (enc)==WWW_ENC_BINARY || (enc)==WWW_ENC_7BIT) - -/* - -The HTPresentation and HTConverter types - - This HTPresentation structure represents a possible conversion algorithm - from one format to another. It includes a pointer to a conversion routine. - The conversion routine returns a stream to which data should be fed. See - also HTStreamStack which scans the list of registered converters and calls - one. See the initialisation module for a list of conversion routines. - - */ - typedef struct _HTPresentation HTPresentation; - - typedef HTStream *HTConverter (HTPresentation *pres, - HTParentAnchor *anchor, - HTStream *sink); - - struct _HTPresentation { - HTAtom *rep; /* representation name atomized */ - HTAtom *rep_out; /* resulting representation */ - HTConverter *converter; /* routine to gen the stream stack */ - char *command; /* MIME-format command string */ - char *testcommand; /* MIME-format test string */ - float quality; /* Between 0 (bad) and 1 (good) */ - float secs; - float secs_per_byte; - off_t maxbytes; - BOOL get_accept; /* list in "Accept:" for GET */ - int accept_opt; /* matches against LYAcceptMedia */ - }; - -/* - - The list of presentations is kept by this module. It is also scanned by - modules which want to know the set of formats supported. for example. - - */ - extern HTList *HTPresentations; - -/* - - The default presentation is used when no other is appropriate - - */ - extern HTPresentation *default_presentation; - -/* - * Options used for "Accept:" string - */ - typedef enum { - /* make the components powers of two so we can add them */ - mediaINT = 1 /* internal types predefined in HTInit.c */ - ,mediaEXT = 2 /* external types predefined in HTInit.c */ - ,mediaCFG = 4 /* types, e.g., viewers, from lynx.cfg */ - ,mediaUSR = 8 /* user's mime-types, etc. */ - ,mediaSYS = 16 /* system's mime-types, etc. */ - /* these are useful flavors for the options menu */ - ,mediaOpt1 = mediaINT - ,mediaOpt2 = mediaINT + mediaCFG - ,mediaOpt3 = mediaINT + mediaCFG + mediaUSR - ,mediaOpt4 = mediaINT + mediaCFG + mediaUSR + mediaSYS - /* this is the flavor from pre-2.8.6 */ - ,mediaALL = mediaINT + mediaEXT + mediaCFG + mediaUSR + mediaSYS - } AcceptMedia; - -/* - * Options used for "Accept-Encoding:" string - */ - typedef enum { - encodingNONE = 0 - ,encodingGZIP = 1 - ,encodingDEFLATE = 2 - ,encodingCOMPRESS = 4 - ,encodingBZIP2 = 8 - ,encodingALL = (encodingGZIP - + encodingDEFLATE - + encodingCOMPRESS - + encodingBZIP2) - } AcceptEncoding; - -/* - -HTSetPresentation: Register a system command to present a format - - ON ENTRY, - - rep is the MIME - style format name - - command is the MAILCAP - style command template - - testcommand is the MAILCAP - style testcommand template - - quality A degradation faction 0..1.0 - - secs A limit on the time user will wait (0.0 for infinity) - secs_per_byte - - maxbytes A limit on the length acceptable as input (0 infinite) - - media Used in filtering presentation types for "Accept:" - - */ - extern void HTSetPresentation(const char *representation, - const char *command, - const char *testcommand, - double quality, - double secs, - double secs_per_byte, - long int maxbytes, - AcceptMedia media - ); - -/* - -HTSetConversion: Register a converstion routine - - ON ENTRY, - - rep_in is the content-type input - - rep_out is the resulting content-type - - converter is the routine to make the stream to do it - - */ - - extern void HTSetConversion(const char *rep_in, - const char *rep_out, - HTConverter *converter, - float quality, - float secs, - float secs_per_byte, - long int maxbytes, - AcceptMedia media - ); - -/* - -HTStreamStack: Create a stack of streams - - This is the routine which actually sets up the conversion. It currently - checks only for direct conversions, but multi-stage conversions are forseen. - It takes a stream into which the output should be sent in the final format, - builds the conversion stack, and returns a stream into which the data in the - input format should be fed. The anchor is passed because hypertxet objects - load information into the anchor object which represents them. - - */ - extern HTStream *HTStreamStack(HTFormat format_in, - HTFormat format_out, - HTStream *stream_out, - HTParentAnchor *anchor); - -/* -HTReorderPresentation: put presentation near head of list - - Look up a presentation (exact match only) and, if found, reorder it to the - start of the HTPresentations list. - kw - */ - - extern void HTReorderPresentation(HTFormat format_in, - HTFormat format_out); - -/* - * Setup 'get_accept' flag to denote presentations that are not redundant, - * and will be listed in "Accept:" header. - */ - extern void HTFilterPresentations(void); - -/* - -HTStackValue: Find the cost of a filter stack - - Must return the cost of the same stack which HTStreamStack would set up. - - ON ENTRY, - - format_in The fomat of the data to be converted - - format_out The format required - - initial_value The intrinsic "value" of the data before conversion on a scale - from 0 to 1 - - length The number of bytes expected in the input format - - */ - extern float HTStackValue(HTFormat format_in, - HTFormat rep_out, - float initial_value, - long int length); - -#define NO_VALUE_FOUND -1e20 /* returned if none found */ - -/* Display the page while transfer in progress - * ------------------------------------------- - * - * Repaint the page only when necessary. - * This is a traverse call for HText_pageDispaly() - it works!. - * - */ - extern void HTDisplayPartial(void); - - extern void HTFinishDisplayPartial(void); - -/* - -HTCopy: Copy a socket to a stream - - This is used by the protocol engines to send data down a stream, typically - one which has been generated by HTStreamStack. - - */ - extern int HTCopy(HTParentAnchor *anchor, - int file_number, - void *handle, - HTStream *sink); - -/* - -HTFileCopy: Copy a file to a stream - - This is used by the protocol engines to send data down a stream, typically - one which has been generated by HTStreamStack. It is currently called by - HTParseFile - - */ - extern int HTFileCopy(FILE *fp, - HTStream *sink); - -#ifdef USE_SOURCE_CACHE -/* - -HTMemCopy: Copy a memory chunk to a stream - - This is used by the protocol engines to send data down a stream, typically - one which has been generated by HTStreamStack. It is currently called by - HTParseMem - - */ - extern int HTMemCopy(HTChunk *chunk, - HTStream *sink); -#endif - -/* - -HTCopyNoCR: Copy a socket to a stream, stripping CR characters. - - It is slower than HTCopy . - - */ - - extern void HTCopyNoCR(HTParentAnchor *anchor, - int file_number, - HTStream *sink); - -/* - -Clear input buffer and set file number - - This routine and the one below provide simple character input from sockets. - (They are left over from the older architecture and may not be used very - much.) The existence of a common routine and buffer saves memory space in - small implementations. - - */ - extern void HTInitInput(int file_number); - -/* - -Get next character from buffer - - */ - extern int interrupted_in_htgetcharacter; - extern int HTGetCharacter(void); - -/* - -HTParseSocket: Parse a socket given its format - - This routine is called by protocol modules to load an object. uses - HTStreamStack and the copy routines above. Returns HT_LOADED if successful, - <0 if not. - - */ - extern int HTParseSocket(HTFormat format_in, - HTFormat format_out, - HTParentAnchor *anchor, - int file_number, - HTStream *sink); - -/* - -HTParseFile: Parse a File through a file pointer - - This routine is called by protocols modules to load an object. uses - HTStreamStack and HTFileCopy. Returns HT_LOADED if successful, can also - return HT_PARTIAL_CONTENT, HT_NO_DATA, or other <0 for failure. - - */ - extern int HTParseFile(HTFormat format_in, - HTFormat format_out, - HTParentAnchor *anchor, - FILE *fp, - HTStream *sink); - -#ifdef USE_SOURCE_CACHE -/* - -HTParseMem: Parse a document in memory - - This routine is called by protocols modules to load an object. uses - HTStreamStack and HTMemCopy. Returns HT_LOADED if successful, can also - return <0 for failure. - - */ - extern int HTParseMem(HTFormat format_in, - HTFormat format_out, - HTParentAnchor *anchor, - HTChunk *chunk, - HTStream *sink); -#endif - -#ifdef USE_ZLIB -/* -HTParseGzFile: Parse a gzip'ed File through a file pointer - - This routine is called by protocols modules to load an object. uses - HTStreamStack and HTGzFileCopy. Returns HT_LOADED if successful, can also - return HT_PARTIAL_CONTENT, HT_NO_DATA, or other <0 for failure. - */ - extern int HTParseGzFile(HTFormat format_in, - HTFormat format_out, - HTParentAnchor *anchor, - gzFile gzfp, - HTStream *sink); - -/* -HTParseZzFile: Parse a deflate'd File through a file pointer - - This routine is called by protocols modules to load an object. uses - HTStreamStack and HTZzFileCopy. Returns HT_LOADED if successful, can also - return HT_PARTIAL_CONTENT, HT_NO_DATA, or other <0 for failure. - */ - extern int HTParseZzFile(HTFormat format_in, - HTFormat format_out, - HTParentAnchor *anchor, - FILE *zzfp, - HTStream *sink); - -#endif /* USE_ZLIB */ - -#ifdef USE_BZLIB -/* -HTParseBzFile: Parse a bzip2'ed File through a file pointer - - This routine is called by protocols modules to load an object. uses - HTStreamStack and HTGzFileCopy. Returns HT_LOADED if successful, can also - return HT_PARTIAL_CONTENT, HT_NO_DATA, or other <0 for failure. - */ - extern int HTParseBzFile(HTFormat format_in, - HTFormat format_out, - HTParentAnchor *anchor, - BZFILE * bzfp, - HTStream *sink); - -#endif /* USE_BZLIB */ - -/* - -HTNetToText: Convert Net ASCII to local representation - - This is a filter stream suitable for taking text from a socket and passing - it into a stream which expects text in the local C representation. It does - ASCII and newline conversion. As usual, pass its output stream to it when - creating it. - - */ - extern HTStream *HTNetToText(HTStream *sink); - -/* - -HTFormatInit: Set up default presentations and conversions - - These are defined in HTInit.c or HTSInit.c if these have been replaced. If - you don't call this routine, and you don't define any presentations, then - this routine will automatically be called the first time a conversion is - needed. However, if you explicitly add some conversions (eg using - HTLoadRules) then you may want also to explicitly call this to get the - defaults as well. - - */ - extern void HTFormatInit(void); - -/* - -Epilogue - - */ - extern BOOL HTOutputSource; /* Flag: shortcut parser */ - -#ifdef __cplusplus -} -#endif -#endif /* HTFORMAT_H */ |