jdt@bucsb.bu.edu.UUCP (Dave Tenny) (05/26/86)
Here's a little program for use in the s/startup-sequence
profile for conditionally performing actions. It's not fancy,
but I find it useful.
An example:
shouldi copy df0:lib/c32.lib ram:
in your startup profile will ask you if you wish to copy the file
to ram:, you can reply y/n/<cr> as you please.
Compiled with Manx, about 2100 bytes when linked.
Dave Tenny,
Happy Amiga owner.
----------------------------- Cut --------------------------------
/* Written 05/26/86 by Jeffrey D. Tenny
shouldi command
Asks you if you should execute the command. Good for batch files.
Bugs: won't work if invoked with RUN.
requires a carraige return before it sees input.
'y' or 'n' must be first char typed to be valid.
*/
#include <libraries/dosextens.h>
extern struct FileHandle *Input(), *Output() ;
int main(argc, argv)
int argc ;
char **argv ;
{
char argstring[255] ;
char reply[4] ; /* 4 to prevent input spill to input handler */
struct FileHandle *out, *in ;
int valid = 0 ;
int i ;
in = Input() ;
out = Output() ;
if (argc <= 1) {
Write(out, "Usage: SHOULDI command args\n", 28L) ;
Exit(RETURN_WARN) ;
}
strcpy(argstring, argv[1]) ;
for (i = 2; i < argc ; i++) {
strcat(argstring, " ") ;
strcat(argstring, argv[i]) ;
}
/* Ask the question, and maybe issue the command */
Write(out, "Should I ", 9L) ;
Write(out, argstring, (long) strlen(argstring)) ;
Write(out, "? [Y/n]:", 8L) ;
/* Wait for valid reply */
while (!valid) {
Read(in, reply, 4L) ; /* Need 'in' to read */
valid = (reply[0] == 'y' || reply[0] == 'n' || reply[0] == 'Y'
|| reply[0] == 'N' || reply[0] == '\n') ;
}
if (reply[0] == 'Y' || reply[0] == 'y' || reply[0] == '\n')
Execute(argstring, 0L, out) ; /* no 'in' to prevent newcli */
Exit(0L) ;
}