|
|
1.1 ! root 1: # include "trek.h" ! 2: # define ECHO 010 ! 3: ! 4: /** ! 5: ** get integer parameter ! 6: **/ ! 7: ! 8: char eof; ! 9: ! 10: getintpar(s, n) ! 11: char *s; ! 12: int *n; ! 13: { ! 14: register int i; ! 15: ! 16: for ever { ! 17: while ((eof|mkfault)==0 && lineended() && s) { ! 18: printf("%s: %n", s); ! 19: newline(); ! 20: } ! 21: if((i=readint(n)) < 0) ! 22: return(0); ! 23: if(i>0) ! 24: return(1); ! 25: printf("? "); ! 26: flushin(); ! 27: } ! 28: } ! 29: ! 30: /** ! 31: ** get floating parameter ! 32: **/ ! 33: ! 34: getfltpar(s, f) ! 35: char *s; ! 36: float *f; ! 37: { ! 38: register int i; ! 39: ! 40: for ever { ! 41: while ((eof|mkfault)==0 && lineended() && s) { ! 42: printf("%s: %n", s); ! 43: newline(); ! 44: } ! 45: if((i=readreal(f)) < 0) ! 46: return(0); ! 47: if(i>0) ! 48: return(1); ! 49: printf("? "); ! 50: flushin(); ! 51: } ! 52: } ! 53: ! 54: /** ! 55: ** get yes/no parameter ! 56: **/ ! 57: ! 58: CVNTAB Yntab[] ! 59: { ! 60: "n", "o", ! 61: "y", "es", ! 62: 0 ! 63: }; ! 64: ! 65: getynpar(s) ! 66: char *s; ! 67: { ! 68: return(getcodpar(s, Yntab)); ! 69: } ! 70: ! 71: ! 72: /** ! 73: ** get coded parameter ! 74: **/ ! 75: ! 76: getcodpar(s, tab) ! 77: char *s; ! 78: CVNTAB tab[]; ! 79: { ! 80: char input[100]; ! 81: register CVNTAB *r; ! 82: register char *p, *q; ! 83: int c; ! 84: ! 85: for ever { ! 86: while ((eof|mkfault)==0 && lineended() && s) { ! 87: printf("%s: %n", s); ! 88: newline(); ! 89: } ! 90: if((c=reads(" \t\n0123456789-./;", input)) < 0) ! 91: return(-1); ! 92: if (c) { ! 93: if (*input == '?') { ! 94: for(r=tab; r->abrev; r++) ! 95: printf("\t%s-%s\n", r->abrev, r->full); ! 96: continue; ! 97: } ! 98: for (r = tab; r->abrev; r++) ! 99: { ! 100: p = input; ! 101: for (q = r->abrev; *q; q++) ! 102: if (*p++ != *q) ! 103: break; ! 104: if (!*q) ! 105: { ! 106: for (q = r->full; *p && *q; q++, p++) ! 107: if (*p != *q) ! 108: break; ! 109: if (!*p || !*q) ! 110: break; ! 111: } ! 112: } ! 113: } ! 114: if (c==0 || r->abrev==0) ! 115: { ! 116: printf("? "); ! 117: flushin(); ! 118: continue; ! 119: } ! 120: return(r-tab); ! 121: } ! 122: } ! 123: ! 124: ! 125: /** ! 126: ** get password ! 127: **/ ! 128: ! 129: getpasswd(buf) ! 130: char buf[]; ! 131: { ! 132: int s, m; ! 133: register char c; register int ptr; ! 134: struct{ int junk[2]; ! 135: int mode; ! 136: } b; ! 137: ! 138: s=signal(SIGINT,1); ! 139: gtty(0,&b); m=b.mode; b.mode =& ~ECHO; stty(0,&b); ! 140: flushin(); ! 141: printf("Enter password: %n"); ! 142: ! 143: ptr=0; ! 144: while((c=readchar())!='\n') { ! 145: if(ptr<PWDLEN) buf[ptr++]=c; ! 146: } ! 147: while(ptr<PWDLEN) buf[ptr++]=0; ! 148: b.mode = m; stty(0,&b); ! 149: printf("\n"); ! 150: signal(SIGINT,s); ! 151: flushin(); ! 152: } ! 153: ! 154: readsep(s) ! 155: char *s; ! 156: { ! 157: register char rc; ! 158: ! 159: if(!(rc=any(nextchar(),s))) ! 160: backspace(); ! 161: return(mkfault?(-1):rc); ! 162: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.