-*-text-*-

This file contains:

- Installation instructions and notes for the Midnight Commander
- Where to get more information on the Midnight Commander
- Note on the enhanced terminfo databases
- Common problems
- Information on 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.  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 (under AIX,
you may need to use ksh instead of sh).

   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-mmap'
     Needed when compiling under AIX if you want the fast viewer.

`--with-bsd-curses'

     If you don't want to use ncurse and are using an Ultrix box, you
     can use this switch.  Be aware that ncurses is a better option
     than the curses included in Ultrix.

`--with-sunos-curses'

     You use this flag on SunOS machines if you want to use SunOS 4.x
     curses instead of ncurses.  You don't need this flag if you don't
     have ncurses installed: it's only needed to force the usage of
     SunOS curses over ncurses.

`--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't 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.  If you want to use the Linux console screen saver, type `make
install.saver'.  This compiles the `cons.saver' executable and
installs it in the directory specified by the `prefix' variable.

6.  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'.


- Where to get more information on the Midnight Commander
---------------------------------------------------------

Janne Kukonlehto set up a WWW page, here is the URL:
http://stekt.oulu.fi/~jtklehto/mc/

We also a set of mailing lists for the program:

mc-announce: Announcements of new version of the Midnight Commander.
mc-digest:   Digest version of the mc list.
mc-patches:  Patches by mail (also on the ftp site).
mc:          Dicussion on the Midnight Commander file manager.
mc-devel:    For discussion between the developers of the program.

to subscribe to the mailing lists, send a message to:

majordomo@roxanne.nuclecu.unam.mx

with the following text in the body of the message:

subscribe <list-name> [address]

The adress is optional and list-name is one of the above list names
(mc, mc-announce, mc-patches or mc-digest).


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-sunos4.1
sparc-sun-netbsd1.0
sparc-sun-solaris2.3
hppa-hp-hpux9
hppa-hp-hpux7
m68k-apple-aux

Since the Midnight Commander is configured via the GNU autoconf
program, it's not difficult to run it in other operating systems.

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

You'll need GNU C (or an ANSI C Compiler) and a color curses library
(ncurses is a good choice).  For more information on obtaining these
programs refer to the section "Obtaining the missing pieces" in this
file.

The best choice is to use ncurses 1.8.5.2 available in
ftp.nuclecu.unam.mx in the /Midnight directory.  The program can be
compiled with Ultrix's curses using the --with-bsd-curses and on SunOS
4.x SystemV curses with the --with-sunos-curses.

Many Linux systems ship with version 1.8.0 or 1.8.1; the Midnight
Commander may run with it, but some bugs in this version of NCurses
sometimes make the display look strange (which is not the intention).
Also, there is a new version 1.8.6 and 1.8.7 of ncurses, you may run
into some problems installing those versions.

So, if you have the time, give yourself a little present and install
the ncurses 1.8.5.2 library on your box.

VERY IMPORTANT: On some architectures, the default compilation mode
for ncurses it to include the buggy OPT_MVCUR in the Makefile.  If
that is the case, please remove it before compiling.

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 on 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 find gpm for you.  The support for
mice on xterms is always 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 experiencing (to miguel@roxanne.nuclecu.unam.mx).

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

The distribution comes some enhanced terminfo databases: "xterm.ti",
"vt100.ti" and "linux.ti".  They are a superset of the databases
provided with NCurses 1.8.5.  "vt100.ti" adds support for graphic
characters on VT100-compatible terminals, "xterm.ti" adds support for
graphic characters and color on color xterms, and "linux.ti" is an
up-to-date database for the Linux console, with entries for shifted
function keys.

To install the databases, do something like this (mutatis mutandis):

	mv *.ti /usr/lib/terminfo/data
	cd /usr/lib/terminfo
	tic data/vt100.ti
	tic data/xterm.ti
	tic data/linux.ti

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 (probably residing in /usr/lib/terminfo/data) 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 always type the ESC key and then a number in the range
1..9 and 0 to simulate the F1 trough F10 keys.


o The program does not use colors with color_xterm
--------------------------------------------------

The program depends on the environement variable TERM to detect the
terminal type.  The terminfo databases that come with the Midnight
Commander program use "xterm" and "xterm-color" to diferentiate
between those terminals.  To use colors on a color_xterm, you could
run the program like this:

TERM=xterm-color mc

Or use the command: color_xterm -tn xterm-color.

In order for this to work you will also need to update the
/etc/termcap file to have an entry for xterm-color (you can copy the
xterm definition).


Porting 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_CURSES defined.  

The fast way to do this is to:

make clean; make XINC=-DBUGGY_CURSES

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.2 library may be obtained from:

  ftp.nuclecu.unam.mx:/Midnight.

  When compiling ncurses, please check that you don't define
  OPT_MVCUR since it's buggy.

o The GPM Mouse Server is available at:

  iride.unipv.it:/pub/gpm


To get the mouse support working on the Linux console:

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
older than this one, 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


