Chosen methods
So, why did we decide to make the things we did them?
1. A filename parsing with BASH vs. filesystem filename representation change:
The approach of using filename parsing within BASH is being used because,
first, the idea was to modify the Bourne Again SHell as an application and
not to dig under the basics of the OS. Secondly, this way, though less
powerful and more error-facing, is much easier, quicker, portable and
flexible than the FS change.
2. A shell expansion vs. separate application:
Writing a separate application, especially in a language like Perl
would be a quicker and easier way to implement the features we want.
But then, they won't be homogeneous part of user's environment.
The idea of the project was to make the BASH more powerful, not to add
another excellent application.
3. An own raw TCP/IP connection opened vs. using existing FTP client:
The approach of opening an own TCP/IP connection is being used because,
first not everywhere an FTP client exists, and even if it does, it
can not be interactive. Secondly, we considered more homogenic and easier
to control managing the FTP connection rawly instead from through
an FTP client. For comparison, existing ftp application is being used in
Emacs library ange-ftp.
4. Using forks vs. not using forks.
As pointed in FTP description, file transfer in FTP is being performed
as a separate channel from the control connection. Therefore a need
to maintain two simultaneously working connections when one is
controlling another is needed. Using a fork() to divide the program
into two separate processes, one of which would be transmitting the data,
while other keeps an eye on what server has to say about it simplifies
such a task. Other approach, without using forks is being used in
clients like FTP clients for MS(r) Windows 3.1,3.11(tm) etc.
5. BASH completion: using existing readline functions vs. writing own ones from
scratch.
We chose to use the existing readline functions, because we wanted to make
our expansion a homogenic part of bash, fully associated with the rest
of bash functions. In general, writing all new functions from scratch
isn't the method of this project (see also 5).
6. Connection: using existing connection routines vs. writing own ones.
We again chose to use the existing routines, collecting them from most
fitting sources and modifying them according to our needs. We mostly used
functions of standard FTP client ((C) 1985,1989 by Regents of The
University of California) and of Empire Interface and Empire Client
(internet connectivity mechanisms, (C) 1989 Dave Pare, (C) 1991 Doug Hay)
with proper references. Of course, several routines that we needed
due to specifications of our project had to be written fully by ourselves.
7. Passwords: using only one cached password vs. caching a database of
passwords.
We chose to cache only one last password according to the last remote
host name and user name, because we considered, that maintaining of a
large database of cached passwords maybe first, UNSECURE, for the user
may leave the terminal unattended for a while, thus jeopardizing
anything that has been cached, secondly, because it raises the
complication of the project without need. We consider one last cached
password a great feature while repeatedly working with one remote
configuration, but no more caching should be made.
romm@empire.tau.ac.il
Last modified: Tue Oct 22 14:54:11 1996