Annotation of libwww/Library/src/HTInit.c, revision 2.42
2.20 frystyk 1: /* HTInit.c
2: ** CONFIGURATION-SPECIFIC INITIALIALIZATION
3: **
2.25 frystyk 4: ** (c) COPYRIGHT MIT 1995.
2.20 frystyk 5: ** Please first read the full copyright statement in the file COPYRIGH.
2.9 duns 6: **
2.20 frystyk 7: ** Define a basic set of suffixes and presentations
2.1 timbl 8: */
9:
2.22 frystyk 10: /* Library include files */
11: #include "tcp.h"
12: #include "HTUtils.h"
2.24 frystyk 13: #include "HTFormat.h"
14: #include "HTList.h"
15: #include "HTBind.h"
2.28 frystyk 16: #include "HTProt.h"
2.22 frystyk 17: #include "HTInit.h" /* Implemented here */
2.1 timbl 18:
2.29 frystyk 19: /* ------------------------------------------------------------------------- */
20:
2.23 frystyk 21: /* BINDINGS BETWEEN A SOURCE MEDIA TYPE AND A DEST MEDIA TYPE (CONVERSION)
22: ** ----------------------------------------------------------------------
23: ** Not done automaticly - must be done by application!
24: */
2.38 frystyk 25: PUBLIC void HTConverterInit (HTList * c)
2.23 frystyk 26: {
2.42 ! frystyk 27: HTConversion_add(c,"message/rfc822", "*/*", HTMIMEConvert, 1.0, 0.0, 0.0);
! 28: HTConversion_add(c,"multipart/*", "*/*", HTBoundary, 1.0, 0.0, 0.0);
! 29:
! 30: #if 0
2.31 frystyk 31: /*
32: ** This set of converters uses the HTML/HText interface.
2.34 frystyk 33: ** If you do not want this interface then replace them!
2.31 frystyk 34: */
2.38 frystyk 35: HTConversion_add(c,"text/html", "www/present", HTMLPresent, 1.0, 0.0, 0.0);
36: HTConversion_add(c,"text/plain", "www/present", HTPlainPresent, 1.0, 0.0, 0.0);
37: HTConversion_add(c,"text/html", "text/x-c", HTMLToC, 0.5, 0.0, 0.0);
38: HTConversion_add(c,"text/html", "text/plain", HTMLToPlain, 0.5, 0.0, 0.0);
39: HTConversion_add(c,"text/html", "text/latex", HTMLToTeX, 1.0, 0.0, 0.0);
2.31 frystyk 40:
41: /*
42: ** These are converters that converts to something other than www/present,
43: ** that is not directly outputting someting to the user on the screen
44: */
2.38 frystyk 45: HTConversion_add(c,"text/plain", "text/html", HTPlainToHTML, 1.0, 0.0, 0.0);
46: HTConversion_add(c,"application/x-wais-source","*/*", HTWSRCConvert, 1.0, 0.0, 0.0);
2.39 frystyk 47:
48: /*
49: ** The following conversions are converting ASCII output from various
50: ** protocols to HTML objects.
51: */
2.42 ! frystyk 52: #if 0
! 53: HTConversion_add(c,"text/x-gopher", "www/present", HTGopherMenu, 1.0, 0.0, 0.0);
! 54: HTConversion_add(c,"text/x-cso", "www/present", HTGopherCSO, 1.0, 0.0, 0.0);
! 55: #endif
2.39 frystyk 56: HTConversion_add(c,"text/x-nntp-list", "www/present", HTNewsList, 1.0, 0.0, 0.0);
57: HTConversion_add(c,"text/x-nntp-over", "www/present", HTNewsGroup, 1.0, 0.0, 0.0);
2.42 ! frystyk 58: #endif
2.31 frystyk 59: /*
2.34 frystyk 60: ** This dumps all other formats to local disk without any further
2.31 frystyk 61: ** action taken
62: */
2.38 frystyk 63: HTConversion_add(c,"*/*", "www/present", HTSaveLocally, 0.3, 0.0, 0.0);
2.23 frystyk 64: }
65:
66: /* BINDINGS BETWEEN MEDIA TYPES AND EXTERNAL VIEWERS/PRESENTERS
67: ** ------------------------------------------------------------
2.42 ! frystyk 68: ** Not done automaticly - must be done by application!
2.23 frystyk 69: ** The data objects are stored in temporary files before the external
70: ** program is called
71: */
2.38 frystyk 72: PUBLIC void HTPresenterInit (HTList * c)
2.1 timbl 73: {
74: #ifdef NeXT
2.38 frystyk 75: HTPresentation_add(c,"application/postscript", "open %s", NULL, 1.0, 2.0, 0.0);
2.10 luotonen 76: /* The following needs the GIF previewer -- you might not have it. */
2.19 howcome 77:
2.38 frystyk 78: HTPresentation_add(c,"image/gif", "open %s", NULL, 0.3, 2.0, 0.0);
79: HTPresentation_add(c,"image/x-tiff", "open %s", NULL, 1.0, 2.0, 0.0);
2.41 frystyk 80: HTPresentation_add(c,"audio/basic", "open %s", NULL, 1.0, 2.0, 0.0);
81: HTPresentation_add(c,"*/*", "open %s", NULL, 0.05, 0.0, 0.0);
2.1 timbl 82: #else
2.10 luotonen 83: if (getenv("DISPLAY")) { /* Must have X11 */
2.38 frystyk 84: HTPresentation_add(c,"application/postscript", "ghostview %s", NULL, 1.0, 3.0, 0.0);
2.41 frystyk 85: HTPresentation_add(c,"image/gif", "xv %s", NULL, 1.0, 3.0, 0.0);
2.38 frystyk 86: HTPresentation_add(c,"image/x-tiff", "xv %s", NULL, 1.0, 3.0, 0.0);
87: HTPresentation_add(c,"image/jpeg", "xv %s", NULL, 1.0, 3.0, 0.0);
88: HTPresentation_add(c,"image/x-png", "xv %s", NULL, 1.0, 3.0, 0.0);
2.10 luotonen 89: }
2.1 timbl 90: #endif
2.15 frystyk 91: }
92:
93:
2.23 frystyk 94: /* PRESENTERS AND CONVERTERS AT THE SAME TIME
95: ** ------------------------------------------
2.42 ! frystyk 96: ** Not done automaticly - must be done by application!
2.23 frystyk 97: ** This function is only defined in order to preserve backward
98: ** compatibility.
99: */
2.38 frystyk 100: PUBLIC void HTFormatInit (HTList * c)
2.15 frystyk 101: {
2.23 frystyk 102: HTConverterInit(c);
103: HTPresenterInit(c);
104:
2.1 timbl 105: }
106:
2.24 frystyk 107: /* REGISTER ALL KNOWN PROTOCOLS IN THE LIBRARY
108: ** -------------------------------------------
2.42 ! frystyk 109: ** Not done automaticly - must be done by application!
2.24 frystyk 110: */
2.33 frystyk 111: PUBLIC void HTAccessInit (void)
2.24 frystyk 112: {
113: #ifndef DECNET
2.34 frystyk 114: HTProtocol_add("ftp", NO, HTLoadFTP);
2.37 frystyk 115: HTProtocol_add("nntp", NO, HTLoadNews);
116: HTProtocol_add("news", NO, HTLoadNews);
2.33 frystyk 117: HTProtocol_add("gopher", NO, HTLoadGopher);
2.24 frystyk 118: #ifdef HT_DIRECT_WAIS
2.33 frystyk 119: HTProtocol_add("wais", YES, HTLoadWAIS);
2.24 frystyk 120: #endif
121: #endif /* DECNET */
122:
2.33 frystyk 123: HTProtocol_add("http", NO, HTLoadHTTP);
124: HTProtocol_add("file", NO, HTLoadFile);
125: HTProtocol_add("telnet", YES, HTLoadTelnet);
126: HTProtocol_add("tn3270", YES, HTLoadTelnet);
127: HTProtocol_add("rlogin", YES, HTLoadTelnet);
2.24 frystyk 128: }
2.1 timbl 129:
2.23 frystyk 130: /* BINDINGS BETWEEN FILE EXTENSIONS AND MEDIA TYPES
131: ** ------------------------------------------------
2.42 ! frystyk 132: ** Not done automaticly - must be done by application!
2.23 frystyk 133: ** The LAST suffix for a type is that used for temporary files of that
134: ** type. The quality is an apriori bias as to whether the file should be
2.1 timbl 135: ** used. Not that different suffixes can be used to represent files
136: ** which are of the same format but are originals or regenerated,
2.24 frystyk 137: ** with different values. Called from HTLibraryInit().
2.1 timbl 138: */
2.38 frystyk 139: PUBLIC void HTFileInit (void)
2.10 luotonen 140: {
2.24 frystyk 141: /* Suffix Content-Type Encoding Lang Quality */
2.12 luotonen 142:
2.41 frystyk 143: HTBind_add("mime", "message/rfc822", "8bit", NULL, 1.0); /* Internal -- MIME is */
2.24 frystyk 144: /* not recursive */
2.40 frystyk 145: HTBind_add("bin", "application/octet-stream", "binary", NULL, 1.0); /* Uninterpreted binary */
146: HTBind_add("oda", "application/oda", "binary", NULL, 1.0);
147: HTBind_add("pdf", "application/pdf", "binary", NULL, 1.0);
148: HTBind_add("ai", "application/postscript", "8bit", NULL, 0.5); /* Adobe Illustrator */
149: HTBind_add("PS", "application/postscript", "8bit", NULL, 0.8); /* PostScript */
150: HTBind_add("eps", "application/postscript", "8bit", NULL, 0.8);
151: HTBind_add("ps", "application/postscript", "8bit", NULL, 0.8);
152: HTBind_add("gtar", "application/x-gtar", "binary", NULL, 1.0); /* Gnu tar */
153: HTBind_add("rtf", "application/x-rtf", "7bit", NULL, 1.0); /* RTF */
154: HTBind_add("csh", "application/x-csh", "7bit", NULL, 0.5); /* C-shell script */
155: HTBind_add("dvi", "application/x-dvi", "binary", NULL, 1.0); /* TeX DVI */
156: HTBind_add("hdf", "application/x-hdf", "binary", NULL, 1.0); /* NCSA HDF data file */
157: HTBind_add("latex", "application/x-latex", "8bit", NULL, 1.0); /* LaTeX source */
158: HTBind_add("nc", "application/x-netcdf", "binary", NULL, 1.0); /* Unidata netCDF data */
159: HTBind_add("cdf", "application/x-netcdf", "binary", NULL, 1.0);
160: HTBind_add("sh", "application/x-sh", "7bit", NULL, 0.5); /* Shell-script */
161: HTBind_add("tar", "application/x-tar", "binary", NULL, 1.0); /* 4.3BSD tar */
162: HTBind_add("tcl", "application/x-tcl", "7bit", NULL, 0.5); /* TCL-script */
163: HTBind_add("tex", "application/x-tex", "8bit", NULL, 1.0); /* TeX source */
164: HTBind_add("texi", "application/x-texinfo", "7bit", NULL, 1.0); /* Texinfo */
165: HTBind_add("texinfo","application/x-texinfo", "7bit", NULL, 1.0);
166: HTBind_add("t", "application/x-troff", "7bit", NULL, 0.5); /* Troff */
167: HTBind_add("roff", "application/x-troff", "7bit", NULL, 0.5);
168: HTBind_add("tr", "application/x-troff", "7bit", NULL, 0.5);
169: HTBind_add("man", "application/x-troff-man", "7bit", NULL, 0.5); /* Troff with man macros*/
170: HTBind_add("me", "application/x-troff-me", "7bit", NULL, 0.5); /* Troff with me macros */
171: HTBind_add("ms", "application/x-troff-ms", "7bit", NULL, 0.5); /* Troff with ms macros */
172: HTBind_add("src", "application/x-wais-source", "7bit", NULL, 1.0); /* WAIS source */
173: HTBind_add("bcpio", "application/x-bcpio", "binary", NULL, 1.0); /* Old binary CPIO */
174: HTBind_add("cpio", "application/x-cpio", "binary", NULL, 1.0); /* POSIX CPIO */
175: HTBind_add("shar", "application/x-shar", "8bit", NULL, 1.0); /* Shell archive */
176: HTBind_add("sv4cpio","application/x-sv4cpio", "binary", NULL, 1.0); /* SVR4 CPIO */
177: HTBind_add("sv4crc", "application/x-sv4crc", "binary", NULL, 1.0); /* SVR4 CPIO with CRC */
178: HTBind_add("ustar", "application/x-ustar", "binary", NULL, 1.0); /* POSIX tar */
179: HTBind_add("snd", "audio/basic", "binary", NULL, 1.0); /* Audio */
180: HTBind_add("au", "audio/basic", "binary", NULL, 1.0);
181: HTBind_add("aiff", "audio/x-aiff", "binary", NULL, 1.0);
182: HTBind_add("aifc", "audio/x-aiff", "binary", NULL, 1.0);
183: HTBind_add("aif", "audio/x-aiff", "binary", NULL, 1.0);
184: HTBind_add("wav", "audio/x-wav", "binary", NULL, 1.0); /* Windows+ WAVE format */
185: HTBind_add("gif", "image/gif", "binary", NULL, 1.0); /* GIF */
186: HTBind_add("png", "image/x-png", "binary", NULL, 1.0); /* PNG */
187: HTBind_add("ief", "image/ief", "binary", NULL, 1.0); /* Image Exchange fmt */
188: HTBind_add("jpg", "image/jpeg", "binary", NULL, 1.0); /* JPEG */
189: HTBind_add("JPG", "image/jpeg", "binary", NULL, 1.0);
190: HTBind_add("JPE", "image/jpeg", "binary", NULL, 1.0);
191: HTBind_add("jpe", "image/jpeg", "binary", NULL, 1.0);
192: HTBind_add("JPEG", "image/jpeg", "binary", NULL, 1.0);
193: HTBind_add("jpeg", "image/jpeg", "binary", NULL, 1.0);
194: HTBind_add("tif", "image/tiff", "binary", NULL, 1.0); /* TIFF */
195: HTBind_add("tiff", "image/tiff", "binary", NULL, 1.0);
196: HTBind_add("ras", "image/cmu-raster", "binary", NULL, 1.0);
197: HTBind_add("pnm", "image/x-portable-anymap", "binary", NULL, 1.0); /* PBM Anymap format */
198: HTBind_add("pbm", "image/x-portable-bitmap", "binary", NULL, 1.0); /* PBM Bitmap format */
199: HTBind_add("pgm", "image/x-portable-graymap", "binary", NULL, 1.0); /* PBM Graymap format */
200: HTBind_add("ppm", "image/x-portable-pixmap", "binary", NULL, 1.0); /* PBM Pixmap format */
201: HTBind_add("rgb", "image/x-rgb", "binary", NULL, 1.0);
202: HTBind_add("xbm", "image/x-xbitmap", "binary", NULL, 1.0); /* X bitmap */
203: HTBind_add("xpm", "image/x-xpixmap", "binary", NULL, 1.0); /* X pixmap format */
204: HTBind_add("xwd", "image/x-xwindowdump", "binary", NULL, 1.0); /* X window dump (xwd) */
205: HTBind_add("html", "text/html", "8bit", NULL, 1.0); /* HTML */
206: HTBind_add("c", "text/plain", "7bit", NULL, 0.5); /* C source */
207: HTBind_add("h", "text/plain", "7bit", NULL, 0.5); /* C headers */
208: HTBind_add("C", "text/plain", "7bit", NULL, 0.5); /* C++ source */
209: HTBind_add("cc", "text/plain", "7bit", NULL, 0.5); /* C++ source */
210: HTBind_add("hh", "text/plain", "7bit", NULL, 0.5); /* C++ headers */
211: HTBind_add("m", "text/plain", "7bit", NULL, 0.5); /* Objective-C source */
212: HTBind_add("f90", "text/plain", "7bit", NULL, 0.5); /* Fortran 90 source */
213: HTBind_add("txt", "text/plain", "7bit", NULL, 0.5); /* Plain text */
214: HTBind_add("rtx", "text/richtext", "7bit", NULL, 1.0); /* MIME Richtext format */
215: HTBind_add("tsv", "text/tab-separated-values", "7bit", NULL, 1.0); /* Tab-separated values */
216: HTBind_add("etx", "text/x-setext", "7bit", NULL, 0.9); /* Struct Enchanced Txt */
217: HTBind_add("MPG", "video/mpeg", "binary", NULL, 1.0); /* MPEG */
218: HTBind_add("mpg", "video/mpeg", "binary", NULL, 1.0);
219: HTBind_add("MPE", "video/mpeg", "binary", NULL, 1.0);
220: HTBind_add("mpe", "video/mpeg", "binary", NULL, 1.0);
221: HTBind_add("MPEG", "video/mpeg", "binary", NULL, 1.0);
222: HTBind_add("mpeg", "video/mpeg", "binary", NULL, 1.0);
223: HTBind_add("qt", "video/quicktime", "binary", NULL, 1.0); /* QuickTime */
224: HTBind_add("mov", "video/quicktime", "binary", NULL, 1.0);
225: HTBind_add("avi", "video/x-msvideo", "binary", NULL, 1.0); /* MS Video for Windows */
226: HTBind_add("movie", "video/x-sgi-movie", "binary", NULL, 1.0); /* SGI "moviepalyer" */
2.24 frystyk 227:
2.40 frystyk 228: HTBind_add("zip", NULL, "zip", NULL, 1.0); /* PKZIP */
229: HTBind_add("Z", NULL, "compress", NULL, 1.0); /* Compressed data */
230: HTBind_add("gz", NULL, "gzip", NULL, 1.0); /* Gnu Compressed data */
2.1 timbl 231:
2.40 frystyk 232: HTBind_add("*.*", "www/unknown", "binary", NULL, 0.1); /* Unknown suffix */
233: HTBind_add("*", "www/unknown", "7bit", NULL, 0.5); /* No suffix */
2.1 timbl 234: }
235:
Webmaster