aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorokan2018-02-02 13:40:55 +0000
committerokan2018-02-02 13:40:55 +0000
commit3a58e9dea32937308577c6f8bd8b2b6ea3bd5092 (patch)
tree3262b78eca1a30bfcb74b03c63c804ebd66f137d
parentf4c2ff2f29a17a5916e9bf642240abb5f4fc190a (diff)
downloadcwm-3a58e9dea32937308577c6f8bd8b2b6ea3bd5092.tar.gz
Add a simple debug logging mechanism.
-rw-r--r--calmwm.h12
-rw-r--r--util.c32
2 files changed, 42 insertions, 2 deletions
diff --git a/calmwm.h b/calmwm.h
index c9fd91d..ccb0736 100644
--- a/calmwm.h
+++ b/calmwm.h
@@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $OpenBSD: calmwm.h,v 1.354 2018/02/02 13:27:25 okan Exp $
+ * $OpenBSD: calmwm.h,v 1.355 2018/02/02 13:40:55 okan Exp $
*/
#ifndef _CALMWM_H_
@@ -31,6 +31,13 @@
#include <X11/extensions/Xrandr.h>
#include <X11/keysym.h>
+/* #define DEBUG */
+#ifdef DEBUG
+#define DPRINTF(...) log_debug(__func__, __VA_ARGS__)
+#else
+#define DPRINTF(...) do {} while (0)
+#endif /* DEBUG */
+
#undef MIN
#undef MAX
#define MIN(x, y) ((x) < (y) ? (x) : (y))
@@ -584,6 +591,9 @@ void xu_ewmh_restore_net_wm_state(struct client_ctx *);
char *u_argv(char * const *);
void u_exec(char *);
void u_spawn(char *);
+void log_debug(const char *, const char *, ...)
+ __attribute__((__format__ (printf, 2, 3)))
+ __attribute__((__nonnull__ (2)));
void *xcalloc(size_t, size_t);
void *xmalloc(size_t);
diff --git a/util.c b/util.c
index 8d44c26..6898a26 100644
--- a/util.c
+++ b/util.c
@@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $OpenBSD: util.c,v 1.20 2018/01/08 16:21:54 okan Exp $
+ * $OpenBSD: util.c,v 1.21 2018/02/02 13:40:55 okan Exp $
*/
#include <sys/types.h>
@@ -31,6 +31,8 @@
#include "calmwm.h"
+static void log_msg(const char *, va_list);
+
void
u_spawn(char *argstr)
{
@@ -104,3 +106,31 @@ u_argv(char * const *argv)
}
return(p);
}
+
+static void
+log_msg(const char *msg, va_list ap)
+{
+ char *fmt;
+
+ if (asprintf(&fmt, "%s\n", msg) == -1) {
+ vfprintf(stderr, msg, ap);
+ fprintf(stderr, "\n");
+ } else {
+ vfprintf(stderr, fmt, ap);
+ free(fmt);
+ }
+ fflush(stderr);
+}
+
+void
+log_debug(const char *func, const char *msg, ...)
+{
+ char *fmt;
+ va_list ap;
+
+ va_start(ap, msg);
+ if (asprintf(&fmt, "%s: %s", func, msg) == -1)
+ exit(1);
+ log_msg(fmt, ap);
+ va_end(ap);
+}