		      Quick File Exchange Protocol
			   1-Mar-01 20:05:06


QFX is a very-low-overhead protocol; there is no authentication.  The
QFX server allows access to files in and below its default directory;
this is the extent of security.

QFX packets consist of a 4-byte (network order) packet length, a
4-character token, and possibly data.  Packet length includes the
4-byte length field.

Tokens are:

INFO	File information request/response
SEND	File send request/response
DIFF	File timestamp comparison
ERRR	Error response


INFO exchange:

  request:	[ length ][ INFO ][ filespec <NUL>]

  response:	[ length ][ INFO ][ YYYYMMDDhhmmss size <NUL>]
		Four digits for year, two each for month (January is
		1), day (1-31), hour (0-23), minute (0-59), and second
		(0-61), followed by a single space character, and
		finally the size of the file, in bytes.

  response:	[ length ][ ERRR ]
		Requested file does not exist or request is malformed.
		Explanatory message is optional, should be string
		consisting of number, whitespace, optional text.


  request:	[ length ][ SEND ][ filespec <NUL>]

  response:	[ length ][ SEND ][ file data ]

  response:	[ length ][ ERRR ]
		Requested file does not exist or request is malformed.
		Explanatory message is optional, should be string
		consisting of number, whitespace, optional text.


  request:	[ length ][ DIFF ][ filespec <NUL>][ YYYYMMDDhhmmss<NUL>]

  response:	[ length ][ DIFF ][ Bool ]
		Bool value is TRUE if the file's date/time are
		DIFFERENT than the provided timestamp and FALSE if it
		is the same.

  response:	[ length ][ ERRR ]
		Requested file does not exist or request is malformed.
		Explanatory message is optional, should be string
		consisting of number, whitespace, optional text.


filespec uses UNIX-style forward-slash directory notation.  It is the
responsibility of the server to convert the notation to the native
method, and to guarantee that the path cannot extend outside of the
default directory.  The directory '/' refers to the current directory;
a leading '/' is ignored.  Line-terminators are newline characters;
carriage returns are optional.

It is the responsibility of the server to read text files and transmit
them with appropriate line breaks.  Specifically, this applies to
VAX/VMS.



