mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-05-05 18:08:01 +02:00
Bug 28460 - Refactored dbus configuration access.
Libdbus uses several config variables. On unix these settings are read from environment variables by using _dbus_getenv. On other platforms like wince there are no environment variables available and _dbus_getenv needs an emulation for those plattforms (see dbus/dbus-sysdeps-wince-glue.c) To cleanup this emulation the appended patch adds a config api by adding _dbus_config_... functions. Also having all client config related functions listed in one header file provides a good overview about which config attributes are available. The default implementation retrieves the config values from environment variables. For other os this could be easily extended or replaced by.
This commit is contained in:
parent
9280395330
commit
6f9077ee87
12 changed files with 242 additions and 22 deletions
|
|
@ -121,6 +121,7 @@ endif(UNIX)
|
|||
### daemon or test programs (all symbols in here should
|
||||
### be underscore-prefixed)
|
||||
set (DBUS_SHARED_SOURCES
|
||||
${DBUS_DIR}/dbus-config.c
|
||||
${DBUS_DIR}/dbus-dataslot.c
|
||||
${DBUS_DIR}/dbus-file.c
|
||||
${DBUS_DIR}/dbus-hash.c
|
||||
|
|
@ -155,6 +156,7 @@ set (DBUS_SHARED_HEADERS
|
|||
### to be unless they move to DBUS_SHARED_SOURCES later)
|
||||
set (DBUS_UTIL_SOURCES
|
||||
${DBUS_DIR}/dbus-auth-util.c
|
||||
${DBUS_DIR}/dbus-config.h
|
||||
${DBUS_DIR}/dbus-credentials-util.c
|
||||
${DBUS_DIR}/dbus-mainloop.c
|
||||
${DBUS_DIR}/dbus-marshal-byteswap-util.c
|
||||
|
|
|
|||
|
|
@ -184,6 +184,8 @@ DBUS_LIB_SOURCES= \
|
|||
### daemon or test programs (all symbols in here should
|
||||
### be underscore-prefixed)
|
||||
DBUS_SHARED_SOURCES= \
|
||||
dbus-config.c \
|
||||
dbus-config.h \
|
||||
dbus-dataslot.c \
|
||||
dbus-dataslot.h \
|
||||
dbus-file.c \
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
#include <config.h>
|
||||
#include "dbus-bus.h"
|
||||
#include "dbus-config.h"
|
||||
#include "dbus-protocol.h"
|
||||
#include "dbus-internals.h"
|
||||
#include "dbus-message.h"
|
||||
|
|
@ -278,7 +279,7 @@ init_connections_unlocked (void)
|
|||
|
||||
if (bus_connection_addresses[DBUS_BUS_STARTER] != NULL)
|
||||
{
|
||||
s = _dbus_getenv ("DBUS_STARTER_BUS_TYPE");
|
||||
s = _dbus_config_starter_bus_type();
|
||||
|
||||
if (s != NULL)
|
||||
{
|
||||
|
|
|
|||
139
dbus/dbus-config.c
Normal file
139
dbus/dbus-config.c
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
/* dbus-config.c client config api implementation
|
||||
*
|
||||
* Copyright (C) 2010 Ralf Habacker <ralf.habacker@freenet.de>
|
||||
*
|
||||
* Licensed under the Academic Free License version 2.1
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
*/
|
||||
|
||||
#include "dbus-config.h"
|
||||
#include "dbus-sysdeps.h"
|
||||
|
||||
char *
|
||||
_dbus_config_block_on_abort ()
|
||||
{
|
||||
return _dbus_getenv ("DBUS_BLOCK_ON_ABORT");
|
||||
}
|
||||
|
||||
char *
|
||||
_dbus_config_common_program_files()
|
||||
{
|
||||
return _dbus_getenv ("CommonProgramFiles");
|
||||
}
|
||||
|
||||
char *
|
||||
_dbus_config_datadir ()
|
||||
{
|
||||
return _dbus_getenv ("DBUS_DATADIR");
|
||||
}
|
||||
|
||||
char *
|
||||
_dbus_config_debug_output ()
|
||||
{
|
||||
return _dbus_getenv ("DBUS_DEBUG_OUTPUT");
|
||||
}
|
||||
|
||||
char *
|
||||
_dbus_config_disable_mem_pools()
|
||||
{
|
||||
return _dbus_getenv ("DBUS_DISABLE_MEM_POOLS");
|
||||
}
|
||||
|
||||
char *
|
||||
_dbus_config_homedrive ()
|
||||
{
|
||||
return _dbus_getenv("HOMEDRIVE");
|
||||
}
|
||||
|
||||
char *
|
||||
_dbus_config_homepath ()
|
||||
{
|
||||
return _dbus_getenv("HOMEPATH");
|
||||
}
|
||||
|
||||
char *
|
||||
_dbus_config_fatal_warnings ()
|
||||
{
|
||||
return _dbus_getenv ("DBUS_FATAL_WARNINGS");
|
||||
}
|
||||
|
||||
char *
|
||||
_dbus_config_malloc_fail_nth ()
|
||||
{
|
||||
return _dbus_getenv ("DBUS_MALLOC_FAIL_NTH");
|
||||
}
|
||||
|
||||
char *
|
||||
_dbus_config_malloc_fail_greater_than ()
|
||||
{
|
||||
return _dbus_getenv ("DBUS_MALLOC_FAIL_GREATER_THAN");
|
||||
}
|
||||
|
||||
char *
|
||||
_dbus_config_malloc_guards ()
|
||||
{
|
||||
return _dbus_getenv ("DBUS_MALLOC_GUARDS");
|
||||
}
|
||||
|
||||
char *
|
||||
_dbus_config_malloc_backtraces ()
|
||||
{
|
||||
return _dbus_getenv ("DBUS_MALLOC_BACKTRACES");
|
||||
}
|
||||
|
||||
char *
|
||||
_dbus_config_starter_bus_type ()
|
||||
{
|
||||
return _dbus_getenv ("DBUS_STARTER_BUS_TYPE");
|
||||
}
|
||||
|
||||
char *
|
||||
_dbus_config_test_malloc_failures ()
|
||||
{
|
||||
return _dbus_getenv ("DBUS_TEST_MALLOC_FAILURES");
|
||||
}
|
||||
|
||||
char *
|
||||
_dbus_config_test_homedir ()
|
||||
{
|
||||
return _dbus_getenv ("DBUS_TEST_HOMEDIR");
|
||||
}
|
||||
|
||||
char *
|
||||
_dbus_config_test_data ()
|
||||
{
|
||||
return _dbus_getenv ("DBUS_TEST_DATA");
|
||||
}
|
||||
|
||||
char *
|
||||
_dbus_config_xdg_data_home ()
|
||||
{
|
||||
return _dbus_getenv ("XDG_DATA_HOME");
|
||||
}
|
||||
|
||||
char *
|
||||
_dbus_config_xdg_data_dirs ()
|
||||
{
|
||||
return _dbus_getenv ("XDG_DATA_DIRS");
|
||||
}
|
||||
|
||||
char *
|
||||
_dbus_config_verbose ()
|
||||
{
|
||||
return _dbus_getenv ("DBUS_VERBOSE");
|
||||
}
|
||||
70
dbus/dbus-config.h
Normal file
70
dbus/dbus-config.h
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
/* dbus-config.h client config api header
|
||||
*
|
||||
* Copyright (C) 2010 Ralf Habacker <ralf.habacker@freenet.de>
|
||||
*
|
||||
* Licensed under the Academic Free License version 2.1
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef DBUS_CONFIG_H
|
||||
#define DBUS_CONFIG_H
|
||||
|
||||
// session bus address
|
||||
// system bus address
|
||||
// activation bus address
|
||||
|
||||
char *
|
||||
_dbus_config_block_on_abort ();
|
||||
char *
|
||||
_dbus_config_common_program_files ();
|
||||
char *
|
||||
_dbus_config_datadir ();
|
||||
char *
|
||||
_dbus_config_debug_output ();
|
||||
char *
|
||||
_dbus_config_disable_mem_pools ();
|
||||
char *
|
||||
_dbus_config_fatal_warnings ();
|
||||
char *
|
||||
_dbus_config_homedrive ();
|
||||
char *
|
||||
_dbus_config_homepath ();
|
||||
char *
|
||||
_dbus_config_malloc_backtraces ();
|
||||
char *
|
||||
_dbus_config_malloc_fail_nth ();
|
||||
char *
|
||||
_dbus_config_malloc_fail_greater_than ();
|
||||
char *
|
||||
_dbus_config_malloc_guards ();
|
||||
char *
|
||||
_dbus_config_starter_bus_type ();
|
||||
char *
|
||||
_dbus_config_test_malloc_failures ();
|
||||
char *
|
||||
_dbus_config_test_homedir ();
|
||||
char *
|
||||
_dbus_config_test_data ();
|
||||
char *
|
||||
_dbus_config_verbose ();
|
||||
char *
|
||||
_dbus_config_xdg_data_home ();
|
||||
char *
|
||||
_dbus_config_xdg_data_dirs ();
|
||||
|
||||
#endif
|
||||
|
|
@ -22,6 +22,7 @@
|
|||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include "dbus-config.h"
|
||||
#include "dbus-internals.h"
|
||||
#include "dbus-protocol.h"
|
||||
#include "dbus-marshal-basic.h"
|
||||
|
|
@ -207,7 +208,7 @@ init_warnings(void)
|
|||
if (!warn_initted)
|
||||
{
|
||||
const char *s;
|
||||
s = _dbus_getenv ("DBUS_FATAL_WARNINGS");
|
||||
s = _dbus_config_fatal_warnings ();
|
||||
if (s && *s)
|
||||
{
|
||||
if (*s == '0')
|
||||
|
|
@ -313,7 +314,7 @@ _dbus_verbose_init (void)
|
|||
{
|
||||
if (!verbose_initted)
|
||||
{
|
||||
const char *p = _dbus_getenv ("DBUS_VERBOSE");
|
||||
const char *p = _dbus_config_verbose ();
|
||||
verbose = p != NULL && *p == '1';
|
||||
verbose_initted = TRUE;
|
||||
#ifdef DBUS_USE_OUTPUT_DEBUG_STRING
|
||||
|
|
@ -1003,7 +1004,7 @@ _dbus_test_oom_handling (const char *description,
|
|||
_dbus_verbose ("\n=================\n%s: about %d mallocs total\n=================\n",
|
||||
description, approx_mallocs);
|
||||
|
||||
setting = _dbus_getenv ("DBUS_TEST_MALLOC_FAILURES");
|
||||
setting = _dbus_config_test_malloc_failures ();
|
||||
if (setting != NULL)
|
||||
{
|
||||
DBusString str;
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include "dbus-config.h"
|
||||
#include "dbus-memory.h"
|
||||
#include "dbus-internals.h"
|
||||
#include "dbus-sysdeps.h"
|
||||
|
|
@ -128,33 +129,33 @@ _dbus_initialize_malloc_debug (void)
|
|||
{
|
||||
debug_initialized = TRUE;
|
||||
|
||||
if (_dbus_getenv ("DBUS_MALLOC_FAIL_NTH") != NULL)
|
||||
if (_dbus_config_malloc_fail_nth () != NULL)
|
||||
{
|
||||
fail_nth = atoi (_dbus_getenv ("DBUS_MALLOC_FAIL_NTH"));
|
||||
fail_nth = atoi (_dbus_config_malloc_fail_nth ());
|
||||
fail_alloc_counter = fail_nth;
|
||||
_dbus_verbose ("Will fail malloc every %d times\n", fail_nth);
|
||||
}
|
||||
|
||||
if (_dbus_getenv ("DBUS_MALLOC_FAIL_GREATER_THAN") != NULL)
|
||||
if (_dbus_config_malloc_fail_greater_than () != NULL)
|
||||
{
|
||||
fail_size = atoi (_dbus_getenv ("DBUS_MALLOC_FAIL_GREATER_THAN"));
|
||||
fail_size = atoi (_dbus_config_malloc_fail_greater_than ());
|
||||
_dbus_verbose ("Will fail mallocs over %ld bytes\n",
|
||||
(long) fail_size);
|
||||
}
|
||||
|
||||
if (_dbus_getenv ("DBUS_MALLOC_GUARDS") != NULL)
|
||||
if (_dbus_config_malloc_guards () != NULL)
|
||||
{
|
||||
guards = TRUE;
|
||||
_dbus_verbose ("Will use malloc guards\n");
|
||||
}
|
||||
|
||||
if (_dbus_getenv ("DBUS_DISABLE_MEM_POOLS") != NULL)
|
||||
if (_dbus_config_disable_mem_pools () != NULL)
|
||||
{
|
||||
disable_mem_pools = TRUE;
|
||||
_dbus_verbose ("Will disable memory pools\n");
|
||||
}
|
||||
|
||||
if (_dbus_getenv ("DBUS_MALLOC_BACKTRACES") != NULL)
|
||||
if (_dbus_config_malloc_backtraces () != NULL)
|
||||
{
|
||||
backtrace_on_fail_alloc = TRUE;
|
||||
_dbus_verbose ("Will backtrace on failing a malloc\n");
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
#include <config.h>
|
||||
|
||||
#include "dbus-config.h"
|
||||
#include "dbus-internals.h"
|
||||
#include "dbus-sysdeps.h"
|
||||
#include "dbus-sysdeps-unix.h"
|
||||
|
|
@ -3255,8 +3256,8 @@ _dbus_get_standard_session_servicedirs (DBusList **dirs)
|
|||
if (!_dbus_string_init (&servicedir_path))
|
||||
return FALSE;
|
||||
|
||||
xdg_data_home = _dbus_getenv ("XDG_DATA_HOME");
|
||||
xdg_data_dirs = _dbus_getenv ("XDG_DATA_DIRS");
|
||||
xdg_data_home = _dbus_config_xdg_data_home ();
|
||||
xdg_data_dirs = _dbus_config_xdg_data_dirs ();
|
||||
|
||||
if (xdg_data_dirs != NULL)
|
||||
{
|
||||
|
|
@ -3343,7 +3344,7 @@ _dbus_get_standard_system_servicedirs (DBusList **dirs)
|
|||
if (!_dbus_string_init (&servicedir_path))
|
||||
return FALSE;
|
||||
|
||||
xdg_data_dirs = _dbus_getenv ("XDG_DATA_DIRS");
|
||||
xdg_data_dirs = _dbus_config_xdg_data_dirs ();
|
||||
|
||||
if (xdg_data_dirs != NULL)
|
||||
{
|
||||
|
|
@ -3457,7 +3458,7 @@ _dbus_append_keyring_directory_for_credentials (DBusString *directory,
|
|||
{
|
||||
const char *override;
|
||||
|
||||
override = _dbus_getenv ("DBUS_TEST_HOMEDIR");
|
||||
override = _dbus_config_test_homedir ();
|
||||
if (override != NULL && *override != '\0')
|
||||
{
|
||||
_dbus_string_set_length (&homedir, 0);
|
||||
|
|
|
|||
|
|
@ -115,7 +115,7 @@ _dbus_become_daemon (const DBusString *pidfile,
|
|||
dup2 (dev_null_fd, 0);
|
||||
dup2 (dev_null_fd, 1);
|
||||
|
||||
s = _dbus_getenv ("DBUS_DEBUG_OUTPUT");
|
||||
s = _dbus_config_debug_output ();
|
||||
if (s == NULL || *s == '\0')
|
||||
dup2 (dev_null_fd, 2);
|
||||
else
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#include "dbus-config.h"
|
||||
#include "dbus-internals.h"
|
||||
#include "dbus-sysdeps.h"
|
||||
#include "dbus-threads.h"
|
||||
|
|
@ -2802,7 +2803,7 @@ _dbus_get_standard_session_servicedirs (DBusList **dirs)
|
|||
#ifdef DBUS_WINCE
|
||||
{
|
||||
/* On Windows CE, we adjust datadir dynamically to installation location. */
|
||||
const char *data_dir = _dbus_getenv ("DBUS_DATADIR");
|
||||
const char *data_dir = _dbus_config_datadir ();
|
||||
|
||||
if (data_dir != NULL)
|
||||
{
|
||||
|
|
@ -3102,13 +3103,13 @@ _dbus_append_keyring_directory_for_credentials (DBusString *directory,
|
|||
if (!_dbus_string_init (&homedir))
|
||||
return FALSE;
|
||||
|
||||
homedrive = _dbus_getenv("HOMEDRIVE");
|
||||
homedrive = _dbus_config_homedrive ();
|
||||
if (homedrive != NULL && *homedrive != '\0')
|
||||
{
|
||||
_dbus_string_append(&homedir,homedrive);
|
||||
}
|
||||
|
||||
homepath = _dbus_getenv("HOMEPATH");
|
||||
homepath = _dbus_config_homepath ();
|
||||
if (homepath != NULL && *homepath != '\0')
|
||||
{
|
||||
_dbus_string_append(&homedir,homepath);
|
||||
|
|
@ -3118,7 +3119,7 @@ _dbus_append_keyring_directory_for_credentials (DBusString *directory,
|
|||
{
|
||||
const char *override;
|
||||
|
||||
override = _dbus_getenv ("DBUS_TEST_HOMEDIR");
|
||||
override = _dbus_config_test_homedir ();
|
||||
if (override != NULL && *override != '\0')
|
||||
{
|
||||
_dbus_string_set_length (&homedir, 0);
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include "dbus-config.h"
|
||||
#include "dbus-internals.h"
|
||||
#include "dbus-sysdeps.h"
|
||||
#include "dbus-threads.h"
|
||||
|
|
@ -83,7 +84,7 @@ _dbus_abort (void)
|
|||
|
||||
_dbus_print_backtrace ();
|
||||
|
||||
s = _dbus_getenv ("DBUS_BLOCK_ON_ABORT");
|
||||
s = _dbus_config_block_on_abort ();
|
||||
if (s && *s)
|
||||
{
|
||||
/* don't use _dbus_warn here since it can _dbus_abort() */
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include "dbus-config.h"
|
||||
#include "dbus-test.h"
|
||||
#include "dbus-sysdeps.h"
|
||||
#include "dbus-internals.h"
|
||||
|
|
@ -103,7 +104,7 @@ dbus_internal_do_not_use_run_tests (const char *test_data_dir, const char *speci
|
|||
die ("debug threads init");
|
||||
|
||||
if (test_data_dir == NULL)
|
||||
test_data_dir = _dbus_getenv ("DBUS_TEST_DATA");
|
||||
test_data_dir = _dbus_config_test_data ();
|
||||
|
||||
if (test_data_dir != NULL)
|
||||
printf ("Test data in %s\n", test_data_dir);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue