mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-26 22:50:08 +01:00
glib requires G_LOG_DOMAIN defined so that log messages are labeled to belong to NetworkManager or libnm. However, we don't actually want to use glib logging. Our library libnm MUST not log anything, because it spams the user's stdout/stderr. Instead, a library must report notable events via its API. Note that there is also LIBNM_CLIENT_DEBUG to explicitly enable debug logging, but that doesn't use glib logging either. Also, the daemon does not use glib logging instead it logs to syslog. When run with `--debug`. Hence, it's not useful for us to define different G_LOG_DOMAIN per library/application, because none of our libraries/applications should use glib logging. It also gets slightly confusing, because we have the static library like `src/libnm-core-impl`, which is both linked into `libnm` (the library) and `NetworkManager` (the daemon). Which logging domain should they use? Set the G_LOG_DOMAIN to "nm" everywhere. But no longer do it via `-D` arguments to the compiler. See-also: https://developer.gnome.org/glib/stable/glib-Message-Logging.html#G-LOG-DOMAIN:CAPS
100 lines
3.1 KiB
C
100 lines
3.1 KiB
C
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
/*
|
|
* Copyright (C) 2015 Red Hat, Inc.
|
|
*/
|
|
|
|
#ifndef __NM_DEFAULT_STD_H__
|
|
#define __NM_DEFAULT_STD_H__
|
|
|
|
#include "nm-networkmanager-compilation.h"
|
|
|
|
#ifdef NETWORKMANAGER_COMPILATION
|
|
#error Dont define NETWORKMANAGER_COMPILATION
|
|
#endif
|
|
|
|
#define G_LOG_DOMAIN "nm"
|
|
|
|
/*****************************************************************************/
|
|
|
|
#define NETWORKMANAGER_COMPILATION 0
|
|
|
|
/*****************************************************************************/
|
|
|
|
/* always include these headers for our internal source files. */
|
|
|
|
#ifndef ___CONFIG_H__
|
|
#define ___CONFIG_H__
|
|
#include <config.h>
|
|
#endif
|
|
|
|
#include "config-extra.h"
|
|
|
|
/* for internal compilation we don't want the deprecation macros
|
|
* to be in effect. Define the widest range of versions to effectively
|
|
* disable deprecation checks */
|
|
#define NM_VERSION_MIN_REQUIRED NM_VERSION_0_9_8
|
|
|
|
#ifndef NM_MORE_ASSERTS
|
|
#define NM_MORE_ASSERTS 0
|
|
#endif
|
|
|
|
#if NM_MORE_ASSERTS == 0
|
|
/* The cast macros like NM_TYPE() are implemented via G_TYPE_CHECK_INSTANCE_CAST()
|
|
* and _G_TYPE_CIC(). The latter, by default performs runtime checks of the type
|
|
* by calling g_type_check_instance_cast().
|
|
* This check has a certain overhead without being helpful.
|
|
*
|
|
* Example 1:
|
|
* static void foo (NMType *obj)
|
|
* {
|
|
* access_obj_without_check (obj);
|
|
* }
|
|
* foo ((NMType *) obj);
|
|
* // There is no runtime check and passing an invalid pointer
|
|
* // leads to a crash.
|
|
*
|
|
* Example 2:
|
|
* static void foo (NMType *obj)
|
|
* {
|
|
* access_obj_without_check (obj);
|
|
* }
|
|
* foo (NM_TYPE (obj));
|
|
* // There is a runtime check which prints a g_warning(), but that doesn't
|
|
* // avoid the crash as NM_TYPE() cannot do anything then passing on the
|
|
* // invalid pointer.
|
|
*
|
|
* Example 3:
|
|
* static void foo (NMType *obj)
|
|
* {
|
|
* g_return_if_fail (NM_IS_TYPE (obj));
|
|
* access_obj_without_check (obj);
|
|
* }
|
|
* foo ((NMType *) obj);
|
|
* // There is a runtime check which prints a g_critical() which also avoids
|
|
* // the crash. That is actually helpful to catch bugs and avoid crashes.
|
|
*
|
|
* Example 4:
|
|
* static void foo (NMType *obj)
|
|
* {
|
|
* g_return_if_fail (NM_IS_TYPE (obj));
|
|
* access_obj_without_check (obj);
|
|
* }
|
|
* foo (NM_TYPE (obj));
|
|
* // The runtime check is performed twice, with printing a g_warning() and
|
|
* // a g_critical() and avoiding the crash.
|
|
*
|
|
* Example 3 is how it should be done. Type checks in NM_TYPE() are pointless.
|
|
* Disable them for our production builds.
|
|
*/
|
|
#ifndef G_DISABLE_CAST_CHECKS
|
|
#define G_DISABLE_CAST_CHECKS
|
|
#endif
|
|
#endif
|
|
|
|
/*****************************************************************************/
|
|
|
|
#include <stdlib.h>
|
|
|
|
/*****************************************************************************/
|
|
|
|
#endif /* __NM_DEFAULT_STD_H__ */
|