WWW Related String Management

/*
**	(c) COPYRIGHT MIT 1995.
**	Please first read the full copyright statement in the file COPYRIGH.
*/
This module is like the generic string utility module but it contains more Web related string utility functions. This module is implemented by HTWWWStr.c, and it is a part of the W3C Reference Library.

#ifndef HTWWWSTR_H
#define HTWWWSTR_H

Next word or quoted string

This function returns a RFC822 word separated by space, comma, or semi-colons. pstr points to a string containing a word separated by white white space "," ";" or "=". The word can optionally be quoted using <"> or "<" ">" Comments surrrounded by '(' ')' are filtered out. On exit, pstr has been moved to the first delimiter past the field THE STRING HAS BEEN MUTILATED by a 0 terminator. The function returns a pointer to the first word or NULL on error
extern char * HTNextField (char** pstr);

RFC1123 Date/Time Stamp String

Returns a pointer to a static area!
extern CONST char *HTDateTimeStr (time_t *calendar, BOOL local);

Date used for directory listings

extern BOOL HTDateDirStr (time_t * time, char * str, int len);

Timezone Offset

Calculates the offset from GMT in seconds. This is called from HTLibInit().
extern long HTGetTimeZoneOffset (void);

Parse a Date/Time String

Converts a string representation in GMT to a local representation of localtime time_t.
extern time_t HTParseTime (CONST char * str);

Unique Message-ID String

extern CONST char *HTMessageIdStr (void);

Converts an Integer to a String using Prefix

In computer-world 1K is 1024 bytes and 1M is 1024K -- however, sprintf() still formats in base-10. Therefore I output only until 999, and then start using the next unit. This doesn't work wrong, it's just a feature. The conversion is done in "str" which must be large enough to contain the result.
extern void HTNumToStr (unsigned long n, char *str, int len);

Conversion between URLs and Local File Names

These are two functions that separate the URL naming syntax from platform dependent file naming schemes. If you are porting the code to a new platform, you probably have to do some translation here.

Convert file URLs into a local representation

The URL has already been translated through the rules in get_physical in HTAccess.c and all we need to do now is to map the path to a local representation, for example if must translate '/' to the ones that turn the wrong way ;-) Returns local file (that must be freed by caller) if OK, else NULL.
extern char * HTWWWToLocal (CONST char * url, CONST char * base);

Convert a local file name into a URL

Generates a WWW URL name from a local file name or NULL if error. Returns URL (that must be freed by caller) if OK, else NULL.
extern char * HTLocalToWWW (CONST char * local);
#endif
End of declaration module