|
|
researchv10 Norman
# include "trek.h"
# define ECHO 010
/**
** get integer parameter
**/
char eof;
getintpar(s, n)
char *s;
int *n;
{
register int i;
for ever {
while ((eof|mkfault)==0 && lineended() && s) {
printf("%s: %n", s);
newline();
}
if((i=readint(n)) < 0)
return(0);
if(i>0)
return(1);
printf("? ");
flushin();
}
}
/**
** get floating parameter
**/
getfltpar(s, f)
char *s;
float *f;
{
register int i;
for ever {
while ((eof|mkfault)==0 && lineended() && s) {
printf("%s: %n", s);
newline();
}
if((i=readreal(f)) < 0)
return(0);
if(i>0)
return(1);
printf("? ");
flushin();
}
}
/**
** get yes/no parameter
**/
CVNTAB Yntab[]
{
"n", "o",
"y", "es",
0
};
getynpar(s)
char *s;
{
return(getcodpar(s, Yntab));
}
/**
** get coded parameter
**/
getcodpar(s, tab)
char *s;
CVNTAB tab[];
{
char input[100];
register CVNTAB *r;
register char *p, *q;
int c;
for ever {
while ((eof|mkfault)==0 && lineended() && s) {
printf("%s: %n", s);
newline();
}
if((c=reads(" \t\n0123456789-./;", input)) < 0)
return(-1);
if (c) {
if (*input == '?') {
for(r=tab; r->abrev; r++)
printf("\t%s-%s\n", r->abrev, r->full);
continue;
}
for (r = tab; r->abrev; r++)
{
p = input;
for (q = r->abrev; *q; q++)
if (*p++ != *q)
break;
if (!*q)
{
for (q = r->full; *p && *q; q++, p++)
if (*p != *q)
break;
if (!*p || !*q)
break;
}
}
}
if (c==0 || r->abrev==0)
{
printf("? ");
flushin();
continue;
}
return(r-tab);
}
}
/**
** get password
**/
getpasswd(buf)
char buf[];
{
int s, m;
register char c; register int ptr;
struct{ int junk[2];
int mode;
} b;
s=signal(SIGINT,1);
gtty(0,&b); m=b.mode; b.mode =& ~ECHO; stty(0,&b);
flushin();
printf("Enter password: %n");
ptr=0;
while((c=readchar())!='\n') {
if(ptr<PWDLEN) buf[ptr++]=c;
}
while(ptr<PWDLEN) buf[ptr++]=0;
b.mode = m; stty(0,&b);
printf("\n");
signal(SIGINT,s);
flushin();
}
readsep(s)
char *s;
{
register char rc;
if(!(rc=any(nextchar(),s)))
backspace();
return(mkfault?(-1):rc);
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.