@database 00611d88-0
@master Work:UnixDirs3/UnixDirs3.guide
@$VER: 2.0
@author "Timo Kaikumaa (timok@cc.tut.fi)"
@(c) "8.3.1997"
@index HeddleyAutoIndex
@remark Created with Heddley v1.1 (c) Edd Dumbill 1994

@node "Main" "UnixDirs3 - The Front Page"
@next "Intro"
@{b}@{bg fill}---------------------------------------------------------------------------

@{bg back}                        @{fg shine}UnixDirs3 V2.0  (8.3.1997)@{fg text}                        
                                                                           
           Patches DOS to use Unix style paths  (OS3+ required)            
                                                                           
                      @{fg shine}New UnixRoot option, finally!!!@{fg text}@{bg fill}

---------------------------------------------------------------------------@{ub}@{bg back}


Have you ever used Unix systems (or MS-DOS, although no ordinary people can
stand it for long) you may have noticed that the path specifications are not
the same as they are in the Amiga. Not saying they should be, but it's rather
annoying to ask your Amiga to "CD .." in an out of habit fashion and see only
an error message appearing. And of course, sometimes pure Amiga paths like
"///foobar" may look like a bit confusing.

Fortunately, these were problems for me and so I wrote UnixDirs3. This tiny
program allows you to use both Amiga and Unix style paths simultaneously.
Other than that, there is a feature called multiparent. Now commands like "CD
..." and "CD ...." will change current directory level upwards more than one
step. (Free hint: just using "..." and "...." seem also work thanks to console
device.)


              @{"����Introduction����" link "Intro" 0}  - What's this all about?

              @{"�������Usage��������" link "Usage" 0}  - Great, now how I'm gonna use it?

              @{"����Installation����" link "Install" 0}  - Believe me, it's simple...
              @{"�How�does�it�work?��" link "Theory" 0}  - Technical nonsense
              @{"������Examples������" link "Examples" 0}  - In case you are still wondering

              @{"��������Bugs��������" link "Bugs" 0}  - No way!
              @{"������History�������" link "History" 0}  - More to come, I hope

              @{"�����Legalities�����" link "Legal" 0}  - I bet no one ever reads this
              @{"�����The�Author�����" link "Author" 0}  - Hey, it's me!


UnixDirs3 was developed on an ECS500 workstation, boosted by SupraTurbo28,
running OS3.1, equiped with 2+8 megabytes of memory and 1.5 gigs of hard disk
storage plus 4�CDROM drive.
@endnode

@node "Intro" "UnixDirs3 - Introduction"
@next "Usage"
@prev "Main"
@{b}---------------------------------------------------------------------------@{ub}
                              @{b}Introduction@{ub}
@{b}---------------------------------------------------------------------------@{ub}


@{fg shine}Since this guide file is fairly large, I've highlighted the main areas in case
you have absolute no idea what the program does.@{fg text}

UnixDirs3 is similar program than its predecessors UnixDirs (by Murray Bennett
and Mark Cyster) and UnixDirsII (by Martin Scott). Other than providing the
same function, this version has nothing to do with them.

UnixDirs3 was written because the original UnixDirs wouldn't even work with
OS2+ and the second attempt (UnixDirsII) has some nasty bugs in it. Bugs no
longer exist (at least the same bugs) and the routines now take care of all
OS3 path handling functions not including file notifications. There is also
this new feature called @{i}multiparent@{ui}...

@{fg shine}So, if you still wonder what will you gain using UnixDirs3, here is a brief
summary (surely it has something to do with DOS paths). This is how the path
handling routines get modified:@{fg text}


1) @{fg shine}A leading "." (period) means the calling task's current directory.@{fg text} This
   works both alone (just the period) and at the beginning of the path (like
   "./subdir". So if you would like to copy a program called "C:List" to your
   current directory you could write "Copy C:List ." or "Copy C:List ./".

2) @{fg shine}Two periods (".." or "../") mean backing up one level in directory
   hierarchy.@{fg text} So, when referring to parent directory of "S:" (usually it's
   the boot directory or "SYS:") you could write "S:.." instead of S:/". More
   complex example of this would be to use "./../../filename" or simply
   "../../filename" instead of "//filename". As you can see, the standard
   Amiga paths are more compact, but perhaps not so readable.

