
         +--------------------------------------------------------+
         |  CCC    OOO   N   N   QQQ   U   U  EEEEE   SSSS  TTTTT |
         | C   C  O   O  NN  N  Q   Q  U   U  E      S        T   |
         | C      O   O  N N N  Q   Q  U   U  EEE     SSS     T   |
         | C   C  O   O  N  NN  Q  Q   U   U  E          S    T   |
         |  CCC    OOO   N   N   QQ Q   UUU   EEEEE  SSSS     T   |
         +--------------------------------------------------------+

CONTENTS:

	### DISTRIBUTION
	### BUILDING
	### OTHER USEFUL INFORMATION
	    ## CURSES/TERMINFO
               # LINUX NOTE
               # GENERAL TERMINAL NOTE
	       # TERMINFO ENTRIES
	    ## UNIXWARE NOTE
            ## SOLARIS/DU NOTE
	    ## CONQUEST GROUP
	### INSTALLED FILES


### DISTRIBUTION

	You should have recieved one (or both) of the following files:
	(where x.y is the current revision)

	conquest-x.y.pkg.gz	- gziped Unixware binary package (in 
                                  stream format) for use with pkgadd(1).

		Use the following commands to unpack and install on
		Unixware:

		$ gunzip conquest-x.y.pkg.tar.gz
                $ tar xvf conquest-x.y.pkg.tar
		(as root)
		# pkgadd -d /full/path/to/conquest-x.y.pkg


	conquest-x.y.src.tar.gz	- gziped tar archive of the source
                                  distribution.

		Unzip/untar this in a nice, quiet, peaceful place.  I
                use 'gzcat conquest-x.y.src.tar.gz |tar -xvf -'.


	Currently, only the following OS's have ports:
	
		Unixware 2.03 (1.x/2.x should be fine too)
		Linux 2.0.0, with ncurses-1.9.9e+ (older ncurses *may* work)
		Solaris 2.6 with gcc 2.7.2
		FreeBSD 2.2-100696-SNAP (stock curses works, but
			without color apparently...)
		OSF1/Digital Unix V4.0 for Alpha
			- Thanks to Jim Anderson (janderson@NOVALIS.COM)
				for this port!

	ncurses-1.9.9e will work on both fbsd and Linux.  If the
curses implementation on your machine has problems, you might try
ncurses... It's free and does a reasonable job at emulating svr4
curses.

	The README file provides useful information about conquest.

### BUILDING

	To build conquest, unpack the src archive.  

	Create the 'conquest' group.  In Unixware this can be done
with (as root) 'groupadd conquest'.

	NOTE: You *must* create a conquest group, or 'make
[all|install]' will fail!

	Then cd into the src directory.

	Conquest makes use of the GNU Autoconf system for maintaining
source code able to compile on many different machines.

	Theoretically, all you will need to do is:

	$ ./configure
	$ make depend (or 'make clean' if you lack makedepend)
	$ make all
	(note: you will not be able to execute any of the binaries
               until you do a make install, then run the installed
               binary)
	$ su
	# make install

	By default, conquest will be installed in /opt.  To install it
somewhere else, supply the '--prefix=/other/dir' option to configure.

	You may also want to peek at the defs.h file, though the
defaults should be fine.  If your porting this to something else, good
luck...But if you do succeed in a port to a new platform, please let
me know so I can incorporate it into the distribution.  The autoconf
source file 'configure.in' is supplied for this purpose ;-)

	As root, intialize the system-wide conquestrc file
(/opt/conquest/etc/conquestrc by default) by typing ('make install'
will do this for you, but if you want to be sure....):

	/opt/bin/conqoper -C

	Edit /opt/conquest/etc/conquestrc and see if everything there
is ok for your site.  New with version 7.0, you can edit all of the
options using the (O)ption Menu in conqoper, without editing the
conquestrc file directly.

	Then run the conqoper program (without options) and
(I)nitialize->(e)verything, open the game, and you should now be ready
to rock-n-roll.

	With version 7.0, you can do this on the command line by:

	     conqoper -Ie -E

	     - this Initializes Everything, then Enables the game.

	See the README file for more information.

	See the SERVER.DOC file if you want to setup a Conquest
server. 

	Read the conquest.doc and the conqnews.doc files to get info
on what conquest is and how to play it.


### OTHER USEFUL INFORMATION

## CURSES/TERMINFO

	On some machines (Linux), ncurses is supplied, but not
installed properly... In one case, the ncurses.h header file was
located in /usr/include/ncurses/ncurses.h when it should have been one
directory higher... For that reason, configure couldn't find it, and
an older, incompatible curses.h file was used instead, leading to
build problems.  Make sure (if you wish to force ncurses use) that the
ncurses.h, term.h and uncntl.h files are present in /usr/include.  

	The *only* curses implementations that will work with conquest
are System V Release 4+, *or* ncurses 1.9.9e+.  FreeBSD has an older
implementation of ncurses that will work as far as compiling goes, but
will not properly detect and use color.

# LINUX NOTE: A friend who uses linux and frequently dials in to my
conquest server was experiencing screen corruption on the console, but
it only showed up during a dialup game (where he was dialed into my
machine), or playing back a recording (made by using script to record
a game.)  Another friend using Unixware did not have these problems.
The solution was to modify the 'linux' terminfo entry and remove
capabilities for Alternate Character Sets/line drawing characters
(ACS), del/ins char, and del/ins line modes.  This cleared it up.  No
idea why, though it smells like a timing issue with the linux console
driver.  Playing it on the linux console looked fine, though playing
back a typesript tended to corrupt again.  This appears to be linux
specific, and not a conquest problem.  In all cases, hitting ^L redrew
the screen properly.  If you run into this problem, try the 'linux-cq'
terminfo entry supplied in the conquest source distribution.

