xref: /netbsd-src/usr.sbin/mopd/common/log.c (revision 42adbd22c5da7aae434ed6560447a460aba3e2b5)
1 /*	$NetBSD: log.c,v 1.5 2024/12/03 05:57:02 kalvisd Exp $	*/
2 
3 /*-
4  * Copyright (c) 2003 The NetBSD Foundation, Inc.
5  * All rights reserved.
6  *
7  * This code is derived from software contributed to The NetBSD Foundation
8  * by Christos Zoulas.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  * 1. Redistributions of source code must retain the above copyright
14  *    notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  *    notice, this list of conditions and the following disclaimer in the
17  *    documentation and/or other materials provided with the distribution.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 #if defined (HAVE_NBTOOL_CONFIG_H)
33 # include "nbtool_config.h"
34 #else
35 # include "port.h"
36 #endif /* defined (HAVE_NBTOOL_CONFIG_H) */
37 #ifndef lint
38 __RCSID("$NetBSD: log.c,v 1.5 2024/12/03 05:57:02 kalvisd Exp $");
39 #endif
40 
41 #include <err.h>
42 #include <stdarg.h>
43 #include "os.h"
44 #include "mopdef.h"
45 #include "log.h"
46 
47 int mopInteractive = 0;
48 
49 void
50 mopLogErr(const char *fmt, ...)
51 {
52 	va_list ap;
53 	char buf[1024];
54 	int error;
55 
56 	va_start(ap, fmt);
57 	if (mopInteractive)
58 		verr(1, fmt, ap);
59 	else {
60 		error = errno;
61 		vsnprintf(buf, sizeof(buf), fmt, ap);
62 		syslog(LOG_ERR, "%s: %s", buf, strerror(error));
63 	}
64 	va_end(ap);
65 	exit(1);
66 }
67 
68 void
69 mopLogWarn(const char *fmt, ...)
70 {
71 	va_list ap;
72 	char buf[1024];
73 	int error;
74 
75 	va_start(ap, fmt);
76 	if (mopInteractive)
77 		vwarn(fmt, ap);
78 	else {
79 		error = errno;
80 		vsnprintf(buf, sizeof(buf), fmt, ap);
81 		syslog(LOG_WARNING, "%s: %s", buf, strerror(error));
82 	}
83 	va_end(ap);
84 }
85 
86 void
87 mopLogErrX(const char *fmt, ...)
88 {
89 	va_list ap;
90 
91 	va_start(ap, fmt);
92 	if (mopInteractive)
93 		verrx(1, fmt, ap);
94 	else
95 		vsyslog(LOG_ERR, fmt, ap);
96 	va_end(ap);
97 	exit(1);
98 }
99 
100 void
101 mopLogWarnX(const char *fmt, ...)
102 {
103 	va_list ap;
104 
105 	va_start(ap, fmt);
106 	if (mopInteractive)
107 		vwarnx(fmt, ap);
108 	else
109 		vsyslog(LOG_WARNING, fmt, ap);
110 	va_end(ap);
111 }
112