3) @{fg shine}With multiparent option activated it's now possible to back up more than
   one level@{fg text} (actually any number of levels) @{fg shine}by using more than one
   subsequent periods.@{fg text} So the strange(?) path specification "///foobar" found
   in the @{"main�section" link "Main" 0} and its hopefully more readable counterpart
   "../../../foobar" can be replaced with "..../foobar" meaning a file or
   directory called "foobar" located three levels upwards from your current
   directory position. Note how slashes in this new styled path are only
   separating different path components. In standard Amiga syntax they could
   also mean parent directory - and of course you can still use them that way
   if you wish.

4) You can also set the @{i}wildstar@{ui} flag of AmigaDOS. Whenever this flag is
   set @{fg shine}pattern "*" can be used instead of "#?"@{fg text}.

5) For Unix freaks it is even possible to @{fg shine}emulate the actual Unix root syntax
   with the new @{i}unixroot @{ui}option@{fg text}. However, I don't recommend the use of this
   feature so the persons being interested can read more in the @{"usage" link "Usage" 0}
   chapter.

Of course, nothing comes for free. Once UnixDirs3 is active you can't use
names like "." or ".." for files/directories/links/etc. @{i}Multiparent@{ui} option
also prevents you using @{i}any @{ui}name containing only periods.

The use of currect directory symbol "." is only allowed in the beginning of
the path for technical reasons (this may change in the future as it works on
real Unix systems). Trying to be bullheaded will cause the operation you were
about to do failing with DOS error 204 - "Directory not found".

Commodities Exchange can be used to temporarily toggle the UnixDirs3 off in
case you still need to access an object with "illegal" name.

So that's for the brief summary. Now here comes even more brief one:


Things why to use UnixDirs3:

� It has been optimized for OS3, takes full advantage of it and - needs it.
  All OS3 DOS funtions that handle paths will be patched not including file
  notification.

� Real cute multiparent option.

� One utility more to toggle DOS wildstar mode on/off.

� Commodity or no commodity. Use it how you prefer.

� Adjustable buffer sizes in case you are using huge path names.

� Can emulate Unix-like root directory behavior.

� Does not fragment memory thanks to smart use of memory pools.

� When compared to UnixDirsII this version is faster (programmed in
  assembly instead of C), smaller and consumes less memory (with default
  settings).

� Again, the following problems of UnixDirsII fixed: no longer ejects
  filenames ending with two periods and doesn't crash with paths/patterns
  larger than 512 bytes.


Things why not to use UnixDirs3:

� You want to keep your Amiga system pure without any foreign *nix influence
  (good idea).

� You don't like programs safely patching your system libraries.

� You have a hard drive full of files with only periods in their names.

� You think that there are better ways to use 5 500 bytes of memory. (Or
  2 500 with @{i}nocx @{ui}option, if you are really tight of it.)

� Your horoscope adviced you so.
@endnode

@node "Usage" "UnixDirs3 - Usage"
@next "Install"
@prev "Intro"
@{b}---------------------------------------------------------------------------@{ub}
                                @{b}Usage@{ub}
@{b}---------------------------------------------------------------------------@{ub}


First of all, UnixDirs3 can be started by double-clicking its icon or by
typing its name right after the shell prompt. In the latter case, there is no
need to "run" the program. To quit the program you can use one of the two
starting methods (UnixDirs3 is clever enough to quit itself when started
again), or in case you are executing UnixDirs3 @{i}without@{ui} NOCX tooltype/argument
(see below) you can also use commodities Exchange to quit the program or any
third party utility to send a "CTRL-C" signal to UnixDirs3 commodity.

UnixDirs3 understands seven different Workbench tooltypes and shell arguments.
As they appear alike and there are no differences in their usage, I'll
describe both arguments and tooltypes in this very same chapter.

The recognized options are:

