Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#include <u.h>
#include <libc.h>
#include <bio.h>

#include "modem.h"

int vflag;

void
verbose(char *fmt, ...)
{
        va_list arg;
        char buf[512];

        if(vflag){
                va_start(arg, fmt);
                vseprint(buf, buf+sizeof(buf), fmt, arg);
                va_end(arg);
                syslog(0, "fax", buf);
        }
}

void
error(char *fmt, ...)
{
        va_list arg;
        char buf[512];
        int n;

        n = sprint(buf, "%s: ", argv0);
        va_start(arg, fmt);
        vseprint(buf+n, buf+sizeof(buf)-n, fmt, arg);
        va_end(arg);
        fprint(2, buf);
        if(vflag)
                print(buf+n);
        exits("error");
}

static char *errors[] = {
        [Eok]           "no error",
        [Eattn]         "can't get modem's attention",
        [Enoanswer]     "Retry, no answer or busy",
        [Enoresponse]   "Retry, no response from modem",
        [Eincompatible] "Retry, incompatible",
        [Esys]          "Retry, system call error",
        [Eproto]        "Retry, fax protocol botch",
};

int
seterror(Modem *m, int error)
{
        if(error == Esys)
                sprint(m->error, "%s: %r", errors[Esys]);
        else
                strcpy(m->error, errors[error]);
        verbose("seterror: %s", m->error);
        return error;
}

void
faxrlog(Modem *m, int ok)
{
        char buf[1024];
        int n;

        n = sprint(buf, "receive %lud %c %d", m->time, ok == Eok ? 'Y': 'N', m->pageno-1);
        if(ok == Eok && (m->valid & Vftsi))
                sprint(buf+n, " %s", m->ftsi);
        syslog(0, "fax", buf);
}