querybio.c 1.3 KB

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