Commit Diff


commit - fcc51b287a1b5969b9b0d5987ea7ff001bc8bf57
commit + 7a9e735b5a74ad7ea5765c877c77589159874b7d
blob - a6d1b73d3885dd6d04013a9bd11b8b18a750a0c3 (mode 644)
blob + /dev/null
--- gotd/log.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include "got_compat.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <syslog.h>
-#include <errno.h>
-#include <time.h>
-
-#include "log.h"
-
-static int	 debug;
-static int	 verbose;
-const char	*log_procname;
-
-void
-log_init(int n_debug, int facility)
-{
-	debug = n_debug;
-	verbose = n_debug;
-	log_procinit(getprogname());
-
-	if (!debug)
-		openlog(getprogname(), LOG_PID | LOG_NDELAY, facility);
-
-	tzset();
-}
-
-void
-log_procinit(const char *procname)
-{
-	if (procname != NULL)
-		log_procname = procname;
-}
-
-void
-log_setverbose(int v)
-{
-	verbose = v;
-}
-
-int
-log_getverbose(void)
-{
-	return (verbose);
-}
-
-void
-logit(int pri, const char *fmt, ...)
-{
-	va_list ap;
-
-	va_start(ap, fmt);
-	vlog(pri, fmt, ap);
-	va_end(ap);
-}
-
-void
-vlog(int pri, const char *fmt, va_list ap)
-{
-	char *nfmt;
-	int saved_errno = errno;
-
-	if (debug) {
-		/* best effort in out of mem situations */
-		if (asprintf(&nfmt, "%s: %s\n", log_procname, fmt) == -1) {
-			vfprintf(stderr, fmt, ap);
-			fprintf(stderr, "\n");
-		} else {
-			vfprintf(stderr, nfmt, ap);
-			free(nfmt);
-		}
-		fflush(stderr);
-	} else
-		vsyslog(pri, fmt, ap);
-
-	errno = saved_errno;
-}
-
-void
-log_warn(const char *emsg, ...)
-{
-	char *nfmt;
-	va_list ap;
-	int saved_errno = errno;
-
-	/* best effort to even work in out of memory situations */
-	if (emsg == NULL)
-		logit(LOG_CRIT, "%s", strerror(saved_errno));
-	else {
-		va_start(ap, emsg);
-
-		if (asprintf(&nfmt, "%s: %s", emsg,
-		    strerror(saved_errno)) == -1) {
-			/* we tried it... */
-			vlog(LOG_CRIT, emsg, ap);
-			logit(LOG_CRIT, "%s", strerror(saved_errno));
-		} else {
-			vlog(LOG_CRIT, nfmt, ap);
-			free(nfmt);
-		}
-		va_end(ap);
-	}
-
-	errno = saved_errno;
-}
-
-void
-log_warnx(const char *emsg, ...)
-{
-	va_list ap;
-
-	va_start(ap, emsg);
-	vlog(LOG_CRIT, emsg, ap);
-	va_end(ap);
-}
-
-void
-log_info(const char *emsg, ...)
-{
-	va_list ap;
-
-	va_start(ap, emsg);
-	vlog(LOG_INFO, emsg, ap);
-	va_end(ap);
-}
-
-void
-log_debug(const char *emsg, ...)
-{
-	va_list ap;
-
-	if (verbose) {
-		va_start(ap, emsg);
-		vlog(LOG_DEBUG, emsg, ap);
-		va_end(ap);
-	}
-}
-
-static void
-vfatalc(int code, const char *emsg, va_list ap)
-{
-	static char s[BUFSIZ];
-	const char *sep;
-
-	if (emsg != NULL) {
-		(void)vsnprintf(s, sizeof(s), emsg, ap);
-		sep = ": ";
-	} else {
-		s[0] = '\0';
-		sep = "";
-	}
-	if (code)
-		logit(LOG_CRIT, "%s%s%s", s, sep, strerror(code));
-	else
-		logit(LOG_CRIT, "%s", s);
-}
-
-void
-fatal(const char *emsg, ...)
-{
-	va_list ap;
-
-	va_start(ap, emsg);
-	vfatalc(errno, emsg, ap);
-	va_end(ap);
-	exit(1);
-}
-
-void
-fatalx(const char *emsg, ...)
-{
-	va_list ap;
-
-	va_start(ap, emsg);
-	vfatalc(0, emsg, ap);
-	va_end(ap);
-	exit(1);
-}
blob - 12e74e15e2a0ca034a3518c8172f54a3721a844f (mode 644)
blob + /dev/null
--- gotd/log.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2022 Stefan Sperling <stsp@openbsd.org>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include "got_compat.h"
-
-void	log_init(int, int);
-void	log_procinit(const char *);
-void	log_setverbose(int);
-int	log_getverbose(void);
-void	log_warn(const char *, ...)
-	    __attribute__((__format__ (printf, 1, 2)));
-void	log_warnx(const char *, ...)
-	    __attribute__((__format__ (printf, 1, 2)));
-void	log_info(const char *, ...)
-	    __attribute__((__format__ (printf, 1, 2)));
-void	log_debug(const char *, ...)
-	    __attribute__((__format__ (printf, 1, 2)));
-void	logit(int, const char *, ...)
-	    __attribute__((__format__ (printf, 2, 3)));
-void	vlog(int, const char *, va_list)
-	    __attribute__((__format__ (printf, 2, 0)));
-__dead void fatal(const char *, ...)
-	    __attribute__((__format__ (printf, 1, 2)));
-__dead void fatalx(const char *, ...)
-	    __attribute__((__format__ (printf, 1, 2)));
blob - 25ea75d7ab2c19be6d982c7cc471af1b23f72ef4
blob + 583f174d77f33c49012c2b1edaa62dda6711d22a
--- gotwebd/config.c
+++ gotwebd/config.c
@@ -40,6 +40,7 @@
 #include "got_reference.h"
 
 #include "gotwebd.h"
