-*-text-*-

This file contains:

- Installation instructions for the Midnight Commander
- Notes about the Midnight Commander installation
- Enhanced terminfo databases
- Common Problems
- Porting the program
- Obtaining the missing pieces of the Midnight Commander


Installation instructions for the Midnight Commander
----------------------------------------------------

   The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation, and
creates the Makefile(s) (one in each subdirectory of the source
directory).  In some packages it creates a C header file containing
system-dependent definitions.  It also creates a file `config.status'
that you can run in the future to recreate the current configuration.

To compile this package:

1.  Configure the package for your system.

   Normally, you just `cd' to the directory containing the package's
source code and type `./configure'.  If you're using `csh' on an old
version of System V, you might need to type `sh configure' instead to
prevent `csh' from trying to execute `configure' itself.

   Running `configure' takes awhile.  While it is running, it
prints some messages that tell what it is doing.  If you don't want to
see any messages, run `configure' with its standard output redirected
to `/dev/null'; for example, `./configure >/dev/null'.

   To compile the package in a different directory from the one
containing the source code, you must use a version of `make' that
supports the `VPATH' variable, such as GNU `make'.  `cd' to the
directory where you want the object files and executables to go and run
the `configure' script.  `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.  If
for some reason `configure' is not in the source code directory that
you are configuring, then it will report that it can't find the source
code.  In that case, run `configure' with the option `--srcdir=DIR',
where DIR is the directory that contains the source code.

   By default, `make install' will install the package's files in
`/usr/local/bin', `/usr/local/man', etc.  You can specify an
installation prefix other than `/usr/local' by giving `configure' the
option `--prefix=PATH'.  Alternately, you can do so by consistently
giving a value for the `prefix' variable when you run `make', e.g.,
     make prefix=/usr/gnu
     make prefix=/usr/gnu install

   You can specify separate installation prefixes for
architecture-specific files and architecture-independent files.  If
you give `configure' the option `--exec-prefix=PATH' or set the `make'
variable `exec_prefix' to PATH, the package will use PATH as the
prefix for installing programs and libraries.  Data files and
documentation will still use the regular prefix.  Normally, all files
are installed using the same prefix.

    The program detects if you have the gpm library installed.  If you
installed the gpm mouse library in a non-standard place, you will need
to use the --with-gpm-mouse flag with the directory base where you
installed the gpm package.

   `configure' also recognizes the following options:

`--help'
     Print a summary of the options to `configure', and exit.

`--quiet'
`--silent'
     Do not print messages saying which checks are being made.

`--verbose'
     Print the results of the checks.

`--version'
     Print the version of Autoconf used to generate the `configure'
     script, and exit.

`--with-gpm-mouse=PATH'
	Use this flag if your GPM mouse package is not installed in
	a standard place.  The configure will append `lib' and
	`include' to find the libgpm.a and gpm.h files respectively.

`--with-aixcc'
     Needed when compiling under AIX with the cc6000 C compiler.

`--with-ncurses=directory'
     Use this flag if your ncurses is not installed in any of the
     places configure will check (/usr/include, /usr/include/ncurses,
     /usr/local/include and /usr/local/include/ncurses).

     The argument to this flag is the base directory where the ncurses
     files are located.  The configure will append lib and include to
     find the libncurses.a and ncurses.h file respectively.  For
     example, if you have installed ncurses under /gnu/lib and
     /gnu/include, you specify: --with-ncurses=/gnu

     You will need the ncurses package only if your system does not
     provide a compatible curses.  If after compiling, the program
     says that it can resolve the has_colors function, then you need
     the ncurses package.

   `configure' also accepts and ignores some other options.

   On systems that require unusual options for compilation or linking
that the package's `configure' script does not know about, you can give
`configure' initial values for variables by setting them in the
environment.  In Bourne-compatible shells, you can do that on the
command line like this:

     CC='gcc -traditional' LIBS=-lposix ./configure

On systems that have the `env' program, you can do it like this:

     env CC='gcc -traditional' LIBS=-lposix ./configure

   Here are the `make' variables that you might want to override with
environment variables when running `configure'.

   For these variables, any value given in the environment overrides the
