diff options
Diffstat (limited to 'usr.bin/ncftp/set.c')
-rw-r--r-- | usr.bin/ncftp/set.c | 370 |
1 files changed, 0 insertions, 370 deletions
diff --git a/usr.bin/ncftp/set.c b/usr.bin/ncftp/set.c deleted file mode 100644 index 833c7af..0000000 --- a/usr.bin/ncftp/set.c +++ /dev/null @@ -1,370 +0,0 @@ -/* Set.c */ - -/* $RCSfile: set.c,v $ - * $Revision: 14020.12 $ - * $Date: 93/07/09 11:45:48 $ - */ - -#include "sys.h" - -#include <ctype.h> - -#include "util.h" -#include "cmds.h" -#include "main.h" -#include "set.h" -#include "defaults.h" -#include "copyright.h" - -#ifdef TERM_FTP -extern int compress_toggle; -#endif - -/* Set.c globals: */ -char *verbose_msgs[4] = { - "Not printing anything.\n", - "Only printing necessary error messages.\n", - "Printing error messages and announcements from the remote host.\n", - "Printing all messages, errors, acknowledgments, and announcements.\n" -}; - -char *short_verbose_msgs[4] = { - "Quiet (-1)", - "Errors Only (0)", - "Terse (1)", - "Verbose (2)" -}; - -string vstr; - -/* Set.c externs: */ -extern int progress_meter, connected; -extern int parsing_rc, keep_recent; -extern string pager, anon_password, prompt; -extern str32 curtypename; -extern long logsize; -extern FILE *logf; -extern longstring rcname, logfname, lcwd; -extern int auto_binary, ansi_escapes, debug; -extern int mprompt, remote_is_unix, verbose; -extern int startup_msg, anon_open, passivemode; -extern int restricted_data_ports; -#ifndef NO_TIPS -extern int tips; -#endif -#ifdef GATEWAY -extern string gateway, gate_login; -#endif - -/* The variables must be sorted in alphabetical order, or else - * match_var() will choke. - */ -struct var vars[] = { - VARENTRY("anon-open", BOOL, 0, &anon_open, NULL), - VARENTRY("anon-password", STR, 0, anon_password, NULL), - VARENTRY("ansi-escapes", BOOL, 0, &ansi_escapes, NULL), - VARENTRY("auto-binary", BOOL, 0, &auto_binary, NULL), -#ifdef TERM_FTP - VARENTRY("compress", INT, 0, - &compress_toggle,NULL), -#endif - VARENTRY("debug", INT, 0, &debug, NULL), -#ifdef GATEWAY - VARENTRY("gateway-login", STR, 0, gate_login, set_gatelogin), - VARENTRY("gateway-host", STR, 0, gateway, NULL), -#endif - VARENTRY("local-dir", STR, 0, lcwd, set_ldir), - VARENTRY("logfile", STR, 0, logfname, set_log), - VARENTRY("logsize", LONG, 0, &logsize, NULL), - VARENTRY("mprompt", BOOL, 0, &mprompt, NULL), - VARENTRY("netrc", -STR, 0, rcname, NULL), - VARENTRY("passive", BOOL, 0, &passivemode, NULL), - VARENTRY("pager", STR, 0, pager + 1, set_pager), - VARENTRY("prompt", STR, 0, prompt, set_prompt), - VARENTRY("progress-reports",INT, 0, &progress_meter,NULL), - VARENTRY("recent-list", BOOL, 0, &keep_recent, NULL), - VARENTRY("remote-is-unix", BOOL, 1, &remote_is_unix,NULL), - VARENTRY("restricted-data-ports",BOOL, 0, &restricted_data_ports, NULL), - VARENTRY("startup-msg", BOOL, 0, &startup_msg, NULL), /* TAR */ -#ifndef NO_TIPS - VARENTRY("tips", BOOL, 0, &tips, NULL), -#endif - VARENTRY("type", STR, 1, curtypename, set_type), - VARENTRY("verbose", STR, 0, vstr, set_verbose), -}; - - -void set_verbose(char *new, int unset) -{ - int i, c; - - if (unset == -1) verbose = !verbose; - else if (unset || !new) verbose = V_ERRS; - else { - if (isalpha(*new)) { - c = islower(*new) ? toupper(*new) : *new; - for (i=0; i<(int)(sizeof(short_verbose_msgs)/sizeof(char *)); i++) { - if (short_verbose_msgs[i][0] == c) - verbose = i - 1; - } - } else { - i = atoi(new); - if (i < V_QUIET) i = V_QUIET; - else if (i > V_VERBOSE) i = V_VERBOSE; - verbose = i; - } - } - (void) Strncpy(vstr, short_verbose_msgs[verbose+1]); - if (!parsing_rc && NOT_VQUIET) - (void) fputs(verbose_msgs[verbose+1], stdout); -} /* set_verbose */ - - - - -void set_prompt(char *new, int unset) -{ - (void) Strncpy(prompt, (unset || !new) ? dPROMPT : new); - init_prompt(); -} /* set_prompt */ - - - - -void set_log(char *fname, int unset) -{ - if (logf) { - (void) fclose(logf); - logf = NULL; - } - if (!unset && fname) { - (void) Strncpy(logfname, fname); - logf = fopen (LocalDotPath(logfname), "a"); - } -} /* set_log */ - - - - -void set_pager(char *new, int unset) -{ - if (unset) - (void) strcpy(pager, "-"); - else { - if (!new) - new = dPAGER; - if (!new[0]) - (void) Strncpy(pager, "-"); - else { - (void) sprintf(pager, "|%s", (*new == '|' ? new + 1 : new)); - (void) LocalPath(pager + 1); - } - } -} /* set_pager */ - - - - -void set_type(char *newtype, int unset) -{ - int t = verbose; - verbose = V_QUIET; - if (!connected && t > V_QUIET) - (void) printf("Not connected.\n"); - else if (newtype != NULL && !unset) - (void) _settype(newtype); - verbose = t; -} /* set_type */ - - - - -void set_ldir(char *ldir, int unset) -{ - int t = verbose; - char *argv[2]; - - if (ldir && !unset) { - verbose = V_QUIET; - argv[1] = ldir; - (void) lcd(2, argv); - verbose = t; - } -} /* set_ldir */ - - - - -#ifdef GATEWAY -void set_gatelogin(char *glogin, int unset) -{ - if (unset || !glogin) { - gate_login[0] = gateway[0] = 0; - } else - (void) strcpy(gate_login, glogin); -} /* set_gatelogin */ -#endif - - - - -struct var *match_var(char *varname) -{ - int i, ambig; - struct var *v; - short c; - - c = (short) strlen(varname); - for (i=0, v=vars; i<NVARS; i++, v++) { - if (strcmp(v->name, varname) == 0) - return v; /* exact match. */ - if (c < v->nmlen) { - if (strncmp(v->name, varname, (size_t) c) == 0) { - /* Now make sure that it only matches one var name. */ - if (c >= v[1].nmlen || (i == (NVARS - 1))) - ambig = 0; - else - ambig = !strncmp(v[1].name, varname, (size_t) c); - if (!ambig) - return v; - (void) fprintf(stderr, "%s: ambiguous variable name.\n", varname); - goto xx; - } - } - } - (void) fprintf(stderr, "%s: unknown variable.\n", varname); -xx: - return ((struct var *)0); -} /* match_var */ - - - - -void show_var(struct var *v) -{ - int c; - - if (v != (struct var *)0) { - (void) printf("%-20s= ", v->name); - c = v->type; - if (c < 0) c = -c; - if (v->conn_required && !connected) - (void) printf("(not connected)\n"); - else switch (c) { - case INT: - (void) printf("%d\n", *(int *)v->var); break; - case LONG: - (void) printf("%ld\n", *(long *)v->var); break; - case STR: - (void) printf("\"%s\"\n", (char *)v->var); break; - case BOOL: - (void) printf("%s\n", *(int *)v->var == 0 ? "no" : "yes"); - } - } -} /* show_var */ - - - - -void show(char *varname) -{ - int i; - struct var *v; - - if ((varname == NULL) /* (Denotes show all vars) */ - || (strcmp("all", varname) == 0)) - { - for (i=0; i<NVARS; i++) - show_var(&vars[i]); - } else { - if ((v = match_var(varname)) != (struct var *)0) - show_var(v); - } -} /* show */ - - - - -int do_show(int argc, char **argv) -{ - int i; - - if (argc < 2) - show(NULL); - else - for (i=1; i<argc; i++) - show(argv[i]); - return NOERR; -} /* do_show */ - - - - -int set(int argc, char **argv) -{ - int unset; - struct var *v; - char *var, *val = NULL; - - if (argc < 2 || strncmp(argv[1], "all", (size_t)3) == 0) { - show(NULL); /* show all variables. */ - } else { - unset = argv[0][0] == 'u'; - var = argv[1]; - if (argc > 2) { - /* could be '= value' or just 'value.' */ - if (*argv[2] == '=') { - if (argc > 3) - val = argv[3]; - else return USAGE; /* can't do 'set var =' */ - } else - val = argv[2]; - if (val[0] == 0) - val = NULL; - } - v = match_var(var); - if (v != NULL) { - if (v->conn_required && !connected) - (void) fprintf(stderr, "%s: must be connected.\n", var); - else if (v->type < 0) - (void) fprintf(stderr, "%s: read-only variable.\n", var); - else if (v->proc != (setvarproc) 0) { - (*v->proc)(val, unset); /* a custom set proc. */ - } else if (unset) switch(v->type) { - case BOOL: - case INT: - *(int *) v->var = 0; break; - case LONG: - *(long *) v->var = 0; break; - case STR: - *(char *) v->var = 0; break; - } else { - if (val == NULL) switch(v->type) { - /* User just said "set varname" */ - case BOOL: - case INT: - *(int *) v->var = 1; break; - case LONG: - *(long *) v->var = 1; break; - case STR: - *(char *) v->var = 0; break; - } else { - /* User said "set varname = value" */ - switch (v->type) { - case BOOL: - *(int *)v->var = StrToBool(val); break; - case INT: - (void) sscanf(val, "%d", (int *) v->var); break; - case LONG: - (void) sscanf(val, "%ld", (long *) v->var); break; - case STR: - (void) strcpy(v->var, val); break; - } - } - } - } - } - return NOERR; -} /* set */ - -/* eof Set.c */ |