X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fdebug.c;h=0fceba489d64e90c79178b041830d7e9b1c07f2f;hb=3ae58f457bcdfa90b26dad4c9d192f045874ddae;hp=61ea33bf411b23d0a11610a2402aa95e4c3d93ff;hpb=d2a628a48768f67e6f9f3da038ce7b975615195a;p=chaz%2Fopenbox diff --git a/openbox/debug.c b/openbox/debug.c index 61ea33bf..0fceba48 100644 --- a/openbox/debug.c +++ b/openbox/debug.c @@ -1,3 +1,23 @@ +/* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*- + + debug.c for the Openbox window manager + Copyright (c) 2003-2007 Dana Jansens + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + See the COPYING file for a copy of the GNU General Public License. +*/ + +#include "debug.h" + #include #include #include @@ -10,12 +30,49 @@ void ob_debug_show_output(gboolean enable) show = enable; } -void ob_debug(char *a, ...) +void ob_debug(const gchar *a, ...) { va_list vl; if (show) { + fprintf(stderr, "DEBUG: "); + va_start(vl, a); + vfprintf(stderr, a, vl); + va_end(vl); + } +} + +static gboolean enabled_types[OB_DEBUG_TYPE_NUM] = {FALSE}; + +void ob_debug_enable(ObDebugType type, gboolean enable) +{ + g_assert(type < OB_DEBUG_TYPE_NUM); + enabled_types[type] = enable; +} + +void ob_debug_type(ObDebugType type, const gchar *a, ...) +{ + va_list vl; + + g_assert(type < OB_DEBUG_TYPE_NUM); + + if (show && enabled_types[type]) { + switch (type) { + case OB_DEBUG_FOCUS: + fprintf(stderr, "FOCUS: "); + break; + case OB_DEBUG_APP_BUGS: + fprintf(stderr, "APPLICATION BUG: "); + break; + case OB_DEBUG_SM: + fprintf(stderr, "SESSION: "); + break; + default: + g_assert_not_reached(); + } + va_start(vl, a); vfprintf(stderr, a, vl); + va_end(vl); } }