Also, change the way console input is passed to the subprocess -- instead of
echoing it in sushi, instead set the pty to cooked mode and have it do any
echoing. This will work better if we have scripts that accept input (sometimes
we don't want it visible; e.g. if it's a password) and also has the side effect
of allowing a command to be interrupted with ^C.
- don't allocate:
char *p = malloc(len * sizeof(char *))
when you mean:
char *p = malloc(len)
- eliminate duplicated code by creating functions and try not to wrap
- use mvwinnstr instead of mvwinstr
Sushi is an interactive, menu-based program that is designed to aid
the user or administrator with administrative and complex tasks on thier
machines.
Sushi provides a menu of various functions that the user can perform on
his or her machine. Once the user selects a desired function, the
function is either performed outright, or in most cases, the user is
asked to fill in a simple form with required and option information,
which is then processed by sushi, and the action occurs.
The programming interface for sushi is very simple. There are
directories containing various files, such as menu indexes, or forms for
the user to fill out. These files are interpreted by sushi to generate
the menus the user sees on his/her screen. When the form is filled out
by the user, the entries are passed as command-line arguments to a
program, or script contained in one of the subdirectories. In this way,
it is possible to add new entries to the sushi menu structure, by simply
adding a new menu item, form and script, the binary does not need to be
recompiled to take advantage of this new menu.