1 #include <u.h> 2 #include <libc.h> 3 #include <bio.h> 4 #include <ctype.h> 5 #include <auth.h> 6 #include "authsrv.h" 7 8 9 #define TABLEN 8 10 11 static char* 12 defreadln(char *prompt, char *def, int must, int *changed) 13 { 14 char pr[512]; 15 char reply[256]; 16 17 do { 18 if(def && *def){ 19 if(must) 20 snprint(pr, sizeof pr, "%s[return = %s]: ", prompt, def); 21 else 22 snprint(pr, sizeof pr, "%s[return = %s, space = none]: ", prompt, def); 23 } else 24 snprint(pr, sizeof pr, "%s: ", prompt); 25 readln(pr, reply, sizeof(reply), 0); 26 switch(*reply){ 27 case ' ': 28 break; 29 case 0: 30 return def; 31 default: 32 *changed = 1; 33 if(def) 34 free(def); 35 return strdup(reply); 36 } 37 } while(must); 38 39 if(def){ 40 *changed = 1; 41 free(def); 42 } 43 return 0; 44 } 45 46 /* 47 * get bio from stdin 48 */ 49 int 50 querybio(char *file, char *user, Acctbio *a) 51 { 52 int i; 53 int changed; 54 55 rdbio(file, user, a); 56 a->postid = defreadln("Post id", a->postid, 0, &changed); 57 a->name = defreadln("User's full name", a->name, 1, &changed); 58 a->dept = defreadln("Department #", a->dept, 1, &changed); 59 a->email[0] = defreadln("User's email address", a->email[0], 1, &changed); 60 a->email[1] = defreadln("Sponsor's email address", a->email[1], 0, &changed); 61 for(i = 2; i < Nemail; i++){ 62 if(a->email[i-1] == 0) 63 break; 64 a->email[i] = defreadln("other email address", a->email[i], 0, &changed); 65 } 66 return changed; 67 } 68