XYZZY        <- argument/tooltype name (in case you are not quite sure, this
                really is an example, not a legal option)
 (switch)    <- type of argument - for switches the use of argument/tooltype
                will invert the default value (as all default values are off,
                they are thus toggled on), for numeric options you can see
                the legal range here.
 (off)       <- default value


QUIET        Normally (without this option) UnixDirs3 gives you a brief
             message everytime it's started or quited. This can be useful
 (switch)    when you are testing these arguments/tooltypes and have
 (off)       forgotten which action (starting/quiting) you are actually
             doing. However, after you have decided to @{"install" link "Install" 0} UnixDirs3
             and placed it for example in the Wbstartup drawer of your boot
             disk it is probably much more comfortable to ask it to keep
             its mouth shut. Thus this option. Note that errors and
             warnings will be reported no matter how this option is used.


NOCX         The usual thing is to start UnixDirs3 as a commodity. This way
             you can for example use commodities Exchange to temporarily
 (switch)    switch off the path manipulation so that you can access files
 (off)       with "illegal" names containing only periods (if @{i}multiparent @{ui}is
             not specified then only "." and ".." will be illegal). Before
             any program can be made as a commodity, the commodities library
             has to be loaded from the disk. In case you are using UnixDirs3
             in the environment where it would be the one and only commodity
             in the system (not very likely) this option will perhaps save
             you some expensive bytes. Even if there actually are other
             commodities the use of this option will save about 3 000 bytes.
             Also note that quiting the program will give you this three
             kilobytes more free memory only in case this option @{i}wasn't
             @{ui}specified at the moment the program was started. If it was,
             quiting the program will have no effect on the amount of free
             memory (see @{"theory�of�operation" link "Theory" 0} for more details).


WILDSTAR     This option will set the corresponding flag in the DOS library
             base. When specified, it's possible to use an asterisk "*"
 (switch)    instead of "#?" pattern (match everything). The reason this
 (off)       isn't as default in the Amiga is that there is another use for
             the asterisk too. When used alone (like "RAM:*") the character
             refers to the particular console, it has nothing to do with
             filenames. The workaround would be to use "RAM:**" instead. If
             this option is not specified, then no change in the state of
             the flag will occur. However, if it was, the flag will be set
             and cleared again when the program is being quited. Using
             commodities Exchange to disable/enable the program while it's
             running will also have effect on the state of the wildstar flag
             if this option is being used.


MULTIPARENT  (My favourite one.) This option enables you to use more than two
             subsequent periods in order to refer to directories more than
 (switch)    one level upwards. So now you can use "..." instead of "../..",
 (off)       "...." instead of "../../.." and so on. One of the most common
             situations where this is used occurs when you are changing
             (CDing) your current directory with more than one step upwards.
             Thanks to OS3+ console device all you have to do is type (for
             example) "..." and there you go.


