/*ARGSUSED*/ void variable(int c) { char buf[256]; if (prompt("[set] ", buf, sizeof(buf))) return; vlex(buf); if (vtable[BEAUTIFY].v_access&CHANGED) { vtable[BEAUTIFY].v_access &= ~CHANGED; kill(tipout_pid, SIGSYS); } if (vtable[SCRIPT].v_access&CHANGED) { vtable[SCRIPT].v_access &= ~CHANGED; setscript(); /* * So that "set record=blah script" doesn't * cause two transactions to occur. */ if (vtable[RECORD].v_access&CHANGED) vtable[RECORD].v_access &= ~CHANGED; } if (vtable[RECORD].v_access&CHANGED) { vtable[RECORD].v_access &= ~CHANGED; if (boolean(value(SCRIPT))) setscript(); } if (vtable[TAND].v_access&CHANGED) { vtable[TAND].v_access &= ~CHANGED; if (boolean(value(TAND))) tandem("on"); else tandem("off"); } if (vtable[LECHO].v_access&CHANGED) { vtable[LECHO].v_access &= ~CHANGED; HD = boolean(value(LECHO)); } if (vtable[PARITY].v_access&CHANGED) { vtable[PARITY].v_access &= ~CHANGED; setparity(NOSTR); } if (vtable[HARDWAREFLOW].v_access&CHANGED) { vtable[HARDWAREFLOW].v_access &= ~CHANGED; if (boolean(value(HARDWAREFLOW))) hardwareflow("on"); else hardwareflow("off"); } if (vtable[LINEDISC].v_access&CHANGED) { vtable[LINEDISC].v_access &= ~CHANGED; linedisc(NOSTR); } }
/* ARGSUSED */ void variable(int cc) { char buf[256]; if (prompt("[set] ", buf, sizeof (buf))) return; vlex(buf); if (vtable[BEAUTIFY].v_access&CHANGED) { vtable[BEAUTIFY].v_access &= ~CHANGED; (void) kill(pid, SIGSYS); } if (vtable[SCRIPT].v_access&CHANGED) { vtable[SCRIPT].v_access &= ~CHANGED; setscript(); /* * So that "set record=blah script" doesn't * cause two transactions to occur. */ if (vtable[RECORD].v_access&CHANGED) vtable[RECORD].v_access &= ~CHANGED; } if (vtable[RECORD].v_access&CHANGED) { vtable[RECORD].v_access &= ~CHANGED; if (boolean(value(SCRIPT))) setscript(); } if (vtable[TAND].v_access&CHANGED) { vtable[TAND].v_access &= ~CHANGED; if (boolean(value(TAND))) tandem("on"); else tandem("off"); } if (vtable[LECHO].v_access&CHANGED) { vtable[LECHO].v_access &= ~CHANGED; boolean(value(HALFDUPLEX)) = boolean(value(LECHO)); } if (vtable[PARITY].v_access&CHANGED) { vtable[PARITY].v_access &= ~CHANGED; setparity(NULL); } if (vtable[BAUDRATE].v_access&CHANGED) { vtable[BAUDRATE].v_access &= ~CHANGED; ttysetup(speed(number(value(BAUDRATE)))); } if (vtable[HARDWAREFLOW].v_access & CHANGED) { vtable[HARDWAREFLOW].v_access &= ~CHANGED; if (boolean(value(HARDWAREFLOW))) hardwareflow("on"); else hardwareflow("off"); } }
/* * Variable manipulation */ void vinit(void) { char file[FILENAME_MAX], *cp; value_t *p; FILE *fp; for (p = vtable; p->v_name != NULL; p++) { if (p->v_type&ENVIRON) if ((cp = getenv(p->v_name))) p->v_value = cp; if (p->v_type&IREMOTE) setnumber(p->v_value, *address(p->v_value)); } /* * Read the .tiprc file in the HOME directory * for sets */ cp = value(HOME); if (cp == NULL) { (void)fprintf(stderr, "$HOME not set. Skipping check for ~/.tiprc\n"); } else if (strlen(cp) + sizeof("/.tiprc") > sizeof(file)) { (void)fprintf(stderr, "Home directory path too long: %s\n", value(HOME)); } else { snprintf(file, sizeof file, "%s/.tiprc", value(HOME)); if ((fp = fopen(file, "r")) != NULL) { char *tp; while (fgets(file, sizeof(file)-1, fp) != NULL) { if (vflag) printf("set %s", file); if ((tp = strrchr(file, '\n'))) *tp = '\0'; vlex(file); } fclose(fp); } } /* * To allow definition of exception prior to fork */ vtable[EXCEPTIONS].v_access &= ~(WRITE<<PUBLIC); }
void variable(void) { char buf[256]; if (prompt("[set] ", buf, sizeof(buf))) return; vlex(buf); if (vtable[BEAUTIFY].v_access&CHANGED) { vtable[BEAUTIFY].v_access &= ~CHANGED; kill(pid, SIGSYS); } if (vtable[SCRIPT].v_access&CHANGED) { vtable[SCRIPT].v_access &= ~CHANGED; setscript(); /* * So that "set record=blah script" doesn't * cause two transactions to occur. */ if (vtable[RECORD].v_access&CHANGED) vtable[RECORD].v_access &= ~CHANGED; } if (vtable[RECORD].v_access&CHANGED) { vtable[RECORD].v_access &= ~CHANGED; if (boolean(value(SCRIPT))) setscript(); } if (vtable[TAND].v_access&CHANGED) { vtable[TAND].v_access &= ~CHANGED; if (boolean(value(TAND))) tandem("on"); else tandem("off"); } if (vtable[LECHO].v_access&CHANGED) { vtable[LECHO].v_access &= ~CHANGED; HD = boolean(value(LECHO)); } if (vtable[PARITY].v_access&CHANGED) { vtable[PARITY].v_access &= ~CHANGED; setparity(value(PARITY)); } }
/* * Variable manipulation */ void vinit(void) { value_t *p; char *cp; FILE *f; char file[256]; for (p = vtable; p->v_name != NULL; p++) { if (p->v_type&ENVIRON) if ((cp = getenv(p->v_name))) p->v_value = cp; if (p->v_type&IREMOTE) { if (p->v_type&STRING) p->v_value = *(char **) address(p->v_value); else number(p->v_value) = *address(p->v_value); } } /* * Read the .tiprc file in the HOME directory * for sets */ strcpy(file, value(HOME)); strcat(file, "/.tiprc"); if ((f = fopen(file, "r")) != NULL) { char *tp; while (fgets(file, sizeof(file)-1, f) != NULL) { if (vflag) printf("set %s", file); if ((tp = rindex(file, '\n'))) *tp = '\0'; vlex(file); } fclose(f); } /* * To allow definition of exception prior to fork */ vtable[EXCEPTIONS].v_access &= ~(WRITE<<PUBLIC); }