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