xref: /minix3/minix/commands/cron/misc.c (revision d0055759dd8892194db7fce6acc5085d5c9aeaee)
1433d6423SLionel Sambuc /*	misc.c - Miscellaneous stuff for cron		Author: Kees J. Bot
2433d6423SLionel Sambuc  *								12 Jan 1997
3433d6423SLionel Sambuc  */
4433d6423SLionel Sambuc #define nil ((void*)0)
5433d6423SLionel Sambuc #include <sys/types.h>
6433d6423SLionel Sambuc #include <stdio.h>
7433d6423SLionel Sambuc #include <stdarg.h>
8433d6423SLionel Sambuc #include <stdlib.h>
9433d6423SLionel Sambuc #include <time.h>
10433d6423SLionel Sambuc #include "misc.h"
11433d6423SLionel Sambuc 
12433d6423SLionel Sambuc char *prog_name;		/* Name of this program. */
13433d6423SLionel Sambuc time_t now;			/* Cron's idea of the current time. */
14433d6423SLionel Sambuc time_t next;			/* Time to run the next job. */
15433d6423SLionel Sambuc 
16433d6423SLionel Sambuc size_t alloc_count;		/* # Of chunks of memory allocated. */
17433d6423SLionel Sambuc 
allocate(size_t len)18433d6423SLionel Sambuc void *allocate(size_t len)
19433d6423SLionel Sambuc /* Checked malloc().  Better not feed it length 0. */
20433d6423SLionel Sambuc {
21433d6423SLionel Sambuc 	void *mem;
22433d6423SLionel Sambuc 
23433d6423SLionel Sambuc 	if ((mem= malloc(len)) == nil) {
24*d0055759SDavid van Moolenbroek 		cronlog(LOG_ALERT, "Out of memory, exiting\n");
25433d6423SLionel Sambuc 		exit(1);
26433d6423SLionel Sambuc 	}
27433d6423SLionel Sambuc 	alloc_count++;
28433d6423SLionel Sambuc 	return mem;
29433d6423SLionel Sambuc }
30433d6423SLionel Sambuc 
deallocate(void * mem)31433d6423SLionel Sambuc void deallocate(void *mem)
32433d6423SLionel Sambuc {
33433d6423SLionel Sambuc 	if (mem != nil) {
34433d6423SLionel Sambuc 		free(mem);
35433d6423SLionel Sambuc 		alloc_count--;
36433d6423SLionel Sambuc 	}
37433d6423SLionel Sambuc }
38433d6423SLionel Sambuc 
39433d6423SLionel Sambuc static enum logto logto= SYSLOG;
40433d6423SLionel Sambuc 
selectlog(enum logto where)41433d6423SLionel Sambuc void selectlog(enum logto where)
42433d6423SLionel Sambuc /* Select where logging output should go, syslog or stdout. */
43433d6423SLionel Sambuc {
44433d6423SLionel Sambuc 	logto= where;
45433d6423SLionel Sambuc }
46433d6423SLionel Sambuc 
cronlog(int level,const char * fmt,...)47*d0055759SDavid van Moolenbroek void cronlog(int level, const char *fmt, ...)
48433d6423SLionel Sambuc /* Like syslog(), but may go to stderr. */
49433d6423SLionel Sambuc {
50433d6423SLionel Sambuc 	va_list ap;
51433d6423SLionel Sambuc 
52433d6423SLionel Sambuc 	va_start(ap, fmt);
53433d6423SLionel Sambuc 
54433d6423SLionel Sambuc #if __minix_vmd || !__minix
55433d6423SLionel Sambuc 	if (logto == SYSLOG) {
56433d6423SLionel Sambuc 		vsyslog(level, fmt, ap);
57433d6423SLionel Sambuc 	} else
58433d6423SLionel Sambuc #endif
59433d6423SLionel Sambuc 	{
60433d6423SLionel Sambuc 		fprintf(stderr, "%s: ", prog_name);
61433d6423SLionel Sambuc 		vfprintf(stderr, fmt, ap);
62433d6423SLionel Sambuc 	}
63433d6423SLionel Sambuc 	va_end(ap);
64433d6423SLionel Sambuc }
65433d6423SLionel Sambuc 
66433d6423SLionel Sambuc /*
67433d6423SLionel Sambuc  * $PchId: misc.c,v 1.3 2000/07/17 19:01:57 philip Exp $
68433d6423SLionel Sambuc  */
69