summaryrefslogtreecommitdiffstats
path: root/dbus/dbus-internals.c
diff options
context:
space:
mode:
Diffstat (limited to 'dbus/dbus-internals.c')
-rw-r--r--dbus/dbus-internals.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/dbus/dbus-internals.c b/dbus/dbus-internals.c
index 707b4005..ecddfb6f 100644
--- a/dbus/dbus-internals.c
+++ b/dbus/dbus-internals.c
@@ -190,6 +190,9 @@
*/
const char _dbus_no_memory_message[] = "Not enough memory";
+static dbus_bool_t warn_initted = FALSE;
+static dbus_bool_t fatal_warnings = FALSE;
+
/**
* Prints a warning message to stderr.
*
@@ -199,12 +202,27 @@ void
_dbus_warn (const char *format,
...)
{
- /* FIXME not portable enough? */
va_list args;
+ if (!warn_initted)
+ {
+ const char *s;
+ s = _dbus_getenv ("DBUS_FATAL_WARNINGS");
+ if (s && *s)
+ fatal_warnings = TRUE;
+
+ warn_initted = TRUE;
+ }
+
va_start (args, format);
vfprintf (stderr, format, args);
va_end (args);
+
+ if (fatal_warnings)
+ {
+ fflush (stderr);
+ _dbus_abort ();
+ }
}
#ifdef DBUS_ENABLE_VERBOSE_MODE