1 /*
2 * Copyright (c) 1986, 1987, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * %sccs.include.redist.c%
6 */
7
8 #ifndef lint
9 static char sccsid[] = "@(#)error.c 8.1 (Berkeley) 06/04/93";
10 #endif /* not lint */
11
12 #include <sys/param.h>
13
14 #include <dirent.h>
15 #include <stdio.h>
16 #include <stdlib.h>
17 #include <string.h>
18 #include <syslog.h>
19
20 #include "bug.h"
21 #include "extern.h"
22
23 static short err_redir; /* stderr redirected */
24
25 /*
26 * seterr --
27 * redirect stderr for error processing
28 */
29 void
seterr()30 seterr()
31 {
32 if (!freopen(ERROR_FILE, "a", stderr))
33 error("can't open error file %s.", ERROR_FILE);
34 err_redir = YES;
35 }
36
37 /*
38 * error --
39 * write errors to log file and die
40 */
41 void
error(fmt,arg)42 error(fmt, arg)
43 register char *fmt,
44 *arg;
45 {
46 static char logmsg[MAXLINELEN]; /* syslog message */
47
48 if (err_redir) {
49 /* don't combine these, "fmt" may not require "arg" */
50 fprintf(stderr, "\t%s\n\t", tmpname);
51 fprintf(stderr, fmt, arg);
52 fputc('\n', stderr);
53 }
54 else {
55 sprintf(logmsg, "bugfiler: %s", fmt);
56 syslog(LOG_ERR, logmsg, arg);
57 }
58 #ifdef METOO
59 exit(ERR);
60 #else
61 exit(OK);
62 #endif
63 }
64