value that `configure' would choose:

 - Variable: CC
     C compiler program.  The default is `cc'.

 - Variable: INSTALL
     Program to use to install files.  The default is `install' if you
     have it, `cp' otherwise.

   For these variables, any value given in the environment is added to
the value that `configure' chooses:

 - Variable: DEFS
     Configuration options, in the form `-Dfoo -Dbar...'.  Do not use
     this variable in packages that create a configuration header file.

 - Variable: LIBS
     Libraries to link with, in the form `-lfoo -lbar...'.

   If you need to do unusual things to compile the package, we encourage
you to figure out how `configure' could check whether to do them, and
mail diffs or instructions to the address given in the README so we
can include them in the next release.

2.  Type `make' to compile the package.  If you want, you can override
the `make' variables CFLAGS and LDFLAGS like this:

	make CFLAGS=-O2 LDFLAGS=-s

3.  If the package comes with self-tests and you want to run them,
type `make check'.  If you're not sure whether there are any, try it;
if `make' responds with something like
	make: *** No way to make target `check'.  Stop.
then the package does not come with self-tests.

4.  Type `make install' to install programs, data files, and
documentation.

5.  You can remove the program binaries and object files from the
source directory by typing `make clean'.  To also remove the
Makefile(s), the header file containing system-dependent definitions
(if the package uses one), and `config.status' (all the files that
`configure' created), type `make distclean'.

   The file `configure.in' is used to create `configure' by a program
called `autoconf'.  You only need it if you want to regenerate
`configure' using a newer version of `autoconf'.


Notes about the Midnight Commander installation
------------------------------------------------

The Midnight Commander has been run in the following configurations:

i386-linux-linux1.0
i386-linux-linux1.1
mips-dec-ultrix4.3
mips-sgi-irix5.2
rs6000-ibm-aix3.2.5
sparc-sun-sunos-4.1
sparc-sun-solaris2.3

Since the Midnight Commander comes with the configure, it's not
dificult to run it in other operating systems.  

If you're using AIX, with the cc6000 compiler, you have to specify the
`--with-aixcc' command line option. 

You'll need GNU C (or an ANSI C Compiler) and the NCurses Library
version 1.8.5 or higher. For more information on obtaining these
programs refer to the section "Obtaining the missing pieces" in this
file.

Many Linux systems ship with version 1.8.0 or 1.8.1, the Midnight
Commander may run with this version but some bugs in that ncurses
version sometimes makes the display look strange (not the intended
case).

So, if you have a time, give you a little present -we all know you
deserve it!- and install the latest NCurses library on your box.

Since version 0.9 the Midnight Commander comes with mouse support on
xterms and in the Linux console. In order to take advantage of the
mouse support in the Linux console you will need the gpm mouse server
(see the section "Obtaining the Missing Pieces" in this file).  

Once you get the Mouse Server, compile it and install it, then you
will have to specify the `--with-gpm-mouse' flag to the configure
program if you installed it in a non-standard directory.  If you
installed the gpm package under /usr or /usr/local, you don't need to
specify this flag, configure will check this for you.  The support for
mouse on xterms is allways compiled in.

We are working on further enhancements to the program, but we're not
sure which ones must go first, if you would like to point us in the
Right Direction we will be glad to hear from you (you could check the
file TODO included with this distribution for the current projects).

If you happen to find an undocumented feature that doesn't do what you
expected, please drop us a note telling us as much as you can about
the problem you're experimenting (send mail to
miguel@roxanne.nuclecu.unam.mx).


Enhanced terminfo databases
---------------------------

The distribution comes some enhanced terminfo databases: xterm.ti and
vt100.ti.  They are a superset of the databases provided by the
ncurses distribution 1.8.5.  The vt100 adds support for graphic
characters on vt100 terminals, and the xterm add support for graphic
characters and color on xterm-color terminals.

