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