1 /* 2 * Copyright (c) 1986 Regents of the University of California. 3 * All rights reserved. The Berkeley software License Agreement 4 * specifies the terms and conditions for redistribution. 5 */ 6 7 #ifndef lint 8 static char sccsid[] = "@(#)error.c 5.1 (Berkeley) 86/11/25"; 9 #endif not lint 10 11 #include <syslog.h> 12 #include <stdio.h> 13 #include <bug.h> 14 15 extern char *distf, /* redist temp file */ 16 tmpname[]; /* temporary file used */ 17 18 short made_dist; /* if dist file made */ 19 20 static short err_redir; /* stderr redirected */ 21 22 /* 23 * seterr -- 24 * redirect stderr for error processing 25 */ 26 seterr() 27 { 28 if (!freopen(ERROR_FILE,"a",stderr)) 29 error("unable to open error file %s.\n",ERROR_FILE); 30 err_redir = YES; 31 } 32 33 /* 34 * error -- 35 * write errors to log file and die 36 */ 37 error(fmt,arg) 38 register char *fmt, 39 *arg; 40 { 41 static char logmsg[MAXLINELEN]; /* syslog message */ 42 char *strcpy(), *strcat(); 43 44 if (err_redir) { 45 /* don't combine these, "fmt" may not require "arg" */ 46 fputc('\t',stderr); 47 fprintf(stderr,fmt,arg); 48 fprintf(stderr,"\n\ttemporary file is %s.\n",tmpname); 49 } 50 else { 51 strcat(strcpy(logmsg,"bugfiler: "),fmt); 52 syslog(LOG_ERR,logmsg,arg); 53 } 54 if (made_dist) /* unlink redist file if necessary */ 55 unlink(distf); 56 #ifdef METOO 57 exit(ERR); 58 #else !METOO 59 exit(OK); 60 #endif METOO 61 } 62