UNIXROOT     First a warning. This option is only meant for people knowing
             what they are doing. I woudn't recommend its use in any
 (switch)    situation (I'm not even using it by myself). UNIXROOT changes
 (off)       the original AmigaDOS behavior very dramatically and therefore
             various scripts - including the ones used for program
             installations - may not work correctly. Anyway, with this option
             you can emulate true Unix-like path handling. Plain "/" means
             the root directory and "/devs/dosdrivers" is translated as
             "devs:dosdrivers".


To really understand the last two options you should read the
@{"theory�of�operation" link "Theory" 0} chapter. People having headaches when it gets too
technical can forget them both. The default values are pretty good - and well,
even if the would not, nothing can seriously go wrong. So stop worrying and
have fun with UnixDirs3!

BUFSIZE      This option sets the size for the buffer UnixDirs3 uses when
             manipulating the path string. If the value is too small (that
 (64-65536)  is, the buffer becomes full) the original string will be used.
 (512)       So if you sometimes notice UnixDirs3 not being able to correctly
             handle paths it should do, then please check this option.
             Perhaps the value should be a bit higher. See also the @{"note" link "Usage" 500}
             below about buffers.

             It seems that there is an internal limitation of 255 chatacters
             for the path string (not including the volume/device name). So
             I guess there is no point in using much larger buffer sizes.


BUFNUM       Use this to adjust the amount of buffers UnixDirs allocates 
            @{i} beforehand. @{ui}This option is not so important after all, as new
 (1-256)     set of buffers will be allocated if there are no free ones
 (2)         available at a time they are needed. The reason for such a
             behaviour is to prevent memory fragmentation since there is no
             longer need to allocate and deallocate memory everytime buffers
             are being used. In normal circumstances the default sets of two
             buffers will be adequate. Don't miss the @{"note" link "Usage" 500} below.


Note about buffers: One set of buffers will be allocated at the first time
UnixDirs3 is started and initialized. These buffers will not be freed until
successfully allocating newer ones - not even when you quit the program (they
will be used again when restarting UnixDirs3). Only when either - or both - of
the BUFSIZE and BUFNUM parameters are being changed, the new allocation will
occur and the old buffers are then naturally deallocated.

However, if there are no available buffers anytime when needed a new set of
buffers will be allocated temporarily. This new set gets freed as soon as it
is no longer needed.

To replace the old buffers requires that no one is using them at the moment.
If there are any open file requesters etc. this can't be done. Note also that
this doesn't prevent UnixDirs3 from being started, you just can't override the
previous buffer settings.


                       *        *       *


Here you can find additional @{"examples" link "Examples" 0}.
@endnode

@node "Install" "UnixDirs3 - Installation"
@next "Theory"
@prev "Usage"
@{b}---------------------------------------------------------------------------@{ub}
                              @{b}Installation@{ub}
@{b}---------------------------------------------------------------------------@{ub}


UnixDirs3 does not need any extra files, so you can just copy the program
wherever you want to. Shell users may delete the icon file (UnixDirs3.info).

If you find the program appropriate in an everyday use you can place it into
the WBStartup drawer of your system disk to get it started always when you
boot up your Amiga.

For the shell users there is no need to "run" UnixDirs3. The program can be
started anywhere in the system startup scripts.

Note however, that different versions of UnixDirs3 are not compatible. If you
encounter a newer version of this program and want to see what's it for,
you'll have to ensure that there are no other versions started previously.
Depending on the installation method you'll have to either remove UnixDirs3
from the WbStartup drawer or from the startup scripts and reset your computer.
Quiting the previously started version @{i}will not@{ui} be enough!
@endnode

@node "Theory" "UnixDirs3 - Theory of Operation"
@next "Examples"
@prev "Install"
@{b}---------------------------------------------------------------------------@{ub}
                          @{b}Theory of Operation@{ub}
@{b}---------------------------------------------------------------------------@{ub}


UnixDirs3 does its magic by rerouting some of the DOS library functions. In
other words, all functions that handle paths will be patched. These include:

  AssignLate()
  AssignPath()
  CreateDir()
  DeleteFile()
  LoadSeg()
  Lock()
  MakeLink()
  MatchFirst()
  NewLoadSeg()
  Open()
  ReadLink()
  Rename()
  SetComment()
  SetFileDate()
  SetOwner()
  SetProtection()
 *StartNotify() - currently not patched. See @{"history" link "History" 0} for details.

Next time (after starting UnixDirs3, naturally) any of these functions is
being used the execution first jumps into a newly added subroutine before the
actual function. As you might have guessed, this subroutine resides in
UnixDirs3.

There is one problem with patching. Adding a patch is easy, but removing one
is @{i}never@{ui} safe. It can be made almost 100% sure, but not fully. Never. As the
functions UnixDirs3 patches are fairly important, I have decided not to remove
patches at all. When the program is started first time, all sort of
initialization occurs and the patches are installed. When you quit the
program, only a flag is set to indicate that we are no longer active. And
because the main program is rather small it is stored right there with the
patches as well. This results in two things. One: once UnixDirs is started you
have lost some kilobytes of memory forever (until next reset). Two: you cannot
use different versions of UnixDirs3 after you have started the one you have
started. These are not big problems as you probably have only one version of
UnixDirs3, the memory loss is really negligible and no additional memory is
allocated when you restart the program (old memory will be reused).

The subroutine takes care of substituting "." character at the beginning of
the path into your current directory and it also handles multiple periods used
to mean parent directory. If the current directory symbol (single period) is
found in the middle of the path, the execution is stopped and returned with
DOS error code 204 (directory not found).

Since the original DOS functions have no rights to alter the strings passed in
(filenames, paths, etc.) no grants exist either for UnixDirs3. But the paths
still need to be modified! This can only be done in one way. UnixDirs3 has to
use additional buffer to copy the altered string into. As the use of buffers
is fairly great (functions patched are very common ones), using the standard
allocation method would likely mean memory fragmentation. This is why
UnixDirs3 uses new feature of OS3+, namely memory pools. For the rest of the
system one "puddle" of the pool looks like any allocated memory area. For the
program using the particular pool it looks like just using the conventional
method of memory allocation as long as there is room in the puddle being used
to fulfill the allocation requests (one puddle can hold multiple allocations).
And when there no longer isn't any room left, new puddle (that is, new
standard memory area) is allocated automatically - so nothing will be actually
different. The puddle will be released back to other system's use when all its
allocations are freed (again, automatically). The idea behind all this is that
there happens no @{i}real @{ui}memory allocations as long as there is room in the
puddles already in use - thus no fragmentation.

