
           UTREE - screen oriented filesystem utility
             README, klin, Mon Feb 24 20:02:52 1992

------------------------------------------------------------------------------

Utree is a screen oriented filesystem utility for navigation thru fileystems
and doing some default and user defined commands on directories and files.

For usage and documentation see the manual pages utree and utree.prlist.

For copyright notice, warranty and distribution conditions see COPYRIGHT.

------------------------------------------------------------------------------

Utree is first implemented and tested on a PCS CADMUS 9230 (Motorola MC68010)
running MUNIX V.2/07 (System V.2) and then ported to, compiled and tested on
some others machines running UNIX System V.3, BSD4.2 and BSD4.3 or look alikes.
The release utree 3.03-um is developed on a MIPS RC3230 running RISC/os 4.51.

    + MIPS RC3230, RISC/os 4.51 (System V.3, MIPS R3000)
    + PCS Cadmus 9600, MUNIX V.3M3.2 (System V.3, MC68020)
    + PCS Cadmus 9900, MUNIX V.3R3.2 (RISC/os 4.0 like System V.3, MIPS R[23]000)
    + SUN SPARCstation2, SunOS 4.1.1 (BSD4.3, SPARC)
    + Silicon Graphics 4D, IRIX V.3.2.2 (System V.3, MIPS R[23]000)
    + IBM 520, AIX 3.1 (System V.3, RS/6000)
    + HP Vectra, SCO UNIX/386 V.3.2 (System V.3, i486)
    + NoName-AT386, SCO XENIX SysV 2.3.2 386 GT (by Rolf Gebhardt)
    + Sequent Symmetrie, Dynix i386 2.0v2 (BSD 4.2, 10 x i386)
    + Convex C120, ConvexOS 8.1 (BSD 4.2)
    + Nixdorf TARGON/35, TOS 3.2-03 (BSD 4.2)
    + DEC Decstation 5000/200, Ultrix-32 1.3 (Rev. 54) (BSD 4.3, MIPS R3000)
    + DEC Vaxstation 3100, Ultrix-32 1.3 (Rev. 9) (BSD 4.3, VAX)
    + Apollo Domain DN4500, DomainIX 9.5 (BSD4.2 and System V)
    + DEC VAX/750, 4.3 BSD UNIX

Other known ports are done to a lot of other boxes and UNIXes.