Common Problems
---------------

o The Insert character doesn't mark files.

It's common to have an NCurses 1.8.5 that doesn't include an entry in
the terminfo database for the Insert character (this character is used
for marking files). In this case, you should edit the console terminfo
source file and include a line defining the insert character escape
sequence. On the Linux console, you should add this entry:

	kich1=\e[2~

After this, rerun the tic command for the edited console entry (it
should install a new console entry in /usr/lib/terminfo/c). This
problem is not present with the Slackware 2.0 Linux distribution.

o The program just hangs when it's run on my machine

In big endian machines like the Sun Sparc, version 1.8.5 of the
ncurses 1.8.5 package has a bug. There is a patch for ncurses
available in:
ftp.netcom.com:/pub/zmbenhal/ncurses/ncurses-1.8.5

If you are going to use it under Linux/386 or Ultrix you don't need
this patch.

o I can't use the F-keys, I can't quit the program

If your terminal doesn't send the escape sequences for the 10 function
keys, you can allways type the ESC key and then a number in the range
1..9 and 0 to simulate the F1 trought F10 keys.


Proting the program
-------------------

Random notes on porting to other architectures.  

The program requires normally ncurses.  If you don't want to install
ncurses and your OS is a SystemV Release 4 variant, maybe the curses
supplied with your system will do the work.  If you experience display
problems, then it means that we are dealing with a buggy
implementation of curses.  You have two options: one, download ncurses
and recompile with ncurses or recompile all your source code with the
symbol BUGGY_NCURSES defined.  

The fast way to do this is to:

make clean; make XINC=-DBUGGY_NCURSES

The correct thing is that you add a detection case to the file
ncurses.h (provided with this program) and again, run: make clean;
make;

If you add the detection case, please, send me a patch, so that I
could include it in future versions of the program.


Obtaining the missing pieces of the Midnight Commander
------------------------------------------------------

o The NCurses 1.8.5 library may be obtained from:

  ftp.netcom.com:/pub/zmbenhal. 

o The GPM Mouse Server is available at:

  iride.unipv.it:/pub/gpm


If you're using Linux version 1.1.34, then you will have to choose yes
to selection when you compile your kernel. If your Linux version is
previous to this, you may try to apply one of the patches included in
the gpm package.

And the GNU C Compiler may be obtained from the following sites:

        ASIA: ftp.cs.titech.ac.jp, utsun.s.u-tokyo.ac.jp:/ftpsync/prep,
  cair.kaist.ac.kr:/pub/gnu
        AUSTRALIA: archie.au:/gnu (archie.oz or archie.oz.au for ACSnet)
        AFRICA: ftp.sun.ac.za:/pub/gnu
        MIDDLE-EAST: ftp.technion.ac.il:/pub/unsupported/gnu
        EUROPE: irisa.irisa.fr:/pub/gnu, ftp.univ-lyon1.fr:pub/gnu,
  ftp.mcc.ac.uk, unix.hensa.ac.uk:/pub/uunet/systems/gnu,
  src.doc.ic.ac.uk:/gnu, ftp.win.tue.nl, ugle.unit.no, ftp.denet.dk,
  ftp.informatik.rwth-aachen.de:/pub/gnu, ftp.informatik.tu-muenchen.de,
  ftp.eunet.ch, nic.switch.ch:/mirror/gnu, nic.funet.fi:/pub/gnu,
  isy.liu.se,   ftp.stacken.kth.se, ftp.luth.se:/pub/unix/gnu, archive.eu.net
        CANADA: ftp.cs.ubc.ca:/mirror2/gnu
        USA: wuarchive.wustl.edu:/mirrors/gnu, labrea.stanford.edu,
  ftp.kpc.com:/pub/mirror/gnu, ftp.cs.widener.edu, uxc.cso.uiuc.edu,
  col.hp.com:/mirrors/gnu, ftp.cs.columbia.edu:/archives/gnu/prep,
  gatekeeper.dec.com:/pub/GNU, ftp.uu.net:/systems/gnu