If you already are familiar with UnixDirs3 @{"tooltypes/arguments" link "Usage" 0}, you may
remember two options, namely @{i}bufnum@{ui} and @{i}bufsize@{ui}. From programmer's point of
view, a constant called puddlesize needed in initialization is calculated by
multiplying these two values (or defaults, if they are missing). But that's
not enough. To make sure that a buffer always exist, the calculated size is
added by four. This four bytes is then allocated instantly to ensure existence
of a puddle.

Although DOS functions may work slower than most of the others in the system
they are still fast enough to say that the buffers are only needed for a very
short period of time. Again, there are exceptions. For example, if you try to
access an invalid device a requester will appear (you know, the one saying
"Please insert volume Foo: into any device; Retry - Cancel"). The function
will not return until the requester has been closed. Meanwhile, the buffers
can't be deallocated (they are in use) and hence it's not possible to change
buffer settings.

Unlike the other features in UnixDirs3, the @{i}wildstar@{ui} option is not a patch of
any kind. There is already a flag in DosBase to indicate whether an asterisk
is to be used as a wildcard or not. All there is to do is set or clear the
state of this flag. Note especially, that leaving this option undetermined
means no change in the current state of the flag. It does @{i}not @{ui}mean clearing
the flag.
@endnode

@node "Examples" "UnicDirs3 - Examples"
@next "Bugs"
@prev "Theory"
@{b}---------------------------------------------------------------------------@{ub}
                                @{b}Examples@{ub}
@{b}---------------------------------------------------------------------------@{ub}


UnixDirs3 is a shell enchancer and so all examples are for the shell user as
well. I have placed different type of examples right after the corresponding
tooltype/argument. If you want to get all UnixDirs3 can give, then select
following options: MULTIPARENT, WILDSTAR and possibly QUIET or UNIXROOT.

Well, here are the examples at last (you are not supposed to write the ">"
character at the start of each exemplar line).


WILDSTAR

You may have activated this already (it's actually a feature of AmigaOS, not
UnixDirs3) with some other system enhancer. If so, you don't have to activate
it twice, once is enough.

To show all files in C: directory that have "T" (or "t") in their name:

> List C:*t*

