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