# GENERAL TERMINAL NOTE: Conquest depends on a properly configured
terminfo entry for your terminal in order to make use of Fkey's, the
arrow keys, the keypad, and color.  The standard at386 terminfo entry
on Unixware for example, does not define the SHIFT-Fkeys, nor the
Keypad keys (upperright, lowerleft, etc).  Some modification to your
terminfo entry may be required to use these extended features.

# TERMINFO ENTRIES

	I recieved permission from SCO to supply my modified terminfo
entries for Unixware.  Thanks SCO!  The modified entries are located
in the ti/ subdirectory of the source distribution along with some
other entries I've used over the years, and are never installed by the
install process.  If you wish to use these entries, you will have to
compile them yourself as root like this:

# tic filename

Here are the ones supplied:

	at386.ti - a replacement for the unixware at386 console
entry.  This is completely compatible with the default version, but
adds support for SHIFT-F1 thru F12, and proper entries for the
keypad. 

	xterm-acs - a replacement for the unixware xterm-acs entry
that adds support for the keypad (No Shift-Fkeys are possible without
xmodmap tweaking though).

	linux-cq.ti - linux console replacement, fixing (actually
working around) some problems described above.  This entry is the same
as the original 'linux' entry, but ACS, ich/ich1, dch/dch1, il/il1,
and dl/dl1 capabilities have been removed.

	mskerm.ti - for DOS MS-Kermit

	mskerm-c.ti - for DOS MS-Kermit, adds color

	vt100-c - vt100 entry with color cap added, This will work
with most PC based vt100 emulations (like telix), though the keypad
and function keys may not work... There are just no real standard
definitions for these, since the original vt100 didn't support
function keys, or a keypad like the standard PC-AT keyboard.

## UNIXWARE NOTE

	Unixware understands the notion of providing specific
privileges to an executable, without requiring suid root programs.

	By default, when installing the Unixware binary package or
doing a 'gmake install' on a Unixware system, the Makefile will use
the 'filepriv(1m)' command to give Conquest the ability to raise it's
priority and lock the common block (256KB) into memory via the TSHAR
and the PLOCK privileges.  If you don't like this, either don't set
the priveleges, OR comment out '#define USE_COMMONMLOCK' and '#define
SET_PRIORITY' in defs.h and recompile.  

	Conquest will complain in the /opt/conquest/etc/conquest.log
file if you simply remove the privileges, but it will still run.  If
your not building or running this on Unixware this doesn't apply to
you.  Unfortunately the only way to provide these services on other
Unixen besides Unixware is to give Conquest suid root privileges,
which I consider extremely unwise.  There's something to be said about
giving processes only those privileges they really need...

	Once again, DO NOT run Conquest suid root on any machine.
(currently the only way to get priority privs on Linux).  Conquest was
not designed to run suid root (or suid at all) and I take *no*
responsibility for the consequences if you try to do so.  Actually, I
take no responsibiliy for anything regarding the use of this software
;-)

## SOLARIS/DU NOTE

There is a problem with the lexer (lex) on Solaris and Digital Unix
(OSF1).  When it processes conqstrat.c.l into lex.yy.c, a syntax error
is introduced.  If you compile the resulting code (make will try this)
you'll get a syntax error.  Simply edit the file (should be lex.yy.c)
delete the offending line, and recompile.  The only result of this
'fix' is that when (or if) you use conqstrat to build a new robot
strategy table, all whitespace in the rule file will be output to
stdout.  Annoying, but livable.  It does not affect the parsing of the
rule file in any other way.

## CONQUEST GROUP

	Conquest's binaries *do* have to run setgid to 'conquest' to
prevent unscrupulous tampering/cheating.  Installing the Unixware
binary package will add the Conquest group id to your system.

	If you're using the source package, you'll need to be sure to
create the conquest group before building.


### INSTALLED FILES

	Note, on my machine everything is owned by jon, this helps me
in recompiling/updating without having to be root... You can make
everything owned by root or whatever you want, but the group *has* to
be conquest, with the perms specified below (the makefile and/or
pkgadd will do this for you). 

	See the README for a brief description of these files

	The primary files and their perms are as follows:



/opt/conquest/...         perms           owner    group
-----------------         ----------      -----    -----

bin/			  drwxr-xr-x    2 jon      conquest

	conquest	
			  -rwxrws--x    1 jon      conquest

	conqdriv	
			  -rwxrws--x    1 jon      conquest

	conqoper	
			  -rwxrws--x    1 jon      conquest

	conqai		
			  -rwxrws--x    1 jon      conquest

	conqstrat		
			  -rwxrwx--x    1 jon      conquest

etc/			  drwxrwxr-x    2 jon      conquest

	conquest_common.img 
			  -rw-rw----    1 jon      conquest

	conqnews.doc	
			  -rw-rw-r--    1 jon      conquest

	conquest.doc
			  -rw-rw-r--    1 jon      conquest

	conquest.log
			  -rw-rw----    1 jon      conquest

	conquestrc
			  -rw-rw-r--    1 jon      conquest


lib/			  drwxr-xr-x    2 jon      conquest

	libconquest.so	(except FreeBSD)
			  -rw-r--r--    1 jon      conquest

Jon Trulson <jon@radscan.com>
02/01/1999


