Subversion Repositories planix.SVN

Rev

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

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