📄 htinit.c
字号:
/* default suffix interpretation */ HTSetSuffix("*", "text/plain", "7bit", 1.0); HTSetSuffix("*.*", "text/plain", "7bit", 1.0);#ifdef EXEC_SCRIPTS /* * define these extentions for exec scripts. */#ifndef VMS /* for csh exec links */ HTSetSuffix(".csh", "application/x-csh", "8bit", 0.8); HTSetSuffix(".sh", "application/x-sh", "8bit", 0.8); HTSetSuffix(".ksh", "application/x-ksh", "8bit", 0.8);#else HTSetSuffix(".com", "application/x-VMS_script", "8bit", 0.8);#endif /* !VMS */#endif /* EXEC_SCRIPTS */ HTSetSuffix(".saveme", "application/x-Binary", "binary", 1.0); HTSetSuffix(".dump", "application/x-Binary", "binary", 1.0); HTSetSuffix(".bin", "application/x-Binary", "binary", 1.0); HTSetSuffix(".arc", "application/x-Compressed", "binary", 1.0); HTSetSuffix(".alpha-exe", "application/x-Executable", "binary", 1.0); HTSetSuffix(".alpha_exe", "application/x-Executable", "binary", 1.0); HTSetSuffix(".AXP-exe", "application/x-Executable", "binary", 1.0); HTSetSuffix(".AXP_exe", "application/x-Executable", "binary", 1.0); HTSetSuffix(".VAX-exe", "application/x-Executable", "binary", 1.0); HTSetSuffix(".VAX_exe", "application/x-Executable", "binary", 1.0); HTSetSuffix(".exe", "application/x-Executable", "binary", 1.0); HTSetSuffix(".exe.Z", "application/x-Comp. Executable", "binary", 1.0); HTSetSuffix(".Z", "application/UNIX Compressed", "binary", 1.0); HTSetSuffix(".tar_Z", "application/UNIX Compr. Tar", "binary", 1.0); HTSetSuffix(".tar.Z", "application/UNIX Compr. Tar", "binary", 1.0); HTSetSuffix("-gz", "application/GNU Compressed", "binary", 1.0); HTSetSuffix("_gz", "application/GNU Compressed", "binary", 1.0); HTSetSuffix(".gz", "application/GNU Compressed", "binary", 1.0); HTSetSuffix5(".tar.gz", "application/x-tar", "binary", "GNU Compr. Tar", 1.0); HTSetSuffix5(".tgz", "application/x-tar", "gzip", "GNU Compr. Tar", 1.0); HTSetSuffix(".src", "application/x-WAIS-source", "8bit", 1.0); HTSetSuffix(".wsrc", "application/x-WAIS-source", "8bit", 1.0); HTSetSuffix(".zip", "application/x-Zip File", "binary", 1.0); HTSetSuffix(".uu", "application/x-UUencoded", "8bit", 1.0); HTSetSuffix(".hqx", "application/x-Binhex", "8bit", 1.0); HTSetSuffix(".o", "application/x-Prog. Object", "binary", 1.0); HTSetSuffix(".a", "application/x-Prog. Library", "binary", 1.0); HTSetSuffix5(".oda", "application/oda", "binary", "ODA", 1.0); HTSetSuffix5(".pdf", "application/pdf", "binary", "PDF", 1.0); HTSetSuffix(".eps", "application/Postscript", "8bit", 1.0); HTSetSuffix(".ai", "application/Postscript", "8bit", 1.0); HTSetSuffix(".ps", "application/Postscript", "8bit", 1.0); HTSetSuffix(".rtf", "application/RTF", "8bit", 1.0); HTSetSuffix(".dvi", "application/x-DVI", "8bit", 1.0); HTSetSuffix(".hdf", "application/x-HDF", "8bit", 1.0); HTSetSuffix(".cdf", "application/x-netcdf", "8bit", 1.0); HTSetSuffix(".nc", "application/x-netcdf", "8bit", 1.0); HTSetSuffix(".latex", "application/x-Latex", "8bit", 1.0); HTSetSuffix(".tex", "application/x-Tex", "8bit", 1.0); HTSetSuffix(".texinfo", "application/x-Texinfo", "8bit", 1.0); HTSetSuffix(".texi", "application/x-Texinfo", "8bit", 1.0); HTSetSuffix(".t", "application/x-Troff", "8bit", 1.0); HTSetSuffix(".tr", "application/x-Troff", "8bit", 1.0); HTSetSuffix(".roff", "application/x-Troff", "8bit", 1.0); HTSetSuffix(".man", "application/x-Troff-man", "8bit", 1.0); HTSetSuffix(".me", "application/x-Troff-me", "8bit", 1.0); HTSetSuffix(".ms", "application/x-Troff-ms", "8bit", 1.0); HTSetSuffix(".zoo", "application/x-Zoo File", "binary", 1.0); HTSetSuffix(".bak", "application/x-VMS BAK File", "binary", 1.0); HTSetSuffix(".bkp", "application/x-VMS BAK File", "binary", 1.0); HTSetSuffix(".bck", "application/x-VMS BAK File", "binary", 1.0); HTSetSuffix(".bkp_gz", "application/x-GNU BAK File", "binary", 1.0); HTSetSuffix(".bkp-gz", "application/x-GNU BAK File", "binary", 1.0); HTSetSuffix(".bck_gz", "application/x-GNU BAK File", "binary", 1.0); HTSetSuffix(".bck-gz", "application/x-GNU BAK File", "binary", 1.0); HTSetSuffix(".bkp-Z", "application/x-Comp. BAK File", "binary", 1.0); HTSetSuffix(".bkp_Z", "application/x-Comp. BAK File", "binary", 1.0); HTSetSuffix(".bck-Z", "application/x-Comp. BAK File", "binary", 1.0); HTSetSuffix(".bck_Z", "application/x-Comp. BAK File", "binary", 1.0); HTSetSuffix(".hlb", "application/x-VMS Help Libr.", "binary", 1.0); HTSetSuffix(".olb", "application/x-VMS Obj. Libr.", "binary", 1.0); HTSetSuffix(".tlb", "application/x-VMS Text Libr.", "binary", 1.0); HTSetSuffix(".obj", "application/x-VMS Prog. Obj.", "binary", 1.0); HTSetSuffix(".decw$book", "application/x-DEC BookReader", "binary", 1.0); HTSetSuffix(".mem", "application/x-RUNOFF-MANUAL", "8bit", 1.0); HTSetSuffix(".vsd", "application/visio", "binary", 1.0); HTSetSuffix(".lha", "application/x-lha File", "binary", 1.0); HTSetSuffix(".lzh", "application/x-lzh File", "binary", 1.0); HTSetSuffix(".sea", "application/x-sea File", "binary", 1.0); HTSetSuffix(".sit", "application/x-sit File", "binary", 1.0); HTSetSuffix(".dms", "application/x-dms File", "binary", 1.0); HTSetSuffix(".iff", "application/x-iff File", "binary", 1.0); HTSetSuffix(".bcpio", "application/x-bcpio", "binary", 1.0); HTSetSuffix(".cpio", "application/x-cpio", "binary", 1.0); HTSetSuffix(".gtar", "application/x-gtar", "binary", 1.0); HTSetSuffix(".shar", "application/x-shar", "8bit", 1.0); HTSetSuffix(".share", "application/x-share", "8bit", 1.0); HTSetSuffix(".sh", "application/x-sh", "8bit", 1.0); /* xtra */ HTSetSuffix(".sv4cpio", "application/x-sv4cpio", "binary", 1.0); HTSetSuffix(".sv4crc", "application/x-sv4crc", "binary", 1.0); HTSetSuffix5(".tar", "application/x-tar", "binary", "Tar File", 1.0); HTSetSuffix(".ustar", "application/x-ustar", "binary", 1.0); HTSetSuffix(".snd", "audio/basic", "binary", 1.0); HTSetSuffix(".au", "audio/basic", "binary", 1.0); HTSetSuffix(".aifc", "audio/x-aiff", "binary", 1.0); HTSetSuffix(".aif", "audio/x-aiff", "binary", 1.0); HTSetSuffix(".aiff", "audio/x-aiff", "binary", 1.0); HTSetSuffix(".wav", "audio/x-wav", "binary", 1.0); HTSetSuffix(".midi", "audio/midi", "binary", 1.0); HTSetSuffix(".mod", "audio/mod", "binary", 1.0); HTSetSuffix(".gif", "image/gif", "binary", 1.0); HTSetSuffix(".ief", "image/ief", "binary", 1.0); HTSetSuffix(".jfif", "image/jpeg", "binary", 1.0); /* xtra */ HTSetSuffix(".jfif-tbnl", "image/jpeg", "binary", 1.0); /* xtra */ HTSetSuffix(".jpe", "image/jpeg", "binary", 1.0); HTSetSuffix(".jpg", "image/jpeg", "binary", 1.0); HTSetSuffix(".jpeg", "image/jpeg", "binary", 1.0); HTSetSuffix(".tif", "image/tiff", "binary", 1.0); HTSetSuffix(".tiff", "image/tiff", "binary", 1.0); HTSetSuffix(".ham", "image/ham", "binary", 1.0); HTSetSuffix(".ras", "image/x-cmu-rast", "binary", 1.0); HTSetSuffix(".pnm", "image/x-portable-anymap", "binary", 1.0); HTSetSuffix(".pbm", "image/x-portable-bitmap", "binary", 1.0); HTSetSuffix(".pgm", "image/x-portable-graymap", "binary", 1.0); HTSetSuffix(".ppm", "image/x-portable-pixmap", "binary", 1.0); HTSetSuffix(".png", "image/png", "binary", 1.0); HTSetSuffix(".rgb", "image/x-rgb", "binary", 1.0); HTSetSuffix(".xbm", "image/x-xbitmap", "binary", 1.0); HTSetSuffix(".xpm", "image/x-xpixmap", "binary", 1.0); HTSetSuffix(".xwd", "image/x-xwindowdump", "binary", 1.0); HTSetSuffix(".rtx", "text/richtext", "8bit", 1.0); HTSetSuffix(".tsv", "text/tab-separated-values", "8bit", 1.0); HTSetSuffix(".etx", "text/x-setext", "8bit", 1.0); HTSetSuffix(".mpg", "video/mpeg", "binary", 1.0); HTSetSuffix(".mpe", "video/mpeg", "binary", 1.0); HTSetSuffix(".mpeg", "video/mpeg", "binary", 1.0); HTSetSuffix(".mov", "video/quicktime", "binary", 1.0); HTSetSuffix(".qt", "video/quicktime", "binary", 1.0); HTSetSuffix(".avi", "video/x-msvideo", "binary", 1.0); HTSetSuffix(".movie", "video/x-sgi-movie", "binary", 1.0); HTSetSuffix(".mv", "video/x-sgi-movie", "binary", 1.0); HTSetSuffix(".mime", "message/rfc822", "8bit", 1.0); HTSetSuffix(".c", "text/plain", "8bit", 1.0); HTSetSuffix(".cc", "text/plain", "8bit", 1.0); HTSetSuffix(".c++", "text/plain", "8bit", 1.0); HTSetSuffix(".h", "text/plain", "8bit", 1.0); HTSetSuffix(".pl", "text/plain", "8bit", 1.0); HTSetSuffix(".text", "text/plain", "8bit", 1.0); HTSetSuffix(".txt", "text/plain", "8bit", 1.0); HTSetSuffix(".html3", "text/html", "8bit", 1.0); HTSetSuffix(".ht3", "text/html", "8bit", 1.0); HTSetSuffix(".phtml", "text/html", "8bit", 1.0); HTSetSuffix(".shtml", "text/html", "8bit", 1.0); HTSetSuffix(".htmlx", "text/html", "8bit", 1.0); HTSetSuffix(".htm", "text/html", "8bit", 1.0); HTSetSuffix(".html", "text/html", "8bit", 1.0); /* These should override the default extensions as necessary. */ HTLoadExtensionsConfigFile(global_extension_map); if ((fp = fopen(personal_extension_map,"r")) != NULL) { fclose(fp); /* These should override everything else. */ HTLoadExtensionsConfigFile(personal_extension_map); } else { char buffer[256];#ifdef VMS sprintf(buffer, "sys$login:%s", personal_extension_map);#else sprintf(buffer, "%s/%s", (Home_Dir() ? Home_Dir() : ""), personal_extension_map);#endif /* VMS */ /* These should override everything else. */ HTLoadExtensionsConfigFile(buffer); }}/* -------------------- Extension config file reading --------------------- *//* * The following is lifted from NCSA httpd 1.0a1, by Rob McCool; * NCSA httpd is in the public domain, as is this code. * * Modified Oct 97 - KW */#define MAX_STRING_LEN 256PRIVATE int HTGetLine ARGS3( char *, s, int, n, FILE *, f){ register int i = 0, r; if (!f) return(1); while (1) { r = fgetc(f); s[i] = (char)r; if (s[i] == CR) { r = fgetc(f); if (r == LF) s[i] = r; else if (r != EOF) ungetc(r, f); } if ((r == EOF) || (s[i] == LF) || (s[i] == CR) || (i == (n-1))) { s[i] = '\0'; return (feof(f) ? 1 : 0); } ++i; }}PRIVATE void HTGetWord ARGS4( char *, word, char *, line, char , stop, char , stop2){ int x = 0, y; for (x = 0; line[x] && line[x] != stop && line[x] != stop2; x++) { word[x] = line[x]; } word[x] = '\0'; if (line[x]) ++x; y=0; while ((line[y++] = line[x++])) ; return;}PRIVATE int HTLoadExtensionsConfigFile ARGS1( char *, fn){ char l[MAX_STRING_LEN],w[MAX_STRING_LEN],*ct; FILE *f; int x, count = 0; if (TRACE) fprintf(stderr, "HTLoadExtensionsConfigFile: Loading file '%s'.\n", fn); if ((f = fopen(fn,"r")) == NULL) { if (TRACE) fprintf(stderr, "HTLoadExtensionsConfigFile: Could not open '%s'.\n", fn); return count; } while (!(HTGetLine(l,MAX_STRING_LEN,f))) { HTGetWord(w, l, ' ', '\t'); if (l[0] == '\0' || w[0] == '#') continue; ct = (char *)malloc(sizeof(char) * (strlen(w) + 1)); if (!ct) outofmem(__FILE__, "HTLoadExtensionsConfigFile"); strcpy(ct,w); for (x = 0; ct[x]; x++) ct[x] = TOLOWER(ct[x]); while(l[0]) { HTGetWord(w, l, ' ', '\t'); if (w[0] && (w[0] != ' ')) { char *ext = (char *)malloc(sizeof(char) * (strlen(w)+1+1)); if (!ct) outofmem(__FILE__, "HTLoadExtensionsConfigFile"); for (x = 0; w[x]; x++) ext[x+1] = TOLOWER(w[x]); ext[0] = '.'; ext[strlen(w)+1] = '\0'; if (TRACE) { fprintf (stderr, "SETTING SUFFIX '%s' to '%s'.\n", ext, ct); } if (strstr(ct, "tex") != NULL || strstr(ct, "postscript") != NULL || strstr(ct, "sh") != NULL || strstr(ct, "troff") != NULL || strstr(ct, "rtf") != NULL) HTSetSuffix (ext, ct, "8bit", 1.0); else HTSetSuffix (ext, ct, "binary", 1.0); count++; FREE(ext); } } FREE(ct); } fclose(f); return count;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -