subr.c 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #include <u.h>
  2. #include <libc.h>
  3. #include <bio.h>
  4. #include "modem.h"
  5. int vflag;
  6. void
  7. verbose(char *fmt, ...)
  8. {
  9. va_list arg;
  10. char buf[512];
  11. if(vflag){
  12. va_start(arg, fmt);
  13. vseprint(buf, buf+sizeof(buf), fmt, arg);
  14. va_end(arg);
  15. syslog(0, "fax", buf);
  16. }
  17. }
  18. void
  19. error(char *fmt, ...)
  20. {
  21. va_list arg;
  22. char buf[512];
  23. int n;
  24. n = sprint(buf, "%s: ", argv0);
  25. va_start(arg, fmt);
  26. vseprint(buf+n, buf+sizeof(buf)-n, fmt, arg);
  27. va_end(arg);
  28. fprint(2, buf);
  29. if(vflag)
  30. print(buf+n);
  31. exits("error");
  32. }
  33. static char *errors[] = {
  34. [Eok] "no error",
  35. [Eattn] "can't get modem's attention",
  36. [Enoanswer] "Retry, no answer or busy",
  37. [Enoresponse] "Retry, no response from modem",
  38. [Eincompatible] "Retry, incompatible",
  39. [Esys] "Retry, system call error",
  40. [Eproto] "Retry, fax protocol botch",
  41. };
  42. int
  43. seterror(Modem *m, int error)
  44. {
  45. if(error == Esys)
  46. sprint(m->error, "%s: %r", errors[Esys]);
  47. else
  48. strcpy(m->error, errors[error]);
  49. verbose("seterror: %s", m->error);
  50. return error;
  51. }
  52. void
  53. faxrlog(Modem *m, int ok)
  54. {
  55. char buf[1024];
  56. int n;
  57. n = sprint(buf, "receive %lud %c %d", m->time, ok == Eok ? 'Y': 'N', m->pageno-1);
  58. if(ok == Eok && (m->valid & Vftsi))
  59. sprint(buf+n, " %s", m->ftsi);
  60. syslog(0, "fax", buf);
  61. }