V8/usr/net/face/common.c

Compare this file to the similar file:
Show the results in this format:

#include "fserv.h"

char dbgbuf[128];

/*VARARGS*/
debug(s, a, b, c, d, e, f)
{	/* no buffering, shared fd with children */
	long x;
	extern char *ctime();

	x = time(0);
	sprintf(dbgbuf, s, a, b, c, d, e, f);
	strcat(dbgbuf, " ");
	strcat(dbgbuf, ctime(&x));
	write(dbgfd, dbgbuf, strlen(dbgbuf));
}

extern int sys_nerr;
extern char *sys_errlist[];
perror(s)
char *s;
{	register char *c;
	c = "Unknown error";
	if(errno < sys_nerr)
		c = sys_errlist[errno];
	debug("%s: %s (%d)", s, c, errno);
}

debugreset()
{
	dptr = 0;
}

xdebug(s, a, b, c, d, e, f, g)
{
	sprintf(debugbuf[dptr], s, a, b, c, d, e, f, g);
	dptr++;
	if(dptr >= NDBG) {
		debugreset();
		xdebug("buffer wrapped");
	}
}

/* detach from our environment */
detach (logfile)
	char *logfile;
{
	int i;

	/* detach from the process group */	
	setpgrp (0, 0);

	/* ignore some signals */
	signal(SIGPIPE, SIG_IGN);
	signal(SIGHUP, SIG_IGN);
	signal(SIGTERM, SIG_IGN);

	/* detach from old i/o */
	switch (fork()) {
	case -1:
		perror ("couldn't fork");
		exit (-1);
	case 0:
		for (i = 0; i < NOFILE; i++)
			close (i);
		i = creat (logfile, 0666);
		dup2(i, 2);
		dbgfd = 2;
		close(i);
		break;
	default:
		_exit (0);
	}
}