+#include "log.h"
 
 int
 config_init(struct gotwebd *env)
blob - 1c77a0a03233522ae1e8b7a23dcb1a64ded98fae
blob + 68018d2b45f2f8cac750ce175aec556d0d612083
--- gotwebd/fcgi.c
+++ gotwebd/fcgi.c
@@ -38,6 +38,7 @@
 #include "got_reference.h"
 
 #include "gotwebd.h"
+#include "log.h"
 #include "tmpl.h"
 
 size_t	 fcgi_parse_record(uint8_t *, size_t, struct request *);
blob - 1193e36c4c47eb24278e0fbb83ac08648a508bc6
blob + 5a88777208fa24b8f1b512d077757e7c57d8fe04
--- gotwebd/got_operations.c
+++ gotwebd/got_operations.c
@@ -40,6 +40,7 @@
 #include "got_privsep.h"
 
 #include "gotwebd.h"
+#include "log.h"
 
 static const struct got_error *got_init_repo_commit(struct repo_commit **);
 static const struct got_error *got_init_repo_tag(struct repo_tag **);
blob - 97a2e9974c1d7e7456cdf2bb68005d357ff9045d
blob + fc312d210561de463f25df3bbab28ae5c81464b7
--- gotwebd/gotweb.c
+++ gotwebd/gotweb.c
@@ -49,6 +49,7 @@
 #include "got_privsep.h"
 
 #include "gotwebd.h"
+#include "log.h"
 #include "tmpl.h"
 
 static const struct querystring_keys querystring_keys[] = {
blob - 65b1c7d988b4b7be2c7145371365b4a7c7c744e9
blob + f86abeed2b6015b64df0d587d269dd831c7c1521
--- gotwebd/gotwebd.c
+++ gotwebd/gotwebd.c
@@ -43,6 +43,7 @@
 #include "got_reference.h"
 
 #include "gotwebd.h"
+#include "log.h"
 
 __dead void usage(void);
 
blob - 9413f1ab4e81bf24df462f3892f09400e6b1942d
blob + 55aa40d54946310b204bf2c3690e25f707cf817a
--- gotwebd/gotwebd.h
+++ gotwebd/gotwebd.h
@@ -24,14 +24,6 @@
 #include <limits.h>
 #include <stdio.h>
 
-#include "tmpl.h"
-
-#ifdef DEBUG
-#define dprintf(x...)   do { log_debug(x); } while(0)
-#else
-#define dprintf(x...)
-#endif /* DEBUG */
-
 #ifndef nitems
 #define nitems(_a)	(sizeof((_a)) / sizeof((_a)[0]))
 #endif
@@ -523,25 +515,3 @@ int config_setfd(struct gotwebd *, struct socket *);
 int config_getfd(struct gotwebd *, struct imsg *);
 int config_getcfg(struct gotwebd *, struct imsg *);
 int config_init(struct gotwebd *);
-
-/* log.c */
-void	log_init(int, int);
-void	log_procinit(const char *);
-void	log_setverbose(int);
-int	log_getverbose(void);
-void	log_warn(const char *, ...)
-	    __attribute__((__format__ (printf, 1, 2)));
-void	log_warnx(const char *, ...)
-	    __attribute__((__format__ (printf, 1, 2)));
-void	log_info(const char *, ...)
-	    __attribute__((__format__ (printf, 1, 2)));
-void	log_debug(const char *, ...)
-	    __attribute__((__format__ (printf, 1, 2)));
-void	logit(int, const char *, ...)
-	    __attribute__((__format__ (printf, 2, 3)));
-void	vlog(int, const char *, va_list)
-	    __attribute__((__format__ (printf, 2, 0)));
-__dead void fatal(const char *, ...)
-	    __attribute__((__format__ (printf, 1, 2)));
-__dead void fatalx(const char *, ...)
-	    __attribute__((__format__ (printf, 1, 2)));
blob - c807c4f7cbdcaa9a1474c2292bc855024fe49bae (mode 644)
blob + /dev/null
--- gotwebd/log.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include "got_compat.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <syslog.h>
-#include <errno.h>
-#include <time.h>
-
-static int	 debug;
-static int	 verbose;
-const char	*log_procname;
-
-void	log_init(int, int);
-void	log_procinit(const char *);
-void	log_setverbose(int);
-int	log_getverbose(void);
-void	log_warn(const char *, ...)
-	    __attribute__((__format__ (printf, 1, 2)));
-void	log_warnx(const char *, ...)
-	    __attribute__((__format__ (printf, 1, 2)));
-void	log_info(const char *, ...)
-	    __attribute__((__format__ (printf, 1, 2)));
-void	log_debug(const char *, ...)
-	    __attribute__((__format__ (printf, 1, 2)));
-void	logit(int, const char *, ...)
-	    __attribute__((__format__ (printf, 2, 3)));
-void	vlog(int, const char *, va_list)
-	    __attribute__((__format__ (printf, 2, 0)));
-__dead void fatal(const char *, ...)
-	    __attribute__((__format__ (printf, 1, 2)));
-__dead void fatalx(const char *, ...)
-	    __attribute__((__format__ (printf, 1, 2)));
-
-void
-log_init(int n_debug, int facility)
-{
-	debug = n_debug;
-	verbose = n_debug;
-	log_procinit(getprogname());
-
-	if (!debug)
-		openlog(getprogname(), LOG_PID | LOG_NDELAY, facility);
-
-	tzset();
-}
-
-void
-log_procinit(const char *procname)
-{
-	if (procname != NULL)
-		log_procname = procname;
-}
-
-void
-log_setverbose(int v)
-{
-	verbose = v;
-}
-
-int
-log_getverbose(void)
-{
-	return (verbose);
-}
-
-void
-logit(int pri, const char *fmt, ...)
-{
-	va_list ap;
-
-	va_start(ap, fmt);
-	vlog(pri, fmt, ap);
-	va_end(ap);
-}
-
-void
-vlog(int pri, const char *fmt, va_list ap)
-{
-	char *nfmt;
-	int saved_errno = errno;
-
-	if (debug) {
-		/* best effort in out of mem situations */
-		if (asprintf(&nfmt, "%s\n", fmt) == -1) {
-			vfprintf(stderr, fmt, ap);
-			fprintf(stderr, "\n");
-		} else {
-			vfprintf(stderr, nfmt, ap);
-			free(nfmt);
-		}
-		fflush(stderr);
-	} else
-		vsyslog(pri, fmt, ap);
-
-	errno = saved_errno;
-}
-
-void
-log_warn(const char *emsg, ...)
-{
-	char *nfmt;
-	va_list ap;
-	int saved_errno = errno;
-
-	/* best effort to even work in out of memory situations */
-	if (emsg == NULL)
-		logit(LOG_CRIT, "%s", strerror(saved_errno));
-	else {
-		va_start(ap, emsg);
-
-		if (asprintf(&nfmt, "%s: %s", emsg,
-		    strerror(saved_errno)) == -1) {
-			/* we tried it... */
-			vlog(LOG_CRIT, emsg, ap);
-			logit(LOG_CRIT, "%s", strerror(saved_errno));
-		} else {
-			vlog(LOG_CRIT, nfmt, ap);
-			free(nfmt);
-		}
-		va_end(ap);
-	}
-
-	errno = saved_errno;
-}
-
-void
-log_warnx(const char *emsg, ...)
-{
-	va_list ap;
-
-	va_start(ap, emsg);
-	vlog(LOG_CRIT, emsg, ap);
-	va_end(ap);
-}
-
-void
-log_info(const char *emsg, ...)
-{
-	va_list ap;
-
-	va_start(ap, emsg);
-	vlog(LOG_INFO, emsg, ap);
-	va_end(ap);
-}
-
-void
-log_debug(const char *emsg, ...)
-{
-	va_list ap;
-
-	if (verbose) {
-		va_start(ap, emsg);
-		vlog(LOG_DEBUG, emsg, ap);
-		va_end(ap);
-	}
-}
-
-static void
-vfatalc(int code, const char *emsg, va_list ap)
-{
-	static char s[BUFSIZ];
-	const char *sep;
-
-	if (emsg != NULL) {
-		(void)vsnprintf(s, sizeof(s), emsg, ap);
-		sep = ": ";
-	} else {
-		s[0] = '\0';
-		sep = "";
-	}
-	if (code)
-		logit(LOG_CRIT, "%s: %s%s%s",
-		    log_procname, s, sep, strerror(code));
-	else
-		logit(LOG_CRIT, "%s%s%s", log_procname, sep, s);
-}
-
-void
-fatal(const char *emsg, ...)
-{
-	va_list ap;
-
-	va_start(ap, emsg);
-	vfatalc(errno, emsg, ap);
-	va_end(ap);
-	exit(1);
-}
-
-void
-fatalx(const char *emsg, ...)
-{
-	va_list ap;
-
-	va_start(ap, emsg);
-	vfatalc(0, emsg, ap);
-	va_end(ap);
-	exit(1);
-}
blob - 45a6e0c73c10d059b3599a6d9b323bc91124ea99
blob + df7d9bbde93143299844fd34ee8240f2d6c4e653
--- gotwebd/pages.tmpl
+++ gotwebd/pages.tmpl
@@ -35,6 +35,7 @@
 #include "got_reference.h"
 
 #include "gotwebd.h"
+#include "log.h"
 #include "tmpl.h"
 
 enum gotweb_ref_tm {
blob - c9cad22287e14d2e41713cae36dc59881d492819
blob + ecb032f388f7b7cc0fc108ff69a4320c3a76283e
--- gotwebd/parse.y
+++ gotwebd/parse.y
@@ -52,6 +52,7 @@
 #include "got_reference.h"
 
 #include "gotwebd.h"
+#include "log.h"
 
 TAILQ_HEAD(files, file)		 files = TAILQ_HEAD_INITIALIZER(files);
 static struct file {
blob - 86ecfa5f85dfca0b2c75426a47d930b7e9f29e50
blob + f3ff0b9b8b514d0784d0ad6604a35e38b1b73533
--- gotwebd/sockets.c
+++ gotwebd/sockets.c
@@ -56,6 +56,7 @@
 #include "got_privsep.h"
 
 #include "gotwebd.h"
+#include "log.h"
 #include "tmpl.h"
 
 #define SOCKS_BACKLOG 5
blob - /dev/null
blob + a6d1b73d3885dd6d04013a9bd11b8b18a750a0c3 (mode 644)
--- /dev/null
+++ lib/log.c
@@ -0,0 +1,196 @@
+/*
+ * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include "got_compat.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <syslog.h>
+#include <errno.h>
+#include <time.h>
+
+#include "log.h"
+
+static int	 debug;
+static int	 verbose;
+const char	*log_procname;
+
+void
+log_init(int n_debug, int facility)
+{
+	debug = n_debug;
+	verbose = n_debug;
+	log_procinit(getprogname());
+
+	if (!debug)
+		openlog(getprogname(), LOG_PID | LOG_NDELAY, facility);
+
+	tzset();
+}
+
+void
+log_procinit(const char *procname)
+{
+	if (procname != NULL)
+		log_procname = procname;
+}
+
+void
+log_setverbose(int v)
+{
+	verbose = v;
+}
+
+int
+log_getverbose(void)
+{
+	return (verbose);
+}
+
+void
+logit(int pri, const char *fmt, ...)
+{
+	va_list ap;
+
+	va_start(ap, fmt);
+	vlog(pri, fmt, ap);
+	va_end(ap);
+}
+
+void
+vlog(int pri, const char *fmt, va_list ap)
+{
+	char *nfmt;
+	int saved_errno = errno;
+
+	if (debug) {
+		/* best effort in out of mem situations */
+		if (asprintf(&nfmt, "%s: %s\n", log_procname, fmt) == -1) {
+			vfprintf(stderr, fmt, ap);
+			fprintf(stderr, "\n");
+		} else {
+			vfprintf(stderr, nfmt, ap);
+			free(nfmt);
+		}
+		fflush(stderr);
+	} else
+		vsyslog(pri, fmt, ap);
+
+	errno = saved_errno;
+}
+
+void
+log_warn(const char *emsg, ...)
+{
+	char *nfmt;
+	va_list ap;
+	int saved_errno = errno;
+
+	/* best effort to even work in out of memory situations */
+	if (emsg == NULL)
+		logit(LOG_CRIT, "%s", strerror(saved_errno));
+	else {
+		va_start(ap, emsg);
+
+		if (asprintf(&nfmt, "%s: %s", emsg,
+		    strerror(saved_errno)) == -1) {
+			/* we tried it... */
+			vlog(LOG_CRIT, emsg, ap);
+			logit(LOG_CRIT, "%s", strerror(saved_errno));
+		} else {
+			vlog(LOG_CRIT, nfmt, ap);
+			free(nfmt);
+		}
+		va_end(ap);
+	}
+
+	errno = saved_errno;
+}
+
+void
+log_warnx(const char *emsg, ...)
+{
+	va_list ap;
+
+	va_start(ap, emsg);
+	vlog(LOG_CRIT, emsg, ap);
+	va_end(ap);
+}
+
+void
+log_info(const char *emsg, ...)
+{
+	va_list ap;
+
+	va_start(ap, emsg);
+	vlog(LOG_INFO, emsg, ap);
+	va_end(ap);
+}
+
+void
+log_debug(const char *emsg, ...)
+{
+	va_list ap;
+
+	if (verbose) {
+		va_start(ap, emsg);
+		vlog(LOG_DEBUG, emsg, ap);
+		va_end(ap);
+	}
+}
+
+static void
+vfatalc(int code, const char *emsg, va_list ap)
+{
+	static char s[BUFSIZ];
+	const char *sep;
+
+	if (emsg != NULL) {
+		(void)vsnprintf(s, sizeof(s), emsg, ap);
+		sep = ": ";
+	} else {
+		s[0] = '\0';
+		sep = "";
+	}
+	if (code)
+		logit(LOG_CRIT, "%s%s%s", s, sep, strerror(code));
+	else
+		logit(LOG_CRIT, "%s", s);
+}
+
+void
+fatal(const char *emsg, ...)
+{
+	va_list ap;
+
+	va_start(ap, emsg);
+	vfatalc(errno, emsg, ap);
+	va_end(ap);
+	exit(1);
+}
+
+void
+fatalx(const char *emsg, ...)
+{
+	va_list ap;
+
+	va_start(ap, emsg);
+	vfatalc(0, emsg, ap);
+	va_end(ap);
+	exit(1);
+}
blob - /dev/null
blob + 12e74e15e2a0ca034a3518c8172f54a3721a844f (mode 644)
--- /dev/null
+++ lib/log.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2022 Stefan Sperling <stsp@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include "got_compat.h"
+
+void	log_init(int, int);
+void	log_procinit(const char *);
+void	log_setverbose(int);
+int	log_getverbose(void);
+void	log_warn(const char *, ...)
+	    __attribute__((__format__ (printf, 1, 2)));
+void	log_warnx(const char *, ...)
+	    __attribute__((__format__ (printf, 1, 2)));
+void	log_info(const char *, ...)
+	    __attribute__((__format__ (printf, 1, 2)));
+void	log_debug(const char *, ...)
+	    __attribute__((__format__ (printf, 1, 2)));
+void	logit(int, const char *, ...)
+	    __attribute__((__format__ (printf, 2, 3)));
+void	vlog(int, const char *, va_list)
+	    __attribute__((__format__ (printf, 2, 0)));
+__dead void fatal(const char *, ...)
+	    __attribute__((__format__ (printf, 1, 2)));
+__dead void fatalx(const char *, ...)
+	    __attribute__((__format__ (printf, 1, 2)));