Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247
WebSVN – planix.SVN – Blame – /os/branches/feature-vt/sys/src/cmd/upas/send/cat_mail.c – Rev 2

Subversion Repositories planix.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include "common.h"
2
#include "send.h"
3
 
4
 
5
/* dispose of local addresses */
6
int
7
cat_mail(dest *dp, message *mp)
8
{
9
	Biobuf *fp;
10
	char *rcvr, *cp;
11
	Mlock *l;
12
	String *tmp, *s;
13
	int i, n;
14
 
15
	s = unescapespecial(s_clone(dp->repl1));
16
	if (nflg) {
17
		if(!xflg)
18
			print("cat >> %s\n", s_to_c(s));
19
		else
20
			print("%s\n", s_to_c(dp->addr));
21
		s_free(s);
22
		return 0;
23
	}
24
	for(i = 0;; i++){
25
		l = syslock(s_to_c(s));
26
		if(l == 0)
27
			return refuse(dp, mp, "can't lock mail file", 0, 0);
28
 
29
		fp = sysopen(s_to_c(s), "al", MBOXMODE);
30
		if(fp)
31
			break;
32
		tmp = s_append(0, s_to_c(s));
33
		s_append(tmp, ".tmp");
34
		fp = sysopen(s_to_c(tmp), "al", MBOXMODE);
35
		if(fp){
36
			syslog(0, "mail", "error: used %s", s_to_c(tmp));
37
			s_free(tmp);
38
			break;
39
		}
40
		s_free(tmp);
41
		sysunlock(l);
42
		if(i >= 5)
43
			return refuse(dp, mp, "mail file cannot be opened", 0, 0);
44
		sleep(1000);
45
	}
46
	s_free(s);
47
	n = m_print(mp, fp, (char *)0, 1);
48
	if (Bprint(fp, "\n") < 0 || Bflush(fp) < 0 || n < 0){
49
		sysclose(fp);
50
		sysunlock(l);
51
		return refuse(dp, mp, "error writing mail file", 0, 0);
52
	}
53
	sysclose(fp);
54
	sysunlock(l);
55
	rcvr = s_to_c(dp->addr);
56
	if(cp = strrchr(rcvr, '!'))
57
		rcvr = cp+1;
58
	logdelivery(dp, rcvr, mp);
59
	return 0;
60
}