int ckkeywd(char *strval, char *keyword[], char *defstr, char *error, char *help, char *prompt) { int valid, i, n; char input[MAX_INPUT]; char defmesg[512]; char *ept; (void) sprintf(defmesg, "Please enter one of the following keywords: "); ept = defmesg + strlen(defmesg); for (i = 0; keyword[i]; ) { if (i) (void) strcat(ept, ", "); (void) strcat(ept, keyword[i++]); } (void) strcat(ept, ckquit ? ", q." : "."); if (!prompt) prompt = "Enter appropriate value"; start: putprmpt(stderr, prompt, keyword, defstr); if (getinput(input)) return (1); n = (int)strlen(input); if (n == 0) { if (defstr) { (void) strcpy(strval, defstr); return (0); } puterror(stderr, defmesg, error); goto start; } if (strcmp(input, "?") == 0) { puthelp(stderr, defmesg, help); goto start; } if (ckquit && (strcmp(input, "q") == 0)) { (void) strcpy(strval, input); return (3); } valid = 1; if (keyword) valid = !match(input, keyword); if (!valid) { puterror(stderr, defmesg, error); goto start; } (void) strcpy(strval, input); return (0); }
int ckstr(char *strval, char *regexp[], int length, char *defstr, char *error, char *help, char *prompt) { int n; char *defhlp; char input[MAX_INPUT], hlpbuf[1024], errbuf[1024]; defhlp = NULL; if (!prompt) prompt = "Enter an appropriate value"; start: putprmpt(stderr, prompt, NULL, defstr); if (getinput(input)) return (1); n = (int)strlen(input); if (n == 0) { if (defstr) { (void) strcpy(strval, defstr); return (0); } puterror(stderr, ERRMSG0, error); goto start; } if (strcmp(input, "?") == 0) { if (defhlp == NULL) defhlp = sethlp(hlpbuf, regexp, length); puthelp(stderr, defhlp, help); goto start; } if (ckquit && (strcmp(input, "q") == 0)) { (void) strcpy(strval, input); return (3); } if (ckstr_val(regexp, length, input)) { /* LINTED E_SEC_PRINTF_VAR_FMT */ (void) snprintf(errbuf, sizeof (errbuf), errstr, length); puterror(stderr, errbuf, error); goto start; } (void) strcpy(strval, input); return (0); }
int ckint(long *intval, short base, char *defstr, char *error, char *help, char *prompt) { long value; char *ptr, input[MAX_INPUT], defmesg[64], temp[64]; if (!prompt) { setprmpt(temp, base); prompt = temp; } setmsg(defmesg, base); start: putprmpt(stderr, prompt, NULL, defstr); if (getinput(input)) return (1); if (strlen(input) == 0) { if (defstr) { *intval = strtol(defstr, NULL, (int)base); return (0); } puterror(stderr, defmesg, error); goto start; } else if (strcmp(input, "?") == 0) { puthelp(stderr, defmesg, help); goto start; } else if (ckquit && (strcmp(input, "q") == 0)) return (3); value = strtol(input, &ptr, (int)base); if (*ptr != '\0') { puterror(stderr, defmesg, error); goto start; } *intval = value; return (0); }
int ckyorn(char *yorn, char *defstr, char *error, char *help, char *prompt) { int n; char input[MAX_INPUT]; if (!prompt) prompt = "Yes or No"; start: putprmpt(stderr, prompt, choices, defstr); if (getinput(input)) return (1); n = (int)strlen(input); if (n == 0) { if (defstr) { (void) strcpy(yorn, defstr); return (0); } puterror(stderr, REQMSG, error); goto start; } if (strcmp(input, "?") == 0) { puthelp(stderr, HLPMSG, help); goto start; } if (ckquit && (strcmp(input, "q") == 0)) return (3); if (ckyorn_val(input)) { puterror(stderr, ERRMSG, error); goto start; } (void) strcpy(yorn, input); return (0); }