------------------------------------------------------------------------------

    If you wish to install utree on your system do the following steps:

    1 CHECK if you have all source files. The file MANIFEST contains a
      list of all distributed files with a short description.

    2 CHECK AND CHANGE Makefile AND src/Makefile FOR YOUR SYSTEM IF NEEDED.
      The Makefiles should be self explanatory enough for changes you have
      to do. There are some example Makefiles for different systems contained
      in the directory sys. For a complete list of defines and some hints
      see below.

	[ for comp.sources.unix, there is no default Makefile.  you must
	  select one from sys/Makefile.* and either copy or link it to
	  src/Makefile.  the author's Makefile is shipped as sys/Makefile.SCO.
									--vix ]

    3 CHECK AND CHANGE src/conf.h FOR YOUR SYSTEM IF NEEDED.
      See below for the meaning of some defines in conf.h you may have to
      change for your system. There are some example configuration files
      conf.h for different systems contained in the directory sys.
      If your system doesn't support vsprintf(3) for formatted output to
      a string with variable number of arguments (most BSD systems don't)
      and you wish to use this function look at directory sup containing
      a public domain version of vsprintf(3) and vfprintf(3).
      Copy vsprintf.c to directory src and change your Makefile for
      compiling vsprintf and linking vsprintf into utree. For a complete
      list of defines in conf.h and some hints see below.

	[ for comp.sources.unix, there is no default conf.h.  you must
	  select one from sys/conf.h.* and either copy or link it to
	  src/conf.h.  the author's conf.h is shipped as sys/conf.h.SCO.
									--vix ]

    4 Call 'make all' or 'make' to compile and link utree and utree.prlist.

    5 Call 'bin/utree .' for testing utree.

    6 Check and edit bin/utree.backup if you wish to allow filesystem or
      directory backups from within utree. Check and edit bin/utree.mklist
      for creating directory tree lists from without utree (this is normally
      not needed).

    7 See the example startup file lib/utree.startup and the example
      key binding file lib/utree.binding for usage of startup files
      and key binding files.

    8 Call 'make install' to install the utree executables into a public bin
      directory defined in the Makefile. May be you have to login as root
      before.

    9 Have fun and enjoy.

------------------------------------------------------------------------------

    Currently distributed Makefiles and configuration files conf.h in sys are

    sys/*.286  - UNIX V/286/386 compatibility mode (MSC under SCO)
    sys/*.AIX  - AIX 3.1 (IBM 520, RS/6000)
    sys/*.APP  - DomainIX 9.5 (Apollo Domain DN4500)
    sys/*.BSD  - Generic BSD4.2 and BSD4.3
    sys/*.CON  - ConvexOS 8.1 (Convex C120)
    sys/*.M16  - MUNIX V2/07 (PCS Cadmus 9230, MC68010)
    sys/*.M32  - MUNIX V3.2 (PCS Cadmus 9600, MC68020)
    sys/*.MIPS - RISC/os 4.51 (MIPS RC3230, R3000)
    sys/*.RCU  - MUNIX V3.2 (PCS Cadmus 99xx, MIPS R2000/3000)
    sys/*.SCO  - SCO UNIX System V/386 3.2 (HP Vectra)
    sys/*.SEQ  - Dynix i386 (Sequent Symmetrie, 10xi386)
    sys/*.SGI  - IRIX V.3.2 (Silicon Graphics 4D, MIPS R3000)
    sys/*.SUN  - SunOS 4.1.1 (SUN4, SPARC)
    sys/*.ULT  - Ultrix-32 3.1 (DECstation, VAXstation)
    sys/*.V.2  - Generic System V.2
    sys/*.V.3  - Generic System V.3
    sys/*.VAX  - 4.3 BSD UNIX (DEC VAX/750)
    sys/*.X23  - SCO XENIX SysV 2.3.2 386GT (NoName-AT386)

------------------------------------------------------------------------------

    Utree is written in standard K&R C, not in ANSI C. If you are using an
    ANSI C compiler check and set the appropiate compiler option for accepting
    standard C code. The other compile and link options in the Makefile are

    CFLAGS   normal compiler flags and defines (for utree and utree.prlist)
    MFLAGS   floating point compiler flag (for utree.prlist)
    LFLAGS   loader flags (for utree and utree.prlist)
    LIBS     needed libraries (for utree and utree.prlist)
    MLIBS    floating point library (for utree.prlist)
    LLIBS    local libraries (i.e. shared libraries)
    CC       the C compiler command
    SRCS     list of utree source files
    OBJS     list of utree object files

    If your system is BSD or BSD-like and doesn't support the getopt(3)
    commandline parser function, copy getopt.c from directory sup to the
    source directory sys and add getopt.c and getopt.o to the SRCS and
    OBJS variables in src/Makefile. See sys/Makefile.BSD for and example.
    The tree list program utree.prlist also uses getopt().

    Possible defines in the makefile src/Makefile

    define BSD for BSD systems (default: SYSV)
    define AIX for IBMs UNIX version AIX
    define XENIX for XENIX system
    define APOLLO for adding some special stuff for APOLLO networks
    define VOID=int if your compiler doen't support void
    define UTLIB=libdir if not defined in conf.h (see below)

------------------------------------------------------------------------------

    Meaning of some defines in the system configuration file conf.h:

    #define HASVPRINTF if your system is BSD or BSD-like and supports
      the varargs vsprintf(3) function. Some BSD systems need additional
      libraries at link time for vsprintf(). The directory sup contains
      a public domain version of vsprintf() which you can compile and
      link into utree. If you want to use this function copy vsprintf.c
      from directory sup to src and change the makefile to include
      vsprintf.c and vsprintf.o in SRCS and OBJS. But you should test
      vsprintf before because usage vsprintf may not work or result in
      core dumps! SYSV needs not to define HASVPRINTF.

    #define HASFIONREAD if your system is SYSV and supports the FIONREAD
      call to ioctl(2) to get the number of characters to read i.e. for
      typeahead(). Check if ioctl(0, FIONREAD, &n) sets n to the correct
      number of characters already typed in. My own system (MUNIX V.2/07)
      i.e. fails, but most SYSV, especially those which support sockets,
      return the correct result in n. The directory tst contains a simple
      test program fionread.c for testing the ioctl-call. BSD needs not
      to define HASFIONREAD.

    #define HASVFORK if your system is SYSV and supports the vfork(2)
      systemcall. My own system i.e. supports the vfork(2) systemcall.
      AIX otherwise supports vfork(2) when linking in the BSD compatibility
      library libbsd.a (-lbsd) but in this case the signal handling
      is also BSD-like and resizing the screen may not work correctly.
      BSD needs not to define HASVFORK.

    #define NODIRENT if your system is SYSV or another older system
      and doesn't support the directory type struct dirent and the
      directory access functions opendir(3), closedir(3) and readdir(3).
      Check the include file /usr/sys/dirent.h for struct dirent or
      the manual pages for the directory access functions. If your
      system doesn't support struct dirent utree assumes a standard
      UNIX filesystem with struct direct and filename length of at least
      14 characters and emulates the directory functions with file
      access functions. BSD needs not to define NODIRENT.

    #undefine NOWINCHG to permit resizing of the screen at runtime, i.e.
      after resizing a xterm under X. Your system has to support the
      signal SIGWINCH after resizing the screen and the ioctl(2) call
      TIOCGWINSZ to get the new screen size in a record winsize. Not
      all systems defining SIGWINCH and TIOCGWINSZ fill the winsize
      record in a correct manner, i.e. SCO UNIX V.3.2/386. Check the
      include files /usr/signal.h or /usr/sys/signal.h for SIGWINCH
      and /usr/include/sys/ioctl.h, /usr/include/termio.h or
      /usr/include/sys/termio.h for TIOCGWINSZ and struct winsize.
      The directory tst contains a simple test program winsize.c
      for testing resizing and properly signal and winsize handling.

    #define STRUCTCOPY(from, to) to an appropiate memory copy function
      if your compiler doesn't support assignments of a struct variables
      like struct_variable_to = struct_variable_from. On SYSV define as
      memcpy(to, from, sizeof(from)), on BSD as bcopy(from, to, sizeof(from)).
      (See conf.h).

    #define UTCLOCK to allow clock display/update every second.

    #define UTLIB as a directory containing utree startup files for
      global definitions (utree), key bindings (utree-$TERM) and the
      tree help pages (utree.help). The default name of this global
      library directory is defined as /usr/local/lib. But this directory
      may also be set in the environment variable $UTLIB.

      Last but not least check the pre-defined system commands defined
      in cmds.h and change them to your preferred commands, for example
      the editor, pager or hexdumper. But all these commands may also be
      set in the global startup file $UTLIB/utree or in user's startupfile
      $HOME/.utree.

------------------------------------------------------------------------------

If you find bugs (there are some bugs - i'm sure) or make changes to utree
please send me bug reports (and bug fixes) and/or your changes. The file TODO
denotes some extensions to utree which should be done in the next time.
If you have questions about utree feel free to send me your questions.
I hope I have the time to answer to you.

My address:     Peter Klingebiel
               Busdorfwall 18
               D-4790 Paderborn
Internet:       klin@iat.uni-paderborn.de

------------------------------------------------------------------------------
