File:  [Research Unix] / researchv8dc / cmd / upas / send / log.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:21:59 2018 UTC (8 years, 3 months ago) by root
Branches: belllabs, MAIN
CVS tags: researchv8, HEAD
researchv8 Dan Cross

#include <sys/types.h>
#include <sys/stat.h>
#include "mail.h"

/* configuration */
#define LOGFILE "/usr/spool/mail/mail.log"
#define LOGTEMP "/usr/spool/mail/mail.tmp"

/* imports */
void lock();
void unlock();

/* log a mail transmission */
logsend (to, from, at, tag)
	char *to;	/* receiver */
	char *from;	/* the sender */
	char *at;	/* time sent */
	char *tag;	/* type of mail */
{
#	include <grp.h>
	char buf[FROMLINESIZE];
	int out, in;
	long len;
	long lseek();

	lock(LOGFILE);

	/* append to log */
	out = open(LOGFILE, 2);
	len = lseek(out, 0L, 2);
	if (len > 32000) {
		in = out;
		out = creat(LOGTEMP, 0660);
		if (out >= 0 && in >= 0 && lseek(in, -4000L, 2) >= 0) {
			while ((len = read(in, buf, FROMLINESIZE)) > 0)
				(void)write(out, buf, (unsigned int)len);
			close(in);
			close(out);
			unlink(LOGFILE);
			link(LOGTEMP, LOGFILE);
			unlink(LOGTEMP);
		} else {
			close(in);
			close(out);
		}
		out = open(LOGFILE, 2);
	}
	sprintf (buf, "%s %s From %s %s\n", tag, to, from, at);
	(void)write(out, buf, strlen(buf));
	close(out);
	chmod(LOGFILE, 0666);

	unlock ();

}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.