 		+----------------------------------------+
		| Pash 2.2, a full screen shell for Unix |
		+----------------------------------------+


NOTE: this is the complete on-line documentation of Pash 2.2 provided with
      the shareware distribution of Pash for the Linux operating system.

      Pash is (c) Pierre ADRIAANS 1994-95, all rights reserved. The binary
      version put out for the Linux operating system is a shareware
      program and should not be used as a commercial product in any way
      whatsoever.

      Pash is a patented program: SABAM patent no. 1640, 10-27-1994

      Contact:
	      Pierre ADRIAANS       or    Pierre ADRIAANS
	      P.O. BOX 13007              22 rue Bontemps
	      Long Beach CA 90803         4000 Liege
	      USA                         Belgium

If you wish to E-Mail me your comments, you can do so at:

       xpierre@ibm.net

English is not my mother tongue, so please excuse any spelling or style
mistakes you notice. 


*************************************
**  RELEASE NOTES FOR VERSION 2.2  **
*************************************

Well, basically, Pash 2.2 is the same program as Pash 2.1, but it uses
COLORS now (you asked for it, here it is). The program still DOES NOT use the
curses pakage: the color display is done using the ANSI color codes and the
ANSI escape sequences.

The color version has only been tested on Linux, but the original B/W code
is still in there, so the program is still virtually portable to any POSIX
compliant Unix system.

All the Pash 2.1-related files (.pashrc - pash.mnu - pash.ext) are
compatible with this new version. You can replace the old one by this
release and everything will still work. Nevertheless, you might want to get
rid of the initialization file $HOME/.pashrc and let this new release create
a new one, because this file now contains a new option: Display=

The valid values are:
	Display=Color		for color display (default)
and
	Display=B/W		for black and white display

You can override this option by starting the program with the following
switch:
	pash -d color|b/w


The so-called color-xterm shipped with Xwindows on Linux did not recognize
the ANSI color escape sequences. So, start it with pash -d b/w to force
monochrome display.


Two minor bugs from version 2.1 were fixed:
  - in the Link creation function, the confirmation window in case of
    a previously existing link was titled " Copy ". It is now properly
    titled " Link ".
  - when reaching a subdirectory from the Find File search results window,
    the selection bar is placed on the subdirectory instead of "..".


