📄 htfile.h
字号:
/* File access in libwww** FILE ACCESS**** These are routines for local file access used by WWW browsers and servers.** Implemented by HTFile.c.**** If the file is not a local file, then we pass it on to HTFTP in case it** can be reached by FTP.*/#ifndef HTFILE_H#define HTFILE_H#include <HTFormat.h>#include <HTAccess.h>#ifndef HTML_H#include <HTML.h> /* SCW */#endif /* HTML_H *//*** Controlling globals**** These flags control how directories and files are represented as** hypertext, and are typically set by the application from command** line options, etc.*/extern int HTDirAccess; /* Directory access level */#define HT_DIR_FORBID 0 /* Altogether forbidden */#define HT_DIR_SELECTIVE 1 /* If HT_DIR_ENABLE_FILE exists */#define HT_DIR_OK 2 /* Any accesible directory */#define HT_DIR_ENABLE_FILE ".www_browsable" /* If exists, can browse */extern int HTDirReadme; /* Include readme files in listing? */ /* Values: */#define HT_DIR_README_NONE 0 /* No */#define HT_DIR_README_TOP 1 /* Yes, first */#define HT_DIR_README_BOTTOM 2 /* Yes, at the end */#define HT_DIR_README_FILE "README"/*** Convert filenames between local and WWW formats*/extern char * HTURLPath_toFile PARAMS((CONST char * name, BOOL expand_all));extern char * HTnameOfFile_WWW PARAMS((CONST char * name, BOOL WWW_prefix, BOOL expand_all));#define HTLocalName(name) HTnameOfFile_WWW(name,TRUE,TRUE)#define HTfullURL_toFile(name) HTnameOfFile_WWW(name,FALSE,TRUE)#define HTpartURL_toFile(name) HTnameOfFile_WWW(name,FALSE,FALSE)/*** Make a WWW name from a full local path name*/extern char * WWW_nameOfFile PARAMS((CONST char * name));/*** Generate the name of a cache file*/extern char * HTCacheFileName PARAMS((CONST char * name));/*** Output directory titles**** This is (like the next one) used by HTFTP. It is common code to generate** the title and heading 1 and the parent directory link for any anchor.**** changed to return TRUE if parent directory link was generated,** FALSE otherwise - KW*/extern BOOL HTDirTitles PARAMS(( HTStructured * target, HTAnchor * anchor, BOOL tildeIsTop));/*** Check existence.*/extern int HTStat PARAMS(( CONST char * filename, struct stat * data));/* Load a document.** ----------------*/extern int HTLoadFile PARAMS(( CONST char * addr, HTParentAnchor * anchor, HTFormat format_out, HTStream * sink));/*** Output a directory entry**** This is used by HTFTP.c for example -- it is a common routine for** generating a linked directory entry.*/extern void HTDirEntry PARAMS(( HTStructured * target, /* in which to put the linked text */ CONST char * tail, /* last part of directory name */ CONST char * entry)); /* name of this entry *//*** HTSetSuffix: Define the representation for a file suffix**** This defines a mapping between local file suffixes and file content** types and encodings.**** ON ENTRY,**** suffix includes the "." if that is important (normally, yes!)**** representation is MIME-style content-type**** encoding is MIME-style content-transfer-encoding** (8bit, 7bit, etc) or HTTP-style content-encoding** (gzip, compress etc.)**** quality an a priori judgement of the quality of such files** (0.0..1.0)**** HTSetSuffix5 has one more parameter for a short description of the type** which is otherwise derived from the representation:**** desc is a short textual description, or NULL**** Examples: HTSetSuffix(".ps", "application/postscript", "8bit", 1.0);** Examples: HTSetSuffix(".psz", "application/postscript", "gzip", 1.0);** A MIME type could also indicate a non-trivial encoding on its own** ("application/x-compressed-tar"), but in that case don't use enconding** to also indicate it but use "binary" etc.*/extern void HTSetSuffix5 PARAMS(( CONST char * suffix, CONST char * representation, CONST char * encoding, CONST char * desc, double quality));#define HTSetSuffix(suff,rep,enc,q) HTSetSuffix5(suff, rep, enc, NULL, q)/*** HTFileFormat: Get Representation and Encoding from file name.**** ON EXIT,**** return The represntation it imagines the file is in.**** *pEncoding The encoding (binary, 7bit, etc). See HTSetSuffix.*/extern HTFormat HTFileFormat PARAMS(( CONST char * filename, HTAtom ** pEncoding, CONST char ** pDesc));/*** HTCharsetFormat: Revise the file format in relation to the Lynx charset.**** This checks the format associated with an anchor for** for an extended MIME Content-Type, and if a charset is** indicated, sets Lynx up for proper handling in relation** to the currently selected character set. - FM*/extern HTFormat HTCharsetFormat PARAMS(( HTFormat format, HTParentAnchor * anchor, int default_LYhndl));/* Get various pieces of meta info from file name.** -----------------------------------------------**** LYGetFileInfo fills in information that can be determined without** an actual (new) access to the filesystem, based on current suffix** and character set configuration. If the file has been loaded and** parsed before (with the same URL generated here!) and the anchor** is still around, some results may be influenced by that (in** particular, charset info from a META tag - this is not actually** tested!).** The caller should not keep pointers to the returned objects around** for too long, the valid lifetimes vary. In particular, the returned** charset string should be copied if necessary. If return of the** file_anchor is requested, that one can be used to retrieve** additional bits of info that are stored in the anchor object and** are not covered here; as usual, don't keep pointers to the** file_anchor longer than necessary since the object may disappear** through HTuncache_current_document or at the next document load.** - kw*/extern void LYGetFileInfo PARAMS(( CONST char * filename, HTParentAnchor ** pfile_anchor, HTFormat * pformat, HTAtom ** pencoding, CONST char** pdesc, CONST char** pcharset, int * pfile_cs));/*** Determine file value from file name.*/extern float HTFileValue PARAMS(( CONST char * filename));/*** Determine compression type from file name, by looking at its suffix.*/typedef enum { cftNone , cftCompress , cftGzip , cftBzip2} CompressFileType;extern CompressFileType HTCompressFileType PARAMS(( char * filename, char * dots, char ** suffix));/*** Determine write access to a file.**** ON EXIT,**** return value YES if file can be accessed and can be written to.**** BUGS**** Isn't there a quicker way?*/#if defined(HAVE_CONFIG_H)#ifndef HAVE_GETGROUPS#define NO_GROUPS#endif#else#ifdef VMS#define NO_GROUPS#endif /* VMS */#ifdef NO_UNIX_IO#define NO_GROUPS#endif /* NO_UNIX_IO */#ifdef PCNFS#define NO_GROUPS#endif /* PCNFS */#ifdef NOUSERS#define NO_GROUPS#endif /* PCNFS */#endif /* HAVE_CONFIG_H */extern BOOL HTEditable PARAMS((CONST char * filename));/* Make a save stream.** -------------------*/extern HTStream * HTFileSaveStream PARAMS(( HTParentAnchor * anchor));/*** Determine a suitable suffix, given the representation.**** ON ENTRY,**** rep is the atomized MIME style representation** enc is an encoding (8bit, binary, gzip, compress,..)**** ON EXIT,**** returns a pointer to a suitable suffix string if one has** been found, else NULL.*/extern CONST char * HTFileSuffix PARAMS(( HTAtom* rep, CONST char* enc));/*** The Protocols*/#ifdef GLOBALREF_IS_MACROextern GLOBALREF (HTProtocol,HTFTP);extern GLOBALREF (HTProtocol,HTFile);#elseGLOBALREF HTProtocol HTFTP, HTFile;#endif /* GLOBALREF_IS_MACRO */#endif /* HTFILE_H *//* end of HTFile */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -