add togglevar for options.

This commit is contained in:
Kelvin Sherlock 2012-09-08 16:59:25 -04:00
parent be00396c26
commit b5dc0fa710
1 changed files with 28 additions and 24 deletions

View File

@ -46,6 +46,26 @@ extern char reply_string[];
char *mname; char *mname;
jmp_buf jabort; jmp_buf jabort;
/*
* Toggle a variable
*/
int togglevar(int argc, char ** argv, int *var, const char *mesg)
{
if (argc < 2) {
*var = !*var;
} else if (argc == 2 && strcasecmp(argv[1], "on") == 0) {
*var = 1;
} else if (argc == 2 && strcasecmp(argv[1], "off") == 0) {
*var = 0;
} else {
printf("usage: %s [ on | off ]\n", argv[0]);
return (-1);
}
if (mesg)
printf("%s %s.\n", mesg, onoff(*var));
return (*var);
}
/* /*
* `Another' gets another argument, and stores the new argc and argv. * `Another' gets another argument, and stores the new argc and argv.
* It reverts to the top level (via main.c's intr()) on EOF/error. * It reverts to the top level (via main.c's intr()) on EOF/error.
@ -830,9 +850,7 @@ int i;
/*VARARGS*/ /*VARARGS*/
void setbell (int argc, char **argv) void setbell (int argc, char **argv)
{ {
bell = !bell; code = togglevar(argc, argv, &bell, "Bell mode");
printf("Bell mode %s.\n", onoff(bell));
code = bell;
} }
/* /*
@ -841,9 +859,7 @@ void setbell (int argc, char **argv)
/*VARARGS*/ /*VARARGS*/
void settrace (int argc, char **argv) void settrace (int argc, char **argv)
{ {
trace = !trace; code = togglevar(argc, argv, &trace, "Packet tracing");
printf("Packet tracing %s.\n", onoff(trace));
code = trace;
} }
/* /*
@ -866,9 +882,7 @@ void sethash (int argc, char **argv)
/*VARARGS*/ /*VARARGS*/
void setverbose (int argc, char **argv) void setverbose (int argc, char **argv)
{ {
verbose = !verbose; code = togglevar(argc, argv, &verbose, "Verbose mode");
printf("Verbose mode %s.\n", onoff(verbose));
code = verbose;
} }
/* /*
@ -877,9 +891,7 @@ void setverbose (int argc, char **argv)
/*VARARGS*/ /*VARARGS*/
void setport (int argc, char **argv) void setport (int argc, char **argv)
{ {
sendport = !sendport; code = togglevar(argc, argv, &sendport, "Use of PORT cmds");
printf("Use of PORT cmds %s.\n", onoff(sendport));
code = sendport;
} }
/* /*
@ -889,9 +901,7 @@ void setport (int argc, char **argv)
/*VARARGS*/ /*VARARGS*/
void setprompt (int argc, char **argv) void setprompt (int argc, char **argv)
{ {
interactive = !interactive; code = togglevar(argc, argv, &interactive, "Interactive mode");
printf("Interactive mode %s.\n", onoff(interactive));
code = interactive;
} }
/* /*
@ -901,9 +911,7 @@ void setprompt (int argc, char **argv)
/*VARARGS*/ /*VARARGS*/
void setglob (int argc, char **argv) void setglob (int argc, char **argv)
{ {
doglob = !doglob; code = togglevar(argc, argv, &doglob, "Globbing");
printf("Globbing %s.\n", onoff(doglob));
code = doglob;
} }
/* /*
@ -1846,16 +1854,12 @@ LOOP:
void setsunique (int argc, char **argv) void setsunique (int argc, char **argv)
{ {
sunique = !sunique; code = togglevar(argc, argv, &sunique, "Store unique");
printf("Store unique %s.\n", onoff(sunique));
code = sunique;
} }
void setrunique (int argc, char **argv) void setrunique (int argc, char **argv)
{ {
runique = !runique; code = togglevar(argc, argv, &runique, "Receive unique");
printf("Receive unique %s.\n", onoff(runique));
code = runique;
} }
/* change directory to perent directory */ /* change directory to perent directory */