File:  [Public] / libwww / Library / src / HTFile.html
Revision 2.21: download - view: text, annotated - select for diffs
Tue Mar 21 20:43:33 1995 UTC (29 years, 2 months ago) by frystyk
Branches: MAIN
CVS tags: v3/0, WindowsNT, HEAD
Official version

<HTML>
<HEAD>
<TITLE>File access in libwww</TITLE>
<NEXTID N="z4">
</HEAD>
<BODY>

<H1>File Access</H1>

<PRE>
/*
**	(c) COPYRIGHT CERN 1994.
**	Please first read the full copyright statement in the file COPYRIGH.
*/
</PRE>

These are routines for local file access used by WWW browsers and
servers. <P>

If the file is not a local file, then we pass it on to <A NAME="z3"
HREF="HTFTP.html">HTFTP</A> in case it can be reached by FTP. However,
as this is very time consuming when requesting a local file that
actually doesn't exist, this redirection will be disabled in the next
major release, <EM>www-bug@info.cern.ch</EM> June 1994.<P>

<B>Note:</B> All functions that deal with directory listings etc. have
been moved to <A HREF="HTDirBrw.html">HTDirBrw Module</A>. <P>

This module is implemented by <A HREF="HTFile.c">HTFile.c</A>, and it
is a part of the <A
HREF="http://info.cern.ch/hypertext/WWW/Library/User/Guide/Guide.html">
Library of Common Code</A>.

<PRE>
#ifndef HTFILE_H
#define HTFILE_H

#include "HTFormat.h"
#include "HTAccess.h"
#include "HTML.h"		/* SCW */
#include "HTDirBrw.h"
</PRE>

<H2>Multiformat Handling</H2>

<H3>Split Filename to suffixes</H3>
<PRE>
extern int HTSplitFilename PARAMS((char *	s_str,
				   char **	s_arr));
</PRE>

<H3>Get Content Description According to Suffixes</H3>

<PRE>
extern HTContentDescription * HTGetContentDescription PARAMS((char ** actual,
							      int	  n));

#define MULTI_SUFFIX ".multi"   /* Extension for scanning formats */
#define MAX_SUFF 15		/* Maximum number of suffixes for a file */
</PRE>

<H2>Convert filenames between local and WWW formats</H2>

<PRE>
extern char * HTLocalName PARAMS((CONST char * name));
</PRE>

<H2>Make a WWW name from a full local path name</H2>

<PRE>
extern char * WWW_nameOfFile PARAMS((const char * name));
</PRE>

<H2>Generate the name of a cache file</H2>

<PRE>
extern char * HTCacheFileName PARAMS((CONST char * name));
</PRE>

<H2><A NAME="z1">Define the Representation for a File Suffix</A></H2>

This defines a mapping between local file suffixes and file content
types and encodings.

<H3>On entry,</H3>
<DL>
<DT>suffix
<DD> includes the "." if that is
important (normally, yes!)
<DT>representation
<DD> is MIME-style content-type
<DT>encoding
<DD> is MIME-style <A
NAME="z0" HREF="../../Protocols/rfc1341/5_Content-Transfer-Encoding.html#z0">content-transfer-encoding</A>
(8bit, 7bit, etc)
<DT>language
<DD>is MIME-style content-language
<DT>quality
<DD> an a priori judgement of
the quality of such files (0.0..1.0)
</DL>

<PRE>
/*
** Example:  HTSetSuffix(".ps", "application/postscript", "8bit", NULL, 1.0);
*/

extern void HTSetSuffix PARAMS((CONST char *	suffix,
			       CONST char *	representation,
			       CONST char *	encoding,
			       CONST char *	language,
			       double		quality));

extern void HTAddType PARAMS((CONST char *	suffix,
			      CONST char *	representation,
			      CONST char *	encoding,
			      double		quality));

extern void HTAddEncoding PARAMS((CONST char *	suffix,
				  CONST char *	encoding,
				  double		quality));

extern void HTAddLanguage PARAMS((CONST char *	suffix,
				  CONST char *	language,
				  double		quality));


extern void HTFile_deleteSuffixes NOPARAMS;
</PRE>

<H2>Get Representation and Encoding from file name</H2>

<H3>On exit,</H3>
<DL>
<DT>return
<DD> The represntation it imagines
the file is in
<DT>*pEncoding
<DD> The encoding (binary,
7bit, etc). See <A
NAME="z2" HREF="#z1">HTSetSuffix</A> .
<DT>*pLanguage
<DD> The language.
</DL>

<PRE>extern HTFormat HTFileFormat PARAMS((
		CONST char * 	filename,
		HTAtom ** 	pEncoding,
		HTAtom **	pLanguage));


</PRE>
<H2>Determine file value from file name</H2>
<PRE>

extern double HTFileValue PARAMS((
		CONST char * filename));


</PRE>
<H2>Determine write access to a file</H2>
<H3>On exit,</H3>
<DL>
<DT>return value
<DD> YES if file can be accessed
and can be written to.
</DL>

<PRE>
</PRE>
<H3>Bugs</H3>Isn't there a quicker way?
<PRE>

extern BOOL HTEditable PARAMS((CONST char * filename));


</PRE>
<H2>Determine a suitable suffix, given
the representation</H2>
<H3>On entry,</H3>
<DL>
<DT>rep
<DD> is the atomized MIME style representation
</DL>

<H3>On exit,</H3>
<DL>
<DT>returns
<DD> a pointer to a suitable suffix
string if one has been found, else
NULL.
</DL>

<PRE>extern CONST char * HTFileSuffix PARAMS((
		HTAtom* rep)); 



</PRE>
<H2>The Protocols</H2>
<PRE>GLOBALREF HTProtocol HTFTP, HTFile;

#endif /* HTFILE_H */

</PRE>end of HTFile</A></BODY>
</HTML>

Webmaster