To copy all files from your current directory to RAM: drive (note that using
only one asterisk won't work):

> Copy ** RAM:

Oh no, so you tried using only one asterisk despite of all warnings... Your
shell seems to be locked now, doesn't it? It surely does. Yep, nice thing.
Well, since there seems to be nothing you could do, try writing something.
Like "Hello, world" if your head feels surprisingly empty. Now, are we finally
getting somewhere? You are supposed to press END-OF-FILE character right now.
That's CTRL-\\, usually. So try it. That should help.

If you had stated "Copy * Ram:Novel" you would now had the text you wrote in a
file. As you can see, there exist an internal line editor in your console!


NO OPTIONS

To check what's inside a file "TheThing" in the parent directory of your
parent directory:

> Type ../../TheThing

To copy the very same file to your current directory:

> Copy ../../TheThing .

To change your current directory to the parent directory of SOMEWHERE:

> SOMEWHERE:..


MULTIPARENT

To change your current directory three levels upwards (towards root):

> ....

Now let's do two of the tricks above again (the ones in NO OPTIONS). To check
what's inside a file "TheThing" in the parent directory of your parent
directory:

> Type .../TheThing

To copy the very same file to your current directory:

> Copy .../TheThing .


UNIXROOT

This option alters the original AmigaDOS syntax. Use it only if you know what
you are doing!

To change your current directory to the root:

> /

To list the contents of system startup script "S:Startup-Sequence":

> Type /S/Startup-Sequence

Emulating the original Unix behavior the following does also work (don't ask
me why it was implemented in the first place):

> Type //S///Startup-Sequence
@endnode

@node "Bugs" "UnixDirs3 - Bugs"
@next "History"
@prev "Examples"
@{b}---------------------------------------------------------------------------@{ub}
                             @{b}The Bug Page@{ub}
@{b}---------------------------------------------------------------------------@{ub}


There are, naturally, no bugs or errors in UnixDirs3. It's the other programs
you are running in case some troubles arise ;)

Well, seriously, there are three things I should mention:

First, UnixDirs3 does the path manipulation in a system friendly way. So
programs using their own routines for the job will work just like they did
earlier. One common example is archiving program LhA. There isn't much to be
done in cases like that.