On the technical side, note that in color display mode, the screen
attributes are changed using the following ANSI sequence:

	 \E[<Foreground color code>;<Background color code>m. 

In black and white mode, the changes are made using this ANSI sequence

	\E[<Screen attribute>m 

which is the genuine monochrome terminal escape sequence. Starting the 
program in B/W will therefore ensure the use of the original screen attribute 
modification sequence.


The rest of this document will be the on-line documentation of Pash 2.1.

Thanks for your support. Pierre.


*******************************
**  1. General introduction  **
*******************************

Pash is a full screen overlaying shell for Unix (a shell user-interface) 
inspired from the functionalities of Symantec's Norton Commander. 
It supports file handling operations (copy,move,...), process control and
IPC devices control.

With Pash, you do everything you can do under a standard shell, but through 
menus and dialog boxes. Pash must be run on top of a standard shell to be 
able to run programs. It cannot be set up as a user's standard shell. 

Pash has been entirely written according to the POSIX.1 standard (IEEE std 
1003.1-1990) and DOES NOT use the 'curses' package. It is therefore portable 
to many Unix systems. It has originaly been developed on a DEC mini-computer 
running BSD ULTRIX 4.3 and has since been successfully ported to OSF/1, 
SCO System V/386 3.2.x and Linux (the package I worked with and made extensive 
tests on was Slackware Linux 1.0.9).

This document will present a series of text-mode screen captures and 
describe how the program runs. In these screen captures, the frames
(8-bit ASCII codes) have been replaced by 7-bit code equivalents.
Besides, screen attributes are not visible, so, active options in menus, 
for instance, won't be visible. The program looks way better when running.

The full Pash shareware distribution package contains:

   pash:     the executable program

   pash.a:   an unlinked version of the software. If you upgrade your 
	     system libraries, you can create another executable using this 
	     file. 

	     To rebuild the executable, type (assuming you have installed 
	     the developpement kit):

	     cc -o pash pash.a
	     strip pash

   pash.txt: this file

This documentation has been written to cover all binary distributions built 
up to this day. Some of the comments might not be relevant on the Unix
system you're currently using.

The shareware version put out for the Linux operating system has been built
using the C++ compiler (g++), which is supposed to optimize better than the 
standard C compiler (gcc). This means that if you want to rebuild an
executable using the unlinked version of the software provided with the
package, you will have to type:
		
		c++ -o pash pash.a
		strip pash

*********************
**  2. To install  **
*********************

(1) Copy the executable in a subdirectory accessible through the PATH:

		 e.g.: cp pash /bin

    and make it executable by everyone on the system:

		 e.g.: chmod 0777 /bin/pash

    You should do this under the 'root' account, since a user usually cannot
    write in the /bin directory.

  
(2) log in the user account you usually work from and start the program.  
    A default initialization file will be created in your HOME directory
    ($HOME/.pashrc). You should be able to use the program immediately.
    If you encounter problems, see section 4 (technical details and 
    comments) of this document.

Warning: Xterm in Slackware Linux 1.0.9:
----------------------------------------
When running Pash from a Xterm terminal emulator in the Slackware
distribution of Linux 1.0.9, start the program by typing 'pash -m interactive'
to force the keyboard library to map the keyboard interactively instead of 
using /etc/termcap. For some reason, the sequences defined for Xterm in 
/etc/termcap in this distribution do not match the ones generated by the 
special keys in Xterm (see section 4 of this document for details about 
keyboard mapping). The problem is fixed in the Slackware Linux 1.1.59
distribution (InfoMagic 3 CD set).


*******************
** 3. Using Pash **
*******************

If you're familiar with the Norton Commander under MS-DOS, you will find 
Pash very easy to use since the general appearance and behavior of Pash is 
directly inspired from nc.

3.1. Standard aspect and basic operations
-----------------------------------------

Here's a look of the standard aspect of Pash:

  Pash 2.1 |  File  Window  Commands  Help       Ctrl-G = Menu         16:55:07 
+------------- /usr/pierre ------+-----++----------- /usr/pierre/pash ---+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     432|10/09/94|21:27||..            |     448|10/13/94|13:31|
|/Trash        |     128|10/10/94|23:45||aide.c        |    4005|10/19/94|16:40|
|/pash         |     960|10/18/94|18:59||aide.h        |      61|10/18/94|15:11|
|/dbms         |     544|10/10/94|17:29||aide.o        |    5474|10/19/94|16:41|
|/ddbms        |      80|10/12/94|23:26||args.c        |    2556|10/18/94|15:10|
|/shell        |     128|10/06/94|20:51||args.h        |     418|10/18/94|15:11|
|/terminal     |     768|10/18/94|20:26||args.o        |    1233|10/18/94|15:11|
|/termtest     |     112|10/18/94|20:26||ash           |  234686|10/19/94|16:42|
|/tmp          |     352|10/14/94|17:41||ash.c         |   86288|10/19/94|16:40|
|/unix_c       |     400|10/12/94|17:05||ash.h         |    1654|10/18/94|17:15|
|.Xdefaults    |    1536|10/07/94|00:25||ash.o         |   66104|10/19/94|16:41|
|.pashrc       |    3370|10/13/94|13:41||ash.txt       |   62164|10/12/94|16:48|
|.cshrc        |    1583|08/17/94|22:25||ashrc.ini     |    3370|10/04/94|18:13|
|.exrc         |     228|10/06/94|22:14||cd_tree.c     |   23315|10/18/94|15:10|
|.login        |    1704|10/06/94|21:02||cd_tree.h     |     609|10/18/94|15:11|
|.logout       |      19|10/04/93|00:46||cd_tree.o     |   11797|10/18/94|17:18|
|.mwmrc        |    2072|10/18/94|20:18||chmod.c       |    8794|10/19/94|16:28|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre>                                                                    

The standard screen is composed of:
  * a title bar containing:
     * the program name
     * the 4 pull-down menus (File, Window, Commands and Help)
     * a reminder of the keyboard Ctrl-key sequence used to access the 
       pull-down menus
     * the current time. 
  * 2 windows of 4 columns each. Inside each window, you find for each file:
     * the file or subdirectory name (if subdirectory, beginning with '/'). 
       The file name length is limited to 14 characters (System V standard).
       If the file name is longer (BSD or OSF/1), the fourteenth character
       will be replaced by '>'. The full name will be visible through the 
       complete file information window (see below). 
     * the file size in bytes
     * the date of last modification (MM/DD/YY format)
     * the time of last modification
     * the current selection status
  * a command line with the current subdirectory used as prompt.

IMPORTANT NOTE: if your system supports SYMBOLIC LINKS (BSD-based systems), 
a symbolic link to a DIRECTORY will be shown as a FILE (which it actually is).
You won't be able to 'cd' with the selection bar using the symbolic link file,
but you can still do it from the command line. 

Through the Window pull-down menu, you can switch to 4 windows mode (and
back). If you switch to 4 windows mode, here's what Pash looks like:

  Pash 2.1 |  File  Window  Commands  Help       Ctrl-G = Menu         16:55:44 
+------------- /usr/pierre ------+-----++----------- /usr/pierre/pash ---+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     432|10/09/94|21:27||..            |     448|10/13/94|13:31|
|/Trash        |     128|10/10/94|23:45||aide.c        |    4005|10/19/94|16:40|
|/pash         |     960|10/18/94|18:59||aide.h        |      61|10/18/94|15:11|
|/dbms         |     544|10/10/94|17:29||aide.o        |    5474|10/19/94|16:41|
|/ddbms        |      80|10/12/94|23:26||args.c        |    2556|10/18/94|15:10|
|/shell        |     128|10/06/94|20:51||args.h        |     418|10/18/94|15:11|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
+---------- /usr/pierre/dbms ----+-----++---------- /usr/pierre/shell ---+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     448|10/13/94|13:31||..            |     448|10/13/94|13:31|
|backup.dat    |       0|10/12/94|17:03||banner.sh     |    1292|12/01/92|20:00|
|clean.sh      |     138|05/19/93|19:15||dtou.sh       |      35|11/24/92|17:05|
|client        |   51155|10/10/94|15:01||ff.sh         |     114|08/15/93|15:12|
|client.c      |    8709|09/27/93|14:12||pman.sh       |      90|12/05/93|00:46|
|client.o      |    8740|10/10/94|15:01||reformat.sh   |     765|05/19/93|20:14|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre>                                                                    

Here's a list of the keys you can use when Pash is in one of the two modes 
above:
  * Tab (Ctrl-I) allows you to move from one window to another (from left to
    right and top to bottom only, since Shift-Tab does not exist on a 
    terminal)
  * the up and down arrows move the selection bar one file up or down and 
    scrolls if necessary
  * Ctrl-B (Home on PC) puts you on top of the current list
  * Ctrl-E (End on PC) puts you at the end of the current list
  * Ctrl-U (PgUp on PC, Prev Screen on VT) scrolls up one page
  * Ctrl-D (PgDn on PC, Next Screen on VT) scrolls down one page
  * Enter can induce six actions:
      * if the command line is not empty, it's executed.
      * if the selection bar is on a child directory, Pash goes down in.
      * if the selection bar is on the '..' file, Pash goes up one directory
      * if the selection bar is on a file called 'makefile' or 'Makefile',
	Pash starts 'make' with no argument.
      * if the extension of the file currently under the selection bar is in 
	the program-extension associations list, the associated program is 
	started with the current file as an argument (see below for how to 
	create a program-extension associations file).
      * otherwise, the current file is executed.
  * Ctrl-R refreshes the current window (that is: rereads the content of 
    the current working directory)
  * Ctrl-L redraws the entire screen (in case of an incoming root message, 
    for instance).
  * Ctrl-G (F9) gives you access to the pull-down menus.
  * All the Ctrl-Keys and special keys assigned to Pash's functionalities.

Through Pash's command line, you can type and execute any Unix command.  
However, Pash lets you handle the command line more easily than the standard 
shell. Here's a list of the keys you can use:   
  * the left and right arrows move the cursor one character in the command 
    line   
  * Backspace kills the character at the left of the cursor   
  * Ctrl-X (Del on PC, Remove on VT) kills the current character   
  * Enter executes the command

You can type characters and use Del and Backspace wherever the cursor is in  
the command line. 

Any command you execute is stored in an history list and can be recalled  
by typing Ctrl-P. Any recalled command is modifiable and reexecutable. 
With Escape or Ctrl-C, you can abort a search through the history list or 
reset the command line (see the Commands menu below for the HISTORY WINDOW
functionality). 

The executed commands are actually passed to the current underlaying shell 
(from the environment variable SHELL). If you use csh, any alias placed in 
the .cshrc file can be used. During the executions, all signals are ignored
for Pash and are put to default behavior for the child process.

Typing 'cd' with no argument will change directory for the active window to
your HOME directory. Typing 'cd' with an argument will change directory for
the active window to the argument given if possible.

Pash uses a 255 characters command line that can scroll horizontally under  
the prompt and beyond the screen. You can use the left and right arrows to 
move back hidden portions to the screen and modify them.

Some functionalities of Pash use input boxes to get text (e.g. the creation 
of a subdirectory). In the input boxes, you can use the same keys as on the 
command line, but also:   
  * Ctrl-B (Home on PC) to move the cursor at the beginning of the line.   
  * Ctrl-E (End on PC) to move the cursor at the end of the line   
  * Tab (or Ctrl-I) to access check boxes if any.

On SCO System V/386, the <Delete> key is used to send a SIGINT signal to the
current process (on Linux, Ctrl-C does that). To not confuse the SCO users, 
the <Delete> key has been set up to act as <Escape> or <Ctrl-C> in dialog 
boxes not performing text input (<Delete> deletes the current character 
during text inputs). So, to close a dialog box not performing text input,
you can press <Esc>, <Ctrl-C> or <Delete>.

3.2. The Program-Extension associations functionality
-----------------------------------------------------

Pash allows you to associate a certain file extension with the execution of 
a certain program. For instance, it might be useful to associate the '.c' 
extention with a text editor, since a C source code is often edited.

Doing so will cause Pash to start the chosen text editor when you press
<Enter> and the selection bar is placed on a file with the '.c' extension.
The text editor will be started with the name of the file as an argument.

To specify those Program-Extension associations, you must create a text file
called 'pash.ext' in your HOME directory using a text editor. 

Every entry in this file must have the following format: 

		Extention=Program [arguments]

Example: 

suppose you want to associate:
 - the '.c' and '.h' extensions with the 'vi' text editor.
 - the '.mk' extension with the 'make' program (in this case, 'make' must be
   started with the '-f' switch since the makefile is not called 'makefile').
 - any shell script with their associated shell, which would allow you to
   run shell scripts from Pash's windows as executables.

Here's what your $HOME/pash.ext file should look like:

	c=vi
	h=vi
	mk=make -f
	sh=sh
	csh=csh
	ksh=ksh

Note:
- DO NOT put any space before the extention or between the extension and the
  '=' character, they would be considered part of it.
- Any line beginning with '#' is ignored.
- When writing the $HOME/pash.ext file, don't forget to close the last line 
  by typing <Enter> at the end of it. If you don't, the fgets() system call 
  might act a little weird!

You can specify any number of constant arguments after the name of the 
program. The name of the current file will be added after the program name 
and any arguments specified. If the program is not accessible through the 
PATH, give its complete location in the filesystem.

The $HOME/pash.ext is read by the program at start-up. The list is then
created according to the entries currently in the file. If you want to add
some other associations, you must edit the file and restart the program. No
dynamic reconfiguration is possible.

3.3. The pull-down menu system
------------------------------

To access the functionalities of Pash, you can either use keyboard sequences 
(such as Ctrl-Keys or Function keys), or navigate through the pull-down menus
system. The menus will be necessary for some of the functionalities not 
directly accessible through a keyboard sequence.

You can access the pull-down menus by typing Ctrl-G (F9).

Pash has 4 pull-down menus: File, Window, Commands and Help. Here's a look at 
these menus. This will give you an overview of what Pash is capable of doing. 

The File menu:

  Pash 2.1 |  File  Window  Commands  Help       Ctrl-G = Menu                  
+----------+-------------------------------------+---- /usr/pierre ------+-----+
|     Name | User menu             Ctrl-J,F2,Do  |     |  Size  |  Date  |Time |
|..        | View/Edit             Ctrl-V,F3,F4  |     |     400|12/25/94|21:21|
|/pash     | Copy                  Ctrl-O,F5     |     |     752|01/26/95|15:00|
|/dbms     | move/Rename           Ctrl-Y,F6     |     |     528|01/21/95|18:41|
|/encrypt  | Link                                |     |     224|01/25/95|23:56|
|/shell    | make dIrectory        Ctrl-W,F7     |     |     128|12/25/94|22:47|
|/terminal | Delete                Ctrl-K,F8     |     |     800|01/24/95|01:36|
|/termtest +-------------------------------------+     |     160|01/09/95|12:29|
|/tmp      | File information      Ctrl-F        |     |     528|01/25/95|23:57|
|/unix_c   | change files(s) Mode                |     |     416|01/13/95|02:44|
|.pashrc   | change files(s) Owner               |     |     364|01/16/95|15:07|
|.cshrc    | change files(s) Group               |     |    1523|01/25/95|16:47|
|.exrc     +-------------------------------------+     |     228|10/06/94|22:14|
|.login    | selecT multiple       Ctrl-T,Select |     |    1691|01/12/95|21:20|
|.logout   | deSelect multiple     Ctrl-N        |     |      19|10/04/93|00:46|
|ansi.keys +-------------------------------------+     |    1548|01/16/95|15:08|
|ash.ext   | Quit                  F10           |     |      21|01/12/95|01:09|
|ash.mnu   +-------------------------------------+     |      98|01/26/95|15:03|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre>                                                                    

The Window Menu:

  Pash 2.1 |  File  Window  Commands  Help       Ctrl-G = Menu                  
+------------- /u+-------------------------------+---- /usr/pierre ------+-----+
|     Name     | | Switch 2 <-> 4 windows        |     |  Size  |  Date  |Time |
|..            | | Refresh                Ctrl-R |     |     432|10/09/94|21:27|
|/Trash        | +-------------------------------+     |     128|10/10/94|23:45|
|/pash         |     960|10/18/94|18:59||/pash         |     960|10/18/94|18:59|
|/dbms         |     544|10/10/94|17:29||/dbms         |     544|10/10/94|17:29|
|/ddbms        |      80|10/12/94|23:26||/ddbms        |      80|10/12/94|23:26|
|/shell        |     128|10/06/94|20:51||/shell        |     128|10/06/94|20:51|
|/terminal     |     768|10/18/94|20:26||/terminal     |     768|10/18/94|20:26|
|/termtest     |     112|10/18/94|20:26||/termtest     |     112|10/18/94|20:26|
|/tmp          |     352|10/19/94|17:02||/tmp          |     352|10/19/94|17:02|
|/unix_c       |     400|10/12/94|17:05||/unix_c       |     400|10/12/94|17:05|
|.Xdefaults    |    1536|10/07/94|00:25||.Xdefaults    |    1536|10/07/94|00:25|
|.pashrc       |    3370|10/13/94|13:41||.pashrc       |    3370|10/13/94|13:41|
|.cshrc        |    1583|08/17/94|22:25||.cshrc        |    1583|08/17/94|22:25|
|.exrc         |     228|10/06/94|22:14||.exrc         |     228|10/06/94|22:14|
|.login        |    1704|10/06/94|21:02||.login        |    1704|10/06/94|21:02|
|.logout       |      19|10/04/93|00:46||.logout       |      19|10/04/93|00:46|
|.mwmrc        |    2072|10/18/94|20:18||.mwmrc        |    2072|10/18/94|20:18|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre>                                                                    

The commands menu:

  Pash 2.1 |  File  Window  Commands  Help       Ctrl-G = Menu                  
+------------- /usr/pierr+---------------------+------ /usr/pierre ------+-----+
|     Name     |  Size  || display Processes   |me     |  Size  |  Date  |Time |
|..            |     400|| I.P.C. Control      |       |     400|12/25/94|21:21|
|/pash21       |     112|| directory Tree      |       |     112|12/25/94|23:53|
|/shell        |     128|| compare Directories |       |     128|12/25/94|22:47|
|/terminal     |     640|| History list        |al     |     640|12/31/94|13:24|
|/termtest     |     160|| Find file           |st     |     160|12/27/94|14:45|
|/tmp          |      48|+---------------------+       |      48|12/29/94|22:46|
|/unix_c       |     384|12/25/94|22:47||/unix_c       |     384|12/25/94|22:47|
|.pashrc       |    1030|12/25/94|21:28||.pashrc       |    1030|12/25/94|21:28|
|.cshrc        |    1583|08/17/94|22:25||.cshrc        |    1583|08/17/94|22:25|
|.exrc         |     228|10/06/94|22:14||.exrc         |     228|10/06/94|22:14|
|.login        |    1701|12/28/94|20:52||.login        |    1701|12/28/94|20:52|
|.logout       |      19|10/04/93|00:46||.logout       |      19|10/04/93|00:46|
|ansi.keys     |    1548|12/25/94|22:47||ansi.keys     |    1548|12/25/94|22:47|
|treeinfo.ash  |    1076|01/01/95|19:54||treeinfo.ash  |    1076|01/01/95|19:54|
|vt100.keys    |    1609|12/30/94|00:22||vt100.keys    |    1609|12/30/94|00:22|
|              |        |        |     ||              |        |        |     |
|              |        |        |     ||              |        |        |     |
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre>                                                                    

The Help menu:

  Pash 2.1 |  File  Window  Commands  Help       Ctrl-G = Menu                  
+------------- /usr/pierre ------+-+---------------------------------+---+-----+
|     Name     |  Size  |  Date  |T| Ctrl-keys list   Ctrl-A,F1,Help |e  |Time |
|..            |     432|10/09/94|2| About Pash 2.1 ...              |/94|21:27|
|/Trash        |     128|10/10/94|2+---------------------------------+/94|23:45|
|/pash         |     960|10/18/94|18:59||/pash         |     960|10/18/94|18:59|
|/dbms         |     544|10/10/94|17:29||/dbms         |     544|10/10/94|17:29|
|/ddbms        |      80|10/12/94|23:26||/ddbms        |      80|10/12/94|23:26|
|/shell        |     128|10/06/94|20:51||/shell        |     128|10/06/94|20:51|
|/terminal     |     768|10/18/94|20:26||/terminal     |     768|10/18/94|20:26|
|/termtest     |     112|10/18/94|20:26||/termtest     |     112|10/18/94|20:26|
|/tmp          |     352|10/19/94|17:02||/tmp          |     352|10/19/94|17:02|
|/unix_c       |     400|10/12/94|17:05||/unix_c       |     400|10/12/94|17:05|
|.Xdefaults    |    1536|10/07/94|00:25||.Xdefaults    |    1536|10/07/94|00:25|
|.pashrc       |    3370|10/13/94|13:41||.pashrc       |    3370|10/13/94|13:41|
|.cshrc        |    1583|08/17/94|22:25||.cshrc        |    1583|08/17/94|22:25|
|.exrc         |     228|10/06/94|22:14||.exrc         |     228|10/06/94|22:14|
|.login        |    1704|10/06/94|21:02||.login        |    1704|10/06/94|21:02|
|.logout       |      19|10/04/93|00:46||.logout       |      19|10/04/93|00:46|
|.mwmrc        |    2072|10/18/94|20:18||.mwmrc        |    2072|10/18/94|20:18|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre>                                                                    

In each menu window, each menu option is displayed with the keyboard
sequence(s) used to activate it. While in the menus, you can use this (or
these) keyboard sequence(s) or type the capital letter in each option to
activate it. 

We will now examine the options in every menu.

3.4. The help menu
------------------

This help menu can give you a window with the list of keyboard sequences
available while using Pash and an 'About' window.

To get the Ctrl-Keys list, just type Ctrl-A (F1 on PC, Help on VT). This 
will display the control keys list, that looks like this:

  Pash 2.1 |  File  Window  Commands  Help      Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++------------- /usr/pierre ------+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|.+--------------------------------------------------------------------------+1|
|/|                      Pash 2.1: Control-keys list.                         |0|
|/+------------------------------------+-------------------------------------+1|
|/| Ctrl-J (F2,Do): User Menu.         | Ctrl-P: Recall commands.            |6|
|/| Ctrl-V (F3,F4): Edit.              | Ctrl-R: Refresh window.             |7|
|/| Ctrl-O (F5):    Copy.              | Ctrl-L: Redraw entire screen.       |6|
|/| Ctrl-Y (F6):    Move/Rename.       +-------------------------------------+9|
|/| Ctrl-W (F7):    Create directory.  | Ctrl-I (Tab):  Change active window.|7|
|/| Ctrl-K (F8):    Delete.            | Ctrl-B (Home): Top of list.         |4|
|.| Ctrl-G (F9):    Pull Down Menus.   | Ctrl-E (End):  End of list.         |7|
|.+------------------------------------+ Ctrl-U (PgUp): Page Up.             |7|
|.| Ctrl-T: Select multiple files.     | Ctrl-D (PgDn): Page Down.           |4|
|.| Ctrl-N: Deselect multiple files.   | Ctrl-X (Del,Remove): Delete char.   |0|
|.| Ctrl-Z (Ins): Tag/Untag one file.  | Ctrl-C (Esc):  Reset Command Line.  |6|
|a+------------------------------------+-------------------------------------+8|
|a| Ctrl-F: File information.          | F10: Quit Pash.                     |9|
|a+------------------------------------+-------------------------------------+3|
+-|                         Press a key to exit...                           |-+
| +--------------------------------------------------------------------------+ |
+--------------------------------------++--------------------------------------+
/usr/pierre>                                                                    

Note that this window only gives informations about the functions directly
available through a Ctrl-key sequence. Some of the functions of Pash must be
accessed through a pull-down menu.

3.5. The File menu
------------------

This menu allows you to perform all the files and subdirectories handling
operations available in shell, plus a couple of neat features.

3.5.1. The User Menu functionality
----------------------------------

Pash allows you to create a user-defined menu in which you can place your
most often used commands, so that you don't have to type them anymore 
(testing Pash got me so keyboard-lazy, I just had to add this stuff!). 

There can be as many entries as you wish and each entry can have as many 
commands as you wish. The size of the menu window is adapted to the number 
of entries with a maximum size. If there are more entries than the maximum 
size can hold, you can scroll up and down with the usual special keys.

This User Menu will be accessible by typing Ctrl-J, F2 or Do (VT terminals).
Here's what it looks like (user menu on SCO System V/386):

  Pash 2.1 |  File  Window  Commands  Help       Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++------------- /usr/pierre ------+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     400|12/25/94|21:21||..            |     400|12/25/94|21:21|
|/pash         |     752|01/26/95|15:00||/pash         |     752|01/26/95|15:00|
|/dbms         |     528|01/21/95|18:41||/dbms         |     528|01/21/95|18:41|
|/encrypt      |     224|01/25/95|23:56||/encrypt      |     224|01/25/95|23:56|
|/shell        |                                             128|12/25/94|22:47|
|/terminal     |      +----------- User Menu ----------+     800|01/24/95|01:36|
|/termtest     |      |  MS-DOS emulator               |     160|01/09/95|12:29|
|/tmp          |      |  Become super-user             |     528|01/25/95|23:57|
|/unix_c       |      |  System Administration shell   |     416|01/13/95|02:44|
|.pashrc       |      |  Text Editor                   |     364|01/16/95|15:07|
|.cshrc        |      +--------------------------------+    1523|01/25/95|16:47|
|.exrc         |                                             228|10/06/94|22:14|
|.login        |    1691|01/12/95|21:20||.login        |    1691|01/12/95|21:20|
|.logout       |      19|10/04/93|00:46||.logout       |      19|10/04/93|00:46|
|ansi.keys     |    1548|01/16/95|15:08||ansi.keys     |    1548|01/16/95|15:08|
|ash.ext       |      21|01/12/95|01:09||ash.ext       |      21|01/12/95|01:09|
|ash.mnu       |      98|01/26/95|15:03||ash.mnu       |      98|01/26/95|15:03|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre>                                                                    

To be able to use such a menu, you must write a text file called 'pash.mnu' 
and place that text file in your HOME directory. The syntax to use is very
simple: 

  - Every line that must appear in the menu (the name of the entry) must 
    begin by the character ':'. There must be no space before this character.
  - all the commands necessary to the execution of this entry must be placed
    directly after the name of the entry.
  - any line beginning by '#' is ignored.

Here is the file used to build the menu above:

	:MS-DOS emulator
	dos
	:Become super-user
	su
	:System Administration shell
	sysadmsh
	:Text Editor
	vi

All the entries in this menu are single-command entries, but you could very
well have multi-command entries. For example, on Linux, you could have a
User Menu that looks like this:

	:System status
	free
	df
	ipcs
	:Become super-user
	su
	:Text Editor
	joe

There can be as many commands as you wish between two entry names.

The $HOME/pash.mnu is read by the program at start-up. The User Menu lists 
are then created according to the entries currently in the file. If you want 
to add some other entries or commands for an entry, you must edit the file 
and restart the program. No dynamic reconfiguration is possible.

Each executed command is actually passed INDIVIDUALLY to the current 
underlaying shell (from the environment variable SHELL). If you use csh, 
any alias placed in the .cshrc file can be used. During the executions, 
all signals are ignored for Pash and are put to default behavior for the 
child process. 

Since each command is individually passed to the current underlaying shell,
internal shell commands such as 'cd' won't work (this is NOT MS-DOS!). 
If you need to use any of these commands, write a shell script (batch file). 
If you type 'cd' on Pash's command line, it is intercepted and executed 
internally (that's why it works). Passing 'cd' to a child process will NOT 
change directory for the parent process.

When writing $HOME/pash.mnu, don't forget to close the last line by typing 
Enter at the end of it. If you don't, the fgets() system call might not 
like it!

If $HOME/pash.mnu exists, the program assumes that it contains at least one
uncommented option. If you comment everything out by placing '#' in the 
beginning of each line, the program will hang at initialization.

3.5.2. Selecting files or directories in the main windows
---------------------------------------------------------

You can mark/unmark files or subdirectories in Pash's lists to influence 
file handling operations. To mark/unmark ONE file or subdirectory, place 
the selection bar on it and type Ctrl-Z (Ins on PC, Insert Here on VT). 
If the file is marked, it will be displayed in bold, if not, in normal.

To select files or directories according to a selection mask, type Ctrl-T 
(Select on VT) to open the selection box. You can then type the mask you 
want to use.

  Pash 2.1 |  File  Window  Commands  Help       Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++----------- /usr/pierre/pash ---+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     432|10/09/94|21:27||..            |     448|10/13/94|13:31|
|/Trash        |     128|10/10/94|23:45||aide.c        |    4005|10/19/94|16:40|
|/pash         |     960|10/18/94|18:59||aide.h        |      61|10/18/94|15:11|
|/dbms         |     544|10/10/94|17:29||aide.o        |    5474|10/19/94|16:41|
|/ddbms        |      80|10/12/94|23:26||args.c        |    2556|10/18/94|15:10|
|/shell        |                                             418|10/18/94|15:11|
|/terminal     |       +-------- Select Files ----------+   1233|10/18/94|15:11|
|/termtest     |       | Enter selection mask:          |   4686|10/19/94|16:42|
|/tmp          |       | *.c                            |   6288|10/19/94|16:40|
|/unix_c       |       +--------------------------------+   1654|10/18/94|17:15|
|.Xdefaults    |                                            6104|10/19/94|16:41|
|.pashrc       |    3370|10/13/94|13:41||ash.txt       |   62164|10/12/94|16:48|
|.cshrc        |    1583|08/17/94|22:25||ashrc.ini     |    3370|10/04/94|18:13|
|.exrc         |     228|10/06/94|22:14||cd_tree.c     |   23315|10/18/94|15:10|
|.login        |    1704|10/06/94|21:02||cd_tree.h     |     609|10/18/94|15:11|
|.logout       |      19|10/04/93|00:46||cd_tree.o     |   11797|10/18/94|17:18|
|.mwmrc        |    2072|10/18/94|20:18||chmod.c       |    8794|10/19/94|16:28|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre/pash>                                                                

The files or subdirectories that correspond to the mask will be displayed in 
bold. To deselect files or directories according to a mask, type Ctrl-N to 
open the deselection box.

The masks that Pash uses are similar to those of MS-DOS, because these masks 
are more accurate than those of Unix:
  * '*' replaces a series of characters, '?' replaces one character.
  * you can select all the files without extension by '*.'
  * you can select all the files without name by '.*'
  * you can select all the files by '*.*' or '*'

3.5.3. Copying files or directories
-----------------------------------

The copy function is activated by typing Ctrl-O (F5). If several files or 
directories are selected, they can be copied. If not, the file or 
subdirectory on which the selection bar in currently placed can be copied.  

WARNINGS: - DO NOT try to copy a named pipe file (FIFO). It will most 
	    probably cause the program to hang!
	  - the copy function DOES NOT copy SYMBOLIC LINKS to files or
	    directories. It's too dangerous.
	  - the copy function DOES NOT copy empty files.

If Pash is in 4 windows mode, a first window appears and lets you choose one
of the 3 other subdirectories or another destination.

  Pash 2.1 |  File  Window  Commands  Help       Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++----------- /usr/pierre/pash ---+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     432|10/09/94|21:27||..            |     448|10/13/94|13:31|
|/Trash        |     128|10/10/94|23:45||aide.c        |    4005|10/19/94|16:40|
|/pash         |     960|10/18/94|18:59||aide.h        |      61|10/18/94|15:11|
|/dbms         |     544|10/10/94|17:29||aide.o        |    5474|10/19/94|16:41|
|/ddbms                                                         |10/18/94|15:10|
|/shell          +------ Copy: Choose Target Directory -----+   |10/18/94|15:11|
+-------------   |  /usr/pierre                             |   +--------+-----+
|      Selecte   |  Other destination                       |   70049 bytes    |
+-------------   |  /usr/pierre/tmp                         |   ---------------+
+----------- /   |  /usr/pierre/shell                       |   shell ---+-----+
|     Name       +------------------------------------------+   |  Date  |Time |
|..                                                             |10/13/94|13:31|
|              |        |        |     ||banner.sh     |    1292|12/01/92|20:00|
|              |        |        |     ||dtou.sh       |      35|11/24/92|17:05|
|              |        |        |     ||ff.sh         |     114|08/15/93|15:12|
|              |        |        |     ||pman.sh       |      90|12/05/93|00:46|
|              |        |        |     ||reformat.sh   |     765|05/19/93|20:14|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre/pash>                                                                

You will then have to enter the target for copy. Some restrictions are  
applied to this target specification:
  * you cannot use wildcards. It's then impossible to perform "cp *.c *.old".
  * if several files are selected, the target must be a directory (if you 
    want to concatenate files, use the cat program from the command line).
  * if no file is selected (copy of the file or directory currently under the
    selection bar), the target can be a file or a subdirectory.

Pash is recursive. You can then copy subdirectories with their content to 
another location. To do so, use the Tab key and the spacebar to check the  
"Process subdirectories" box. If you don't, no selected directory will be 
copied.

  Pash 2.1 |  File  Window  Commands  Help        Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++----------- /usr/pierre/pash ---+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     432|10/09/94|21:27||..            |     448|10/13/94|13:31|
|/Trash        |     128|10/10/94|23:45||aide.c        |    4005|10/19/94|16:40|
|/pash         |     960|10/18/94|18:59||aide.h        |      61|10/18/94|15:11|
|/dbms         |     544|10/10/94|17:29||aide.o        |    5474|10/19/94|16:41|
|/d                                                                          10|
|/s   +----------------------------- Copy -------------------------------+   11|
+--   | Copy 16 files or directories to                                  |   --+
|     | /usr/pierre/tmp                                                  |     |
+--   +------------------------------------------------------------------+   --+
+--   |   [ ] Process subdirectories                                     |   --+
|     +------------------------------------------------------------------+   e |
|..                                                                          31|
|              |        |        |     ||banner.sh     |    1292|12/01/92|20:00|
|              |        |        |     ||dtou.sh       |      35|11/24/92|17:05|
|              |        |        |     ||ff.sh         |     114|08/15/93|15:12|
|              |        |        |     ||pman.sh       |      90|12/05/93|00:46|
|              |        |        |     ||reformat.sh   |     765|05/19/93|20:14|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre/pash>                                                                

When the target is typed and validated, the copy cycle begins. Every file is 
displayed with a copy status bar.

  Pash 2.1 |  File  Window  Commands  Help        Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++----------- /usr/pierre/pash ----+----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     432|10/09/94|21:27||..            |     448|10/13/94|13:31|
|/Trash                                                          10/19/94|16:40|
|/pash            +------------------ Copy ------------------+   10/18/94|15:11|
|/dbms            |      Copying the file or directory       |   10/19/94|16:41|
|/ddbms           |                   ash                    |   10/18/94|15:10|
|/shell           |                   to                     |   10/18/94|15:11|
+--------------   |           /usr/pierre/tmp/pash           |   --------+-----+
|      Selected   |                                 |   2645 bytes    |
+--------------   +------------------------------------------+   --------------+
+----------- /u                                                  hell ---+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     448|10/13/94|13:31||..            |     448|10/13/94|13:31|
|              |        |        |     ||banner.sh     |    1292|12/01/92|20:00|
|              |        |        |     ||dtou.sh       |      35|11/24/92|17:05|
|              |        |        |     ||ff.sh         |     114|08/15/93|15:12|
|              |        |        |     ||pman.sh       |      90|12/05/93|00:46|
|              |        |        |     ||reformat.sh   |     765|05/19/93|20:14|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre/pash>                                                                

When creating the copy, Pash performs two operations that the shell doesn't  
always perform:

  * it adjusts the mode (permissions) of the copy according to the mode of  
    the original. This means that the copy of an executable file will be 
    executable.
  * it adjusts the time of last access and the time of last modification 
    according to those of the original. The time of last status modification 
    will be the time of creation of the copy.
  
During the copy cycle, pressing any key on the keyboard will pop up a cancel 
box that allows you to interrupt the cycle.

  Pash 2.1 |  File  Window  Commands  Help        Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++----------- /usr/pierre/pash ---+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     432|10/09/94|21:27||..            |     448|10/13/94|13:31|
|/Trash                                                          10/19/94|16:40|
|/pash            +------------------ Copy ------------------+   10/18/94|15:11|
|/dbms            |      Copying the file or directory       |   10/19/94|16:41|
|/ddbms           |                cd_tree.c                 |   10/18/94|15:10|
|/shell           |                   to                     |   10/18/94|15:11|
+--------------   |        /usr/pierre/tmp/cd_tree.c         |   --------+-----+
|      Selected                                                  0049 bytes    |
+--------------   +------------------ Copy ------------------+   --------------+
+----------- /u   |         Copy interrupted by user.        |   hell ---+-----+
|     Name        |  Do you wish to cancel the copy cycle ?  |     Date  |Time |
|..               |              Cancel   Resume             |   10/13/94|13:31|
|                 +------------------------------------------+   12/01/92|20:00|
|                                                                11/24/92|17:05|
|              |        |        |     ||ff.sh         |     114|08/15/93|15:12|
|              |        |        |     ||pman.sh       |      90|12/05/93|00:46|
|              |        |        |     ||reformat.sh   |     765|05/19/93|20:14|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre/pash>                                                                

If this cancellation box pops up even though you didn't press any key, this
means that something is wrong with the non-blocking keyboard I/O. Change the
KeyboardType entry value in the initialization file (see below in the 
initialization file section of this document for details).

For every file it copies, Pash checks if a version doesn't already exist in  
the target directory. If so, it pops up a confirmation box to ask you what 
to do.

  Pash 2.1 |  File  Window  Commands  Help        Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++----------- /usr/pierre/pash ---+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     432|10/09/94|21:27||..            |     448|10/13/94|13:31|
|/Trash                                                          10/19/94|16:40|
|/pash            +------------------ Copy ------------------+   10/18/94|15:11|
|/dbms            |      Copying the file or directory       |   10/19/94|16:41|
|/ddbms           |                 aide.c                   |   10/18/94|15:10|
|/shell           |                   to                     |   10/18/94|15:11|
+-------------                                                    -------+-----+
|      Selecte   +------------------- Copy -------------------+    byte        |
+-------------   |         WARNING: the file "aide.c"         |   -------------+
+----------- /   |   already exists in the target directory   |   ell ---+-----+
|     Name       |               /usr/pierre/tmp              |    Date  |Time |
|..              |   Do you wish to overwrite the old file?   |   0/13/94|13:31|
|aide.c          |       Overwrite   All   Skip   Cancel      |   2/01/92|20:00|
|args.c          +--------------------------------------------+   1/24/92|17:05|
|ash.c                                                            8/15/93|15:12|
|cd_tree.c     |   23315|10/18/94|15:10||pman.sh       |      90|12/05/93|00:46|
|              |        |        |     ||reformat.sh   |     765|05/19/93|20:14|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre/pash>                                                                

3.5.4. Other file or directory operations
-----------------------------------------

* To activate the Delete function, type Ctrl-K (F8). 

* To activate the Move/Rename function, type Ctrl-Y (F6). Make sure you 
  know what you're doing if you move or rename a symbolic link file: if the 
  file or directory pointed is not specified in absolute (from the root), 
  it might cause problems. Note this function uses the Unix system call 
  rename() instead of copying and deleting the original. Check the 
  limitations of this system call on your system before blaming the program 
  (mounted partitions, ...).

* To activate the Link function (shell's ln), choose option #5 in the File
  menu. The links created by this function are HARD LINKS (the program uses 
  the link() system call) since symbolic links are not very portable so far.
  This means that you must be super-user to create links to subdirectories
  using Pash's function (feel free to use ln -s from Pash's command line if 
  you want to create symbolic links and your system supports that stuff).

These 3 functions work just like the copy function.

* To activate the create directory function, type Ctrl-W (F7).

* To edit the file currently under the selection bar, type Ctrl-V (F3 or F4).
  The default editor is started using the system() system call. Check the
  limitations of this system call on your system as far as which shell is 
  used and what signals are blocked for the parent process during the 
  execution of the child (I never had any problems with it, though).

NOTE FOR LINUX USERS: some problems have been encountered with Slackware
Linux 1.0.9 on partitions NOT formated with the new ext2 format: the delete 
function could not delete directories. If you encounter the same problem, 
check how your partition has been formated. 

3.5.5. Getting a complete file information
------------------------------------------

To get a complete file information on the file currently under the selection 
bar, just type Ctrl-F:

  Pash 2.1 |  File  Window  Commands  Help        Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++----------- /usr/pierre/pash ----+----+
|     Name+----------------------------------------------------------+e  |Time |
|..       |               Complete File Information                  |/94|13:31|
|/Trash   +----------------------------------------------------------+/94|16:40|
|/pash    | Filename: pash.c                                         |/94|15:11|
|/dbms    +----------------------------------+-----------------------+/94|16:41|
|/ddbms   | File Type:      Ordinary File    | Owner: rw-            |/94|15:10|
|/shell   | Size in bytes:  86288            | Group: ---            |/94|15:11|
|/terminal| Inode Number:   5201             | Other: ---            |/94|15:11|
|/termtest| Links:          1                | set-uid: OFF          |/94|16:42|
|/tmp     | Sticky bit:     OFF              | set-gid: OFF          |/94|16:40|
|/unix_c  +----------------------------------+-----------------------+/94|17:15|
|.Xdefault| Owner Name: pierre (Owner ID: 200)                       |/94|16:41|
|.pashrc  | Group Name: group (Group ID: 50)                         |/94|16:48|
|.cshrc   +----------------------------------------------------------+/94|18:13|
|.exrc    | Last Acces:               10/19/94 16:40                 |/94|15:10|
|.login   | Last Data Modification:   10/19/94 16:40                 |/94|15:11|
|.logout  | Last Status Modification: 10/19/94 16:40                 |/94|17:18|
|.mwmrc   +----------------------------------------------------------+/94|16:28|
+---------|                 Press a key to exit...                   |---+-----+
|      Sel+----------------------------------------------------------+e        |
+--------------------------------------++--------------------------------------+
/usr/pierre/pash>                                                           

If your system supports symbolic links (this includes Linux), and if the file
beeing examined is a symbolic link to another file or to a directory, if the
symbolic link can be solved (permissions of the current account), the name of 
the file will be displayed followed by '->' and the name of the file or 
directory it's linked to. 

3.5.6. Changing file(s) mode
----------------------------

Pash allows you to modify the mode of one or several files interactively. 

If no file is selected, you can modify the mode of the file currently under  
the selection bar. The present mode will be displayed and can be modified 
using the up and down arrows and the spacebar. Enter will confirm the change.

  Pash 2.1 |  File  Window  Commands  Help        Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++----------- /usr/pierre/pash ---+----+
|     Name                                                      |  Date  |Time |
|..              +------------------------------------------+   |10/13/94|13:31|
|/Trash          |        Changing mode for the file        |   |10/19/94|16:40|
|/pash           |                 pash.c                   |   |10/18/94|15:11|
|/dbms           +------------------------------------------+   |10/19/94|16:41|
|/ddbms          |   User:  Read    [X]    Set-uid    [ ]   |   |10/18/94|15:10|
|/shell          |          Write   [X]    Set-gid    [ ]   |   |10/18/94|15:11|
|/terminal       |          Execute [ ]    Sticky bit [ ]   |   |10/18/94|15:11|
|/termtest       |   Group: Read    [ ]                     |   |10/19/94|16:42|
|/tmp            |          Write   [ ]                     |   |10/19/94|16:40|
|/unix_c         |          Execute [ ]                     |   |10/18/94|17:15|
|.Xdefaults      |   Other: Read    [ ]                     |   |10/19/94|16:41|
|.pashrc         |          Write   [ ]                     |   |10/12/94|16:48|
|.cshrc          |          Execute [ ]                     |   |10/04/94|18:13|
|.exrc           +------------------------------------------+   |10/18/94|15:10|
|.login          | Up/Down arrows to move, Space to change. |   |10/18/94|15:11|
|.logout         |      Enter to change mode to settings.   |   |10/18/94|17:18|
|.mwmrc          |         Ctrl-C (Esc) to cancel.          |   |10/19/94|16:28|
+-------------   +------------------------------------------+   +--------+-----+
|      Selecte                                                   0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre/pash>                                                                

If several files are selected, you must check the attributes to activate or 
deactivate on all of them no matter what their present mode is.

  Pash 2.1 |  File  Window  Commands  Help        Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++----------- /usr/pierre/pash ---+----+
|     Nam                                                            te  |Time |
|..         +----------------------------------------------------+   3/94|13:31|
|/Trash     |            Changing mode for 52 files              |   9/94|16:40|
|/pash      +----------------------------------------------------+   8/94|15:11|
|/dbms      |                  Set Unset             Set Unset   |   9/94|16:41|
|/ddbms     |   User:  Read    [X] [ ]    Set-uid    [ ] [ ]     |   8/94|15:10|
|/shell     |          Write   [ ] [ ]    Set-gid    [ ] [ ]     |   8/94|15:11|
|/termina   |          Execute [ ] [X]    Sticky bit [ ] [ ]     |   8/94|15:11|
|/termtes   |   Group: Read    [ ] [ ]                           |   9/94|16:42|
|/tmp       |          Write   [ ] [ ]                           |   9/94|16:40|
|/unix_c    |          Execute [ ] [ ]                           |   8/94|17:15|
|.Xdefaul   |   Other: Read    [ ] [ ]                           |   9/94|16:41|
|.pashrc    |          Write   [ ] [ ]                           |   2/94|16:48|
|.cshrc     |          Execute [ ] [ ]                           |   4/94|18:13|
|.exrc      +----------------------------------------------------+   8/94|15:10|
|.login     | Up/Down/Left/Right arrows to move, Space to change |   8/94|15:11|
|.logout    |          Enter to change modes to settings.        |   8/94|17:18|
|.mwmrc     |               Ctrl-C (Esc) to cancel.              |   9/94|16:28|
+--------   +----------------------------------------------------+   ----+-----+
|      Se                                                             bytes    |
+--------------------------------------++--------------------------------------+
/usr/pierre/pash>                                                                

3.5.7. Changing file(s) owner or group
--------------------------------------

These two functions allow you to interactively change the owner or group of
one or several files. 

3.5.8. Leaving Pash
-------------------

To leave Pash, type F10 or choose the last option in the File pull-down menu
to get the confirmation box:

  Pash 2.1 |  File  Window  Commands  Help        Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++----------- /usr/pierre/pash ---+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     432|10/09/94|21:27||..            |     448|10/13/94|13:31|
|/Trash        |     128|10/10/94|23:45||aide.c        |    4005|10/19/94|16:40|
|/pash         |     960|10/18/94|18:59||aide.h        |      61|10/18/94|15:11|
|/dbms         |     544|10/10/94|17:29||aide.o        |    5474|10/19/94|16:41|
|/ddbms        |      80|10/12/94|23:26||args.c        |    2556|10/18/94|15:10|
|/shell        |                                              18|10/18/94|15:11|
|/terminal     |     +--------------- Quit ---------------+   33|10/18/94|15:11|
|/termtest     |     |        You want to quit Pash?      |   86|10/19/94|16:42|
|/tmp          |     |              Yes   No              |   88|10/19/94|16:40|
|/unix_c       |     +------------------------------------+   54|10/18/94|17:15|
|.Xdefaults    |                                              04|10/19/94|16:41|
|.pashrc       |    3370|10/13/94|13:41||ash.txt       |   62164|10/12/94|16:48|
|.cshrc        |    1583|08/17/94|22:25||ashrc.ini     |    3370|10/04/94|18:13|
|.exrc         |     228|10/06/94|22:14||cd_tree.c     |   23315|10/18/94|15:10|
|.login        |    1704|10/06/94|21:02||cd_tree.h     |     609|10/18/94|15:11|
|.logout       |      19|10/04/93|00:46||cd_tree.o     |   11797|10/18/94|17:18|
|.mwmrc        |    2072|10/18/94|20:18||chmod.c       |    8794|10/19/94|16:28|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre>                                                                    

You must then confirm or cancel.

3.6. The Window menu
--------------------

This menu allows you to switch between 2 windows and 4 windows mode, as
seen in paragraph "standard aspect and basic operations".

It also allows you to refresh the current window (Ctrl-R).
 
3.7. The Commands menu
----------------------

All the options in this menu are special operations not directly available
through a keyboard sequence.

3.7.1. The process handling function
------------------------------------

This function allows you to visualize the currently running processes in a 
window and to send a signal to one of them.

  Pash 2.1 |  File  Window  Commands  Help        Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++------------- /usr/pierre ------+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     400|12/25/94|21:21||..            |     400|12/25/94|21:21|
|/pash                                                               7/95|14:51|
|/shell     +--------------------- Processes --------------------+   5/94|22:47|
|/termina   |  NAME                            PID         TTY   |   6/95|19:42|
|/termtes   +----------------------------------------------------+   9/95|12:29|
|/tmp       | ps                               365         2a    |   5/95|01:31|
|/unix_c    | testmenu                         363         01    |   3/95|02:44|
|.pashrc    | csh                              284         2a    |   6/95|15:07|
|.cshrc     | pash                             329         01    |   7/94|22:25|
|.exrc      | csh                              359         01    |   6/94|22:14|
|.login     | pash                             341         2a    |   2/95|21:20|
|.logout    | csh                              269         01    |   4/93|00:46|
|ansi.key   +----------------------------------------------------+   6/95|15:08|
|ash.ext    |   Up/Down arrows to move, Enter to send a signal,  |   2/95|01:09|
|log        |      Ctrl-R to refresh, Ctrl-C (Esc) to cancel.    |   4/95|18:04|
|treeinfo   +----------------------------------------------------+   1/95|02:59|
|vt220.ke                                                            7/95|12:46|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre>                                                                    

You can move the selection bar using the up and down arrows, and press 
Enter to pop up the signal choosing box.

  Pash 2.1 |  File  Window  Commands  Help        Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++------------- /usr/pierre ------+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     400|12/25/94|21:21||..            |     400|12/25/94|21:21|
|/pash                                                               7/95|14:51|
|/shell     +--------------------- Processes -                              :47|
|/termina   |  NAME                              +---- Choose signal ---+   :42|
|/termtes   +---------------------------------   |  SIGTERM (kill -15)  |   :29|
|/tmp       | ps                                 |  SIGINT  (kill -2)   |   :31|
|/unix_c    | testmenu                           |  SIGQUIT (kill -3)   |   :44|
|.pashrc    | csh                                |  SIGKILL (kill -9)   |   :07|
|.cshrc     | pash                               |  SIGHUP  (kill -1)   |   :25|
|.exrc      | csh                                |  SIGTRAP (kill -5)   |   :14|
|.login     | pash                               |  SIGABRT (kill -6)   |   :20|
|.logout    | csh                                |  SIGUSR1 (kill -16)  |   :46|
|ansi.key   +---------------------------------   |  SIGUSR2 (kill -17)  |   :08|
|ash.ext    |   Up/Down arrows to move, Enter    |  SIGALRM (kill -14)  |   :09|
|log        |      Ctrl-R to refresh, Ctrl-C (   +----------------------+   :04|
|treeinfo   +---------------------------------                              :59|
|vt220.ke                                                            7/95|12:46|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre>                                                                    
  
With the up and down arrows, you can choose the signal to send. Enter sends  
the signal. The program then displays an information box to give you the  
status  of the operation.

  Pash 2.1 |  File  Window  Commands  Help        Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++------------- /usr/pierre ------+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     400|12/25/94|21:21||..            |     400|12/25/94|21:21|
|/pash                                                               7/95|14:51|
|/shell     +--------------------- Processes --------------------+   5/94|22:47|
|/termina   |  NAME                            PID         TTY   |   6/95|19:42|
|/termtes   +----------------------------------------------------+   9/95|12:29|
|/tmp       | p                                                  |   5/95|01:31|
|/unix_c    | t   +------------------ Kill ------------------+   |   3/95|02:44|
|.pashrc    | c   |  Signal 15 successfully sent to process  |   |   6/95|15:07|
|.cshrc     | a   |                 testmenu                 |   |   7/94|22:25|
|.exrc      | c   |                    OK                    |   |   6/94|22:14|
|.login     | a   +------------------------------------------+   |   2/95|21:20|
|.logout    | c                                                  |   4/93|00:46|
|ansi.key   +----------------------------------------------------+   6/95|15:08|
|ash.ext    |   Up/Down arrows to move, Enter to send a signal,  |   2/95|01:09|
|log        |      Ctrl-R to refresh, Ctrl-C (Esc) to cancel.    |   4/95|18:04|
|treeinfo   +----------------------------------------------------+   1/95|02:59|
|vt220.ke                                                            7/95|12:46|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre>                                                                    

You can then repeat the operation on another process directly or refresh the
display using Ctrl-R to update the list of currently running processes (you
should always do this between each signal send, since the death of a process
can induce the death of another one).

To close the window when you're done, type Ctrl-C (Esc).

3.7.2. The I.P.C. Control function
----------------------------------

Pash allows you to visualize and destroy IPC devices through list boxes. 
Only System V IPC devices are supported (message queues, semaphores and 
shared memories) since they're the only ones to be widely implemented among 
Unix flavors. 

First, you must choose the type of IPC device you want to examine.

  Pash 2.1 |  File  Window  Commands  Help        Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++----------- /usr/pierre/pash ---+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     432|10/09/94|21:27||..            |     448|10/13/94|13:31|
|/Trash        |     128|10/10/94|23:45||aide.c        |    4005|10/19/94|16:40|
|/pash         |     960|10/18/94|18:59||aide.h        |      61|10/18/94|15:11|
|/dbms         |     544|10/10/94|17:29||aide.o        |    5474|10/19/94|16:41|
|/ddbms        |      80                               |    2556|10/18/94|15:10|
|/shell        |     128   +--- I.P.C. Control ---+    |     418|10/18/94|15:11|
|/terminal     |     768   |  Message Queues      |    |    1233|10/18/94|15:11|
|/termtest     |     112   |  Semaphores          |    |  234686|10/19/94|16:42|
|/tmp          |     352   |  Shared Memories     |    |   86288|10/19/94|16:40|
|/unix_c       |     400   |  Cancel              |    |    1654|10/18/94|17:15|
|.Xdefaults    |    1536   +----------------------+    |   66104|10/19/94|16:41|
|.pashrc       |    3370                               |   62164|10/12/94|16:48|
|.cshrc        |    1583|08/17/94|22:25||ashrc.ini     |    3370|10/04/94|18:13|
|.exrc         |     228|10/06/94|22:14||cd_tree.c     |   23315|10/18/94|15:10|
|.login        |    1704|10/06/94|21:02||cd_tree.h     |     609|10/18/94|15:11|
|.logout       |      19|10/04/93|00:46||cd_tree.o     |   11797|10/18/94|17:18|
|.mwmrc        |    2072|10/18/94|20:18||chmod.c       |    8794|10/19/94|16:28|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre/pash>                                                                

Pash then displays in a list box all the devices of this type he's found.  

  Pash 2.1 |  File  Window  Commands  Help        Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++----------- /usr/pierre/pash ---+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     432|10/09/94|21:27||..            |     448|10/13/94|13:31|
|/Trash                                                               /94|16:40|
|/pash       +------------------ Message Queues ------------------+   /94|15:11|
|/dbms       |  ID        OWNER        GROUP            MODE      |   /94|16:41|
|/ddbms      +----------------------------------------------------+   /94|15:10|
|/shell      |  1         pierre       group        --rw-r--r--   |   /94|15:11|
|/terminal   |  50        pierre       group        -Rrw-r--r--   |   /94|15:11|
|/termtest   |                                                    |   /94|16:42|
|/tmp        |                                                    |   /94|16:40|
|/unix_c     |                                                    |   /94|17:15|
|.Xdefault   |                                                    |   /94|16:41|
|.pashrc     |                                                    |   /94|16:48|
|.cshrc      +----------------------------------------------------+   /94|18:13|
|.exrc       |   Up/Down arrows to move, Enter to destroy IPC.    |   /94|15:10|
|.login      |               Ctrl-C (Esc) to cancel.              |   /94|15:11|
|.logout     +----------------------------------------------------+   /94|17:18|
|.mwmrc                                                               /94|16:28|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre/pash>                                                                

By moving the selection bar, you can select the device to destroy. Pressing
Enter pops up a confirmation box. 

  Pash 2.1 |  File  Window  Commands  Help        Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++----------- /usr/pierre/pash ---+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     432|10/09/94|21:27||..            |     448|10/13/94|13:31|
|/Trash                                                               /94|16:40|
|/pash       +------------------ Message Queues ------------------+   /94|15:11|
|/dbms       |  ID        OWNER        GROUP            MODE      |   /94|16:41|
|/ddbms      +----------------------------------------------------+   /94|15:10|
|/shell      |                                                    |   /94|15:11|
|/terminal   |    +----------------- Confirm -----------------+   |   /94|15:11|
|/termtest   |    |   You want to destroy the Message Queue   |   |   /94|16:42|
|/tmp        |    |          Owner: pierre - ID: 50           |   |   /94|16:40|
|/unix_c     |    |               Yes   Cancel                |   |   /94|17:15|
|.Xdefault   |    +-------------------------------------------+   |   /94|16:41|
|.pashrc     |                                                    |   /94|16:48|
|.cshrc      +----------------------------------------------------+   /94|18:13|
|.exrc       |   Up/Down arrows to move, Enter to destroy IPC.    |   /94|15:10|
|.login      |               Ctrl-C (Esc) to cancel.              |   /94|15:11|
|.logout     +----------------------------------------------------+   /94|17:18|
|.mwmrc                                                               /94|16:28|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre/pash>                                                                

if confirmed, the device will be destroyed and a information box will give  
you the operation status.

  Pash 2.1 |  File  Window  Commands  Help        Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++----------- /usr/pierre/pash ---+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     432|10/09/94|21:27||..            |     448|10/13/94|13:31|
|/Trash                                                               /94|16:40|
|/pash       +------------------ Message Queues ------------------+   /94|15:11|
|/dbms       |  ID        OWNER        GROUP            MODE      |   /94|16:41|
|/ddbms      +----------------------------------------------------+   /94|15:10|
|/shell      |  1                                                 |   /94|15:11|
|/terminal   |  5   +--------------- msgctl ---------------+      |   /94|15:11|
|/termtest   |      |    The Message Queue is destroyed    |      |   /94|16:42|
|/tmp        |      |                  OK                  |      |   /94|16:40|
|/unix_c     |      +--------------------------------------+      |   /94|17:15|
|.Xdefault   |                                                    |   /94|16:41|
|.pashrc     |                                                    |   /94|16:48|
|.cshrc      +----------------------------------------------------+   /94|18:13|
|.exrc       |   Up/Down arrows to move, Enter to destroy IPC.    |   /94|15:10|
|.login      |               Ctrl-C (Esc) to cancel.              |   /94|15:11|
|.logout     +----------------------------------------------------+   /94|17:18|
|.mwmrc                                                               /94|16:28|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre/pash>                                                                

3.7.3. The Directory tree window
--------------------------------

Pash allows you to visualize your session's directory tree in a window. By 
moving the selection bar, you can then change directory directly.

  Pash 2.1 |  File  Window  Commands  Help        Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++----------- /usr/pierre/pash ---+-----+
|                                                                          ime |
|..     +----------------------- Directory Tree -----------------------+   3:31|
|/Tra   | /usr/pierre                                                  |   6:40|
|/pash  |  +- Trash                                                    |   5:11|
|/dbm   |  +- pash                                                     |   6:41|
|/ddb   |  +- dbms                                                     |   5:10|
|/she   |  +- ddbms                                                    |   5:11|
|/ter   |  |   +- cti                                                  |   5:11|
|/ter   |  |   +- unix01                                               |   6:42|
|/tmp   |  +- shell                                                    |   6:40|
|/uni   |  +- terminal                                                 |   7:15|
|.Xde   |  +- termtest                                                 |   6:41|
|.ash   |  +- tmp                                                      |   6:48|
|.csh   |  +- unix_c                                                   |   8:13|
|.exr   +--------------------------------------------------------------+   5:10|
|.log   |    Up/Down arrows to move, Enter to change directory to:     |   5:11|
|.log   |                       /usr/pierre/pash                       |   7:18|
|.mwm   |       Ctrl-R to refresh tree, Ctrl-C (Esc) to cancel.        |   6:28|
+----   +--------------------------------------------------------------+   ----+
|                                                                              |
+--------------------------------------++--------------------------------------+
/usr/pierre/pash>                                                                

Pash saves the tree informations in a file called $HOME/treeinfo.pash. Note  
that creating or deleting directories with Pash's functions doesn't update 
this file. You will have to refresh it once in a while to keep it accurate.

When Pash is searching the directory tree, pressing any key allows you to 
cancel the operation through a confirmation box.

3.7.4. The compare directories function
---------------------------------------

This functionality allows you to compare 2 by 2 the content of 2 directories 
and to mark files for a copy operation. If Pash is in 4 windows mode, you can 
compare the 2 upper windows or the 2 lower windows. No cross comparison is 
possible.

Will be marked:
  * Files or subdirectories being in one window and not in the other.
  * files newer in one window than in the other.

3.7.5. The History list window
------------------------------

Through this option of the Command pull-down menu, you can visualize all the 
memorized commands of the history list in a window, as shown here:

  Pash 2.1 |  File  Window  Commands  Help        Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++----------- /usr/pierre/pash ---+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     432|10/09/94|21:27||..            |     448|10/13/94|13:31|
|/Trash        |     128|10/10/94|23:45||aide.c        |    4005|10/19/94|16:40|
|/pash         |     960|10/18/94|18:59||aide.h        |      61|10/18/94|15:11|
|/dbms         |                                            5474|10/19/94|16:41|
|/ddbms        |      +--------- History List ---------+    2556|10/18/94|15:10|
|/shell        |      |  netstat -a                    |     418|10/18/94|15:11|
|/terminal     |      |  who                           |    1233|10/18/94|15:11|
|/termtest     |      |  make                          |   34686|10/19/94|16:42|
|/tmp          |      |  ls                            |   86288|10/19/94|16:40|
|/unix_c       |      |  ls                            |    1654|10/18/94|17:15|
|.Xdefaults    |      |                                |   66104|10/19/94|16:41|
|.pashrc       |      +--------------------------------+   62164|10/12/94|16:48|
|.cshrc        |                                            3370|10/04/94|18:13|
|.exrc         |     228|10/06/94|22:14||cd_tree.c     |   23315|10/18/94|15:10|
|.login        |    1704|10/06/94|21:02||cd_tree.h     |     609|10/18/94|15:11|
|.logout       |      19|10/04/93|00:46||cd_tree.o     |   11797|10/18/94|17:18|
|.mwmrc        |    2072|10/18/94|20:18||chmod.c       |    8794|10/19/94|16:28|
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre/pash>                                                                

You can move through the list to choose the command to recall. Once found,
press Enter to place the command on the command line. You can then modify
it and/or execute it.

3.7.6. The Find File functionality
----------------------------------

This functionality allows you to perform file searching operations according
to a selection mask on the entire filesystem or on a portion of it.

First, you must specify the search mask. Wildcards can, of course, be used:

  Pash 2.1 |  File  Window  Commands  Help        Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++------------- /usr/pierre ------+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     400|12/25/94|21:21||..            |     400|12/25/94|21:21|
|/pash21       |     112|12/25/94|23:53||/pash21       |     112|12/25/94|23:53|
|/shell        |     128|12/25/94|22:47||/shell        |     128|12/25/94|22:47|
|/terminal     |     640|12/31/94|13:24||/terminal     |     640|12/31/94|13:24|
|/termtest     |     160|12/27/94|14:45||/termtest     |     160|12/27/94|14:45|
|/tmp          |                                              48|12/29/94|22:46|
|/unix_c       |       +---------- Find File ------------+   384|12/25/94|22:47|
|.pashrc       |       | Enter search mask:              |   030|12/25/94|21:28|
|.cshrc        |       |  pash*.*                        |   583|08/17/94|22:25|
|.exrc         |       +---------------------------------+   228|10/06/94|22:14|
|.login        |                                             701|12/28/94|20:52|
|.logout       |      19|10/04/93|00:46||.logout       |      19|10/04/93|00:46|
|ansi.keys     |    1548|12/25/94|22:47||ansi.keys     |    1548|12/25/94|22:47|
|treeinfo.ash  |    1076|01/01/95|19:54||treeinfo.ash  |    1076|01/01/95|19:54|
|vt100.keys    |    1609|12/30/94|00:22||vt100.keys    |    1609|12/30/94|00:22|
|              |        |        |     ||              |        |        |     |
|              |        |        |     ||              |        |        |     |
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre>                                                                    

Then, you must specify the portion of the filesystem you want to search: you
must choose the subdirectory to start from. By default, the HOME directory is
proposed. 

  Pash 2.1 |  File  Window  Commands  Help        Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++------------- /usr/pierre ------+-----+
|     Name     |  Size  |  Date  |Time ||     Name     |  Size  |  Date  |Time |
|..            |     400|12/25/94|21:21||..            |     400|12/25/94|21:21|
|/pash21       |     112|12/25/94|23:53||/pash21       |     112|12/25/94|23:53|
|/shell        |     128|12/25/94|22:47||/shell        |     128|12/25/94|22:47|
|/terminal     |     640|12/31/94|13:24||/terminal     |     640|12/31/94|13:24|
|/termtest     |     160|12/27/94|14:45||/termtest     |     160|12/27/94|14:45|
|/t                                                                           6|
|/u   +--------------------------- Find File -----------------------------+   7|
|.a   | Where should I search from?                                       |   8|
|.c   |  /usr/pierre                                                      |   5|
|.e   +-------------------------------------------------------------------+   4|
|.l                                                                           2|
|.logout       |      19|10/04/93|00:46||.logout       |      19|10/04/93|00:46|
|ansi.keys     |    1548|12/25/94|22:47||ansi.keys     |    1548|12/25/94|22:47|
|treeinfo.ash  |    1076|01/01/95|19:54||treeinfo.ash  |    1076|01/01/95|19:54|
|vt100.keys    |    1609|12/30/94|00:22||vt100.keys    |    1609|12/30/94|00:22|
|              |        |        |     ||              |        |        |     |
|              |        |        |     ||              |        |        |     |
+--------------+--------+--------+-----++--------------+--------+--------+-----+
|      Selected: 0 file, 0 byte        ||      Selected: 0 file, 0 byte        |
+--------------------------------------++--------------------------------------+
/usr/pierre>                                                                    
  
The program will then perform the search operation. Pressing any key during
the search allows you to cancel the operation through a confirmation box.

The program will then displays in a list box all the files he's found:

  Pash 2.1 |  File  Window  Commands  Help        Ctrl-G = Menu                  
+------------- /usr/pierre ------+-----++------------- /usr/pierre ------+-----+
|                                                                              |
|.   +-------------------------- Search Results --------------------------+   1|
|/   | /usr/pierre/pash21                                      Directory  |   3|
|/   | /usr/pierre/pash21/pashrc                               Ordinary   |   7|
|/   | /usr/pierre/pash21/old/pash.h                           Ordinary   |   4|
|/   | /usr/pierre/pash21/old/pash.c                           Ordinary   |   5|
|/   | /usr/pierre/pash21/old/pash                             Ordinary   |   6|
|/   | /usr/pierre/pash21/dist/pash.o                          Ordinary   |   7|
|.   | /usr/pierre/pash21/dist/pash.h                          Ordinary   |   8|
|.   | /usr/pierre/pash21/dist/pash.c                          Ordinary   |   5|
|.   | /usr/pierre/pash21/dist/pash                            Ordinary   |   4|
|.   |                                                                    |   2|
|.   |                                                                    |   6|
|a   |                                                                    |   7|
|t   |                                                                    |   4|
|v   +--------------------------------------------------------------------+   2|
|    |          Up/Down arrows to move, Enter to reach a file,            |    |
|    |         Ctrl-W to save the list, Ctrl-C (Esc) to cancel.           |    |
+-   +--------------------------------------------------------------------+   -+
|                                                                              |
+--------------------------------------++--------------------------------------+
/usr/pierre>                                                                    

Each line contains the complete file specification and the type of file. By
using the Up and Down arrows, you can move the selection bar on the file you
want to reach. You can then press Enter to change directory to the physical
location of the file. The selection bar will be placed on the file by the 
program.

You can also save the current search list in a text file: type Ctrl-W to
specify the file to create, and the program will save the entire search list.
Only the file specifications are saved, not the file types.


***************************************
** 4. Technical details and comments **
***************************************

This section will discuss Pash's initialization file and comment about
certain technical aspects of the program. If you have problems starting or 
using Pash, read this section carefully.

4.1. Dynamic memory managment
-----------------------------

After allocating dynamic memory using the malloc() system call, the
program checks if the memory allocation could be done correctly. If the
malloc() system call returns an error, the program raises a SIGABRT signal 
to notify the exception handler that a problem occured in memory allocation. 

The exception handler will then stop the program and issue an explicit 
message. This means that sendind Pash a SIGABRT signal from the shell will 
make it stop as if a memory allocation error had occur. So, don't do that!

4.2. Initialization file
------------------------

Pash uses an initialization file called .pashrc which must be placed in your  
HOME directory. This file allows you to configure some of the aspects of the 
program. Every line in the file has the same structure:  
			  
			  EntryName=Value

In this file, a line beginning with the character '#' is ignored. There
must be no space before the EntryName part of the line, between the two parts
of the line and the '=' character and after the Value part of the line 
(X windows users are familiar with this kind of initialization file).

Default values have been coded inside the binary distribution (see below). 
If the initialization file doesn't exist (first time you run the program), 
Pash will create one according to these default values. However, you might 
have to modify the created file for Pash to run correctly on your Unix system
or to adapt its behavior to your needs (don't forget to check the 'PScolumns' 
entry as explained below).

See below for a complete list of the default values to use on the Unix flavors 
I could test the program on so far.

Here is a list of the entries the initialization file can contain. Note that
Pash is case-sensitive when reading this file.

4.2.1. Keyboard type
--------------------

This entry tells Pash what kind of non-blocking keyboard reading it must 
perform. The 4 possibilities are:

  KeyboardType=POSIX
  KeyboardType=System V
  KeyboardType=BSD
  KeyboardType=/usr/group

Pash supports the 4 standard Unix keyboard handling methods (even though 
having 4 standards makes you wonder if this is realy a standard). You have 
to choose the correct one according to your Unix system.

When it starts, Pash tests the non-blocking keyboard reading. If the value
specified in the initialization file is not correct, three things can happen:

 - the program will stop and tell you that something is wrong.
 - the program will hang and should be killed from another session.
 - the program will start normally, but trouble will soon follow.

If any of these happen, change the KeyboardType value in the $HOME/.pashrc
file.

Non-blocking keyboard I/O's are used (for one thing) when reading terminal 
special keys (function keys, arrows, ...) to get whatever comes after 
the ESC code. If your keyboard doesn't work at all when pressing this kind 
of key or if pressing this kind of key locks the program, shoot it from 
another session and change the value of the KeyboardType entry.

On Linux, I've had problems with non-blocking keyboard I/O's when connecting
from a remote MS-DOS XT PC running a terminal emulator. The connection was 
made through a null-modem cable between serial ports. 

It seemed that switching to non-blocking mode after receiving the ESC code 
was splitting the sequence reading into two separate keyboard entries: 
the ESC code and the rest of it. The read() call was returning -1 with errno 
set to EWOULDBLOCK after the ESC code, even though the rest of the sequence 
was in the keyboard buffer. 

Therefore, pressing any special key on the terminal emulator was interpreted 
as pressing ESC. You can try it out if you want, but I can't garantee the 
result (the same terminal emulator works fine when connecting the PC to an 
SCO system, though).

4.2.2. Keyboard mapping
-----------------------

Unlike keyboards under MS-DOS and MS-WINDOWS, keyboards on terminals or PC's
used as terminals do not use extended codes (above 127) for special keys 
such as function keys and arrows. Those keys generate a sequence of 7-bits 
codes, usually starting with the Escape (27) code.

Since these sequences are not standardized, a program that wishes to use
these special keys must first map the keyboard for the current terminal.

Unix systems have solved the problem by implementing a terminal capabilities
database located in /etc/termcap. This file can be used to search the
description of the current terminal and map its keyboard.

Pash's default keyboard mapping method uses /etc/termcap, which means that
this operation is totally transparent from the user's point of view.

But, the problem is that /etc/termcap is not universal (it does not contain
a description for every terminal out there) and does not always have the 
same format among Unix families (old System V sometimes have the weirdest 
formats for this database).

To overcome this problem, Pash's keyboard handling library can map the 
keyboard through an interractive method.

To choose between the classical and the interactive method, you can use
the KeyboardMapping entry in $HOME/.pashrc:

  KeyboardMapping=Termcap
  KeyboardMapping=Interactive

If this entry is set to use /etc/termcap but cannot use the database for
whatever reason (corrupted file, terminal not described,...), Pash will
automaticaly switch to the interractive method. So, you should not worry
about modifying the initialization file.

When using the interractive method, the sequences generated by the special
keys will be written in MAPPING FILES. These mapping files are text files 
located in your HOME directory.

Here's how it works: when Pash starts up and chooses to use the interactive
keyboard mapping method, it looks in your environment variables to get the 
current terminal type (the TERM environment variable, which must be set 
correctly). It then searches your HOME directory to find a mapping file 
corresponding to this current terminal type. 

If such a file doesn't exist, it asks you to create it interractively: you 
will have to press ONCE every special key on the keyboard in order for Pash 
to get the sequence generated by each key. These sequences will then be 
saved in a mapping file for further executions. 

IMPORTANT NOTE: the set of keys that you will be asked to press has been set 
up so that the keyboard handling library source code does not have to be 
modified to be compiled for both PC keyboards and VT terminal keyboards. 
The set includes BOTH PC and VT keyboard special keys. 

There will therefore be certain keys that will not exist on the keyboard you 
work from. When asked for a key that does not exist on the keyboard you work 
from, just type <Enter> to notify the keyboard handling library that the key 
is not supported on the terminal beeing mapped.

- On PC keyboards, you must press <Enter> when asked for:
   - Function keys 13 to 20
   - Help Key, Do Key, Find Key, Select Key, Remove Key
   - Function Keys PF1 to PF4
   This means pressing <Enter> for everything asked AFTER Function key 12
- On VT keyboards, you must press <Enter> when asked for:
   - <Delete>. The Delete Key will be emulated at run-time with the <Remove> 
     Key. So, do not map Remove as Delete: type <Enter> when asked for the 
     Delete Key and map the Remove Key normally.
   - Function Keys 1 to 5: usually, these keys are used internally by the
     terminal for configuration and terminal server access. If this is not 
     the case, you can map them, but you usually will have to press <Enter> 
     when asked for those.
   - The <Home> and <End> Keys

- On VT keyboards, I advise mapping:
   - <Prev Screen> as <Page Up>
   - <Next Screen> as <Page Down>
   - <Insert Here> as <Insert>
   - <F11> as <Escape> (VAX/VMS standard). If you do so, type <Enter> when 
     asked for <F11>

4.2.3. Screen Type
------------------

Pash supports 3 screen handling methods for displaying semi-graphic 
characters (frames).

  ScreenType=PC    for 8 bits ANSI terminals (frames can be displayed 
		   directly) 

  ScreenType=VT    for 7 bits DEC compatible terminals such as VT100 and all
		   the VT family (escape sequences switch screen from semi-
		   graphic to text and reverse). 

		   Note that this type of terminal doesn't allow double-lined
		   frames. All the frames will therefore be single-lined when
		   running on a VT terminals or VT-like terminals (this 
		   includes Linux virtual consoles. Sorry guys!)

  ScreenType=TEXT  to display pure text mode (frames are made with '|', '-' 
		   and '=') for prehistoric terminals. This method is 
		   intended to be used on minis and mainframes only (on which 
		   you could still come across prehistoric terminals). 
		   You shouldn't have to use it on PC's, but try it out once,
		   it's funny.

You will have to choose the method according to the type of terminal you  
work on.

4.2.4. Default windows mode
---------------------------

Pash can run in two different windows modes: 2 windows or 4 windows. You can 
switch from one to the other with the first option in the Window menu (see
above for details). In the configuration file, you can tell Pash which mode 
to start in. The valid entries are: 

  Windows=2   for 2 windows mode
  Windows=4   for 4 windows mode

The default value coded in each binary distribution is Windows=2. 

4.2.5 History
-------------

Every command you type and execute will be put in a list for you to be  
able to recall it. This list has a maximum size, which is determined by
this entry.

  History=xxx 

The default value coded in each binary distribution is History=50. 


4.2.6. Editor
-------------

Pash allows you to edit files directly by using Ctrl-V (F3 or F4 on PC).  
This entry tells it the name of the default editor to use.

  Editor=xxx  

The default value coded in each binary distribution is Editor=vi. 


4.2.7. Process search customization
-----------------------------------

Two methods have been coded inside the program to get the current running
processes: 

 - Pash can fork a child process and get the output of a 'ps' through a pipe.
   This is the most portable method, but using it under Linux is almost
   impossible because of the non-standard 'ps' display format.

 - Pash can search the /proc filesystem if it's supported by your system. 
   This one has been implemented for Linux and might not be portable at all.

4.2.7.1. If your system supports the '/proc' filesystem (Linux)
---------------------------------------------------------------

This filesystem is a pseudo-filesystem in which every current running process
is represented by a subdirectory with its pid for name. Inside these 
directories are files that can be used to get the process characteristics.

NOTE: the method used to search the /proc filesystem is inspired from the
      'ps' source codes by Branko Lankaster, Michael K. Johnson and Michael 
      Shields found on the CD distribution of Yggdrasil Linux 1.1. 

      It supposes that each directory of the /proc filesystem contains a 
      file named 'cmdline' which contains the command line of the concerned 
      process and a file named 'stat' that contains all the numeric 
      informations concerning the process (user ID, ppid,...). 
      In this 'stat' file, the TTY device number is expected to be found at 
      offset 6 (position 6 starting from 0).

      Tests made on Slackware and Yggdrasil Linux distributions showed a 
      total compatibility. Let's hope this is a rule!

If you want to use this method for process search (I strongly advise 
doing so under Linux), you must initialize the 'ProcSystem' Entry in the 
initialization file with the subdirectory to search for the '/proc' 
filesystem. Usually, this filesystem is mounted in the /proc directory. 
If this is the case, here's what $HOME/.pashrc must contain:

		ProcSystem=/proc

If you don't want to use this method (see next paragraph), your 
$HOME/.pashrc must contain:

		ProcSystem=OFF


4.7.2.2. If your system does not support the '/proc' filesystem (e.g. SCO)
--------------------------------------------------------------------------

In order to get the currently running processes, Pash must fork a child 
process and get the output of a 'ps' through a pipe. 

The 'PSoption' entry allows you to choose what kind of ps will be performed.

  PSoption=xx    for System V-based systems: PSoption=-e
		 for BSD-based systems     : PSoption=-x
	
The recommanded values given here are those giving informations about all the
processes currently running under the user's account (not only under the
current login session). Note that Pash only uses the name, pid and terminal 
number of each process. So, choosing a 'ps' option that displays more 
informations (e.g. 'ps -ef' in System V or 'ps -ux' in BSD) is useless.

If the ttyname() system call format matches the TTY number display format in
the 'ps' output (this DOES NOT happen under Linux, which is why the /proc
method should be used), the program can decrypt the 'ps' output format at 
run-time: it will search the informations received through the pipe to find 
its name, pid and terminal number. It will then split each line of the 'ps' 
output according to the search results (this works great on SCO and ULTRIX). 

If the program has trouble decrypting the 'ps' output format at run-time, you
can encode it explicitely using the 'PScolumns' entry in $HOME/.pashrc.

This is how this one works:

	PScolumns=pid_col tty_col name_col

You must give it 3 numbers, these numbers beeing the columns number of the
pid, terminal number and program name. 

What you have to do is then:

  1. choose what kind of 'ps' you want Pash to perform
  2. try that 'ps' from the standard shell
  3. analyse the output format and write the columns numbers in the
     initialisation file. When counting the columns numbers, start from 0, 
     not from 1.

Example: if your 'ps' looks like this (SCO System V/386 3.2v2.0):

  PID   TTY  TIME  COMMAND
  125    01  0:00  ps -e
  120    01  0:25  -csh

the initialization file must contain:

  PSColumns=0 1 3


4.7.2.3. So:
------------

- if you want to use the /proc filesystem method, $HOME/.pashrc must contain:

     ProcSystem=/proc   (or the location of the '/proc' filesystem)

  The 'PSoption' and 'PScolumns' entries don't matter even if they state 
  something correct.

- if you want to use the child process method with, for instance, a 'ps -e'
  with a fixed output format of '0 1 3', $HOME/.pashrc must contain:

     ProcSystem=OFF
     PSoption=-e
     PScolumns=0 1 3


The default values coded in a binary distribution that can use the '/proc'
filesystem method include the 'ProcSystem=/proc' entry, but also the
'PSoption' and 'PScolumns' entry initialized with the values you should use
if you choose not to use the /proc filesystem method. To test these
'PSoption' and 'PScolumns' entries, change the 'ProcSystem' entry to
'ProcSystem=OFF'. 


4.2.8. List of recommanded values
---------------------------------

Here's the complete list of recommanded values I could test so far for the
type of keyboard and screen and for the process search customization:

 (1) KeyboardType:

     DEC BSD ULTRIX 4.3               : KeyboardType=BSD
     OSF/1                            : KeyboardType=POSIX
     Slackware Linux 1.0.9            : KeyboardType=POSIX
     Yggdrasil Linux 1.1 (fall 1994)  : KeyboardType=POSIX
     SCO System V/386 3.2.1           : KeyboardType=System V
     SCO System V/386 3.2.2 and above : KeyboardType=POSIX


 (2) ScreenType:

     DEC VT terminal (or compatible) : ScreenType=VT
     Linux                           : ScreenType=VT
     SCO System V/386 3.2.x          : ScreenType=PC

     When connecting from a remote MS-DOS PC running a terminal emulator, 
     check the kind of emulation it supports. 

     You can use ScreenType=TEXT on any terminal.


 (3) ProcSystem: among all the flavors I could test so far, only Linux 
		 supports this method.

     Yggdrasil Linux 1.1   :    ProcSystem=/proc
     Slackware Linux 1.0.9 :    ProcSystem=/proc
     All the other flavors :    ProcSystem=OFF


 (4) PSoption (optional for Linux):

     ULTRIX : PSoption=-x
     SCO    : PSoption=-e
     OSF/1  : PSoption=x
     Linux  : PSoption=-x


 (5) PScolumns (according to the recommended PSoption above):

     SCO System V/386 3.2.x : PScolumns=0 1 3
     Slackware Linux 1.0.9  : PScolumns=0 1 4
     Yggdrasil Linux 1.1    : PScolumns=0 2 5
     BSD ULTRIX 4.3         : PSColumns=0 1 4
     OSF/1                  : PSColumns=0 1 4


These recommanded values are those coded as default in each binary
distribution.

4.3. Command line options
-------------------------

Pash allows you to override the initialization file for screen display, 
keyboard non blocking I/O and keyboard mapping. This is useful when 
connecting from a remote terminal that might have a different screen 
handling method or would not be described in /etc/termcap.

The options are:

  -s pc|vt|text                     for screen handling
  -k posix|system_v|bsd|/usr/group  for keyboard non blocking I/O
  -m termcap|interactive            for keyboard mapping

If you type pash -h or pash -help, you will get help on how to write the 
file $HOME/.pashrc.

4.4. Initialization logging
---------------------------

At start-up, Pash displays a complete logging of its initialization on the
standard error (file descriptor 2). If you want to keep track of this 
logging in a file (the display goes quite fast and is more than one screen 
page), you can redirect Pash's standard error to a file using the shell 
(sh or bash) command

	"pash 2> logfile"     (!!! This WILL NOT work in csh !!!)

This will cause all the initialization outputs to be written in the file
'logfile' instead of beeing displayed on the screen.

If you start Pash with its standard error redirected to a file, DO NOT RUN
PROGRAMS FROM IT: the standard error of these programs would also be
redirected to the same file, which might cause problems.

DO NOT do this the first time you run the program, since some files have to
be created (you should see what's happenning).

Use this technique if you have trouble starting the program and what you see
on the screen scrolls too fast for you to read.


*****************************
** 5. Distribution details **
*****************************

Pash is a freeware program. Feel free to distribute it as long as no
fee is collected in doing so.

Users of Pash must accept this disclaimer of warranty: 

 *****************************************************************************
 * PASH IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
 * INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY   *
 * AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY   *
 * AND PERFORMANCE IS WITH YOU. WE ASSUME NO LIABILITY FOR DAMAGES, DIRECT   *
 * OR CONSEQUENTIAL, WHICH MAY RESULT FROM THE USE OF PASH.                  *
 *****************************************************************************


****************
** 6. Credits **
****************

I would like to thank several people for their direct or indirect 
contribution to the making of Pash:

- Michel Beaulen and Joseph Barsics for being so damn tough on me back in 
  programming school. This program wouldn't be there without their teaching.

- Renaud Willems, Pascale Cleyman, Nicolas Simon, Nicolas Karras and all the
  students at IN.PR.E.S. (Liege, Belgium) in 1993-94 for their support, their
  suggestions and for having been free dedicated beta-testers.

- Renaud Willems once again for inspiration in the writing of the directory
  tree function and for being the first person to register a copy of Pash.

- Leo Martinez and Michael Oden at NewsMakers Information Services (Costa  
  Mesa, California), for their support.

- Laurent Lonay and Jean-Sebastien Stegen for providing me Linux packages.

- John Socha for writing the original Norton Commander.


And thanks to everyone who runs the program!
------------------------------------------------------------------------------
Pierre ADRIAANS, October 1995.

