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