
Along with the source code for the 'Fortify' program, this directory
also contains the source code for 'md5', a program that calculates
md5 checksums on an input file.  The source is partially derived from
the code of the same name in the SSLeay distribution (version 0.6.3
was used as the reference).

Differences against the SSLeay version include fixes for two minor
problems in the Win32 environment, plus code to accept and process
a range specification, so that an md5 value can optionally be
calculated on a sub-part of the input file.

As a normal matter of course, the Fortify source code is (and always has
been) distributed in every release.

This is primarily done to allow you - if you wish - to audit the code and
verify that Fortify does nothing secret or devious or while it is running.
Naturally, you are also free to bend, twist and prod it to your heart's
content (within the constraints of the Copyright).  If you wish to make
some improvements or additions to the code, such as adding your favourite
GUI interface, then you are also encouraged to submit your contributions
for possible inclusion in future Fortify releases.

The Fortify source code has now been split into subparts, as follows:

  * 'common'
	The largest subpart.  This is the core cross-platform code,
	written entirely in ANSI-C.  It contains no human interface code.
	It can be thought of as an aggregate that exposes a set of high
	level entry points and user-interface callbacks.

  * 'cmdline'
	A command line interface to the 'common' routines, also written
	in ANSI-C.  This is currently the primary interface on all Unix
	platforms.  The command line code is deprecated on Windows 95/98/NT.

  * 'mfc'
	A native Microsoft Windows GUI interface to the 'common' routines.
	This is written in C++ and built upon the MFC class library.
	It is a dialog based application, with interfaces to the registry,
	and the operating system, so it is platform specific.  The code
	to interface with the Windows process table, and the code to
	draw the splash panel graphics have been based upon contributions
	from the CodeGuru web site (www.codeguru.com).

  * 'os2'
	A build area for the OS/2 port.


Some brief build notes:

  * Unix
  	Gcc is used on all Unix platforms to build the 'common' and
	'cmdline' code.  Both of these subdirectories contain Makefiles
	which you will need to check and configure before you attempt a
	make.  Making in 'common' yields a library, libffy.a.  Running a
	make in 'cmdline' compiles the two executables 'fortify' and 'md5',
	and links these programs against ../common/libffy.a.

  * Windows 95/98/NT
	Microsoft Visual C++ (v5) is used to compile the 'common' and
	'mfc' code.  The Fortify workspace and project control files are
	included to assist you with this.  Note that you will also need
	a Windows port of the Unix Yacc and Lex tools in order to compile
	common/gram.y and common/lex.l.  The Cygnus GnuWin32 distribution
	contains a complete suite of Unix development tools, including
	Yacc and Lex.

  * MacOS
	Metrowerks Code Warrior v4 is used to compile the 'common' and
	'cmdline' code.  Note that you will also need a MacOS port of
	the Unix Yacc and Lex tools if you wish to compile
	common/gram.y and common/lex.l.  (pre-compiled versions - gram.c and
	lex.c - are included in the 'common' directory to avoid this need).
	A suitable Yacc compiler (Bison) plug-in can be downloaded from
	the Metrowerks web site.

  * OS/2
	Under OS/2, the Watcom v10 C compiler is used to build Fortify,
	in combination with the Emx ports of Yacc and Lex.  If necessary,
	gram.c and lex.c can be created from gram.y and lex.l as follows:
		yacc gram.y
		yacc -d gram.y
		move y_tab.c gram.c
		flex -l lex.l
		move lexyy.c lex.c
	The full build is performed from within the 'os2' subdirectory.
	For some mysterious reason, the Watcom compiler can successfully
	complete the build only if a copy of ..\common\misc.h is placed in
	in the 'os2' subdirectory.  The Watcom compiler also does not handle
	long file names.


Localization and non-English language versions:

	Run-time user messages for the software are defined in a text file
	("Messages").  This file is loaded during program start-up.  The same
	Messages file is used in all platform ports of Fortify for Netscape -
	the command line version, the MFC GUI version, and the MacOS port.

	To localize the command line version of the software, all that is 
	required is to create a new Messages file containing the translated
	message strings.  The new file can be 'plugged-in' simply by placing
	it in the Fortify for Netscape installation directory, and then
	re-starting the program.  No software recompilation effort is necessary.

	Localization of the MS-Windows version of the software is more 
	complex.  Once again, the Messages file must be translated and placed
	in the Fortify for Netscape installation directory.  Additionally, a
	localized version of the MFC base class resources must be available on
	the end-user's machine, or they must be integrated into Fortify for
	Netscape at compile time.  Without this, the MFC base components, such
	as the File Open dialog, and the Messages dialog boxes, will appear with
	English titles and labels.  Visual C++ Tech Note TN057
	("Localization of MFC Components") contains a full explanation of
	the topic.

	The introduction of the Messages file is a relatively recent change,
	designed to assist with the creation of non-English language versions
	of Fortify for Netscape.  The standard Fortify distributions are
	currently only distributed with English language message definitions.
	If you or your organisation is interested in building and/or
	re-distributing non-English language versions of Fortify for Netscape,
	please let us know via an email message to contact@fortify.net.