I've also encountered at least one program that doesn't handle paths very
sophistically (again, who knows, maybe it thinks being a smart one). Instead
of just using the given path as it is, it splits the path first into its
components. With this kind of programs it's possible to use paths like
"././././" without any DOS errors. However, in this particular case the path
mentioned caused a nice crash (so the program wasn't so smart after all).

Finally, a warning about @{i}unixroot @{ui}option: @{i}@{fg shine}DO NOT HAVE UNIXROOT OPTION
ACTIVATED DURING SOFTWARE INSTALLATIONS OR ANYTIME WHEN NEW UNKNOWN SCRIPTS
ARE BEING EXECUTED! @{ui}@{fg text}This option changes the original AmigaDOS behaviour very
dramatically and disobeying the rule above may result in failed installations
or some other troubles. You have been warned.

And naturally, in the very extraordinarily unbeliable situation there seems to
be something wrong in the UnixDirs3, I'm the one to blame. Feel free to mail
@{"me" link "Author" 0} and ask about corrected version.
@endnode

@node "History" "UnixDirs3 - History"
@next "Legal"
@prev "Bugs"
@{b}---------------------------------------------------------------------------@{ub}
                              @{b}  History@{ub}
@{b}---------------------------------------------------------------------------@{ub}


v1.0    the first published version

v1.1    a place of one library call changed (not likely, but still potential
        bug)

v1.2    ooops, using commodities exchange to quit the program could cause
        nasty things to happen. fixed

v1.3    oh no, this is becoming a habit. another bug found by Craig Hughes.
        apparently the ReadLink() patch has never worked as it trashed
        registers d4 and d5

v1.4    unixdirs3 no longer patches GetDeviceProc() function as this caused
        problems with programs using ixemul.library (they didn't recognize
        their current directory). i do also think that this particular patch
        wasn't really necessary

        from now on, UnixDirs3 is FREEWARE

v1.5    while reading The Amiga Guru Book written by Ralph Babel i found
        out that once upon a time (during os 1.3) some programs assumed dos
        functions return their results also in register d1 as that was the
        case at that time. an extra compability kludge was introduced in os
        2.04 because of this fact. these bad programs will now work with
        unixdirs3, too. furthermore, the patches are slight faster

v2.0    after many requests, @{i}unixroot @{ui}option finally added. Oliver Roberts
        convinced me that the way the StartNotify() patch is currently
        implemented is illegal and doesn't always work. i've decided to
        remove the patch until i'll find a way to fix the problem. also
        starting the program while another copy of it is inactivated with
        Commodities Exchange no longer causes troubles. two very rare bugs in
        the handling of the @{i}bufsize @{ui}option removed



@{b}---------------------------------------------------------------------------@{ub}
                              @{b}  Future@{ub}
@{b}---------------------------------------------------------------------------@{ub}


The Amiga OS seems to limit the size of the path string into 255 bytes. That
means the @{i}bufsize @{ui}option isn't actually needed. Furthermore, I'm planning to
totally discard the allocation of work space via memory pools and use stack
instead. That would result in a simpler and even faster utility being perhaps
OS 2.04 compliant too.

StartNotify() patch should really get fixed.

Possibility to use environment variables in path strings.

Time for programming.

Anything else?
@endnode

@node "Legal" "UnixDirs3 - Legalities"
@next "Author"
@prev "History"
@{b}---------------------------------------------------------------------------@{ub}
                              @{b}Legal Stuff@{ub}
@{b}---------------------------------------------------------------------------@{ub}


UnixDirs3 is freeware!

You are allowed to use UnixDirs3 free of charges providing the conditions
below are not violated.

Copyright

UnixDirs3 is written by @{"Timo�Kaikumaa" link "Author" 0}. No parts of this program may be altered
by any means (this includes editing, reprogramming, crunching, resourceing
etc.), except archiving.

Disclaimer

@{i}You are using this program at you own risk! @{ui}Under no circumstances will the
@{"author" link "Author" 0} be liable for any direct or indirect damage or data loss resulting from
the use or misuse of this software or the documents.

Distribution

UnixDirs3 can be freely copied as long as it is distributed with all the files
in this package within. Only a nominal fee for costs of media may be accepted
for distributing this piece of software. CD manufactures are specifically
granted the right to include this program on CD collections, as long as they
are for the Public Domain.
@endnode

@node "Author" "UnixDirs3 - Author"
@prev "Legal"
@{b}---------------------------------------------------------------------------@{ub}
                              @{b}The Author@{ub}
@{b}---------------------------------------------------------------------------@{ub}


                             Timo Kaikumaa

                           Atanv�yl� 14 C 12
                             33580 Tampere

                                Finland


                        @{i}E-mail:@{ui}  timok@cs.tut.fi

                  @{i}Home page (currently in Finnish only):@{ui}
                       http://www.cs.tut.fi/~timok
@endnode

@node HeddleyAutoIndex "Index"
@remark Index auto-generated by Heddley
Index of database 00611d88-0

Documents

@{"UnicDirs3 - Examples" link "Examples"}
@{"UnixDirs3 - Author" link "Author"}
@{"UnixDirs3 - Bugs" link "Bugs"}
@{"UnixDirs3 - History" link "History"}
@{"UnixDirs3 - Installation" link "Install"}
@{"UnixDirs3 - Introduction" link "Intro"}
@{"UnixDirs3 - Legalities" link "Legal"}
@{"UnixDirs3 - The Front Page" link "Main"}
@{"UnixDirs3 - Theory of Operation" link "Theory"}
@{"UnixDirs3 - Usage" link "Usage"}

Buttons

@{"��������Bugs��������" link "Bugs" 0}
@{"�������Usage��������" link "Usage" 0}
@{"������Examples������" link "Examples" 0}
@{"������History�������" link "History" 0}
@{"�����Legalities�����" link "Legal" 0}
@{"�����The�Author�����" link "Author" 0}
@{"����Installation����" link "Install" 0}
@{"����Introduction����" link "Intro" 0}
@{"�How�does�it�work?��" link "Theory" 0}
@{"author" link "Author" 0}
@{"examples" link "Examples" 0}
@{"history" link "History" 0}
@{"install" link "Install" 0}
@{"main�section" link "Main" 0}
@{"me" link "Author" 0}
@{"note" link "Usage" 500}
@{"theory�of�operation" link "Theory" 0}
@{"Timo�Kaikumaa" link "Author" 0}
@{"tooltypes/arguments" link "Usage" 0}
@{"usage" link "Usage" 0}
@endnode