Annotation of libwww/Library/src/HTBind.html, revision 2.1
2.1 ! frystyk 1: <HTML>
! 2: <HEAD>
! 3: <TITLE>File Suffix Bind Manager</TITLE>
! 4: </HEAD>
! 5: <BODY>
! 6:
! 7: <H1>File Suffix Bind Manager</H1>
! 8:
! 9: <PRE>
! 10: /*
! 11: ** (c) COPYRIGHT MIT 1995.
! 12: ** Please first read the full copyright statement in the file COPYRIGH.
! 13: */
! 14: </PRE>
! 15:
! 16: This module sets up the binding between a file Bind and a media type,
! 17: language, encoding etc. In a client application the Binds are used in
! 18: protocols that does not support media types etc., like FTP, and in
! 19: server applications they are used to make the bindings between the
! 20: server and the local file store that the server can serve to the rest
! 21: of the world (well almost). The <A HREF="HTFormat.html">HTFormat
! 22: module</A> holds this information against the accept headers received
! 23: in a request and uses if for format negotiation. All the binding
! 24: management can all be replace by a database interface. <P>
! 25:
! 26: This module is implemented by <A HREF="HTBind.c">HTBind.c</A>, and it
! 27: is a part of the <A
! 28: HREF="http://www.w3.org/hypertext/WWW/Library/User/Guide/Guide.html">
! 29: Library of Common Code</A>.
! 30:
! 31: <PRE>
! 32: #ifndef HTBIND_H
! 33: #define HTBIND_H
! 34:
! 35: #include "HTFormat.h"
! 36: #include "HTAnchor.h"
! 37: </PRE>
! 38:
! 39: <H2>Initialization of the Module</H2>
! 40:
! 41: These functions must be called on startup and termination of the
! 42: application. This is done automatically by <A
! 43: HREF="HTAccess.html#Library">HTLibInit() and HTLibTerminate()</A>.
! 44:
! 45: <PRE>
! 46: extern BOOL HTBind_init NOPARAMS;
! 47: extern BOOL HTBind_deleteAll NOPARAMS;
! 48: </PRE>
! 49:
! 50: <H2>Case Sensitivity</H2>
! 51:
! 52: Should the search for suffixes be case sensitive or not? The default
! 53: value is <EM>case sensitive</EM>.
! 54:
! 55: <PRE>
! 56: extern void HTBind_setCaseSensitive PARAMS((BOOL sensitive));
! 57: </PRE>
! 58:
! 59: <H2>Suffix Delimiters</H2>
! 60:
! 61: Change the set of suffix delimiters. The default is a platform
! 62: dependent set defined in the <A HREF="tcp.html">tcp module</A>.
! 63:
! 64: <PRE>
! 65: extern CONST char *HTBind_getDelimiters NOPARAMS;
! 66: extern void HTBind_setDelimiters PARAMS((CONST char * new_suffixes));
! 67: </PRE>
! 68:
! 69: <H2>Set up Bindings Associated with a File Suffix</H2>
! 70:
! 71: There are three types of bindings:
! 72:
! 73: <UL>
! 74: <LI>Content Type (media type)
! 75: <LI>Language
! 76: <LI>Content Encoding
! 77: </UL>
! 78:
! 79: And the associated set of methods is defined as:
! 80:
! 81: <PRE>
! 82: extern BOOL HTBind_setBinding PARAMS((CONST char * suffix,
! 83: CONST char * representation,
! 84: CONST char * encoding,
! 85: CONST char * language,
! 86: double value));
! 87:
! 88: extern BOOL HTBind_setType PARAMS((CONST char * suffix,
! 89: CONST char * encoding,
! 90: double value));
! 91:
! 92: extern BOOL HTBind_setEncoding PARAMS((CONST char * suffix,
! 93: CONST char * encoding,
! 94: double value));
! 95:
! 96: extern BOOL HTBind_setLanguage PARAMS((CONST char * suffix,
! 97: CONST char * language,
! 98: double value));
! 99: </PRE>
! 100:
! 101: The first method is a "super" method for binding information to a file
! 102: suffic. Any of the string values can be <CODE>NULL</CODE>. If filename
! 103: suffix is already defined its previous definition is overridden or
! 104: modified. For example, a <CODE>HTBind_setType</CODE> and
! 105: <CODE>HTBind_setEncoding</CODE> can be called with the same suffix.<P>
! 106:
! 107: Calling this with suffix set to "*" will set the default
! 108: representation. Calling this with suffix set to "*.*" will set the
! 109: default representation for unknown suffix files which contain a "." <P>
! 110:
! 111: <B>NOTE:</B> The suffixes <EM>can</EM> contain characters that must be
! 112: escaped in a URL. However, they should <EM>not</EM> be encoded when
! 113: parsed as the <CODE>suffix</CODE> parameter.
! 114:
! 115: <H2>Determine a suitable suffix</H2>
! 116:
! 117: Use the set of bindings to find a suitable suffix (or index) for a
! 118: certain combination of language, media type and encoding given in the
! 119: anchor. Returns a pointer to a suitable suffix string that must be freed
! 120: by the caller. If more than one suffix is found they are all
! 121: concatenated. If no suffix is found, NULL is returned.
! 122:
! 123: <PRE>
! 124: extern CONST char * HTBind_getSuffix PARAMS((HTParentAnchor * anchor));
! 125: </PRE>
! 126:
! 127:
! 128: <H2>Determine the content of an Anchor</H2>
! 129:
! 130: Use the set of bindings to find the combination of language, media
! 131: type and encoding of a given anchor. If more than one suffix is found
! 132: they are all searched. The last suffix has highest priority, the first
! 133: one lowest. Returns the anchor object with the representations
! 134: found. See also <CODE>HTBind_getFormat</CODE>
! 135:
! 136: <PRE>
! 137: extern BOOL HTBind_getBindings PARAMS((HTParentAnchor * anchor));
! 138: </PRE>
! 139:
! 140: <H2>Determine the content of File</H2>
! 141:
! 142: Use the set of bindings to find the combination of language, media
! 143: type and encoding of a given anchor. If more than one suffix is found
! 144: they are all searched. The last suffix has highest priority, the first
! 145: one lowest. Returns the format, encoding, and language found. See also
! 146: <CODE>HTBind_getBindings</CODE>.
! 147:
! 148: <PRE>
! 149: extern BOOL HTBind_getFormat PARAMS((CONST char * filename,
! 150: HTFormat * format,
! 151: HTEncoding * encoding,
! 152: HTLanguage * language,
! 153: double * quality));
! 154: </PRE>
! 155:
! 156: <H2>Multi Format Management</H2>
! 157:
! 158: Use the set of bindings to find the combination of language, media
! 159: type and encoding of a given anchor. If more than one suffix is found
! 160: they are all searched. The last suffix has highest priority, the first
! 161: one lowest. Returns the format, encoding, and language found. See also
! 162: <CODE>HTBind_getBindings</CODE>, and <CODE>HTBind_getFormat</CODE>.
! 163:
! 164: <PRE>
! 165: #define MULTI_SUFFIX ".multi" /* Extension for scanning formats */
! 166: #define MAX_SUFF 15 /* Maximum number of suffixes for a file */
! 167:
! 168: extern HTContentDescription * HTBind_getDescription PARAMS((char * file));
! 169: </PRE>
! 170:
! 171: End of declaration module
! 172:
! 173: <PRE>
! 174: #endif /* HTBIND_H */
! 175: </PRE>
! 176:
! 177: </BODY>
! 178: </HTML>
Webmaster