2BSD/src/tod.c

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

/* Copyright (c) 1979 Regents of the University of California */
/*
 * Print out a meaningful phrase depending on the time of
 * day.
 *
 * Author: Robert Toxen (UCB) 7/10/78
 */

/*
 * The following structure parameterizes the
 * whole she-bang.
 */

struct daytime {
	int	d_start;		/* starting hour */
	char	*d_mesg;		/* applicable message */
} daytime[] {
	0,	"It's late",
	4,	"You really should be home in bed",
	7,	"Good morning",
	12,	"Good afternoon",
	18,	"Good evening",
	22,	"Good night",
	50,	"panic: time of day bug",
	-1,	0
};

/*
 * The special case structure:  if the hour is exactly
 * one of these, print the corresponding message.
 */

struct special {
	int	s_time;			/* Applicable hour */
	char	*s_mesg;		/* Corresponding mesg */
} special[] {
	12,	"Had lunch yet?",
	17,	"You should be eating dinner",
	0,	"It's past midnight",
	-1,	0
};

main(argc, argv)
	char **argv;
{
	register struct daytime *dp;
	register struct special *sp;
	register int hour;
	int tv[2], *t;

	if (argc > 1)
		hour = atoi(argv[1]);
	else {
		time(tv);
		t = localtime(tv);
		hour = t[2];
	}
	for (sp = &special[0]; sp->s_time != -1; sp++)
		if (sp->s_time == hour) {
			printf("%s\n", sp->s_mesg);
			exit(1);
		}
	for (dp = &daytime[0]; dp->d_start != -1; dp++)
		if (hour < (dp+1)->d_start) {
			printf("%s\n", dp->d_mesg);
			exit(0);
		}

	/*
	 * Why didn't this thing print anything !?!
	 */

	printf("No message for time!?!\n");
	abort();
}