2.9BSD/usr/src/cmd/remind/main.c

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

#include "remind.h"

main(argc, argv)
int argc;
char **argv;
{       register int i;
	register char *p;
	int errflg;
	struct passwd *pw;

	signal  (SIGHUP,SIG_IGN);          /* Ignore Hangups */

	m.nrcvrs = m.msgbytes = m.bits = m.dirsize = errflg = 0;

	for (i = 1; i++ < argc;)
	{	p = *++argv;
		if (*p>='a' && *p<='z')
			puserid(p);	/* Alphabetic -- Receiver id */
		else if (*p == '-')
			pflags(&p[1]);	/* -flags */
		else if (getdt(p))	    /* Anything else - date or time */
			{       fprintf (stderr,invalid, p);
				errflg = -1;
			}
		/*
		while( *p ) *p++ = 0;
		**/
	}

	Uid = getuid();
	if((pw=getpwuid(Uid))==NULL)
		strxfer("??",m.sender,3);
	else
	{
		strcpy(m.sender,pw->pw_name);
		if(!pw->pw_shell[0])
		    strcpy(shell,"/bin/sh");
		else
		    strcpy(shell,pw->pw_shell);
	}
#ifdef DEBUG
{
    fprintf(stderr,"Original Uid = %d\n",Uid);
    fprintf(stderr,"Sender = %s\n",m.sender);
}
#endif DEBUG
	if (m.nrcvrs == 0)
		puserid(m.sender);
	if (checkusers() || errflg) exit(1);

	if (m.msgbytes == 0 && argc != 1) getmsg();

	m.nobytes = m.msgbytes + 8*m.nrcvrs + m.dirsize;

#ifndef DEBUG
	while ((i = fork()) == -1) sleep(5);
	if (i) exit(0);  /* The rest will be done in background mode */
#endif DEBUG

	/*
	setpgrp();
	*/
	if (dtime() && argc!=1)
		deliver();
	else
		enqueue();

}