diff options
author | Simon McVittie <smcv@debian.org> | 2011-07-29 16:54:34 +0100 |
---|---|---|
committer | Simon McVittie <smcv@debian.org> | 2011-07-29 16:54:34 +0100 |
commit | 3ec6cdd0d254d59fa5325753d628de3e9802ea43 (patch) | |
tree | a0abbd2fd19cfd2d2581cbfd9434211a9fc8b655 | |
parent | f41d7a14491ba45d199f569c2d5fc54415133582 (diff) | |
download | dbus-3ec6cdd0d254d59fa5325753d628de3e9802ea43.tar.gz |
Imported Upstream version 1.5.6upstream/1.5.6
107 files changed, 4426 insertions, 3933 deletions
diff --git a/Makefile.am b/Makefile.am index 52b40e9f..10b96703 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,5 +1,4 @@ -SUBDIRS=dbus bus doc tools test -DIST_SUBDIRS=dbus bus doc tools test +SUBDIRS=dbus bus tools test doc pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = dbus-1.pc diff --git a/Makefile.in b/Makefile.in index 6d90637f..de05a054 100644 --- a/Makefile.in +++ b/Makefile.in @@ -159,6 +159,7 @@ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -196,6 +197,7 @@ GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ +ADT_LIBS = @ADT_LIBS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ @@ -216,10 +218,6 @@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DBUS_BINDIR = @DBUS_BINDIR@ -DBUS_BUS_CFLAGS = @DBUS_BUS_CFLAGS@ -DBUS_BUS_LIBS = @DBUS_BUS_LIBS@ -DBUS_CLIENT_CFLAGS = @DBUS_CLIENT_CFLAGS@ -DBUS_CLIENT_LIBS = @DBUS_CLIENT_LIBS@ DBUS_CONSOLE_AUTH_DIR = @DBUS_CONSOLE_AUTH_DIR@ DBUS_CONSOLE_OWNER_FILE = @DBUS_CONSOLE_OWNER_FILE@ DBUS_DAEMONDIR = @DBUS_DAEMONDIR@ @@ -231,8 +229,6 @@ DBUS_INT16_TYPE = @DBUS_INT16_TYPE@ DBUS_INT32_TYPE = @DBUS_INT32_TYPE@ DBUS_INT64_CONSTANT = @DBUS_INT64_CONSTANT@ DBUS_INT64_TYPE = @DBUS_INT64_TYPE@ -DBUS_LAUNCHER_CFLAGS = @DBUS_LAUNCHER_CFLAGS@ -DBUS_LAUNCHER_LIBS = @DBUS_LAUNCHER_LIBS@ DBUS_LIBEXECDIR = @DBUS_LIBEXECDIR@ DBUS_MAJOR_VERSION = @DBUS_MAJOR_VERSION@ DBUS_MICRO_VERSION = @DBUS_MICRO_VERSION@ @@ -244,8 +240,6 @@ DBUS_SESSION_SOCKET_DIR = @DBUS_SESSION_SOCKET_DIR@ DBUS_SYSTEM_BUS_DEFAULT_ADDRESS = @DBUS_SYSTEM_BUS_DEFAULT_ADDRESS@ DBUS_SYSTEM_PID_FILE = @DBUS_SYSTEM_PID_FILE@ DBUS_SYSTEM_SOCKET = @DBUS_SYSTEM_SOCKET@ -DBUS_TEST_CFLAGS = @DBUS_TEST_CFLAGS@ -DBUS_TEST_LIBS = @DBUS_TEST_LIBS@ DBUS_UINT64_CONSTANT = @DBUS_UINT64_CONSTANT@ DBUS_USER = @DBUS_USER@ DBUS_VERSION = @DBUS_VERSION@ @@ -283,6 +277,7 @@ LAUNCHCTL = @LAUNCHCTL@ LAUNCHD_AGENT_DIR = @LAUNCHD_AGENT_DIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBDBUS_LIBS = @LIBDBUS_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -299,6 +294,7 @@ MAKEINFO = @MAKEINFO@ MAN2HTML = @MAN2HTML@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +NETWORK_libs = @NETWORK_libs@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -318,6 +314,7 @@ RANLIB = @RANLIB@ RC = @RC@ R_DYNAMIC_LDFLAG = @R_DYNAMIC_LDFLAG@ SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -334,10 +331,13 @@ TEST_SLEEP_FOREVER_BINARY = @TEST_SLEEP_FOREVER_BINARY@ TEST_SOCKET_DIR = @TEST_SOCKET_DIR@ TEST_VALID_SERVICE_DIR = @TEST_VALID_SERVICE_DIR@ TEST_VALID_SERVICE_SYSTEM_DIR = @TEST_VALID_SERVICE_SYSTEM_DIR@ +THREAD_LIBS = @THREAD_LIBS@ VERSION = @VERSION@ WINDRES = @WINDRES@ XMKMF = @XMKMF@ XMLTO = @XMLTO@ +XML_CFLAGS = @XML_CFLAGS@ +XML_LIBS = @XML_LIBS@ XSLTPROC = @XSLTPROC@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ @@ -397,8 +397,7 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -SUBDIRS = dbus bus doc tools test -DIST_SUBDIRS = dbus bus doc tools test +SUBDIRS = dbus bus tools test doc pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = dbus-1.pc DISTCLEANFILES = \ @@ -1,4 +1,82 @@ -D-Bus 1.5.4 (2010-06-10) +D-Bus 1.5.6 (2011-07-29) +== + +The "weird, gravy-like aftertaste" release. + +In addition to new features and refactoring, this release contains all of the +bugfixes from 1.4.14. + +Potentially incompatible (Bustle and similar debugging tools will need +changes to work as intended): + +• Do not allow match rules to "eavesdrop" (receive messages intended for a + different recipient) by mistake: eavesdroppers must now opt-in to this + behaviour by putting "eavesdrop='true'" in the match rule, which will + not have any practical effect on buses where eavesdropping is not allowed + (fd.o #37890, Cosimo Alfarano) + +Other changes: + +• D-Bus Specification version 0.18 (fd.o #37890, fd.o #39450, fd.o #38252; + Cosimo Alfarano, Simon McVittie) + · add the "eavesdrop" keyword to match rules + · define eavesdropping, unicast messages and broadcast messages + · stop claiming that match rules are needed to match unicast messages to you + · promote the type system to be a top-level section + +• Use DBUS_ERROR_OBJECT_PATH_IN_USE if dbus_connection_try_register_object_path + or dbus_connection_try_register_fallback fails, not ...ADDRESS_IN_USE, + and simplify object-path registration (fd.o #38874, Jiřà KlimeÅ¡) + +• Consistently use atomic operations on everything that is ever manipulated + via atomic ops, as was done for changes to DBusConnection's refcount in + 1.4.12 (fd.o #38005, Simon McVittie) + +• Fix a file descriptor leak when connecting to a TCP socket (fd.o #37258, + Simon McVittie) + +• Make "make check" in a clean tree work, by not running tests until + test data has been set up (fd.o #34405, Simon McVittie) + +• The dbus-daemon no longer busy-loops if it has a very large number of file + descriptors (fd.o #23194, Simon McVittie) + +• Refactor message flow through dispatching to avoid locking violations if + the bus daemon's message limit is hit; remove the per-connection link cache, + which was meant to improve performance, but now reduces it (fd.o #34393, + Simon McVittie) + +• Some cmake fixes (Ralf Habacker) + +• Remove dead code, mainly from DBusString (fd.o #38570, fd.o #39610; + Simon McVittie, Lennart Poettering) + +• Stop storing two extra byte order indicators in each D-Bus message + (fd.o #38287, Simon McVittie) + +• Add an optional Stats interface which can be used to get statistics from + a running dbus-daemon if enabled at configure time with --enable-stats + (fd.o #34040, Simon McVittie) + +• Fix various typos (fd.o #27227, fd.o #38284; Sascha Silbe, Simon McVittie) + +• Documentation (fd.o #36156, Simon McVittie): + · let xsltproc be overridden as usual: ./configure XSLTPROC=myxsltproc + · install more documentation automatically, including man2html output + · put dbus.devhelp in the right place (it must go in ${htmldir}) + +• Unix-specific: + · look for system services in /lib/dbus-1/system-services in addition to all + the other well-known locations; note that this should always be /lib, + even on platforms where shared libraries on the root FS would go in /lib64, + /lib/x86_64-linux-gnu or similar (fd.o #35229, Lennart Poettering) + · opt-in to fd passing on Solaris (fd.o #33465, Simon McVittie) + +• Windows-specific (Ralf Habacker): + · fix use of a mutex for autolaunch server detection + · don't crash on malloc failure in _dbus_printf_string_upper_bound + +D-Bus 1.5.4 (2011-06-10) == Security (local denial of service): @@ -6,7 +84,7 @@ Security (local denial of service): • Byte-swap foreign-endian messages correctly, preventing a long-standing local DoS if foreign-endian messages are relayed through the dbus-daemon (backporters: this is git commit c3223ba6c401ba81df1305851312a47c485e6cd7) - (fd.o #38120, Debian #629938, no CVE number yet; Simon McVittie) + (CVE-2011-2200, fd.o #38120, Debian #629938; Simon McVittie) New things: @@ -77,28 +77,8 @@ Configuration flags When using autotools, run "./configure --help" to see the possible configuration options and environment variables. -When using the cmake build system the dbus-specific configuration flags that can be given -to the cmake program are these (use -D<key>=<value> on command line) - - CMAKE_BUILD_TYPE set dbus build mode - one of Debug|Release|RelWithDebInfo|MinSizeRel - DBUS_BUILD_TESTS enable unit test code default=ON - DBUS_BUILD_X11 Build with X11 autolaunch support default=ON - HAVE_CONSOLE_OWNER_FILE enable console owner file (solaris only) ) default=ON - DBUS_DISABLE_ASSERTS Disable assertion checking default=OFF - DBUS_DISABLE_CHECKS Disable public API sanity checking default=OFF - DBUS_ENABLE_ABSTRACT_SOCKETS enable support for abstract sockets (linux only) default=ON - DBUS_ENABLE_ANSI enable -ansi -pedantic gcc flags default=OFF - DBUS_ENABLE_DNOTIFY build with dnotify support (linux only) default=ON - DBUS_ENABLE_VERBOSE_MODE support verbose debug mode default=ON - DBUS_ENABLE_DOXYGEN_DOCS build DOXYGEN documentation (requires Doxygen) default=ON - DBUS_GCOV_ENABLED compile with coverage profiling instrumentation (gcc only) default=OFF - DBUS_INSTALL_SYSTEM_LIBS install required system libraries default (windows only) =OFF - DBUS_USE_EXPAT Use expat (== ON) or libxml2 (==OFF) default=ON [1] - DBUS_USE_NONCE_TCP_DEFAULT_ADDRESS Use nonce tcp default address default=OFF - DBUS_USE_OUTPUT_DEBUG_STRING enable win32 debug port for message output default=OFF - - [1] requires installed development package of the related dependency - +When using cmake, inspect README.cmake to see the possible +configuration options and environment variables. API/ABI Policy === @@ -160,3 +140,24 @@ Note that the high-level bindings are _separate projects_ from the main D-Bus package, and have their own release cycles, levels of maturity, and ABI stability policies. Please consult the documentation for your binding. + +Bootstrapping D-Bus on new platforms +=== + +A full build of D-Bus, with all regression tests enabled and run, has some +dependencies which themselves depend on D-Bus, either for compilation or +for some of *their* regression tests: GLib, dbus-glib and dbus-python are +currently affected. + +To avoid circular dependencies, when bootstrapping D-Bus for the first time +on a new OS or CPU architecture, you can either cross-compile some of +those components, or choose the build order and options carefully: + +* build and install D-Bus without tests + - do not use the --enable-modular-tests=yes configure option + - do not use the --enable-tests=yes configure option +* build and install GLib, again without tests +* use those versions of libdbus and GLib to build and install dbus-glib +* ... and use those to install dbus-python +* rebuild libdbus; this time you can run all of the tests +* rebuild GLib; this time you can run all of the tests diff --git a/README.cygwin b/README.cygwin index 754b3e08..93e403ad 100755 --- a/README.cygwin +++ b/README.cygwin @@ -1,7 +1,7 @@ The cygwin dbus port is included in master branch of dbus git repository since 1.3.1. -See cygwin/README for more informations about +See cygwin/README for more information about the cygwin dbus port. The cygwin port of dbus is maintained by: @@ -14,9 +14,9 @@ test not running yet and there is help needed to get them running. Building -------- -DBus could be build on windows using automake or cmake. See the -file README for more informations. -Special cmake build instructions could be found in cmake/readme-cmake.txt +DBus can be built on windows using automake or cmake. See the +file README for more information. +Special cmake build instructions can be found in cmake/readme-cmake.txt windbus and dbus4win Ports @@ -78,7 +78,7 @@ FAQ - Do you have any clue if dbus-win32 can run in a Windows CE environment? - dbus has been ported to wince, see README.wince for more informations + dbus has been ported to wince, see README.wince for more information - Do you know if the C++ binding made by OpenWengo will be easily portable to Windows? diff --git a/bus/Makefile.am b/bus/Makefile.am index 9761c27c..6cbc09a6 100644 --- a/bus/Makefile.am +++ b/bus/Makefile.am @@ -1,10 +1,30 @@ configdir=$(sysconfdir)/dbus-1 dbus_daemon_execdir = $(DBUS_DAEMONDIR) -INCLUDES = -I$(top_srcdir) \ - $(DBUS_BUS_CFLAGS) \ +DBUS_BUS_LIBS = \ + $(XML_LIBS) \ + $(SELINUX_LIBS) \ + $(THREAD_LIBS) \ + $(ADT_LIBS) \ + $(NETWORK_libs) \ + $(NULL) + +DBUS_LAUNCHER_LIBS = \ + $(XML_LIBS) \ + $(THREAD_LIBS) \ + $(NETWORK_libs) \ + $(NULL) + +AM_CPPFLAGS = \ + -I$(top_srcdir) \ + $(XML_CFLAGS) \ -DDBUS_SYSTEM_CONFIG_FILE=\""$(configdir)/system.conf"\" \ - -DDBUS_COMPILATION + -DDBUS_COMPILATION \ + -DDBUS_STATIC_BUILD \ + $(NULL) + +# if assertions are enabled, improve backtraces +AM_LDFLAGS = @R_DYNAMIC_LDFLAG@ EFENCE= @@ -73,6 +93,8 @@ BUS_SOURCES= \ services.h \ signals.c \ signals.h \ + stats.c \ + stats.h \ test.c \ test.h \ utils.c \ @@ -83,14 +105,11 @@ dbus_daemon_SOURCES= \ $(BUS_SOURCES) \ main.c -dbus_daemon_CPPFLAGS = -DDBUS_STATIC_BUILD dbus_daemon_LDADD= \ $(top_builddir)/dbus/libdbus-internal.la \ $(EFENCE) \ $(DBUS_BUS_LIBS) -dbus_daemon_LDFLAGS=@R_DYNAMIC_LDFLAG@ - LAUNCH_HELPER_SOURCES= \ $(XML_SOURCES) \ config-parser-common.c \ @@ -110,13 +129,10 @@ dbus_daemon_launch_helper_SOURCES= \ activation-helper-bin.c \ $(LAUNCH_HELPER_SOURCES) -dbus_daemon_launch_helper_CPPFLAGS = -DDBUS_STATIC_BUILD dbus_daemon_launch_helper_LDADD= \ $(top_builddir)/dbus/libdbus-internal.la \ $(DBUS_LAUNCHER_LIBS) -dbus_daemon_launch_helper_LDFLAGS=@R_DYNAMIC_LDFLAG@ - ## we build another binary so we can do the launch testing without root privs. ## DO NOT INSTALL THIS FILE dbus_daemon_launch_helper_test_SOURCES= \ @@ -127,8 +143,8 @@ dbus_daemon_launch_helper_test_LDADD= \ $(top_builddir)/dbus/libdbus-internal.la \ $(DBUS_LAUNCHER_LIBS) -dbus_daemon_launch_helper_test_LDFLAGS=@R_DYNAMIC_LDFLAG@ -dbus_daemon_launch_helper_test_CPPFLAGS= -DDBUS_STATIC_BUILD \ +dbus_daemon_launch_helper_test_CPPFLAGS = \ + $(AM_CPPFLAGS) \ -DACTIVATION_LAUNCHER_TEST ## we build yet another binary so we can do the OOM tests @@ -141,30 +157,32 @@ bus_test_launch_helper_LDADD= \ $(top_builddir)/dbus/libdbus-internal.la \ $(DBUS_LAUNCHER_LIBS) -bus_test_launch_helper_LDFLAGS=@R_DYNAMIC_LDFLAG@ -bus_test_launch_helper_CPPFLAGS= -DDBUS_STATIC_BUILD \ +bus_test_launch_helper_CPPFLAGS = \ + $(AM_CPPFLAGS) \ -DACTIVATION_LAUNCHER_TEST \ -DACTIVATION_LAUNCHER_DO_OOM -## we use noinst_PROGRAMS not check_PROGRAMS so that we build -## even when not doing "make check" -noinst_PROGRAMS = $(TESTS) +noinst_PROGRAMS = dbus_daemon_exec_PROGRAMS = dbus-daemon if DBUS_UNIX libexec_PROGRAMS = dbus-daemon-launch-helper endif DBUS_UNIX -## note that TESTS has special meaning (stuff to use in make check) -## so if adding tests not to be run in make check, don't add them to -## TESTS -TESTS = +## Note that TESTS has special meaning (stuff to use in make check). +## We don't actually want to run any of these tests until test/ has been +## compiled, so we don't put them in TESTS here; we run them in test/ +## instead. if DBUS_BUILD_TESTS -TESTS_ENVIRONMENT=DBUS_TEST_DATA=$(top_builddir)/test/data DBUS_TEST_HOMEDIR=$(top_builddir)/dbus DBUS_FATAL_WARNINGS=1 DBUS_BLOCK_ON_ABORT=1 -TESTS += bus-test bus-test-system +## we use noinst_PROGRAMS not check_PROGRAMS so that we build +## even when not doing "make check" + +# run as a test by test/Makefile.am +noinst_PROGRAMS += bus-test bus-test-system if DBUS_UNIX -TESTS += bus-test-launch-helper +# run as a test by test/Makefile.am +noinst_PROGRAMS += bus-test-launch-helper # this is used by the tests but is not,itself, a test noinst_PROGRAMS += dbus-daemon-launch-helper-test endif DBUS_UNIX @@ -181,17 +199,13 @@ bus_test_system_SOURCES= \ utils.h \ test-system.c -bus_test_system_CPPFLAGS = -DDBUS_STATIC_BUILD bus_test_system_LDADD=$(top_builddir)/dbus/libdbus-internal.la $(DBUS_BUS_LIBS) -bus_test_system_LDFLAGS=@R_DYNAMIC_LDFLAG@ bus_test_SOURCES= \ $(BUS_SOURCES) \ test-main.c -bus_test_CPPFLAGS = -DDBUS_STATIC_BUILD bus_test_LDADD=$(top_builddir)/dbus/libdbus-internal.la $(DBUS_BUS_LIBS) -bus_test_LDFLAGS=@R_DYNAMIC_LDFLAG@ ## mop up the gcov files clean-local: diff --git a/bus/Makefile.in b/bus/Makefile.in index 3526ae85..89b0e50f 100644 --- a/bus/Makefile.in +++ b/bus/Makefile.in @@ -36,15 +36,19 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -noinst_PROGRAMS = $(am__EXEEXT_3) $(am__EXEEXT_4) +noinst_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) dbus_daemon_exec_PROGRAMS = dbus-daemon$(EXEEXT) @DBUS_UNIX_TRUE@libexec_PROGRAMS = dbus-daemon-launch-helper$(EXEEXT) -TESTS = $(am__EXEEXT_1) $(am__EXEEXT_2) + +# run as a test by test/Makefile.am @DBUS_BUILD_TESTS_TRUE@am__append_1 = bus-test bus-test-system -@DBUS_BUILD_TESTS_TRUE@@DBUS_UNIX_TRUE@am__append_2 = bus-test-launch-helper + +# run as a test by test/Makefile.am # this is used by the tests but is not,itself, a test -@DBUS_BUILD_TESTS_TRUE@@DBUS_UNIX_TRUE@am__append_3 = dbus-daemon-launch-helper-test -@HAVE_SYSTEMD_TRUE@am__append_4 = \ +@DBUS_BUILD_TESTS_TRUE@@DBUS_UNIX_TRUE@am__append_2 = \ +@DBUS_BUILD_TESTS_TRUE@@DBUS_UNIX_TRUE@ bus-test-launch-helper \ +@DBUS_BUILD_TESTS_TRUE@@DBUS_UNIX_TRUE@ dbus-daemon-launch-helper-test +@HAVE_SYSTEMD_TRUE@am__append_3 = \ @HAVE_SYSTEMD_TRUE@ dbus.service.in \ @HAVE_SYSTEMD_TRUE@ dbus.socket.in @@ -77,9 +81,8 @@ am__installdirs = "$(DESTDIR)$(dbus_daemon_execdir)" \ "$(DESTDIR)$(configdir)" "$(DESTDIR)$(systemdsystemunitdir)" @DBUS_BUILD_TESTS_TRUE@am__EXEEXT_1 = bus-test$(EXEEXT) \ @DBUS_BUILD_TESTS_TRUE@ bus-test-system$(EXEEXT) -@DBUS_BUILD_TESTS_TRUE@@DBUS_UNIX_TRUE@am__EXEEXT_2 = bus-test-launch-helper$(EXEEXT) -am__EXEEXT_3 = $(am__EXEEXT_1) $(am__EXEEXT_2) -@DBUS_BUILD_TESTS_TRUE@@DBUS_UNIX_TRUE@am__EXEEXT_4 = dbus-daemon-launch-helper-test$(EXEEXT) +@DBUS_BUILD_TESTS_TRUE@@DBUS_UNIX_TRUE@am__EXEEXT_2 = bus-test-launch-helper$(EXEEXT) \ +@DBUS_BUILD_TESTS_TRUE@@DBUS_UNIX_TRUE@ dbus-daemon-launch-helper-test$(EXEEXT) PROGRAMS = $(dbus_daemon_exec_PROGRAMS) $(libexec_PROGRAMS) \ $(noinst_PROGRAMS) am__bus_test_SOURCES_DIST = activation.c activation.h \ @@ -89,37 +92,34 @@ am__bus_test_SOURCES_DIST = activation.c activation.h \ dir-watch-default.c dir-watch-dnotify.c dir-watch-inotify.c \ dir-watch-kqueue.c dir-watch.h dispatch.c dispatch.h driver.c \ driver.h expirelist.c expirelist.h policy.c policy.h selinux.h \ - selinux.c services.c services.h signals.c signals.h test.c \ - test.h utils.c utils.h config-loader-expat.c \ + selinux.c services.c services.h signals.c signals.h stats.c \ + stats.h test.c test.h utils.c utils.h config-loader-expat.c \ config-loader-libxml.c test-main.c -@DBUS_BUS_ENABLE_DNOTIFY_ON_LINUX_FALSE@@DBUS_BUS_ENABLE_INOTIFY_FALSE@@DBUS_BUS_ENABLE_KQUEUE_FALSE@am__objects_1 = bus_test-dir-watch-default.$(OBJEXT) -@DBUS_BUS_ENABLE_DNOTIFY_ON_LINUX_TRUE@@DBUS_BUS_ENABLE_INOTIFY_FALSE@@DBUS_BUS_ENABLE_KQUEUE_FALSE@am__objects_1 = bus_test-dir-watch-dnotify.$(OBJEXT) -@DBUS_BUS_ENABLE_INOTIFY_TRUE@@DBUS_BUS_ENABLE_KQUEUE_FALSE@am__objects_1 = bus_test-dir-watch-inotify.$(OBJEXT) -@DBUS_BUS_ENABLE_KQUEUE_TRUE@am__objects_1 = bus_test-dir-watch-kqueue.$(OBJEXT) -@DBUS_USE_EXPAT_FALSE@@DBUS_USE_LIBXML_TRUE@am__objects_2 = bus_test-config-loader-libxml.$(OBJEXT) -@DBUS_USE_EXPAT_TRUE@am__objects_2 = \ -@DBUS_USE_EXPAT_TRUE@ bus_test-config-loader-expat.$(OBJEXT) -am__objects_3 = bus_test-activation.$(OBJEXT) bus_test-bus.$(OBJEXT) \ - bus_test-config-parser.$(OBJEXT) \ - bus_test-config-parser-common.$(OBJEXT) \ - bus_test-connection.$(OBJEXT) bus_test-desktop-file.$(OBJEXT) \ - $(am__objects_1) bus_test-dispatch.$(OBJEXT) \ - bus_test-driver.$(OBJEXT) bus_test-expirelist.$(OBJEXT) \ - bus_test-policy.$(OBJEXT) bus_test-selinux.$(OBJEXT) \ - bus_test-services.$(OBJEXT) bus_test-signals.$(OBJEXT) \ - bus_test-test.$(OBJEXT) bus_test-utils.$(OBJEXT) \ - $(am__objects_2) -am_bus_test_OBJECTS = $(am__objects_3) bus_test-test-main.$(OBJEXT) +@DBUS_BUS_ENABLE_DNOTIFY_ON_LINUX_FALSE@@DBUS_BUS_ENABLE_INOTIFY_FALSE@@DBUS_BUS_ENABLE_KQUEUE_FALSE@am__objects_1 = dir-watch-default.$(OBJEXT) +@DBUS_BUS_ENABLE_DNOTIFY_ON_LINUX_TRUE@@DBUS_BUS_ENABLE_INOTIFY_FALSE@@DBUS_BUS_ENABLE_KQUEUE_FALSE@am__objects_1 = dir-watch-dnotify.$(OBJEXT) +@DBUS_BUS_ENABLE_INOTIFY_TRUE@@DBUS_BUS_ENABLE_KQUEUE_FALSE@am__objects_1 = dir-watch-inotify.$(OBJEXT) +@DBUS_BUS_ENABLE_KQUEUE_TRUE@am__objects_1 = \ +@DBUS_BUS_ENABLE_KQUEUE_TRUE@ dir-watch-kqueue.$(OBJEXT) +@DBUS_USE_EXPAT_FALSE@@DBUS_USE_LIBXML_TRUE@am__objects_2 = config-loader-libxml.$(OBJEXT) +@DBUS_USE_EXPAT_TRUE@am__objects_2 = config-loader-expat.$(OBJEXT) +am__objects_3 = activation.$(OBJEXT) bus.$(OBJEXT) \ + config-parser.$(OBJEXT) config-parser-common.$(OBJEXT) \ + connection.$(OBJEXT) desktop-file.$(OBJEXT) $(am__objects_1) \ + dispatch.$(OBJEXT) driver.$(OBJEXT) expirelist.$(OBJEXT) \ + policy.$(OBJEXT) selinux.$(OBJEXT) services.$(OBJEXT) \ + signals.$(OBJEXT) stats.$(OBJEXT) test.$(OBJEXT) \ + utils.$(OBJEXT) $(am__objects_2) +am_bus_test_OBJECTS = $(am__objects_3) test-main.$(OBJEXT) bus_test_OBJECTS = $(am_bus_test_OBJECTS) am__DEPENDENCIES_1 = -bus_test_DEPENDENCIES = $(top_builddir)/dbus/libdbus-internal.la \ +am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) +bus_test_DEPENDENCIES = $(top_builddir)/dbus/libdbus-internal.la \ + $(am__DEPENDENCIES_2) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent -bus_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(bus_test_LDFLAGS) $(LDFLAGS) -o $@ am__bus_test_launch_helper_SOURCES_DIST = test-launch-helper.c \ config-loader-expat.c config-loader-libxml.c \ config-parser-common.c config-parser-common.h \ @@ -138,30 +138,20 @@ am_bus_test_launch_helper_OBJECTS = \ bus_test_launch_helper-test-launch-helper.$(OBJEXT) \ $(am__objects_5) bus_test_launch_helper_OBJECTS = $(am_bus_test_launch_helper_OBJECTS) +am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) bus_test_launch_helper_DEPENDENCIES = \ - $(top_builddir)/dbus/libdbus-internal.la $(am__DEPENDENCIES_1) -bus_test_launch_helper_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(AM_CFLAGS) $(CFLAGS) $(bus_test_launch_helper_LDFLAGS) \ - $(LDFLAGS) -o $@ + $(top_builddir)/dbus/libdbus-internal.la $(am__DEPENDENCIES_3) am__bus_test_system_SOURCES_DIST = config-loader-expat.c \ config-loader-libxml.c config-parser-common.c \ config-parser-common.h config-parser-trivial.c \ config-parser-trivial.h utils.c utils.h test-system.c -@DBUS_USE_EXPAT_FALSE@@DBUS_USE_LIBXML_TRUE@am__objects_6 = bus_test_system-config-loader-libxml.$(OBJEXT) -@DBUS_USE_EXPAT_TRUE@am__objects_6 = bus_test_system-config-loader-expat.$(OBJEXT) -am_bus_test_system_OBJECTS = $(am__objects_6) \ - bus_test_system-config-parser-common.$(OBJEXT) \ - bus_test_system-config-parser-trivial.$(OBJEXT) \ - bus_test_system-utils.$(OBJEXT) \ - bus_test_system-test-system.$(OBJEXT) +am_bus_test_system_OBJECTS = $(am__objects_2) \ + config-parser-common.$(OBJEXT) config-parser-trivial.$(OBJEXT) \ + utils.$(OBJEXT) test-system.$(OBJEXT) bus_test_system_OBJECTS = $(am_bus_test_system_OBJECTS) bus_test_system_DEPENDENCIES = \ - $(top_builddir)/dbus/libdbus-internal.la $(am__DEPENDENCIES_1) -bus_test_system_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(AM_CFLAGS) $(CFLAGS) $(bus_test_system_LDFLAGS) $(LDFLAGS) \ - -o $@ + $(top_builddir)/dbus/libdbus-internal.la $(am__DEPENDENCIES_2) am__dbus_daemon_SOURCES_DIST = activation.c activation.h \ activation-exit-codes.h bus.c bus.h config-parser.c \ config-parser.h config-parser-common.c config-parser-common.h \ @@ -169,57 +159,28 @@ am__dbus_daemon_SOURCES_DIST = activation.c activation.h \ dir-watch-default.c dir-watch-dnotify.c dir-watch-inotify.c \ dir-watch-kqueue.c dir-watch.h dispatch.c dispatch.h driver.c \ driver.h expirelist.c expirelist.h policy.c policy.h selinux.h \ - selinux.c services.c services.h signals.c signals.h test.c \ - test.h utils.c utils.h config-loader-expat.c \ + selinux.c services.c services.h signals.c signals.h stats.c \ + stats.h test.c test.h utils.c utils.h config-loader-expat.c \ config-loader-libxml.c main.c -@DBUS_BUS_ENABLE_DNOTIFY_ON_LINUX_FALSE@@DBUS_BUS_ENABLE_INOTIFY_FALSE@@DBUS_BUS_ENABLE_KQUEUE_FALSE@am__objects_7 = dbus_daemon-dir-watch-default.$(OBJEXT) -@DBUS_BUS_ENABLE_DNOTIFY_ON_LINUX_TRUE@@DBUS_BUS_ENABLE_INOTIFY_FALSE@@DBUS_BUS_ENABLE_KQUEUE_FALSE@am__objects_7 = dbus_daemon-dir-watch-dnotify.$(OBJEXT) -@DBUS_BUS_ENABLE_INOTIFY_TRUE@@DBUS_BUS_ENABLE_KQUEUE_FALSE@am__objects_7 = dbus_daemon-dir-watch-inotify.$(OBJEXT) -@DBUS_BUS_ENABLE_KQUEUE_TRUE@am__objects_7 = dbus_daemon-dir-watch-kqueue.$(OBJEXT) -@DBUS_USE_EXPAT_FALSE@@DBUS_USE_LIBXML_TRUE@am__objects_8 = dbus_daemon-config-loader-libxml.$(OBJEXT) -@DBUS_USE_EXPAT_TRUE@am__objects_8 = dbus_daemon-config-loader-expat.$(OBJEXT) -am__objects_9 = dbus_daemon-activation.$(OBJEXT) \ - dbus_daemon-bus.$(OBJEXT) dbus_daemon-config-parser.$(OBJEXT) \ - dbus_daemon-config-parser-common.$(OBJEXT) \ - dbus_daemon-connection.$(OBJEXT) \ - dbus_daemon-desktop-file.$(OBJEXT) $(am__objects_7) \ - dbus_daemon-dispatch.$(OBJEXT) dbus_daemon-driver.$(OBJEXT) \ - dbus_daemon-expirelist.$(OBJEXT) dbus_daemon-policy.$(OBJEXT) \ - dbus_daemon-selinux.$(OBJEXT) dbus_daemon-services.$(OBJEXT) \ - dbus_daemon-signals.$(OBJEXT) dbus_daemon-test.$(OBJEXT) \ - dbus_daemon-utils.$(OBJEXT) $(am__objects_8) -am_dbus_daemon_OBJECTS = $(am__objects_9) dbus_daemon-main.$(OBJEXT) +am_dbus_daemon_OBJECTS = $(am__objects_3) main.$(OBJEXT) dbus_daemon_OBJECTS = $(am_dbus_daemon_OBJECTS) dbus_daemon_DEPENDENCIES = $(top_builddir)/dbus/libdbus-internal.la \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -dbus_daemon_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(dbus_daemon_LDFLAGS) $(LDFLAGS) -o $@ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) am__dbus_daemon_launch_helper_SOURCES_DIST = activation-helper-bin.c \ config-loader-expat.c config-loader-libxml.c \ config-parser-common.c config-parser-common.h \ config-parser-trivial.c config-parser-trivial.h desktop-file.c \ desktop-file.h utils.c utils.h activation-exit-codes.h \ activation-helper.h activation-helper.c -@DBUS_USE_EXPAT_FALSE@@DBUS_USE_LIBXML_TRUE@am__objects_10 = dbus_daemon_launch_helper-config-loader-libxml.$(OBJEXT) -@DBUS_USE_EXPAT_TRUE@am__objects_10 = dbus_daemon_launch_helper-config-loader-expat.$(OBJEXT) -am__objects_11 = $(am__objects_10) \ - dbus_daemon_launch_helper-config-parser-common.$(OBJEXT) \ - dbus_daemon_launch_helper-config-parser-trivial.$(OBJEXT) \ - dbus_daemon_launch_helper-desktop-file.$(OBJEXT) \ - dbus_daemon_launch_helper-utils.$(OBJEXT) \ - dbus_daemon_launch_helper-activation-helper.$(OBJEXT) +am__objects_6 = $(am__objects_2) config-parser-common.$(OBJEXT) \ + config-parser-trivial.$(OBJEXT) desktop-file.$(OBJEXT) \ + utils.$(OBJEXT) activation-helper.$(OBJEXT) am_dbus_daemon_launch_helper_OBJECTS = \ - dbus_daemon_launch_helper-activation-helper-bin.$(OBJEXT) \ - $(am__objects_11) + activation-helper-bin.$(OBJEXT) $(am__objects_6) dbus_daemon_launch_helper_OBJECTS = \ $(am_dbus_daemon_launch_helper_OBJECTS) dbus_daemon_launch_helper_DEPENDENCIES = \ - $(top_builddir)/dbus/libdbus-internal.la $(am__DEPENDENCIES_1) -dbus_daemon_launch_helper_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(AM_CFLAGS) $(CFLAGS) $(dbus_daemon_launch_helper_LDFLAGS) \ - $(LDFLAGS) -o $@ + $(top_builddir)/dbus/libdbus-internal.la $(am__DEPENDENCIES_3) am__dbus_daemon_launch_helper_test_SOURCES_DIST = \ activation-helper-bin.c config-loader-expat.c \ config-loader-libxml.c config-parser-common.c \ @@ -227,24 +188,20 @@ am__dbus_daemon_launch_helper_test_SOURCES_DIST = \ config-parser-trivial.h desktop-file.c desktop-file.h utils.c \ utils.h activation-exit-codes.h activation-helper.h \ activation-helper.c -@DBUS_USE_EXPAT_FALSE@@DBUS_USE_LIBXML_TRUE@am__objects_12 = dbus_daemon_launch_helper_test-config-loader-libxml.$(OBJEXT) -@DBUS_USE_EXPAT_TRUE@am__objects_12 = dbus_daemon_launch_helper_test-config-loader-expat.$(OBJEXT) -am__objects_13 = $(am__objects_12) \ +@DBUS_USE_EXPAT_FALSE@@DBUS_USE_LIBXML_TRUE@am__objects_7 = dbus_daemon_launch_helper_test-config-loader-libxml.$(OBJEXT) +@DBUS_USE_EXPAT_TRUE@am__objects_7 = dbus_daemon_launch_helper_test-config-loader-expat.$(OBJEXT) +am__objects_8 = $(am__objects_7) \ dbus_daemon_launch_helper_test-config-parser-common.$(OBJEXT) \ dbus_daemon_launch_helper_test-config-parser-trivial.$(OBJEXT) \ dbus_daemon_launch_helper_test-desktop-file.$(OBJEXT) \ dbus_daemon_launch_helper_test-utils.$(OBJEXT) \ dbus_daemon_launch_helper_test-activation-helper.$(OBJEXT) am_dbus_daemon_launch_helper_test_OBJECTS = dbus_daemon_launch_helper_test-activation-helper-bin.$(OBJEXT) \ - $(am__objects_13) + $(am__objects_8) dbus_daemon_launch_helper_test_OBJECTS = \ $(am_dbus_daemon_launch_helper_test_OBJECTS) dbus_daemon_launch_helper_test_DEPENDENCIES = \ - $(top_builddir)/dbus/libdbus-internal.la $(am__DEPENDENCIES_1) -dbus_daemon_launch_helper_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(AM_CFLAGS) $(CFLAGS) \ - $(dbus_daemon_launch_helper_test_LDFLAGS) $(LDFLAGS) -o $@ + $(top_builddir)/dbus/libdbus-internal.la $(am__DEPENDENCIES_3) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ @@ -306,10 +263,9 @@ DIST_SOURCES = $(am__bus_test_SOURCES_DIST) \ DATA = $(agent_DATA) $(config_DATA) $(systemdsystemunit_DATA) ETAGS = etags CTAGS = ctags -am__tty_colors = \ -red=; grn=; lgn=; blu=; std= DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ +ADT_LIBS = @ADT_LIBS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ @@ -330,10 +286,6 @@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DBUS_BINDIR = @DBUS_BINDIR@ -DBUS_BUS_CFLAGS = @DBUS_BUS_CFLAGS@ -DBUS_BUS_LIBS = @DBUS_BUS_LIBS@ -DBUS_CLIENT_CFLAGS = @DBUS_CLIENT_CFLAGS@ -DBUS_CLIENT_LIBS = @DBUS_CLIENT_LIBS@ DBUS_CONSOLE_AUTH_DIR = @DBUS_CONSOLE_AUTH_DIR@ DBUS_CONSOLE_OWNER_FILE = @DBUS_CONSOLE_OWNER_FILE@ DBUS_DAEMONDIR = @DBUS_DAEMONDIR@ @@ -345,8 +297,6 @@ DBUS_INT16_TYPE = @DBUS_INT16_TYPE@ DBUS_INT32_TYPE = @DBUS_INT32_TYPE@ DBUS_INT64_CONSTANT = @DBUS_INT64_CONSTANT@ DBUS_INT64_TYPE = @DBUS_INT64_TYPE@ -DBUS_LAUNCHER_CFLAGS = @DBUS_LAUNCHER_CFLAGS@ -DBUS_LAUNCHER_LIBS = @DBUS_LAUNCHER_LIBS@ DBUS_LIBEXECDIR = @DBUS_LIBEXECDIR@ DBUS_MAJOR_VERSION = @DBUS_MAJOR_VERSION@ DBUS_MICRO_VERSION = @DBUS_MICRO_VERSION@ @@ -358,8 +308,6 @@ DBUS_SESSION_SOCKET_DIR = @DBUS_SESSION_SOCKET_DIR@ DBUS_SYSTEM_BUS_DEFAULT_ADDRESS = @DBUS_SYSTEM_BUS_DEFAULT_ADDRESS@ DBUS_SYSTEM_PID_FILE = @DBUS_SYSTEM_PID_FILE@ DBUS_SYSTEM_SOCKET = @DBUS_SYSTEM_SOCKET@ -DBUS_TEST_CFLAGS = @DBUS_TEST_CFLAGS@ -DBUS_TEST_LIBS = @DBUS_TEST_LIBS@ DBUS_UINT64_CONSTANT = @DBUS_UINT64_CONSTANT@ DBUS_USER = @DBUS_USER@ DBUS_VERSION = @DBUS_VERSION@ @@ -397,6 +345,7 @@ LAUNCHCTL = @LAUNCHCTL@ LAUNCHD_AGENT_DIR = @LAUNCHD_AGENT_DIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBDBUS_LIBS = @LIBDBUS_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -413,6 +362,7 @@ MAKEINFO = @MAKEINFO@ MAN2HTML = @MAN2HTML@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +NETWORK_libs = @NETWORK_libs@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -432,6 +382,7 @@ RANLIB = @RANLIB@ RC = @RC@ R_DYNAMIC_LDFLAG = @R_DYNAMIC_LDFLAG@ SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -448,10 +399,13 @@ TEST_SLEEP_FOREVER_BINARY = @TEST_SLEEP_FOREVER_BINARY@ TEST_SOCKET_DIR = @TEST_SOCKET_DIR@ TEST_VALID_SERVICE_DIR = @TEST_VALID_SERVICE_DIR@ TEST_VALID_SERVICE_SYSTEM_DIR = @TEST_VALID_SERVICE_SYSTEM_DIR@ +THREAD_LIBS = @THREAD_LIBS@ VERSION = @VERSION@ WINDRES = @WINDRES@ XMKMF = @XMKMF@ XMLTO = @XMLTO@ +XML_CFLAGS = @XML_CFLAGS@ +XML_LIBS = @XML_LIBS@ XSLTPROC = @XSLTPROC@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ @@ -513,11 +467,31 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ configdir = $(sysconfdir)/dbus-1 dbus_daemon_execdir = $(DBUS_DAEMONDIR) -INCLUDES = -I$(top_srcdir) \ - $(DBUS_BUS_CFLAGS) \ +DBUS_BUS_LIBS = \ + $(XML_LIBS) \ + $(SELINUX_LIBS) \ + $(THREAD_LIBS) \ + $(ADT_LIBS) \ + $(NETWORK_libs) \ + $(NULL) + +DBUS_LAUNCHER_LIBS = \ + $(XML_LIBS) \ + $(THREAD_LIBS) \ + $(NETWORK_libs) \ + $(NULL) + +AM_CPPFLAGS = \ + -I$(top_srcdir) \ + $(XML_CFLAGS) \ -DDBUS_SYSTEM_CONFIG_FILE=\""$(configdir)/system.conf"\" \ - -DDBUS_COMPILATION + -DDBUS_COMPILATION \ + -DDBUS_STATIC_BUILD \ + $(NULL) + +# if assertions are enabled, improve backtraces +AM_LDFLAGS = @R_DYNAMIC_LDFLAG@ EFENCE = CONFIG_IN_FILES = \ session.conf.in \ @@ -566,6 +540,8 @@ BUS_SOURCES = \ services.h \ signals.c \ signals.h \ + stats.c \ + stats.h \ test.c \ test.h \ utils.c \ @@ -576,13 +552,11 @@ dbus_daemon_SOURCES = \ $(BUS_SOURCES) \ main.c -dbus_daemon_CPPFLAGS = -DDBUS_STATIC_BUILD dbus_daemon_LDADD = \ $(top_builddir)/dbus/libdbus-internal.la \ $(EFENCE) \ $(DBUS_BUS_LIBS) -dbus_daemon_LDFLAGS = @R_DYNAMIC_LDFLAG@ LAUNCH_HELPER_SOURCES = \ $(XML_SOURCES) \ config-parser-common.c \ @@ -601,12 +575,10 @@ dbus_daemon_launch_helper_SOURCES = \ activation-helper-bin.c \ $(LAUNCH_HELPER_SOURCES) -dbus_daemon_launch_helper_CPPFLAGS = -DDBUS_STATIC_BUILD dbus_daemon_launch_helper_LDADD = \ $(top_builddir)/dbus/libdbus-internal.la \ $(DBUS_LAUNCHER_LIBS) -dbus_daemon_launch_helper_LDFLAGS = @R_DYNAMIC_LDFLAG@ dbus_daemon_launch_helper_test_SOURCES = \ activation-helper-bin.c \ $(LAUNCH_HELPER_SOURCES) @@ -615,8 +587,8 @@ dbus_daemon_launch_helper_test_LDADD = \ $(top_builddir)/dbus/libdbus-internal.la \ $(DBUS_LAUNCHER_LIBS) -dbus_daemon_launch_helper_test_LDFLAGS = @R_DYNAMIC_LDFLAG@ -dbus_daemon_launch_helper_test_CPPFLAGS = -DDBUS_STATIC_BUILD \ +dbus_daemon_launch_helper_test_CPPFLAGS = \ + $(AM_CPPFLAGS) \ -DACTIVATION_LAUNCHER_TEST bus_test_launch_helper_SOURCES = \ @@ -627,12 +599,11 @@ bus_test_launch_helper_LDADD = \ $(top_builddir)/dbus/libdbus-internal.la \ $(DBUS_LAUNCHER_LIBS) -bus_test_launch_helper_LDFLAGS = @R_DYNAMIC_LDFLAG@ -bus_test_launch_helper_CPPFLAGS = -DDBUS_STATIC_BUILD \ +bus_test_launch_helper_CPPFLAGS = \ + $(AM_CPPFLAGS) \ -DACTIVATION_LAUNCHER_TEST \ -DACTIVATION_LAUNCHER_DO_OOM -@DBUS_BUILD_TESTS_TRUE@TESTS_ENVIRONMENT = DBUS_TEST_DATA=$(top_builddir)/test/data DBUS_TEST_HOMEDIR=$(top_builddir)/dbus DBUS_FATAL_WARNINGS=1 DBUS_BLOCK_ON_ABORT=1 bus_test_system_SOURCES = \ $(XML_SOURCES) \ config-parser-common.c \ @@ -643,20 +614,16 @@ bus_test_system_SOURCES = \ utils.h \ test-system.c -bus_test_system_CPPFLAGS = -DDBUS_STATIC_BUILD bus_test_system_LDADD = $(top_builddir)/dbus/libdbus-internal.la $(DBUS_BUS_LIBS) -bus_test_system_LDFLAGS = @R_DYNAMIC_LDFLAG@ bus_test_SOURCES = \ $(BUS_SOURCES) \ test-main.c -bus_test_CPPFLAGS = -DDBUS_STATIC_BUILD bus_test_LDADD = $(top_builddir)/dbus/libdbus-internal.la $(DBUS_BUS_LIBS) -bus_test_LDFLAGS = @R_DYNAMIC_LDFLAG@ #### Init scripts fun SCRIPT_IN_FILES = messagebus.in messagebus-config.in rc.messagebus.in \ - $(am__append_4) + $(am__append_3) @DBUS_INIT_SCRIPTS_RED_HAT_TRUE@initddir = $(sysconfdir)/rc.d/init.d @DBUS_INIT_SCRIPTS_SLACKWARE_TRUE@initddir = $(sysconfdir)/rc.d/ @DBUS_INIT_SCRIPTS_RED_HAT_TRUE@initd_SCRIPTS = \ @@ -822,22 +789,22 @@ clean-noinstPROGRAMS: rm -f $$list bus-test$(EXEEXT): $(bus_test_OBJECTS) $(bus_test_DEPENDENCIES) @rm -f bus-test$(EXEEXT) - $(AM_V_CCLD)$(bus_test_LINK) $(bus_test_OBJECTS) $(bus_test_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(bus_test_OBJECTS) $(bus_test_LDADD) $(LIBS) bus-test-launch-helper$(EXEEXT): $(bus_test_launch_helper_OBJECTS) $(bus_test_launch_helper_DEPENDENCIES) @rm -f bus-test-launch-helper$(EXEEXT) - $(AM_V_CCLD)$(bus_test_launch_helper_LINK) $(bus_test_launch_helper_OBJECTS) $(bus_test_launch_helper_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(bus_test_launch_helper_OBJECTS) $(bus_test_launch_helper_LDADD) $(LIBS) bus-test-system$(EXEEXT): $(bus_test_system_OBJECTS) $(bus_test_system_DEPENDENCIES) @rm -f bus-test-system$(EXEEXT) - $(AM_V_CCLD)$(bus_test_system_LINK) $(bus_test_system_OBJECTS) $(bus_test_system_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(bus_test_system_OBJECTS) $(bus_test_system_LDADD) $(LIBS) dbus-daemon$(EXEEXT): $(dbus_daemon_OBJECTS) $(dbus_daemon_DEPENDENCIES) @rm -f dbus-daemon$(EXEEXT) - $(AM_V_CCLD)$(dbus_daemon_LINK) $(dbus_daemon_OBJECTS) $(dbus_daemon_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(dbus_daemon_OBJECTS) $(dbus_daemon_LDADD) $(LIBS) dbus-daemon-launch-helper$(EXEEXT): $(dbus_daemon_launch_helper_OBJECTS) $(dbus_daemon_launch_helper_DEPENDENCIES) @rm -f dbus-daemon-launch-helper$(EXEEXT) - $(AM_V_CCLD)$(dbus_daemon_launch_helper_LINK) $(dbus_daemon_launch_helper_OBJECTS) $(dbus_daemon_launch_helper_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(dbus_daemon_launch_helper_OBJECTS) $(dbus_daemon_launch_helper_LDADD) $(LIBS) dbus-daemon-launch-helper-test$(EXEEXT): $(dbus_daemon_launch_helper_test_OBJECTS) $(dbus_daemon_launch_helper_test_DEPENDENCIES) @rm -f dbus-daemon-launch-helper-test$(EXEEXT) - $(AM_V_CCLD)$(dbus_daemon_launch_helper_test_LINK) $(dbus_daemon_launch_helper_test_OBJECTS) $(dbus_daemon_launch_helper_test_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(dbus_daemon_launch_helper_test_OBJECTS) $(dbus_daemon_launch_helper_test_LDADD) $(LIBS) install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @@ -913,28 +880,10 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-activation.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-bus.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-config-loader-expat.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-config-loader-libxml.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-config-parser-common.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-config-parser.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-connection.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-desktop-file.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-dir-watch-default.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-dir-watch-dnotify.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-dir-watch-inotify.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-dir-watch-kqueue.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-dispatch.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-driver.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-expirelist.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-policy.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-selinux.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-services.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-signals.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-test-main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test-utils.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/activation-helper-bin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/activation-helper.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/activation.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test_launch_helper-activation-helper.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test_launch_helper-config-loader-expat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test_launch_helper-config-loader-libxml.Po@am__quote@ @@ -943,42 +892,12 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test_launch_helper-desktop-file.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test_launch_helper-test-launch-helper.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test_launch_helper-utils.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test_system-config-loader-expat.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test_system-config-loader-libxml.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test_system-config-parser-common.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test_system-config-parser-trivial.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test_system-test-system.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bus_test_system-utils.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-activation.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-bus.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-config-loader-expat.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-config-loader-libxml.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-config-parser-common.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-config-parser.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-connection.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-desktop-file.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-dir-watch-default.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-dir-watch-dnotify.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-dir-watch-inotify.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-dir-watch-kqueue.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-dispatch.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-driver.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-expirelist.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-policy.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-selinux.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-services.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-signals.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon-utils.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon_launch_helper-activation-helper-bin.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon_launch_helper-activation-helper.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon_launch_helper-config-loader-expat.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon_launch_helper-config-loader-libxml.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon_launch_helper-config-parser-common.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon_launch_helper-config-parser-trivial.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon_launch_helper-desktop-file.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon_launch_helper-utils.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/config-loader-expat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/config-loader-libxml.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/config-parser-common.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/config-parser-trivial.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/config-parser.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/connection.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon_launch_helper_test-activation-helper-bin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon_launch_helper_test-activation-helper.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon_launch_helper_test-config-loader-expat.Po@am__quote@ @@ -987,6 +906,24 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon_launch_helper_test-config-parser-trivial.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon_launch_helper_test-desktop-file.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus_daemon_launch_helper_test-utils.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/desktop-file.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dir-watch-default.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dir-watch-dnotify.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dir-watch-inotify.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dir-watch-kqueue.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dispatch.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/expirelist.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/policy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/selinux.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/services.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signals.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stats.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-system.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -1012,358 +949,6 @@ distclean-compile: @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< -bus_test-activation.o: activation.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-activation.o -MD -MP -MF $(DEPDIR)/bus_test-activation.Tpo -c -o bus_test-activation.o `test -f 'activation.c' || echo '$(srcdir)/'`activation.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-activation.Tpo $(DEPDIR)/bus_test-activation.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='activation.c' object='bus_test-activation.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-activation.o `test -f 'activation.c' || echo '$(srcdir)/'`activation.c - -bus_test-activation.obj: activation.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-activation.obj -MD -MP -MF $(DEPDIR)/bus_test-activation.Tpo -c -o bus_test-activation.obj `if test -f 'activation.c'; then $(CYGPATH_W) 'activation.c'; else $(CYGPATH_W) '$(srcdir)/activation.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-activation.Tpo $(DEPDIR)/bus_test-activation.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='activation.c' object='bus_test-activation.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-activation.obj `if test -f 'activation.c'; then $(CYGPATH_W) 'activation.c'; else $(CYGPATH_W) '$(srcdir)/activation.c'; fi` - -bus_test-bus.o: bus.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-bus.o -MD -MP -MF $(DEPDIR)/bus_test-bus.Tpo -c -o bus_test-bus.o `test -f 'bus.c' || echo '$(srcdir)/'`bus.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-bus.Tpo $(DEPDIR)/bus_test-bus.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bus.c' object='bus_test-bus.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-bus.o `test -f 'bus.c' || echo '$(srcdir)/'`bus.c - -bus_test-bus.obj: bus.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-bus.obj -MD -MP -MF $(DEPDIR)/bus_test-bus.Tpo -c -o bus_test-bus.obj `if test -f 'bus.c'; then $(CYGPATH_W) 'bus.c'; else $(CYGPATH_W) '$(srcdir)/bus.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-bus.Tpo $(DEPDIR)/bus_test-bus.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bus.c' object='bus_test-bus.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-bus.obj `if test -f 'bus.c'; then $(CYGPATH_W) 'bus.c'; else $(CYGPATH_W) '$(srcdir)/bus.c'; fi` - -bus_test-config-parser.o: config-parser.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-config-parser.o -MD -MP -MF $(DEPDIR)/bus_test-config-parser.Tpo -c -o bus_test-config-parser.o `test -f 'config-parser.c' || echo '$(srcdir)/'`config-parser.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-config-parser.Tpo $(DEPDIR)/bus_test-config-parser.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-parser.c' object='bus_test-config-parser.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-config-parser.o `test -f 'config-parser.c' || echo '$(srcdir)/'`config-parser.c - -bus_test-config-parser.obj: config-parser.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-config-parser.obj -MD -MP -MF $(DEPDIR)/bus_test-config-parser.Tpo -c -o bus_test-config-parser.obj `if test -f 'config-parser.c'; then $(CYGPATH_W) 'config-parser.c'; else $(CYGPATH_W) '$(srcdir)/config-parser.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-config-parser.Tpo $(DEPDIR)/bus_test-config-parser.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-parser.c' object='bus_test-config-parser.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-config-parser.obj `if test -f 'config-parser.c'; then $(CYGPATH_W) 'config-parser.c'; else $(CYGPATH_W) '$(srcdir)/config-parser.c'; fi` - -bus_test-config-parser-common.o: config-parser-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-config-parser-common.o -MD -MP -MF $(DEPDIR)/bus_test-config-parser-common.Tpo -c -o bus_test-config-parser-common.o `test -f 'config-parser-common.c' || echo '$(srcdir)/'`config-parser-common.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-config-parser-common.Tpo $(DEPDIR)/bus_test-config-parser-common.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-parser-common.c' object='bus_test-config-parser-common.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-config-parser-common.o `test -f 'config-parser-common.c' || echo '$(srcdir)/'`config-parser-common.c - -bus_test-config-parser-common.obj: config-parser-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-config-parser-common.obj -MD -MP -MF $(DEPDIR)/bus_test-config-parser-common.Tpo -c -o bus_test-config-parser-common.obj `if test -f 'config-parser-common.c'; then $(CYGPATH_W) 'config-parser-common.c'; else $(CYGPATH_W) '$(srcdir)/config-parser-common.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-config-parser-common.Tpo $(DEPDIR)/bus_test-config-parser-common.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-parser-common.c' object='bus_test-config-parser-common.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-config-parser-common.obj `if test -f 'config-parser-common.c'; then $(CYGPATH_W) 'config-parser-common.c'; else $(CYGPATH_W) '$(srcdir)/config-parser-common.c'; fi` - -bus_test-connection.o: connection.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-connection.o -MD -MP -MF $(DEPDIR)/bus_test-connection.Tpo -c -o bus_test-connection.o `test -f 'connection.c' || echo '$(srcdir)/'`connection.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-connection.Tpo $(DEPDIR)/bus_test-connection.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='connection.c' object='bus_test-connection.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-connection.o `test -f 'connection.c' || echo '$(srcdir)/'`connection.c - -bus_test-connection.obj: connection.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-connection.obj -MD -MP -MF $(DEPDIR)/bus_test-connection.Tpo -c -o bus_test-connection.obj `if test -f 'connection.c'; then $(CYGPATH_W) 'connection.c'; else $(CYGPATH_W) '$(srcdir)/connection.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-connection.Tpo $(DEPDIR)/bus_test-connection.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='connection.c' object='bus_test-connection.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-connection.obj `if test -f 'connection.c'; then $(CYGPATH_W) 'connection.c'; else $(CYGPATH_W) '$(srcdir)/connection.c'; fi` - -bus_test-desktop-file.o: desktop-file.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-desktop-file.o -MD -MP -MF $(DEPDIR)/bus_test-desktop-file.Tpo -c -o bus_test-desktop-file.o `test -f 'desktop-file.c' || echo '$(srcdir)/'`desktop-file.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-desktop-file.Tpo $(DEPDIR)/bus_test-desktop-file.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='desktop-file.c' object='bus_test-desktop-file.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-desktop-file.o `test -f 'desktop-file.c' || echo '$(srcdir)/'`desktop-file.c - -bus_test-desktop-file.obj: desktop-file.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-desktop-file.obj -MD -MP -MF $(DEPDIR)/bus_test-desktop-file.Tpo -c -o bus_test-desktop-file.obj `if test -f 'desktop-file.c'; then $(CYGPATH_W) 'desktop-file.c'; else $(CYGPATH_W) '$(srcdir)/desktop-file.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-desktop-file.Tpo $(DEPDIR)/bus_test-desktop-file.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='desktop-file.c' object='bus_test-desktop-file.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-desktop-file.obj `if test -f 'desktop-file.c'; then $(CYGPATH_W) 'desktop-file.c'; else $(CYGPATH_W) '$(srcdir)/desktop-file.c'; fi` - -bus_test-dir-watch-default.o: dir-watch-default.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-dir-watch-default.o -MD -MP -MF $(DEPDIR)/bus_test-dir-watch-default.Tpo -c -o bus_test-dir-watch-default.o `test -f 'dir-watch-default.c' || echo '$(srcdir)/'`dir-watch-default.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-dir-watch-default.Tpo $(DEPDIR)/bus_test-dir-watch-default.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dir-watch-default.c' object='bus_test-dir-watch-default.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-dir-watch-default.o `test -f 'dir-watch-default.c' || echo '$(srcdir)/'`dir-watch-default.c - -bus_test-dir-watch-default.obj: dir-watch-default.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-dir-watch-default.obj -MD -MP -MF $(DEPDIR)/bus_test-dir-watch-default.Tpo -c -o bus_test-dir-watch-default.obj `if test -f 'dir-watch-default.c'; then $(CYGPATH_W) 'dir-watch-default.c'; else $(CYGPATH_W) '$(srcdir)/dir-watch-default.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-dir-watch-default.Tpo $(DEPDIR)/bus_test-dir-watch-default.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dir-watch-default.c' object='bus_test-dir-watch-default.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-dir-watch-default.obj `if test -f 'dir-watch-default.c'; then $(CYGPATH_W) 'dir-watch-default.c'; else $(CYGPATH_W) '$(srcdir)/dir-watch-default.c'; fi` - -bus_test-dir-watch-dnotify.o: dir-watch-dnotify.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-dir-watch-dnotify.o -MD -MP -MF $(DEPDIR)/bus_test-dir-watch-dnotify.Tpo -c -o bus_test-dir-watch-dnotify.o `test -f 'dir-watch-dnotify.c' || echo '$(srcdir)/'`dir-watch-dnotify.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-dir-watch-dnotify.Tpo $(DEPDIR)/bus_test-dir-watch-dnotify.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dir-watch-dnotify.c' object='bus_test-dir-watch-dnotify.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-dir-watch-dnotify.o `test -f 'dir-watch-dnotify.c' || echo '$(srcdir)/'`dir-watch-dnotify.c - -bus_test-dir-watch-dnotify.obj: dir-watch-dnotify.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-dir-watch-dnotify.obj -MD -MP -MF $(DEPDIR)/bus_test-dir-watch-dnotify.Tpo -c -o bus_test-dir-watch-dnotify.obj `if test -f 'dir-watch-dnotify.c'; then $(CYGPATH_W) 'dir-watch-dnotify.c'; else $(CYGPATH_W) '$(srcdir)/dir-watch-dnotify.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-dir-watch-dnotify.Tpo $(DEPDIR)/bus_test-dir-watch-dnotify.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dir-watch-dnotify.c' object='bus_test-dir-watch-dnotify.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-dir-watch-dnotify.obj `if test -f 'dir-watch-dnotify.c'; then $(CYGPATH_W) 'dir-watch-dnotify.c'; else $(CYGPATH_W) '$(srcdir)/dir-watch-dnotify.c'; fi` - -bus_test-dir-watch-inotify.o: dir-watch-inotify.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-dir-watch-inotify.o -MD -MP -MF $(DEPDIR)/bus_test-dir-watch-inotify.Tpo -c -o bus_test-dir-watch-inotify.o `test -f 'dir-watch-inotify.c' || echo '$(srcdir)/'`dir-watch-inotify.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-dir-watch-inotify.Tpo $(DEPDIR)/bus_test-dir-watch-inotify.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dir-watch-inotify.c' object='bus_test-dir-watch-inotify.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-dir-watch-inotify.o `test -f 'dir-watch-inotify.c' || echo '$(srcdir)/'`dir-watch-inotify.c - -bus_test-dir-watch-inotify.obj: dir-watch-inotify.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-dir-watch-inotify.obj -MD -MP -MF $(DEPDIR)/bus_test-dir-watch-inotify.Tpo -c -o bus_test-dir-watch-inotify.obj `if test -f 'dir-watch-inotify.c'; then $(CYGPATH_W) 'dir-watch-inotify.c'; else $(CYGPATH_W) '$(srcdir)/dir-watch-inotify.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-dir-watch-inotify.Tpo $(DEPDIR)/bus_test-dir-watch-inotify.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dir-watch-inotify.c' object='bus_test-dir-watch-inotify.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-dir-watch-inotify.obj `if test -f 'dir-watch-inotify.c'; then $(CYGPATH_W) 'dir-watch-inotify.c'; else $(CYGPATH_W) '$(srcdir)/dir-watch-inotify.c'; fi` - -bus_test-dir-watch-kqueue.o: dir-watch-kqueue.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-dir-watch-kqueue.o -MD -MP -MF $(DEPDIR)/bus_test-dir-watch-kqueue.Tpo -c -o bus_test-dir-watch-kqueue.o `test -f 'dir-watch-kqueue.c' || echo '$(srcdir)/'`dir-watch-kqueue.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-dir-watch-kqueue.Tpo $(DEPDIR)/bus_test-dir-watch-kqueue.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dir-watch-kqueue.c' object='bus_test-dir-watch-kqueue.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-dir-watch-kqueue.o `test -f 'dir-watch-kqueue.c' || echo '$(srcdir)/'`dir-watch-kqueue.c - -bus_test-dir-watch-kqueue.obj: dir-watch-kqueue.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-dir-watch-kqueue.obj -MD -MP -MF $(DEPDIR)/bus_test-dir-watch-kqueue.Tpo -c -o bus_test-dir-watch-kqueue.obj `if test -f 'dir-watch-kqueue.c'; then $(CYGPATH_W) 'dir-watch-kqueue.c'; else $(CYGPATH_W) '$(srcdir)/dir-watch-kqueue.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-dir-watch-kqueue.Tpo $(DEPDIR)/bus_test-dir-watch-kqueue.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dir-watch-kqueue.c' object='bus_test-dir-watch-kqueue.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-dir-watch-kqueue.obj `if test -f 'dir-watch-kqueue.c'; then $(CYGPATH_W) 'dir-watch-kqueue.c'; else $(CYGPATH_W) '$(srcdir)/dir-watch-kqueue.c'; fi` - -bus_test-dispatch.o: dispatch.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-dispatch.o -MD -MP -MF $(DEPDIR)/bus_test-dispatch.Tpo -c -o bus_test-dispatch.o `test -f 'dispatch.c' || echo '$(srcdir)/'`dispatch.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-dispatch.Tpo $(DEPDIR)/bus_test-dispatch.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dispatch.c' object='bus_test-dispatch.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-dispatch.o `test -f 'dispatch.c' || echo '$(srcdir)/'`dispatch.c - -bus_test-dispatch.obj: dispatch.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-dispatch.obj -MD -MP -MF $(DEPDIR)/bus_test-dispatch.Tpo -c -o bus_test-dispatch.obj `if test -f 'dispatch.c'; then $(CYGPATH_W) 'dispatch.c'; else $(CYGPATH_W) '$(srcdir)/dispatch.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-dispatch.Tpo $(DEPDIR)/bus_test-dispatch.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dispatch.c' object='bus_test-dispatch.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-dispatch.obj `if test -f 'dispatch.c'; then $(CYGPATH_W) 'dispatch.c'; else $(CYGPATH_W) '$(srcdir)/dispatch.c'; fi` - -bus_test-driver.o: driver.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-driver.o -MD -MP -MF $(DEPDIR)/bus_test-driver.Tpo -c -o bus_test-driver.o `test -f 'driver.c' || echo '$(srcdir)/'`driver.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-driver.Tpo $(DEPDIR)/bus_test-driver.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='driver.c' object='bus_test-driver.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-driver.o `test -f 'driver.c' || echo '$(srcdir)/'`driver.c - -bus_test-driver.obj: driver.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-driver.obj -MD -MP -MF $(DEPDIR)/bus_test-driver.Tpo -c -o bus_test-driver.obj `if test -f 'driver.c'; then $(CYGPATH_W) 'driver.c'; else $(CYGPATH_W) '$(srcdir)/driver.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-driver.Tpo $(DEPDIR)/bus_test-driver.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='driver.c' object='bus_test-driver.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-driver.obj `if test -f 'driver.c'; then $(CYGPATH_W) 'driver.c'; else $(CYGPATH_W) '$(srcdir)/driver.c'; fi` - -bus_test-expirelist.o: expirelist.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-expirelist.o -MD -MP -MF $(DEPDIR)/bus_test-expirelist.Tpo -c -o bus_test-expirelist.o `test -f 'expirelist.c' || echo '$(srcdir)/'`expirelist.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-expirelist.Tpo $(DEPDIR)/bus_test-expirelist.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='expirelist.c' object='bus_test-expirelist.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-expirelist.o `test -f 'expirelist.c' || echo '$(srcdir)/'`expirelist.c - -bus_test-expirelist.obj: expirelist.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-expirelist.obj -MD -MP -MF $(DEPDIR)/bus_test-expirelist.Tpo -c -o bus_test-expirelist.obj `if test -f 'expirelist.c'; then $(CYGPATH_W) 'expirelist.c'; else $(CYGPATH_W) '$(srcdir)/expirelist.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-expirelist.Tpo $(DEPDIR)/bus_test-expirelist.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='expirelist.c' object='bus_test-expirelist.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-expirelist.obj `if test -f 'expirelist.c'; then $(CYGPATH_W) 'expirelist.c'; else $(CYGPATH_W) '$(srcdir)/expirelist.c'; fi` - -bus_test-policy.o: policy.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-policy.o -MD -MP -MF $(DEPDIR)/bus_test-policy.Tpo -c -o bus_test-policy.o `test -f 'policy.c' || echo '$(srcdir)/'`policy.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-policy.Tpo $(DEPDIR)/bus_test-policy.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='policy.c' object='bus_test-policy.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-policy.o `test -f 'policy.c' || echo '$(srcdir)/'`policy.c - -bus_test-policy.obj: policy.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-policy.obj -MD -MP -MF $(DEPDIR)/bus_test-policy.Tpo -c -o bus_test-policy.obj `if test -f 'policy.c'; then $(CYGPATH_W) 'policy.c'; else $(CYGPATH_W) '$(srcdir)/policy.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-policy.Tpo $(DEPDIR)/bus_test-policy.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='policy.c' object='bus_test-policy.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-policy.obj `if test -f 'policy.c'; then $(CYGPATH_W) 'policy.c'; else $(CYGPATH_W) '$(srcdir)/policy.c'; fi` - -bus_test-selinux.o: selinux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-selinux.o -MD -MP -MF $(DEPDIR)/bus_test-selinux.Tpo -c -o bus_test-selinux.o `test -f 'selinux.c' || echo '$(srcdir)/'`selinux.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-selinux.Tpo $(DEPDIR)/bus_test-selinux.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='selinux.c' object='bus_test-selinux.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-selinux.o `test -f 'selinux.c' || echo '$(srcdir)/'`selinux.c - -bus_test-selinux.obj: selinux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-selinux.obj -MD -MP -MF $(DEPDIR)/bus_test-selinux.Tpo -c -o bus_test-selinux.obj `if test -f 'selinux.c'; then $(CYGPATH_W) 'selinux.c'; else $(CYGPATH_W) '$(srcdir)/selinux.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-selinux.Tpo $(DEPDIR)/bus_test-selinux.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='selinux.c' object='bus_test-selinux.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-selinux.obj `if test -f 'selinux.c'; then $(CYGPATH_W) 'selinux.c'; else $(CYGPATH_W) '$(srcdir)/selinux.c'; fi` - -bus_test-services.o: services.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-services.o -MD -MP -MF $(DEPDIR)/bus_test-services.Tpo -c -o bus_test-services.o `test -f 'services.c' || echo '$(srcdir)/'`services.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-services.Tpo $(DEPDIR)/bus_test-services.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='services.c' object='bus_test-services.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-services.o `test -f 'services.c' || echo '$(srcdir)/'`services.c - -bus_test-services.obj: services.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-services.obj -MD -MP -MF $(DEPDIR)/bus_test-services.Tpo -c -o bus_test-services.obj `if test -f 'services.c'; then $(CYGPATH_W) 'services.c'; else $(CYGPATH_W) '$(srcdir)/services.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-services.Tpo $(DEPDIR)/bus_test-services.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='services.c' object='bus_test-services.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-services.obj `if test -f 'services.c'; then $(CYGPATH_W) 'services.c'; else $(CYGPATH_W) '$(srcdir)/services.c'; fi` - -bus_test-signals.o: signals.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-signals.o -MD -MP -MF $(DEPDIR)/bus_test-signals.Tpo -c -o bus_test-signals.o `test -f 'signals.c' || echo '$(srcdir)/'`signals.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-signals.Tpo $(DEPDIR)/bus_test-signals.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='signals.c' object='bus_test-signals.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-signals.o `test -f 'signals.c' || echo '$(srcdir)/'`signals.c - -bus_test-signals.obj: signals.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-signals.obj -MD -MP -MF $(DEPDIR)/bus_test-signals.Tpo -c -o bus_test-signals.obj `if test -f 'signals.c'; then $(CYGPATH_W) 'signals.c'; else $(CYGPATH_W) '$(srcdir)/signals.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-signals.Tpo $(DEPDIR)/bus_test-signals.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='signals.c' object='bus_test-signals.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-signals.obj `if test -f 'signals.c'; then $(CYGPATH_W) 'signals.c'; else $(CYGPATH_W) '$(srcdir)/signals.c'; fi` - -bus_test-test.o: test.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-test.o -MD -MP -MF $(DEPDIR)/bus_test-test.Tpo -c -o bus_test-test.o `test -f 'test.c' || echo '$(srcdir)/'`test.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-test.Tpo $(DEPDIR)/bus_test-test.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test.c' object='bus_test-test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-test.o `test -f 'test.c' || echo '$(srcdir)/'`test.c - -bus_test-test.obj: test.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-test.obj -MD -MP -MF $(DEPDIR)/bus_test-test.Tpo -c -o bus_test-test.obj `if test -f 'test.c'; then $(CYGPATH_W) 'test.c'; else $(CYGPATH_W) '$(srcdir)/test.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-test.Tpo $(DEPDIR)/bus_test-test.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test.c' object='bus_test-test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-test.obj `if test -f 'test.c'; then $(CYGPATH_W) 'test.c'; else $(CYGPATH_W) '$(srcdir)/test.c'; fi` - -bus_test-utils.o: utils.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-utils.o -MD -MP -MF $(DEPDIR)/bus_test-utils.Tpo -c -o bus_test-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-utils.Tpo $(DEPDIR)/bus_test-utils.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='utils.c' object='bus_test-utils.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c - -bus_test-utils.obj: utils.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-utils.obj -MD -MP -MF $(DEPDIR)/bus_test-utils.Tpo -c -o bus_test-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-utils.Tpo $(DEPDIR)/bus_test-utils.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='utils.c' object='bus_test-utils.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi` - -bus_test-config-loader-expat.o: config-loader-expat.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-config-loader-expat.o -MD -MP -MF $(DEPDIR)/bus_test-config-loader-expat.Tpo -c -o bus_test-config-loader-expat.o `test -f 'config-loader-expat.c' || echo '$(srcdir)/'`config-loader-expat.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-config-loader-expat.Tpo $(DEPDIR)/bus_test-config-loader-expat.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-loader-expat.c' object='bus_test-config-loader-expat.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-config-loader-expat.o `test -f 'config-loader-expat.c' || echo '$(srcdir)/'`config-loader-expat.c - -bus_test-config-loader-expat.obj: config-loader-expat.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-config-loader-expat.obj -MD -MP -MF $(DEPDIR)/bus_test-config-loader-expat.Tpo -c -o bus_test-config-loader-expat.obj `if test -f 'config-loader-expat.c'; then $(CYGPATH_W) 'config-loader-expat.c'; else $(CYGPATH_W) '$(srcdir)/config-loader-expat.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-config-loader-expat.Tpo $(DEPDIR)/bus_test-config-loader-expat.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-loader-expat.c' object='bus_test-config-loader-expat.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-config-loader-expat.obj `if test -f 'config-loader-expat.c'; then $(CYGPATH_W) 'config-loader-expat.c'; else $(CYGPATH_W) '$(srcdir)/config-loader-expat.c'; fi` - -bus_test-config-loader-libxml.o: config-loader-libxml.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-config-loader-libxml.o -MD -MP -MF $(DEPDIR)/bus_test-config-loader-libxml.Tpo -c -o bus_test-config-loader-libxml.o `test -f 'config-loader-libxml.c' || echo '$(srcdir)/'`config-loader-libxml.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-config-loader-libxml.Tpo $(DEPDIR)/bus_test-config-loader-libxml.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-loader-libxml.c' object='bus_test-config-loader-libxml.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-config-loader-libxml.o `test -f 'config-loader-libxml.c' || echo '$(srcdir)/'`config-loader-libxml.c - -bus_test-config-loader-libxml.obj: config-loader-libxml.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-config-loader-libxml.obj -MD -MP -MF $(DEPDIR)/bus_test-config-loader-libxml.Tpo -c -o bus_test-config-loader-libxml.obj `if test -f 'config-loader-libxml.c'; then $(CYGPATH_W) 'config-loader-libxml.c'; else $(CYGPATH_W) '$(srcdir)/config-loader-libxml.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-config-loader-libxml.Tpo $(DEPDIR)/bus_test-config-loader-libxml.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-loader-libxml.c' object='bus_test-config-loader-libxml.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-config-loader-libxml.obj `if test -f 'config-loader-libxml.c'; then $(CYGPATH_W) 'config-loader-libxml.c'; else $(CYGPATH_W) '$(srcdir)/config-loader-libxml.c'; fi` - -bus_test-test-main.o: test-main.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-test-main.o -MD -MP -MF $(DEPDIR)/bus_test-test-main.Tpo -c -o bus_test-test-main.o `test -f 'test-main.c' || echo '$(srcdir)/'`test-main.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-test-main.Tpo $(DEPDIR)/bus_test-test-main.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-main.c' object='bus_test-test-main.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-test-main.o `test -f 'test-main.c' || echo '$(srcdir)/'`test-main.c - -bus_test-test-main.obj: test-main.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test-test-main.obj -MD -MP -MF $(DEPDIR)/bus_test-test-main.Tpo -c -o bus_test-test-main.obj `if test -f 'test-main.c'; then $(CYGPATH_W) 'test-main.c'; else $(CYGPATH_W) '$(srcdir)/test-main.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test-test-main.Tpo $(DEPDIR)/bus_test-test-main.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-main.c' object='bus_test-test-main.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test-test-main.obj `if test -f 'test-main.c'; then $(CYGPATH_W) 'test-main.c'; else $(CYGPATH_W) '$(srcdir)/test-main.c'; fi` - bus_test_launch_helper-test-launch-helper.o: test-launch-helper.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test_launch_helper-test-launch-helper.o -MD -MP -MF $(DEPDIR)/bus_test_launch_helper-test-launch-helper.Tpo -c -o bus_test_launch_helper-test-launch-helper.o `test -f 'test-launch-helper.c' || echo '$(srcdir)/'`test-launch-helper.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test_launch_helper-test-launch-helper.Tpo $(DEPDIR)/bus_test_launch_helper-test-launch-helper.Po @@ -1492,582 +1077,6 @@ bus_test_launch_helper-activation-helper.obj: activation-helper.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test_launch_helper-activation-helper.obj `if test -f 'activation-helper.c'; then $(CYGPATH_W) 'activation-helper.c'; else $(CYGPATH_W) '$(srcdir)/activation-helper.c'; fi` -bus_test_system-config-loader-expat.o: config-loader-expat.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test_system-config-loader-expat.o -MD -MP -MF $(DEPDIR)/bus_test_system-config-loader-expat.Tpo -c -o bus_test_system-config-loader-expat.o `test -f 'config-loader-expat.c' || echo '$(srcdir)/'`config-loader-expat.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test_system-config-loader-expat.Tpo $(DEPDIR)/bus_test_system-config-loader-expat.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-loader-expat.c' object='bus_test_system-config-loader-expat.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test_system-config-loader-expat.o `test -f 'config-loader-expat.c' || echo '$(srcdir)/'`config-loader-expat.c - -bus_test_system-config-loader-expat.obj: config-loader-expat.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test_system-config-loader-expat.obj -MD -MP -MF $(DEPDIR)/bus_test_system-config-loader-expat.Tpo -c -o bus_test_system-config-loader-expat.obj `if test -f 'config-loader-expat.c'; then $(CYGPATH_W) 'config-loader-expat.c'; else $(CYGPATH_W) '$(srcdir)/config-loader-expat.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test_system-config-loader-expat.Tpo $(DEPDIR)/bus_test_system-config-loader-expat.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-loader-expat.c' object='bus_test_system-config-loader-expat.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test_system-config-loader-expat.obj `if test -f 'config-loader-expat.c'; then $(CYGPATH_W) 'config-loader-expat.c'; else $(CYGPATH_W) '$(srcdir)/config-loader-expat.c'; fi` - -bus_test_system-config-loader-libxml.o: config-loader-libxml.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test_system-config-loader-libxml.o -MD -MP -MF $(DEPDIR)/bus_test_system-config-loader-libxml.Tpo -c -o bus_test_system-config-loader-libxml.o `test -f 'config-loader-libxml.c' || echo '$(srcdir)/'`config-loader-libxml.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test_system-config-loader-libxml.Tpo $(DEPDIR)/bus_test_system-config-loader-libxml.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-loader-libxml.c' object='bus_test_system-config-loader-libxml.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test_system-config-loader-libxml.o `test -f 'config-loader-libxml.c' || echo '$(srcdir)/'`config-loader-libxml.c - -bus_test_system-config-loader-libxml.obj: config-loader-libxml.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test_system-config-loader-libxml.obj -MD -MP -MF $(DEPDIR)/bus_test_system-config-loader-libxml.Tpo -c -o bus_test_system-config-loader-libxml.obj `if test -f 'config-loader-libxml.c'; then $(CYGPATH_W) 'config-loader-libxml.c'; else $(CYGPATH_W) '$(srcdir)/config-loader-libxml.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test_system-config-loader-libxml.Tpo $(DEPDIR)/bus_test_system-config-loader-libxml.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-loader-libxml.c' object='bus_test_system-config-loader-libxml.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test_system-config-loader-libxml.obj `if test -f 'config-loader-libxml.c'; then $(CYGPATH_W) 'config-loader-libxml.c'; else $(CYGPATH_W) '$(srcdir)/config-loader-libxml.c'; fi` - -bus_test_system-config-parser-common.o: config-parser-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test_system-config-parser-common.o -MD -MP -MF $(DEPDIR)/bus_test_system-config-parser-common.Tpo -c -o bus_test_system-config-parser-common.o `test -f 'config-parser-common.c' || echo '$(srcdir)/'`config-parser-common.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test_system-config-parser-common.Tpo $(DEPDIR)/bus_test_system-config-parser-common.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-parser-common.c' object='bus_test_system-config-parser-common.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test_system-config-parser-common.o `test -f 'config-parser-common.c' || echo '$(srcdir)/'`config-parser-common.c - -bus_test_system-config-parser-common.obj: config-parser-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test_system-config-parser-common.obj -MD -MP -MF $(DEPDIR)/bus_test_system-config-parser-common.Tpo -c -o bus_test_system-config-parser-common.obj `if test -f 'config-parser-common.c'; then $(CYGPATH_W) 'config-parser-common.c'; else $(CYGPATH_W) '$(srcdir)/config-parser-common.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test_system-config-parser-common.Tpo $(DEPDIR)/bus_test_system-config-parser-common.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-parser-common.c' object='bus_test_system-config-parser-common.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test_system-config-parser-common.obj `if test -f 'config-parser-common.c'; then $(CYGPATH_W) 'config-parser-common.c'; else $(CYGPATH_W) '$(srcdir)/config-parser-common.c'; fi` - -bus_test_system-config-parser-trivial.o: config-parser-trivial.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test_system-config-parser-trivial.o -MD -MP -MF $(DEPDIR)/bus_test_system-config-parser-trivial.Tpo -c -o bus_test_system-config-parser-trivial.o `test -f 'config-parser-trivial.c' || echo '$(srcdir)/'`config-parser-trivial.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test_system-config-parser-trivial.Tpo $(DEPDIR)/bus_test_system-config-parser-trivial.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-parser-trivial.c' object='bus_test_system-config-parser-trivial.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test_system-config-parser-trivial.o `test -f 'config-parser-trivial.c' || echo '$(srcdir)/'`config-parser-trivial.c - -bus_test_system-config-parser-trivial.obj: config-parser-trivial.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test_system-config-parser-trivial.obj -MD -MP -MF $(DEPDIR)/bus_test_system-config-parser-trivial.Tpo -c -o bus_test_system-config-parser-trivial.obj `if test -f 'config-parser-trivial.c'; then $(CYGPATH_W) 'config-parser-trivial.c'; else $(CYGPATH_W) '$(srcdir)/config-parser-trivial.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test_system-config-parser-trivial.Tpo $(DEPDIR)/bus_test_system-config-parser-trivial.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-parser-trivial.c' object='bus_test_system-config-parser-trivial.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test_system-config-parser-trivial.obj `if test -f 'config-parser-trivial.c'; then $(CYGPATH_W) 'config-parser-trivial.c'; else $(CYGPATH_W) '$(srcdir)/config-parser-trivial.c'; fi` - -bus_test_system-utils.o: utils.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test_system-utils.o -MD -MP -MF $(DEPDIR)/bus_test_system-utils.Tpo -c -o bus_test_system-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test_system-utils.Tpo $(DEPDIR)/bus_test_system-utils.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='utils.c' object='bus_test_system-utils.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test_system-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c - -bus_test_system-utils.obj: utils.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test_system-utils.obj -MD -MP -MF $(DEPDIR)/bus_test_system-utils.Tpo -c -o bus_test_system-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test_system-utils.Tpo $(DEPDIR)/bus_test_system-utils.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='utils.c' object='bus_test_system-utils.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test_system-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi` - -bus_test_system-test-system.o: test-system.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test_system-test-system.o -MD -MP -MF $(DEPDIR)/bus_test_system-test-system.Tpo -c -o bus_test_system-test-system.o `test -f 'test-system.c' || echo '$(srcdir)/'`test-system.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test_system-test-system.Tpo $(DEPDIR)/bus_test_system-test-system.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-system.c' object='bus_test_system-test-system.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test_system-test-system.o `test -f 'test-system.c' || echo '$(srcdir)/'`test-system.c - -bus_test_system-test-system.obj: test-system.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bus_test_system-test-system.obj -MD -MP -MF $(DEPDIR)/bus_test_system-test-system.Tpo -c -o bus_test_system-test-system.obj `if test -f 'test-system.c'; then $(CYGPATH_W) 'test-system.c'; else $(CYGPATH_W) '$(srcdir)/test-system.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bus_test_system-test-system.Tpo $(DEPDIR)/bus_test_system-test-system.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-system.c' object='bus_test_system-test-system.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bus_test_system_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bus_test_system-test-system.obj `if test -f 'test-system.c'; then $(CYGPATH_W) 'test-system.c'; else $(CYGPATH_W) '$(srcdir)/test-system.c'; fi` - -dbus_daemon-activation.o: activation.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-activation.o -MD -MP -MF $(DEPDIR)/dbus_daemon-activation.Tpo -c -o dbus_daemon-activation.o `test -f 'activation.c' || echo '$(srcdir)/'`activation.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-activation.Tpo $(DEPDIR)/dbus_daemon-activation.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='activation.c' object='dbus_daemon-activation.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-activation.o `test -f 'activation.c' || echo '$(srcdir)/'`activation.c - -dbus_daemon-activation.obj: activation.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-activation.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-activation.Tpo -c -o dbus_daemon-activation.obj `if test -f 'activation.c'; then $(CYGPATH_W) 'activation.c'; else $(CYGPATH_W) '$(srcdir)/activation.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-activation.Tpo $(DEPDIR)/dbus_daemon-activation.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='activation.c' object='dbus_daemon-activation.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-activation.obj `if test -f 'activation.c'; then $(CYGPATH_W) 'activation.c'; else $(CYGPATH_W) '$(srcdir)/activation.c'; fi` - -dbus_daemon-bus.o: bus.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-bus.o -MD -MP -MF $(DEPDIR)/dbus_daemon-bus.Tpo -c -o dbus_daemon-bus.o `test -f 'bus.c' || echo '$(srcdir)/'`bus.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-bus.Tpo $(DEPDIR)/dbus_daemon-bus.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bus.c' object='dbus_daemon-bus.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-bus.o `test -f 'bus.c' || echo '$(srcdir)/'`bus.c - -dbus_daemon-bus.obj: bus.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-bus.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-bus.Tpo -c -o dbus_daemon-bus.obj `if test -f 'bus.c'; then $(CYGPATH_W) 'bus.c'; else $(CYGPATH_W) '$(srcdir)/bus.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-bus.Tpo $(DEPDIR)/dbus_daemon-bus.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bus.c' object='dbus_daemon-bus.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-bus.obj `if test -f 'bus.c'; then $(CYGPATH_W) 'bus.c'; else $(CYGPATH_W) '$(srcdir)/bus.c'; fi` - -dbus_daemon-config-parser.o: config-parser.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-config-parser.o -MD -MP -MF $(DEPDIR)/dbus_daemon-config-parser.Tpo -c -o dbus_daemon-config-parser.o `test -f 'config-parser.c' || echo '$(srcdir)/'`config-parser.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-config-parser.Tpo $(DEPDIR)/dbus_daemon-config-parser.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-parser.c' object='dbus_daemon-config-parser.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-config-parser.o `test -f 'config-parser.c' || echo '$(srcdir)/'`config-parser.c - -dbus_daemon-config-parser.obj: config-parser.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-config-parser.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-config-parser.Tpo -c -o dbus_daemon-config-parser.obj `if test -f 'config-parser.c'; then $(CYGPATH_W) 'config-parser.c'; else $(CYGPATH_W) '$(srcdir)/config-parser.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-config-parser.Tpo $(DEPDIR)/dbus_daemon-config-parser.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-parser.c' object='dbus_daemon-config-parser.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-config-parser.obj `if test -f 'config-parser.c'; then $(CYGPATH_W) 'config-parser.c'; else $(CYGPATH_W) '$(srcdir)/config-parser.c'; fi` - -dbus_daemon-config-parser-common.o: config-parser-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-config-parser-common.o -MD -MP -MF $(DEPDIR)/dbus_daemon-config-parser-common.Tpo -c -o dbus_daemon-config-parser-common.o `test -f 'config-parser-common.c' || echo '$(srcdir)/'`config-parser-common.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-config-parser-common.Tpo $(DEPDIR)/dbus_daemon-config-parser-common.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-parser-common.c' object='dbus_daemon-config-parser-common.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-config-parser-common.o `test -f 'config-parser-common.c' || echo '$(srcdir)/'`config-parser-common.c - -dbus_daemon-config-parser-common.obj: config-parser-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-config-parser-common.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-config-parser-common.Tpo -c -o dbus_daemon-config-parser-common.obj `if test -f 'config-parser-common.c'; then $(CYGPATH_W) 'config-parser-common.c'; else $(CYGPATH_W) '$(srcdir)/config-parser-common.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-config-parser-common.Tpo $(DEPDIR)/dbus_daemon-config-parser-common.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-parser-common.c' object='dbus_daemon-config-parser-common.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-config-parser-common.obj `if test -f 'config-parser-common.c'; then $(CYGPATH_W) 'config-parser-common.c'; else $(CYGPATH_W) '$(srcdir)/config-parser-common.c'; fi` - -dbus_daemon-connection.o: connection.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-connection.o -MD -MP -MF $(DEPDIR)/dbus_daemon-connection.Tpo -c -o dbus_daemon-connection.o `test -f 'connection.c' || echo '$(srcdir)/'`connection.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-connection.Tpo $(DEPDIR)/dbus_daemon-connection.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='connection.c' object='dbus_daemon-connection.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-connection.o `test -f 'connection.c' || echo '$(srcdir)/'`connection.c - -dbus_daemon-connection.obj: connection.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-connection.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-connection.Tpo -c -o dbus_daemon-connection.obj `if test -f 'connection.c'; then $(CYGPATH_W) 'connection.c'; else $(CYGPATH_W) '$(srcdir)/connection.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-connection.Tpo $(DEPDIR)/dbus_daemon-connection.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='connection.c' object='dbus_daemon-connection.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-connection.obj `if test -f 'connection.c'; then $(CYGPATH_W) 'connection.c'; else $(CYGPATH_W) '$(srcdir)/connection.c'; fi` - -dbus_daemon-desktop-file.o: desktop-file.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-desktop-file.o -MD -MP -MF $(DEPDIR)/dbus_daemon-desktop-file.Tpo -c -o dbus_daemon-desktop-file.o `test -f 'desktop-file.c' || echo '$(srcdir)/'`desktop-file.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-desktop-file.Tpo $(DEPDIR)/dbus_daemon-desktop-file.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='desktop-file.c' object='dbus_daemon-desktop-file.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-desktop-file.o `test -f 'desktop-file.c' || echo '$(srcdir)/'`desktop-file.c - -dbus_daemon-desktop-file.obj: desktop-file.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-desktop-file.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-desktop-file.Tpo -c -o dbus_daemon-desktop-file.obj `if test -f 'desktop-file.c'; then $(CYGPATH_W) 'desktop-file.c'; else $(CYGPATH_W) '$(srcdir)/desktop-file.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-desktop-file.Tpo $(DEPDIR)/dbus_daemon-desktop-file.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='desktop-file.c' object='dbus_daemon-desktop-file.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-desktop-file.obj `if test -f 'desktop-file.c'; then $(CYGPATH_W) 'desktop-file.c'; else $(CYGPATH_W) '$(srcdir)/desktop-file.c'; fi` - -dbus_daemon-dir-watch-default.o: dir-watch-default.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-dir-watch-default.o -MD -MP -MF $(DEPDIR)/dbus_daemon-dir-watch-default.Tpo -c -o dbus_daemon-dir-watch-default.o `test -f 'dir-watch-default.c' || echo '$(srcdir)/'`dir-watch-default.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-dir-watch-default.Tpo $(DEPDIR)/dbus_daemon-dir-watch-default.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dir-watch-default.c' object='dbus_daemon-dir-watch-default.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-dir-watch-default.o `test -f 'dir-watch-default.c' || echo '$(srcdir)/'`dir-watch-default.c - -dbus_daemon-dir-watch-default.obj: dir-watch-default.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-dir-watch-default.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-dir-watch-default.Tpo -c -o dbus_daemon-dir-watch-default.obj `if test -f 'dir-watch-default.c'; then $(CYGPATH_W) 'dir-watch-default.c'; else $(CYGPATH_W) '$(srcdir)/dir-watch-default.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-dir-watch-default.Tpo $(DEPDIR)/dbus_daemon-dir-watch-default.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dir-watch-default.c' object='dbus_daemon-dir-watch-default.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-dir-watch-default.obj `if test -f 'dir-watch-default.c'; then $(CYGPATH_W) 'dir-watch-default.c'; else $(CYGPATH_W) '$(srcdir)/dir-watch-default.c'; fi` - -dbus_daemon-dir-watch-dnotify.o: dir-watch-dnotify.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-dir-watch-dnotify.o -MD -MP -MF $(DEPDIR)/dbus_daemon-dir-watch-dnotify.Tpo -c -o dbus_daemon-dir-watch-dnotify.o `test -f 'dir-watch-dnotify.c' || echo '$(srcdir)/'`dir-watch-dnotify.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-dir-watch-dnotify.Tpo $(DEPDIR)/dbus_daemon-dir-watch-dnotify.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dir-watch-dnotify.c' object='dbus_daemon-dir-watch-dnotify.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-dir-watch-dnotify.o `test -f 'dir-watch-dnotify.c' || echo '$(srcdir)/'`dir-watch-dnotify.c - -dbus_daemon-dir-watch-dnotify.obj: dir-watch-dnotify.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-dir-watch-dnotify.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-dir-watch-dnotify.Tpo -c -o dbus_daemon-dir-watch-dnotify.obj `if test -f 'dir-watch-dnotify.c'; then $(CYGPATH_W) 'dir-watch-dnotify.c'; else $(CYGPATH_W) '$(srcdir)/dir-watch-dnotify.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-dir-watch-dnotify.Tpo $(DEPDIR)/dbus_daemon-dir-watch-dnotify.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dir-watch-dnotify.c' object='dbus_daemon-dir-watch-dnotify.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-dir-watch-dnotify.obj `if test -f 'dir-watch-dnotify.c'; then $(CYGPATH_W) 'dir-watch-dnotify.c'; else $(CYGPATH_W) '$(srcdir)/dir-watch-dnotify.c'; fi` - -dbus_daemon-dir-watch-inotify.o: dir-watch-inotify.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-dir-watch-inotify.o -MD -MP -MF $(DEPDIR)/dbus_daemon-dir-watch-inotify.Tpo -c -o dbus_daemon-dir-watch-inotify.o `test -f 'dir-watch-inotify.c' || echo '$(srcdir)/'`dir-watch-inotify.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-dir-watch-inotify.Tpo $(DEPDIR)/dbus_daemon-dir-watch-inotify.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dir-watch-inotify.c' object='dbus_daemon-dir-watch-inotify.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-dir-watch-inotify.o `test -f 'dir-watch-inotify.c' || echo '$(srcdir)/'`dir-watch-inotify.c - -dbus_daemon-dir-watch-inotify.obj: dir-watch-inotify.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-dir-watch-inotify.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-dir-watch-inotify.Tpo -c -o dbus_daemon-dir-watch-inotify.obj `if test -f 'dir-watch-inotify.c'; then $(CYGPATH_W) 'dir-watch-inotify.c'; else $(CYGPATH_W) '$(srcdir)/dir-watch-inotify.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-dir-watch-inotify.Tpo $(DEPDIR)/dbus_daemon-dir-watch-inotify.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dir-watch-inotify.c' object='dbus_daemon-dir-watch-inotify.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-dir-watch-inotify.obj `if test -f 'dir-watch-inotify.c'; then $(CYGPATH_W) 'dir-watch-inotify.c'; else $(CYGPATH_W) '$(srcdir)/dir-watch-inotify.c'; fi` - -dbus_daemon-dir-watch-kqueue.o: dir-watch-kqueue.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-dir-watch-kqueue.o -MD -MP -MF $(DEPDIR)/dbus_daemon-dir-watch-kqueue.Tpo -c -o dbus_daemon-dir-watch-kqueue.o `test -f 'dir-watch-kqueue.c' || echo '$(srcdir)/'`dir-watch-kqueue.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-dir-watch-kqueue.Tpo $(DEPDIR)/dbus_daemon-dir-watch-kqueue.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dir-watch-kqueue.c' object='dbus_daemon-dir-watch-kqueue.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-dir-watch-kqueue.o `test -f 'dir-watch-kqueue.c' || echo '$(srcdir)/'`dir-watch-kqueue.c - -dbus_daemon-dir-watch-kqueue.obj: dir-watch-kqueue.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-dir-watch-kqueue.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-dir-watch-kqueue.Tpo -c -o dbus_daemon-dir-watch-kqueue.obj `if test -f 'dir-watch-kqueue.c'; then $(CYGPATH_W) 'dir-watch-kqueue.c'; else $(CYGPATH_W) '$(srcdir)/dir-watch-kqueue.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-dir-watch-kqueue.Tpo $(DEPDIR)/dbus_daemon-dir-watch-kqueue.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dir-watch-kqueue.c' object='dbus_daemon-dir-watch-kqueue.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-dir-watch-kqueue.obj `if test -f 'dir-watch-kqueue.c'; then $(CYGPATH_W) 'dir-watch-kqueue.c'; else $(CYGPATH_W) '$(srcdir)/dir-watch-kqueue.c'; fi` - -dbus_daemon-dispatch.o: dispatch.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-dispatch.o -MD -MP -MF $(DEPDIR)/dbus_daemon-dispatch.Tpo -c -o dbus_daemon-dispatch.o `test -f 'dispatch.c' || echo '$(srcdir)/'`dispatch.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-dispatch.Tpo $(DEPDIR)/dbus_daemon-dispatch.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dispatch.c' object='dbus_daemon-dispatch.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-dispatch.o `test -f 'dispatch.c' || echo '$(srcdir)/'`dispatch.c - -dbus_daemon-dispatch.obj: dispatch.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-dispatch.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-dispatch.Tpo -c -o dbus_daemon-dispatch.obj `if test -f 'dispatch.c'; then $(CYGPATH_W) 'dispatch.c'; else $(CYGPATH_W) '$(srcdir)/dispatch.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-dispatch.Tpo $(DEPDIR)/dbus_daemon-dispatch.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dispatch.c' object='dbus_daemon-dispatch.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-dispatch.obj `if test -f 'dispatch.c'; then $(CYGPATH_W) 'dispatch.c'; else $(CYGPATH_W) '$(srcdir)/dispatch.c'; fi` - -dbus_daemon-driver.o: driver.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-driver.o -MD -MP -MF $(DEPDIR)/dbus_daemon-driver.Tpo -c -o dbus_daemon-driver.o `test -f 'driver.c' || echo '$(srcdir)/'`driver.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-driver.Tpo $(DEPDIR)/dbus_daemon-driver.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='driver.c' object='dbus_daemon-driver.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-driver.o `test -f 'driver.c' || echo '$(srcdir)/'`driver.c - -dbus_daemon-driver.obj: driver.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-driver.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-driver.Tpo -c -o dbus_daemon-driver.obj `if test -f 'driver.c'; then $(CYGPATH_W) 'driver.c'; else $(CYGPATH_W) '$(srcdir)/driver.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-driver.Tpo $(DEPDIR)/dbus_daemon-driver.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='driver.c' object='dbus_daemon-driver.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-driver.obj `if test -f 'driver.c'; then $(CYGPATH_W) 'driver.c'; else $(CYGPATH_W) '$(srcdir)/driver.c'; fi` - -dbus_daemon-expirelist.o: expirelist.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-expirelist.o -MD -MP -MF $(DEPDIR)/dbus_daemon-expirelist.Tpo -c -o dbus_daemon-expirelist.o `test -f 'expirelist.c' || echo '$(srcdir)/'`expirelist.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-expirelist.Tpo $(DEPDIR)/dbus_daemon-expirelist.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='expirelist.c' object='dbus_daemon-expirelist.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-expirelist.o `test -f 'expirelist.c' || echo '$(srcdir)/'`expirelist.c - -dbus_daemon-expirelist.obj: expirelist.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-expirelist.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-expirelist.Tpo -c -o dbus_daemon-expirelist.obj `if test -f 'expirelist.c'; then $(CYGPATH_W) 'expirelist.c'; else $(CYGPATH_W) '$(srcdir)/expirelist.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-expirelist.Tpo $(DEPDIR)/dbus_daemon-expirelist.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='expirelist.c' object='dbus_daemon-expirelist.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-expirelist.obj `if test -f 'expirelist.c'; then $(CYGPATH_W) 'expirelist.c'; else $(CYGPATH_W) '$(srcdir)/expirelist.c'; fi` - -dbus_daemon-policy.o: policy.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-policy.o -MD -MP -MF $(DEPDIR)/dbus_daemon-policy.Tpo -c -o dbus_daemon-policy.o `test -f 'policy.c' || echo '$(srcdir)/'`policy.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-policy.Tpo $(DEPDIR)/dbus_daemon-policy.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='policy.c' object='dbus_daemon-policy.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-policy.o `test -f 'policy.c' || echo '$(srcdir)/'`policy.c - -dbus_daemon-policy.obj: policy.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-policy.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-policy.Tpo -c -o dbus_daemon-policy.obj `if test -f 'policy.c'; then $(CYGPATH_W) 'policy.c'; else $(CYGPATH_W) '$(srcdir)/policy.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-policy.Tpo $(DEPDIR)/dbus_daemon-policy.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='policy.c' object='dbus_daemon-policy.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-policy.obj `if test -f 'policy.c'; then $(CYGPATH_W) 'policy.c'; else $(CYGPATH_W) '$(srcdir)/policy.c'; fi` - -dbus_daemon-selinux.o: selinux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-selinux.o -MD -MP -MF $(DEPDIR)/dbus_daemon-selinux.Tpo -c -o dbus_daemon-selinux.o `test -f 'selinux.c' || echo '$(srcdir)/'`selinux.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-selinux.Tpo $(DEPDIR)/dbus_daemon-selinux.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='selinux.c' object='dbus_daemon-selinux.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-selinux.o `test -f 'selinux.c' || echo '$(srcdir)/'`selinux.c - -dbus_daemon-selinux.obj: selinux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-selinux.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-selinux.Tpo -c -o dbus_daemon-selinux.obj `if test -f 'selinux.c'; then $(CYGPATH_W) 'selinux.c'; else $(CYGPATH_W) '$(srcdir)/selinux.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-selinux.Tpo $(DEPDIR)/dbus_daemon-selinux.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='selinux.c' object='dbus_daemon-selinux.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-selinux.obj `if test -f 'selinux.c'; then $(CYGPATH_W) 'selinux.c'; else $(CYGPATH_W) '$(srcdir)/selinux.c'; fi` - -dbus_daemon-services.o: services.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-services.o -MD -MP -MF $(DEPDIR)/dbus_daemon-services.Tpo -c -o dbus_daemon-services.o `test -f 'services.c' || echo '$(srcdir)/'`services.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-services.Tpo $(DEPDIR)/dbus_daemon-services.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='services.c' object='dbus_daemon-services.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-services.o `test -f 'services.c' || echo '$(srcdir)/'`services.c - -dbus_daemon-services.obj: services.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-services.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-services.Tpo -c -o dbus_daemon-services.obj `if test -f 'services.c'; then $(CYGPATH_W) 'services.c'; else $(CYGPATH_W) '$(srcdir)/services.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-services.Tpo $(DEPDIR)/dbus_daemon-services.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='services.c' object='dbus_daemon-services.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-services.obj `if test -f 'services.c'; then $(CYGPATH_W) 'services.c'; else $(CYGPATH_W) '$(srcdir)/services.c'; fi` - -dbus_daemon-signals.o: signals.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-signals.o -MD -MP -MF $(DEPDIR)/dbus_daemon-signals.Tpo -c -o dbus_daemon-signals.o `test -f 'signals.c' || echo '$(srcdir)/'`signals.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-signals.Tpo $(DEPDIR)/dbus_daemon-signals.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='signals.c' object='dbus_daemon-signals.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-signals.o `test -f 'signals.c' || echo '$(srcdir)/'`signals.c - -dbus_daemon-signals.obj: signals.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-signals.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-signals.Tpo -c -o dbus_daemon-signals.obj `if test -f 'signals.c'; then $(CYGPATH_W) 'signals.c'; else $(CYGPATH_W) '$(srcdir)/signals.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-signals.Tpo $(DEPDIR)/dbus_daemon-signals.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='signals.c' object='dbus_daemon-signals.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-signals.obj `if test -f 'signals.c'; then $(CYGPATH_W) 'signals.c'; else $(CYGPATH_W) '$(srcdir)/signals.c'; fi` - -dbus_daemon-test.o: test.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-test.o -MD -MP -MF $(DEPDIR)/dbus_daemon-test.Tpo -c -o dbus_daemon-test.o `test -f 'test.c' || echo '$(srcdir)/'`test.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-test.Tpo $(DEPDIR)/dbus_daemon-test.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test.c' object='dbus_daemon-test.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-test.o `test -f 'test.c' || echo '$(srcdir)/'`test.c - -dbus_daemon-test.obj: test.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-test.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-test.Tpo -c -o dbus_daemon-test.obj `if test -f 'test.c'; then $(CYGPATH_W) 'test.c'; else $(CYGPATH_W) '$(srcdir)/test.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-test.Tpo $(DEPDIR)/dbus_daemon-test.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test.c' object='dbus_daemon-test.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-test.obj `if test -f 'test.c'; then $(CYGPATH_W) 'test.c'; else $(CYGPATH_W) '$(srcdir)/test.c'; fi` - -dbus_daemon-utils.o: utils.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-utils.o -MD -MP -MF $(DEPDIR)/dbus_daemon-utils.Tpo -c -o dbus_daemon-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-utils.Tpo $(DEPDIR)/dbus_daemon-utils.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='utils.c' object='dbus_daemon-utils.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c - -dbus_daemon-utils.obj: utils.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-utils.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-utils.Tpo -c -o dbus_daemon-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-utils.Tpo $(DEPDIR)/dbus_daemon-utils.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='utils.c' object='dbus_daemon-utils.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi` - -dbus_daemon-config-loader-expat.o: config-loader-expat.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-config-loader-expat.o -MD -MP -MF $(DEPDIR)/dbus_daemon-config-loader-expat.Tpo -c -o dbus_daemon-config-loader-expat.o `test -f 'config-loader-expat.c' || echo '$(srcdir)/'`config-loader-expat.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-config-loader-expat.Tpo $(DEPDIR)/dbus_daemon-config-loader-expat.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-loader-expat.c' object='dbus_daemon-config-loader-expat.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-config-loader-expat.o `test -f 'config-loader-expat.c' || echo '$(srcdir)/'`config-loader-expat.c - -dbus_daemon-config-loader-expat.obj: config-loader-expat.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-config-loader-expat.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-config-loader-expat.Tpo -c -o dbus_daemon-config-loader-expat.obj `if test -f 'config-loader-expat.c'; then $(CYGPATH_W) 'config-loader-expat.c'; else $(CYGPATH_W) '$(srcdir)/config-loader-expat.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-config-loader-expat.Tpo $(DEPDIR)/dbus_daemon-config-loader-expat.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-loader-expat.c' object='dbus_daemon-config-loader-expat.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-config-loader-expat.obj `if test -f 'config-loader-expat.c'; then $(CYGPATH_W) 'config-loader-expat.c'; else $(CYGPATH_W) '$(srcdir)/config-loader-expat.c'; fi` - -dbus_daemon-config-loader-libxml.o: config-loader-libxml.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-config-loader-libxml.o -MD -MP -MF $(DEPDIR)/dbus_daemon-config-loader-libxml.Tpo -c -o dbus_daemon-config-loader-libxml.o `test -f 'config-loader-libxml.c' || echo '$(srcdir)/'`config-loader-libxml.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-config-loader-libxml.Tpo $(DEPDIR)/dbus_daemon-config-loader-libxml.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-loader-libxml.c' object='dbus_daemon-config-loader-libxml.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-config-loader-libxml.o `test -f 'config-loader-libxml.c' || echo '$(srcdir)/'`config-loader-libxml.c - -dbus_daemon-config-loader-libxml.obj: config-loader-libxml.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-config-loader-libxml.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-config-loader-libxml.Tpo -c -o dbus_daemon-config-loader-libxml.obj `if test -f 'config-loader-libxml.c'; then $(CYGPATH_W) 'config-loader-libxml.c'; else $(CYGPATH_W) '$(srcdir)/config-loader-libxml.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-config-loader-libxml.Tpo $(DEPDIR)/dbus_daemon-config-loader-libxml.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-loader-libxml.c' object='dbus_daemon-config-loader-libxml.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-config-loader-libxml.obj `if test -f 'config-loader-libxml.c'; then $(CYGPATH_W) 'config-loader-libxml.c'; else $(CYGPATH_W) '$(srcdir)/config-loader-libxml.c'; fi` - -dbus_daemon-main.o: main.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-main.o -MD -MP -MF $(DEPDIR)/dbus_daemon-main.Tpo -c -o dbus_daemon-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-main.Tpo $(DEPDIR)/dbus_daemon-main.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='dbus_daemon-main.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c - -dbus_daemon-main.obj: main.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon-main.obj -MD -MP -MF $(DEPDIR)/dbus_daemon-main.Tpo -c -o dbus_daemon-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon-main.Tpo $(DEPDIR)/dbus_daemon-main.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='dbus_daemon-main.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` - -dbus_daemon_launch_helper-activation-helper-bin.o: activation-helper-bin.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon_launch_helper-activation-helper-bin.o -MD -MP -MF $(DEPDIR)/dbus_daemon_launch_helper-activation-helper-bin.Tpo -c -o dbus_daemon_launch_helper-activation-helper-bin.o `test -f 'activation-helper-bin.c' || echo '$(srcdir)/'`activation-helper-bin.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon_launch_helper-activation-helper-bin.Tpo $(DEPDIR)/dbus_daemon_launch_helper-activation-helper-bin.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='activation-helper-bin.c' object='dbus_daemon_launch_helper-activation-helper-bin.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon_launch_helper-activation-helper-bin.o `test -f 'activation-helper-bin.c' || echo '$(srcdir)/'`activation-helper-bin.c - -dbus_daemon_launch_helper-activation-helper-bin.obj: activation-helper-bin.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon_launch_helper-activation-helper-bin.obj -MD -MP -MF $(DEPDIR)/dbus_daemon_launch_helper-activation-helper-bin.Tpo -c -o dbus_daemon_launch_helper-activation-helper-bin.obj `if test -f 'activation-helper-bin.c'; then $(CYGPATH_W) 'activation-helper-bin.c'; else $(CYGPATH_W) '$(srcdir)/activation-helper-bin.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon_launch_helper-activation-helper-bin.Tpo $(DEPDIR)/dbus_daemon_launch_helper-activation-helper-bin.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='activation-helper-bin.c' object='dbus_daemon_launch_helper-activation-helper-bin.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon_launch_helper-activation-helper-bin.obj `if test -f 'activation-helper-bin.c'; then $(CYGPATH_W) 'activation-helper-bin.c'; else $(CYGPATH_W) '$(srcdir)/activation-helper-bin.c'; fi` - -dbus_daemon_launch_helper-config-loader-expat.o: config-loader-expat.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon_launch_helper-config-loader-expat.o -MD -MP -MF $(DEPDIR)/dbus_daemon_launch_helper-config-loader-expat.Tpo -c -o dbus_daemon_launch_helper-config-loader-expat.o `test -f 'config-loader-expat.c' || echo '$(srcdir)/'`config-loader-expat.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon_launch_helper-config-loader-expat.Tpo $(DEPDIR)/dbus_daemon_launch_helper-config-loader-expat.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-loader-expat.c' object='dbus_daemon_launch_helper-config-loader-expat.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon_launch_helper-config-loader-expat.o `test -f 'config-loader-expat.c' || echo '$(srcdir)/'`config-loader-expat.c - -dbus_daemon_launch_helper-config-loader-expat.obj: config-loader-expat.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon_launch_helper-config-loader-expat.obj -MD -MP -MF $(DEPDIR)/dbus_daemon_launch_helper-config-loader-expat.Tpo -c -o dbus_daemon_launch_helper-config-loader-expat.obj `if test -f 'config-loader-expat.c'; then $(CYGPATH_W) 'config-loader-expat.c'; else $(CYGPATH_W) '$(srcdir)/config-loader-expat.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon_launch_helper-config-loader-expat.Tpo $(DEPDIR)/dbus_daemon_launch_helper-config-loader-expat.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-loader-expat.c' object='dbus_daemon_launch_helper-config-loader-expat.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon_launch_helper-config-loader-expat.obj `if test -f 'config-loader-expat.c'; then $(CYGPATH_W) 'config-loader-expat.c'; else $(CYGPATH_W) '$(srcdir)/config-loader-expat.c'; fi` - -dbus_daemon_launch_helper-config-loader-libxml.o: config-loader-libxml.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon_launch_helper-config-loader-libxml.o -MD -MP -MF $(DEPDIR)/dbus_daemon_launch_helper-config-loader-libxml.Tpo -c -o dbus_daemon_launch_helper-config-loader-libxml.o `test -f 'config-loader-libxml.c' || echo '$(srcdir)/'`config-loader-libxml.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon_launch_helper-config-loader-libxml.Tpo $(DEPDIR)/dbus_daemon_launch_helper-config-loader-libxml.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-loader-libxml.c' object='dbus_daemon_launch_helper-config-loader-libxml.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon_launch_helper-config-loader-libxml.o `test -f 'config-loader-libxml.c' || echo '$(srcdir)/'`config-loader-libxml.c - -dbus_daemon_launch_helper-config-loader-libxml.obj: config-loader-libxml.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon_launch_helper-config-loader-libxml.obj -MD -MP -MF $(DEPDIR)/dbus_daemon_launch_helper-config-loader-libxml.Tpo -c -o dbus_daemon_launch_helper-config-loader-libxml.obj `if test -f 'config-loader-libxml.c'; then $(CYGPATH_W) 'config-loader-libxml.c'; else $(CYGPATH_W) '$(srcdir)/config-loader-libxml.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon_launch_helper-config-loader-libxml.Tpo $(DEPDIR)/dbus_daemon_launch_helper-config-loader-libxml.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-loader-libxml.c' object='dbus_daemon_launch_helper-config-loader-libxml.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon_launch_helper-config-loader-libxml.obj `if test -f 'config-loader-libxml.c'; then $(CYGPATH_W) 'config-loader-libxml.c'; else $(CYGPATH_W) '$(srcdir)/config-loader-libxml.c'; fi` - -dbus_daemon_launch_helper-config-parser-common.o: config-parser-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon_launch_helper-config-parser-common.o -MD -MP -MF $(DEPDIR)/dbus_daemon_launch_helper-config-parser-common.Tpo -c -o dbus_daemon_launch_helper-config-parser-common.o `test -f 'config-parser-common.c' || echo '$(srcdir)/'`config-parser-common.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon_launch_helper-config-parser-common.Tpo $(DEPDIR)/dbus_daemon_launch_helper-config-parser-common.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-parser-common.c' object='dbus_daemon_launch_helper-config-parser-common.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon_launch_helper-config-parser-common.o `test -f 'config-parser-common.c' || echo '$(srcdir)/'`config-parser-common.c - -dbus_daemon_launch_helper-config-parser-common.obj: config-parser-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon_launch_helper-config-parser-common.obj -MD -MP -MF $(DEPDIR)/dbus_daemon_launch_helper-config-parser-common.Tpo -c -o dbus_daemon_launch_helper-config-parser-common.obj `if test -f 'config-parser-common.c'; then $(CYGPATH_W) 'config-parser-common.c'; else $(CYGPATH_W) '$(srcdir)/config-parser-common.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon_launch_helper-config-parser-common.Tpo $(DEPDIR)/dbus_daemon_launch_helper-config-parser-common.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-parser-common.c' object='dbus_daemon_launch_helper-config-parser-common.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon_launch_helper-config-parser-common.obj `if test -f 'config-parser-common.c'; then $(CYGPATH_W) 'config-parser-common.c'; else $(CYGPATH_W) '$(srcdir)/config-parser-common.c'; fi` - -dbus_daemon_launch_helper-config-parser-trivial.o: config-parser-trivial.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon_launch_helper-config-parser-trivial.o -MD -MP -MF $(DEPDIR)/dbus_daemon_launch_helper-config-parser-trivial.Tpo -c -o dbus_daemon_launch_helper-config-parser-trivial.o `test -f 'config-parser-trivial.c' || echo '$(srcdir)/'`config-parser-trivial.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon_launch_helper-config-parser-trivial.Tpo $(DEPDIR)/dbus_daemon_launch_helper-config-parser-trivial.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-parser-trivial.c' object='dbus_daemon_launch_helper-config-parser-trivial.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon_launch_helper-config-parser-trivial.o `test -f 'config-parser-trivial.c' || echo '$(srcdir)/'`config-parser-trivial.c - -dbus_daemon_launch_helper-config-parser-trivial.obj: config-parser-trivial.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon_launch_helper-config-parser-trivial.obj -MD -MP -MF $(DEPDIR)/dbus_daemon_launch_helper-config-parser-trivial.Tpo -c -o dbus_daemon_launch_helper-config-parser-trivial.obj `if test -f 'config-parser-trivial.c'; then $(CYGPATH_W) 'config-parser-trivial.c'; else $(CYGPATH_W) '$(srcdir)/config-parser-trivial.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon_launch_helper-config-parser-trivial.Tpo $(DEPDIR)/dbus_daemon_launch_helper-config-parser-trivial.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config-parser-trivial.c' object='dbus_daemon_launch_helper-config-parser-trivial.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon_launch_helper-config-parser-trivial.obj `if test -f 'config-parser-trivial.c'; then $(CYGPATH_W) 'config-parser-trivial.c'; else $(CYGPATH_W) '$(srcdir)/config-parser-trivial.c'; fi` - -dbus_daemon_launch_helper-desktop-file.o: desktop-file.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon_launch_helper-desktop-file.o -MD -MP -MF $(DEPDIR)/dbus_daemon_launch_helper-desktop-file.Tpo -c -o dbus_daemon_launch_helper-desktop-file.o `test -f 'desktop-file.c' || echo '$(srcdir)/'`desktop-file.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon_launch_helper-desktop-file.Tpo $(DEPDIR)/dbus_daemon_launch_helper-desktop-file.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='desktop-file.c' object='dbus_daemon_launch_helper-desktop-file.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon_launch_helper-desktop-file.o `test -f 'desktop-file.c' || echo '$(srcdir)/'`desktop-file.c - -dbus_daemon_launch_helper-desktop-file.obj: desktop-file.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon_launch_helper-desktop-file.obj -MD -MP -MF $(DEPDIR)/dbus_daemon_launch_helper-desktop-file.Tpo -c -o dbus_daemon_launch_helper-desktop-file.obj `if test -f 'desktop-file.c'; then $(CYGPATH_W) 'desktop-file.c'; else $(CYGPATH_W) '$(srcdir)/desktop-file.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon_launch_helper-desktop-file.Tpo $(DEPDIR)/dbus_daemon_launch_helper-desktop-file.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='desktop-file.c' object='dbus_daemon_launch_helper-desktop-file.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon_launch_helper-desktop-file.obj `if test -f 'desktop-file.c'; then $(CYGPATH_W) 'desktop-file.c'; else $(CYGPATH_W) '$(srcdir)/desktop-file.c'; fi` - -dbus_daemon_launch_helper-utils.o: utils.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon_launch_helper-utils.o -MD -MP -MF $(DEPDIR)/dbus_daemon_launch_helper-utils.Tpo -c -o dbus_daemon_launch_helper-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon_launch_helper-utils.Tpo $(DEPDIR)/dbus_daemon_launch_helper-utils.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='utils.c' object='dbus_daemon_launch_helper-utils.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon_launch_helper-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c - -dbus_daemon_launch_helper-utils.obj: utils.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon_launch_helper-utils.obj -MD -MP -MF $(DEPDIR)/dbus_daemon_launch_helper-utils.Tpo -c -o dbus_daemon_launch_helper-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon_launch_helper-utils.Tpo $(DEPDIR)/dbus_daemon_launch_helper-utils.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='utils.c' object='dbus_daemon_launch_helper-utils.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon_launch_helper-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi` - -dbus_daemon_launch_helper-activation-helper.o: activation-helper.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon_launch_helper-activation-helper.o -MD -MP -MF $(DEPDIR)/dbus_daemon_launch_helper-activation-helper.Tpo -c -o dbus_daemon_launch_helper-activation-helper.o `test -f 'activation-helper.c' || echo '$(srcdir)/'`activation-helper.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon_launch_helper-activation-helper.Tpo $(DEPDIR)/dbus_daemon_launch_helper-activation-helper.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='activation-helper.c' object='dbus_daemon_launch_helper-activation-helper.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon_launch_helper-activation-helper.o `test -f 'activation-helper.c' || echo '$(srcdir)/'`activation-helper.c - -dbus_daemon_launch_helper-activation-helper.obj: activation-helper.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon_launch_helper-activation-helper.obj -MD -MP -MF $(DEPDIR)/dbus_daemon_launch_helper-activation-helper.Tpo -c -o dbus_daemon_launch_helper-activation-helper.obj `if test -f 'activation-helper.c'; then $(CYGPATH_W) 'activation-helper.c'; else $(CYGPATH_W) '$(srcdir)/activation-helper.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon_launch_helper-activation-helper.Tpo $(DEPDIR)/dbus_daemon_launch_helper-activation-helper.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='activation-helper.c' object='dbus_daemon_launch_helper-activation-helper.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dbus_daemon_launch_helper-activation-helper.obj `if test -f 'activation-helper.c'; then $(CYGPATH_W) 'activation-helper.c'; else $(CYGPATH_W) '$(srcdir)/activation-helper.c'; fi` - dbus_daemon_launch_helper_test-activation-helper-bin.o: activation-helper-bin.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbus_daemon_launch_helper_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dbus_daemon_launch_helper_test-activation-helper-bin.o -MD -MP -MF $(DEPDIR)/dbus_daemon_launch_helper_test-activation-helper-bin.Tpo -c -o dbus_daemon_launch_helper_test-activation-helper-bin.o `test -f 'activation-helper-bin.c' || echo '$(srcdir)/'`activation-helper-bin.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dbus_daemon_launch_helper_test-activation-helper-bin.Tpo $(DEPDIR)/dbus_daemon_launch_helper_test-activation-helper-bin.Po @@ -2314,98 +1323,6 @@ GTAGS: distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ - fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ - else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ - else \ - skipped="($$skip tests were not run)"; \ - fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - echo "$$grn$$dashes"; \ - else \ - echo "$$red$$dashes"; \ - fi; \ - echo "$$banner"; \ - test -z "$$skipped" || echo "$$skipped"; \ - test -z "$$report" || echo "$$report"; \ - echo "$$dashes$$std"; \ - test "$$failed" -eq 0; \ - else :; fi - distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @@ -2437,7 +1354,6 @@ distdir: $(DISTFILES) fi; \ done check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(DATA) installdirs: @@ -2549,10 +1465,9 @@ uninstall-am: uninstall-agentDATA uninstall-binSCRIPTS \ uninstall-initdSCRIPTS uninstall-libexecPROGRAMS \ uninstall-systemdsystemunitDATA -.MAKE: check-am install-am install-data-am install-exec-am \ - install-strip +.MAKE: install-am install-data-am install-exec-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ +.PHONY: CTAGS GTAGS all all-am check check-am clean \ clean-dbus_daemon_execPROGRAMS clean-generic \ clean-libexecPROGRAMS clean-libtool clean-local \ clean-noinstPROGRAMS ctags distclean distclean-compile \ diff --git a/bus/activation.c b/bus/activation.c index 3177d023..d5424a7c 100644 --- a/bus/activation.c +++ b/bus/activation.c @@ -143,16 +143,6 @@ bus_pending_activation_entry_free (BusPendingActivationEntry *entry) dbus_free (entry); } -static void -handle_timeout_callback (DBusTimeout *timeout, - void *data) -{ - BusPendingActivation *pending_activation = data; - - while (!dbus_timeout_handle (pending_activation->timeout)) - _dbus_wait_for_memory (); -} - static BusPendingActivation * bus_pending_activation_ref (BusPendingActivation *pending_activation) { @@ -179,8 +169,7 @@ bus_pending_activation_unref (BusPendingActivation *pending_activation) if (pending_activation->timeout_added) { _dbus_loop_remove_timeout (bus_context_get_loop (pending_activation->activation->context), - pending_activation->timeout, - handle_timeout_callback, pending_activation); + pending_activation->timeout); pending_activation->timeout_added = FALSE; } @@ -1334,22 +1323,16 @@ handle_servicehelper_exit_error (int exit_code, } } -static dbus_bool_t -babysitter_watch_callback (DBusWatch *watch, - unsigned int condition, - void *data) +static void +pending_activation_finished_cb (DBusBabysitter *babysitter, + void *data) { BusPendingActivation *pending_activation = data; - dbus_bool_t retval; - DBusBabysitter *babysitter; dbus_bool_t uses_servicehelper; - babysitter = pending_activation->babysitter; - + _dbus_assert (babysitter == pending_activation->babysitter); _dbus_babysitter_ref (babysitter); - retval = dbus_watch_handle (watch, condition); - /* There are two major cases here; are we the system bus or the session? Here this * is distinguished by whether or not we use a setuid helper launcher. With the launch helper, * some process exit codes are meaningful, processed by handle_servicehelper_exit_error. @@ -1360,15 +1343,7 @@ babysitter_watch_callback (DBusWatch *watch, */ uses_servicehelper = bus_context_get_servicehelper (pending_activation->activation->context) != NULL; - /* FIXME this is broken in the same way that - * connection watches used to be; there should be - * a separate callback for status change, instead - * of doing "if we handled a watch status might - * have changed" - * - * Fixing this lets us move dbus_watch_handle - * calls into dbus-mainloop.c - */ + /* strictly speaking this is redundant with the check in dbus-spawn now */ if (_dbus_babysitter_get_child_exited (babysitter)) { DBusError error; @@ -1428,8 +1403,6 @@ babysitter_watch_callback (DBusWatch *watch, } _dbus_babysitter_unref (babysitter); - - return retval; } static dbus_bool_t @@ -1438,9 +1411,9 @@ add_babysitter_watch (DBusWatch *watch, { BusPendingActivation *pending_activation = data; - return _dbus_loop_add_watch (bus_context_get_loop (pending_activation->activation->context), - watch, babysitter_watch_callback, pending_activation, - NULL); + return _dbus_loop_add_watch ( + bus_context_get_loop (pending_activation->activation->context), + watch); } static void @@ -1450,7 +1423,7 @@ remove_babysitter_watch (DBusWatch *watch, BusPendingActivation *pending_activation = data; _dbus_loop_remove_watch (bus_context_get_loop (pending_activation->activation->context), - watch, babysitter_watch_callback, pending_activation); + watch); } static dbus_bool_t @@ -1860,10 +1833,7 @@ bus_activation_activate_service (BusActivation *activation, } if (!_dbus_loop_add_timeout (bus_context_get_loop (activation->context), - pending_activation->timeout, - handle_timeout_callback, - pending_activation, - NULL)) + pending_activation->timeout)) { _dbus_verbose ("Failed to add timeout for pending activation\n"); @@ -2133,6 +2103,10 @@ bus_activation_activate_service (BusActivation *activation, _dbus_assert (pending_activation->babysitter != NULL); + _dbus_babysitter_set_result_function (pending_activation->babysitter, + pending_activation_finished_cb, + pending_activation); + if (!_dbus_babysitter_set_watch_functions (pending_activation->babysitter, add_babysitter_watch, remove_babysitter_watch, @@ -103,19 +103,6 @@ server_get_context (DBusServer *server) } static dbus_bool_t -server_watch_callback (DBusWatch *watch, - unsigned int condition, - void *data) -{ - /* FIXME this can be done in dbus-mainloop.c - * if the code in activation.c for the babysitter - * watch handler is fixed. - */ - - return dbus_watch_handle (watch, condition); -} - -static dbus_bool_t add_server_watch (DBusWatch *watch, void *data) { @@ -124,9 +111,7 @@ add_server_watch (DBusWatch *watch, context = server_get_context (server); - return _dbus_loop_add_watch (context->loop, - watch, server_watch_callback, server, - NULL); + return _dbus_loop_add_watch (context->loop, watch); } static void @@ -138,17 +123,7 @@ remove_server_watch (DBusWatch *watch, context = server_get_context (server); - _dbus_loop_remove_watch (context->loop, - watch, server_watch_callback, server); -} - - -static void -server_timeout_callback (DBusTimeout *timeout, - void *data) -{ - /* can return FALSE on OOM but we just let it fire again later */ - dbus_timeout_handle (timeout); + _dbus_loop_remove_watch (context->loop, watch); } static dbus_bool_t @@ -160,8 +135,7 @@ add_server_timeout (DBusTimeout *timeout, context = server_get_context (server); - return _dbus_loop_add_timeout (context->loop, - timeout, server_timeout_callback, server, NULL); + return _dbus_loop_add_timeout (context->loop, timeout); } static void @@ -173,8 +147,7 @@ remove_server_timeout (DBusTimeout *timeout, context = server_get_context (server); - _dbus_loop_remove_timeout (context->loop, - timeout, server_timeout_callback, server); + _dbus_loop_remove_timeout (context->loop, timeout); } static void diff --git a/bus/config-parser-trivial.c b/bus/config-parser-trivial.c index f37b4fb4..6ef50f8e 100644 --- a/bus/config-parser-trivial.c +++ b/bus/config-parser-trivial.c @@ -188,7 +188,7 @@ bus_config_parser_start_element (BusConfigParser *parser, default: { /* we really don't care about the others... */ - _dbus_verbose (" START We dont care about '%s' type '%i'\n", element_name, parser->type); + _dbus_verbose (" START We don't care about '%s' type '%i'\n", element_name, parser->type); break; } } @@ -289,7 +289,7 @@ bus_config_parser_content (BusConfigParser *parser, default: { /* we don't care about the others... really */ - _dbus_verbose (" CONTENTS We dont care '%s' type '%i'\n", _dbus_string_get_const_data (&content_sane), parser->type); + _dbus_verbose (" CONTENTS We don't care about '%s' type '%i'\n", _dbus_string_get_const_data (&content_sane), parser->type); break; } } diff --git a/bus/config-parser.c b/bus/config-parser.c index c9dbdf93..f9432555 100644 --- a/bus/config-parser.c +++ b/bus/config-parser.c @@ -3395,6 +3395,10 @@ static const char *test_system_service_dir_matches[] = "/testusr/testshare/dbus-1/system-services", #endif DBUS_DATADIR"/dbus-1/system-services", +#ifdef DBUS_UNIX + "/lib/dbus-1/system-services", +#endif + #ifdef DBUS_WIN NULL, #endif diff --git a/bus/connection.c b/bus/connection.c index 8e7d222a..81f595d2 100644 --- a/bus/connection.c +++ b/bus/connection.c @@ -62,6 +62,16 @@ struct BusConnections DBusTimeout *expire_timeout; /**< Timeout for expiring incomplete connections. */ int stamp; /**< Incrementing number */ BusExpireList *pending_replies; /**< List of pending replies */ + +#ifdef DBUS_ENABLE_STATS + int total_match_rules; + int peak_match_rules; + int peak_match_rules_per_conn; + + int total_bus_names; + int peak_bus_names; + int peak_bus_names_per_conn; +#endif }; static dbus_int32_t connection_data_slot = -1; @@ -87,6 +97,11 @@ typedef struct long connection_tv_sec; /**< Time when we connected (seconds component) */ long connection_tv_usec; /**< Time when we connected (microsec component) */ int stamp; /**< connections->stamp last time we were traversed */ + +#ifdef DBUS_ENABLE_STATS + int peak_match_rules; + int peak_bus_names; +#endif } BusConnectionData; static dbus_bool_t bus_pending_reply_expired (BusExpireList *list, @@ -295,30 +310,12 @@ bus_connection_disconnected (DBusConnection *connection) } static dbus_bool_t -connection_watch_callback (DBusWatch *watch, - unsigned int condition, - void *data) -{ - /* FIXME this can be done in dbus-mainloop.c - * if the code in activation.c for the babysitter - * watch handler is fixed. - */ - -#if 0 - _dbus_verbose ("Calling handle_watch\n"); -#endif - return dbus_watch_handle (watch, condition); -} - -static dbus_bool_t add_connection_watch (DBusWatch *watch, void *data) { DBusConnection *connection = data; - return _dbus_loop_add_watch (connection_get_loop (connection), - watch, connection_watch_callback, connection, - NULL); + return _dbus_loop_add_watch (connection_get_loop (connection), watch); } static void @@ -327,18 +324,7 @@ remove_connection_watch (DBusWatch *watch, { DBusConnection *connection = data; - _dbus_loop_remove_watch (connection_get_loop (connection), - watch, connection_watch_callback, connection); -} - -static void -connection_timeout_callback (DBusTimeout *timeout, - void *data) -{ - /* DBusConnection *connection = data; */ - - /* can return FALSE on OOM but we just let it fire again later */ - dbus_timeout_handle (timeout); + _dbus_loop_remove_watch (connection_get_loop (connection), watch); } static dbus_bool_t @@ -347,8 +333,7 @@ add_connection_timeout (DBusTimeout *timeout, { DBusConnection *connection = data; - return _dbus_loop_add_timeout (connection_get_loop (connection), - timeout, connection_timeout_callback, connection, NULL); + return _dbus_loop_add_timeout (connection_get_loop (connection), timeout); } static void @@ -357,8 +342,7 @@ remove_connection_timeout (DBusTimeout *timeout, { DBusConnection *connection = data; - _dbus_loop_remove_timeout (connection_get_loop (connection), - timeout, connection_timeout_callback, connection); + _dbus_loop_remove_timeout (connection_get_loop (connection), timeout); } static void @@ -460,8 +444,7 @@ bus_connections_new (BusContext *context) goto failed_4; if (!_dbus_loop_add_timeout (bus_context_get_loop (context), - connections->expire_timeout, - call_timeout_callback, NULL, NULL)) + connections->expire_timeout)) goto failed_5; connections->refcount = 1; @@ -532,8 +515,7 @@ bus_connections_unref (BusConnections *connections) bus_expire_list_free (connections->pending_replies); _dbus_loop_remove_timeout (bus_context_get_loop (connections->context), - connections->expire_timeout, - call_timeout_callback, NULL); + connections->expire_timeout); _dbus_timeout_unref (connections->expire_timeout); @@ -1224,6 +1206,16 @@ bus_connection_send_oom_error (DBusConnection *connection, d->oom_preallocated = NULL; } +#ifdef DBUS_ENABLE_STATS +static void +update_peak (int *peak, + int n) +{ + if (*peak < n) + *peak = n; +} +#endif + void bus_connection_add_match_rule_link (DBusConnection *connection, DBusList *link) @@ -1236,6 +1228,15 @@ bus_connection_add_match_rule_link (DBusConnection *connection, _dbus_list_append_link (&d->match_rules, link); d->n_match_rules += 1; + +#ifdef DBUS_ENABLE_STATS + update_peak (&d->peak_match_rules, d->n_match_rules); + update_peak (&d->connections->peak_match_rules_per_conn, d->n_match_rules); + + d->connections->total_match_rules += 1; + update_peak (&d->connections->peak_match_rules, + d->connections->total_match_rules); +#endif } dbus_bool_t @@ -1267,6 +1268,10 @@ bus_connection_remove_match_rule (DBusConnection *connection, d->n_match_rules -= 1; _dbus_assert (d->n_match_rules >= 0); + +#ifdef DBUS_ENABLE_STATS + d->connections->total_match_rules -= 1; +#endif } int @@ -1292,6 +1297,16 @@ bus_connection_add_owned_service_link (DBusConnection *connection, _dbus_list_append_link (&d->services_owned, link); d->n_services_owned += 1; + +#ifdef DBUS_ENABLE_STATS + update_peak (&d->peak_bus_names, d->n_services_owned); + update_peak (&d->connections->peak_bus_names_per_conn, + d->n_services_owned); + + d->connections->total_bus_names += 1; + update_peak (&d->connections->peak_bus_names, + d->connections->total_bus_names); +#endif } dbus_bool_t @@ -1323,6 +1338,10 @@ bus_connection_remove_owned_service (DBusConnection *connection, d->n_services_owned -= 1; _dbus_assert (d->n_services_owned >= 0); + +#ifdef DBUS_ENABLE_STATS + d->connections->total_bus_names -= 1; +#endif } int @@ -2306,3 +2325,71 @@ bus_transaction_add_cancel_hook (BusTransaction *transaction, return TRUE; } + +#ifdef DBUS_ENABLE_STATS +int +bus_connections_get_n_active (BusConnections *connections) +{ + return connections->n_completed; +} + +int +bus_connections_get_n_incomplete (BusConnections *connections) +{ + return connections->n_incomplete; +} + +int +bus_connections_get_total_match_rules (BusConnections *connections) +{ + return connections->total_match_rules; +} + +int +bus_connections_get_peak_match_rules (BusConnections *connections) +{ + return connections->peak_match_rules; +} + +int +bus_connections_get_peak_match_rules_per_conn (BusConnections *connections) +{ + return connections->peak_match_rules_per_conn; +} + +int +bus_connections_get_total_bus_names (BusConnections *connections) +{ + return connections->total_bus_names; +} + +int +bus_connections_get_peak_bus_names (BusConnections *connections) +{ + return connections->peak_bus_names; +} + +int +bus_connections_get_peak_bus_names_per_conn (BusConnections *connections) +{ + return connections->peak_bus_names_per_conn; +} + +int +bus_connection_get_peak_match_rules (DBusConnection *connection) +{ + BusConnectionData *d; + + d = BUS_CONNECTION_DATA (connection); + return d->peak_match_rules; +} + +int +bus_connection_get_peak_bus_names (DBusConnection *connection) +{ + BusConnectionData *d; + + d = BUS_CONNECTION_DATA (connection); + return d->peak_bus_names; +} +#endif /* DBUS_ENABLE_STATS */ diff --git a/bus/connection.h b/bus/connection.h index 4b9a754b..c9360212 100644 --- a/bus/connection.h +++ b/bus/connection.h @@ -138,4 +138,17 @@ dbus_bool_t bus_transaction_add_cancel_hook (BusTransaction * void *data, DBusFreeFunction free_data_function); +/* called by stats.c, only present if DBUS_ENABLE_STATS */ +int bus_connections_get_n_active (BusConnections *connections); +int bus_connections_get_n_incomplete (BusConnections *connections); +int bus_connections_get_total_match_rules (BusConnections *connections); +int bus_connections_get_peak_match_rules (BusConnections *connections); +int bus_connections_get_peak_match_rules_per_conn (BusConnections *connections); +int bus_connections_get_total_bus_names (BusConnections *connections); +int bus_connections_get_peak_bus_names (BusConnections *connections); +int bus_connections_get_peak_bus_names_per_conn (BusConnections *connections); + +int bus_connection_get_peak_match_rules (DBusConnection *connection); +int bus_connection_get_peak_bus_names (DBusConnection *connection); + #endif /* BUS_CONNECTION_H */ diff --git a/bus/dir-watch-inotify.c b/bus/dir-watch-inotify.c index 461b8ee3..2e9be988 100644 --- a/bus/dir-watch-inotify.c +++ b/bus/dir-watch-inotify.c @@ -50,12 +50,6 @@ static DBusWatch *watch = NULL; static DBusLoop *loop = NULL; static dbus_bool_t -_inotify_watch_callback (DBusWatch *watch, unsigned int condition, void *data) -{ - return dbus_watch_handle (watch, condition); -} - -static dbus_bool_t _handle_inotify_watch (DBusWatch *passed_watch, unsigned int flags, void *data) { char buffer[INOTIFY_BUF_LEN]; @@ -204,16 +198,18 @@ _shutdown_inotify (void *data) _set_watched_dirs_internal (&empty); - close (inotify_fd); - inotify_fd = -1; if (watch != NULL) { - _dbus_loop_remove_watch (loop, watch, _inotify_watch_callback, NULL); + _dbus_loop_remove_watch (loop, watch); + _dbus_watch_invalidate (watch); _dbus_watch_unref (watch); _dbus_loop_unref (loop); } watch = NULL; loop = NULL; + + close (inotify_fd); + inotify_fd = -1; } static int @@ -250,8 +246,7 @@ _init_inotify (BusContext *context) goto out; } - if (!_dbus_loop_add_watch (loop, watch, _inotify_watch_callback, - NULL, NULL)) + if (!_dbus_loop_add_watch (loop, watch)) { _dbus_warn ("Unable to add reload watch to main loop"); _dbus_watch_unref (watch); diff --git a/bus/dir-watch-kqueue.c b/bus/dir-watch-kqueue.c index 4e436eb1..ac6290cc 100644 --- a/bus/dir-watch-kqueue.c +++ b/bus/dir-watch-kqueue.c @@ -50,12 +50,6 @@ static DBusWatch *watch = NULL; static DBusLoop *loop = NULL; static dbus_bool_t -_kqueue_watch_callback (DBusWatch *watch, unsigned int condition, void *data) -{ - return dbus_watch_handle (watch, condition); -} - -static dbus_bool_t _handle_kqueue_watch (DBusWatch *watch, unsigned int flags, void *data) { struct kevent ev; @@ -80,7 +74,8 @@ _handle_kqueue_watch (DBusWatch *watch, unsigned int flags, void *data) kq = -1; if (watch != NULL) { - _dbus_loop_remove_watch (loop, watch, _kqueue_watch_callback, NULL); + _dbus_loop_remove_watch (loop, watch); + _dbus_watch_invalidate (watch); _dbus_watch_unref (watch); watch = NULL; } @@ -120,14 +115,14 @@ _init_kqueue (BusContext *context) goto out; } - if (!_dbus_loop_add_watch (loop, watch, _kqueue_watch_callback, - NULL, NULL)) + if (!_dbus_loop_add_watch (loop, watch)) { _dbus_warn ("Unable to add reload watch to main loop"); - close (kq); - kq = -1; + _dbus_watch_invalidate (watch); _dbus_watch_unref (watch); watch = NULL; + close (kq); + kq = -1; goto out; } } diff --git a/bus/driver.c b/bus/driver.c index 425a3d5a..9ecfd55f 100644 --- a/bus/driver.c +++ b/bus/driver.c @@ -30,6 +30,7 @@ #include "services.h" #include "selinux.h" #include "signals.h" +#include "stats.h" #include "utils.h" #include <dbus/dbus-string.h> #include <dbus/dbus-internals.h> @@ -1743,6 +1744,14 @@ static const MessageHandler introspectable_message_handlers[] = { { NULL, NULL, NULL, NULL } }; +#ifdef DBUS_ENABLE_STATS +static const MessageHandler stats_message_handlers[] = { + { "GetStats", "", "a{sv}", bus_stats_handle_get_stats }, + { "GetConnectionStats", "s", "a{sv}", bus_stats_handle_get_connection_stats }, + { NULL, NULL, NULL, NULL } +}; +#endif + typedef struct { const char *name; const MessageHandler *message_handlers; @@ -1765,6 +1774,9 @@ static InterfaceHandler interface_handlers[] = { " <arg type=\"s\"/>\n" " </signal>\n" }, { DBUS_INTERFACE_INTROSPECTABLE, introspectable_message_handlers, NULL }, +#ifdef DBUS_ENABLE_STATS + { BUS_INTERFACE_STATS, stats_message_handlers, NULL }, +#endif { NULL, NULL, NULL } }; diff --git a/bus/expirelist.c b/bus/expirelist.c index 946a615c..3c87c119 100644 --- a/bus/expirelist.c +++ b/bus/expirelist.c @@ -40,14 +40,6 @@ struct BusExpireList static dbus_bool_t expire_timeout_handler (void *data); -static void -call_timeout_callback (DBusTimeout *timeout, - void *data) -{ - /* can return FALSE on OOM but we just let it fire again later */ - dbus_timeout_handle (timeout); -} - BusExpireList* bus_expire_list_new (DBusLoop *loop, int expire_after, @@ -73,9 +65,7 @@ bus_expire_list_new (DBusLoop *loop, _dbus_timeout_set_enabled (list->timeout, FALSE); - if (!_dbus_loop_add_timeout (list->loop, - list->timeout, - call_timeout_callback, NULL, NULL)) + if (!_dbus_loop_add_timeout (list->loop, list->timeout)) goto failed; return list; @@ -94,8 +84,7 @@ bus_expire_list_free (BusExpireList *list) { _dbus_assert (list->items == NULL); - _dbus_loop_remove_timeout (list->loop, list->timeout, - call_timeout_callback, NULL); + _dbus_loop_remove_timeout (list->loop, list->timeout); _dbus_timeout_unref (list->timeout); @@ -35,6 +35,9 @@ #ifdef HAVE_ERRNO_H #include <errno.h> #endif +#ifdef HAVE_UNISTD_H +#include <unistd.h> /* for write() and STDERR_FILENO */ +#endif #include "selinux.h" static BusContext *context; @@ -43,8 +46,9 @@ static int reload_pipe[2]; #define RELOAD_READ_END 0 #define RELOAD_WRITE_END 1 -static void close_reload_pipe (void); +static void close_reload_pipe (DBusWatch **); +#ifdef DBUS_UNIX static void signal_handler (int sig) { @@ -63,14 +67,30 @@ signal_handler (int sig) if ((reload_pipe[RELOAD_WRITE_END] > 0) && !_dbus_write_socket (reload_pipe[RELOAD_WRITE_END], &str, 0, 1)) { - _dbus_warn ("Unable to write to reload pipe.\n"); - close_reload_pipe (); + /* If we receive SIGHUP often enough to fill the pipe buffer (4096 + * times on old Linux, 65536 on modern Linux) before it can be + * drained, let's just warn and ignore. The configuration will be + * reloaded while draining the pipe buffer, which is what we + * wanted. It's harmless that it will be reloaded fewer times than + * we asked for, since the reload is delayed anyway, so new changes + * will be picked up. + * + * We use write() because _dbus_warn uses vfprintf, which isn't + * async-signal-safe. + * + * This is necessarily Unix-specific, but so are POSIX signals, + * so... */ + static const char message[] = + "Unable to write to reload pipe - buffer full?\n"; + + write (STDERR_FILENO, message, strlen (message)); } } break; #endif } } +#endif /* DBUS_UNIX */ static void usage (void) @@ -178,7 +198,7 @@ handle_reload_watch (DBusWatch *watch, _dbus_read_socket (reload_pipe[RELOAD_READ_END], &str, 1) != 1) { _dbus_warn ("Couldn't read from reload pipe.\n"); - close_reload_pipe (); + close_reload_pipe (&watch); return TRUE; } _dbus_string_free (&str); @@ -200,14 +220,6 @@ handle_reload_watch (DBusWatch *watch, return TRUE; } -static dbus_bool_t -reload_watch_callback (DBusWatch *watch, - unsigned int condition, - void *data) -{ - return dbus_watch_handle (watch, condition); -} - static void setup_reload_pipe (DBusLoop *loop) { @@ -237,8 +249,7 @@ setup_reload_pipe (DBusLoop *loop) exit (1); } - if (!_dbus_loop_add_watch (loop, watch, reload_watch_callback, - NULL, NULL)) + if (!_dbus_loop_add_watch (loop, watch)) { _dbus_warn ("Unable to add reload watch to main loop: %s\n", error.message); @@ -249,8 +260,13 @@ setup_reload_pipe (DBusLoop *loop) } static void -close_reload_pipe (void) +close_reload_pipe (DBusWatch **watch) { + _dbus_loop_remove_watch (bus_context_get_loop (context), *watch); + _dbus_watch_invalidate (*watch); + _dbus_watch_unref (*watch); + *watch = NULL; + _dbus_close_socket (reload_pipe[RELOAD_READ_END], NULL); reload_pipe[RELOAD_READ_END] = -1; @@ -509,12 +525,17 @@ main (int argc, char **argv) setup_reload_pipe (bus_context_get_loop (context)); +#ifdef DBUS_UNIX + /* POSIX signals are Unix-specific, and _dbus_set_signal_handler is + * unimplemented (and probably unimplementable) on Windows, so there's + * no point in trying to make the handler portable to non-Unix. */ #ifdef SIGHUP _dbus_set_signal_handler (SIGHUP, signal_handler); #endif #ifdef DBUS_BUS_ENABLE_DNOTIFY_ON_LINUX _dbus_set_signal_handler (SIGIO, signal_handler); #endif /* DBUS_BUS_ENABLE_DNOTIFY_ON_LINUX */ +#endif /* DBUS_UNIX */ _dbus_verbose ("We are on D-Bus...\n"); _dbus_loop_run (bus_context_get_loop (context)); diff --git a/bus/policy.c b/bus/policy.c index a1fff861..4841f47c 100644 --- a/bus/policy.c +++ b/bus/policy.c @@ -403,8 +403,8 @@ list_allows_user (dbus_bool_t def, } else if (rule->type == BUS_POLICY_RULE_GROUP) { - _dbus_verbose ("List %p group rule uid="DBUS_UID_FORMAT"\n", - list, rule->d.user.uid); + _dbus_verbose ("List %p group rule gid="DBUS_GID_FORMAT"\n", + list, rule->d.group.gid); if (rule->d.group.gid == DBUS_GID_UNSET) ; /* '*' wildcard */ diff --git a/bus/signals.c b/bus/signals.c index 4d34ca14..28506d3f 100644 --- a/bus/signals.c +++ b/bus/signals.c @@ -138,36 +138,9 @@ match_rule_to_string (BusMatchRule *rule) if (rule->flags & BUS_MATCH_MESSAGE_TYPE) { - if (rule->message_type == DBUS_MESSAGE_TYPE_INVALID) - { - if (!_dbus_string_append_printf (&str, "type='INVALID'")) - goto nomem; - } - else if (rule->message_type == DBUS_MESSAGE_TYPE_METHOD_CALL) - { - if (!_dbus_string_append_printf (&str, "type='method_call'")) - goto nomem; - } - else if (rule->message_type == DBUS_MESSAGE_TYPE_METHOD_RETURN) - { - if (!_dbus_string_append_printf (&str, "type='method_return'")) - goto nomem; - } - else if (rule->message_type == DBUS_MESSAGE_TYPE_ERROR) - { - if (!_dbus_string_append_printf (&str, "type='error'")) - goto nomem; - } - else if (rule->message_type == DBUS_MESSAGE_TYPE_SIGNAL) - { - if (!_dbus_string_append_printf (&str, "type='signal'")) - goto nomem; - } - else - { - if (!_dbus_string_append_printf (&str, "type='%d'", rule->message_type)) - goto nomem; - } + if (!_dbus_string_append_printf (&str, "type='%s'", + dbus_message_type_to_string (rule->message_type))) + goto nomem; } if (rule->flags & BUS_MATCH_INTERFACE) @@ -242,6 +215,20 @@ match_rule_to_string (BusMatchRule *rule) goto nomem; } + if (rule->flags & BUS_MATCH_CLIENT_IS_EAVESDROPPING) + { + if (_dbus_string_get_length (&str) > 0) + { + if (!_dbus_string_append (&str, ",")) + goto nomem; + } + + if (!_dbus_string_append_printf (&str, "eavesdrop='%s'", + (rule->flags & BUS_MATCH_CLIENT_IS_EAVESDROPPING) ? + "true" : "false")) + goto nomem; + } + if (rule->flags & BUS_MATCH_ARGS) { int i; @@ -381,6 +368,16 @@ bus_match_rule_set_destination (BusMatchRule *rule, return TRUE; } +void +bus_match_rule_set_client_is_eavesdropping (BusMatchRule *rule, + dbus_bool_t is_eavesdropping) +{ + if (is_eavesdropping) + rule->flags |= BUS_MATCH_CLIENT_IS_EAVESDROPPING; + else + rule->flags &= ~(BUS_MATCH_CLIENT_IS_EAVESDROPPING); +} + dbus_bool_t bus_match_rule_set_path (BusMatchRule *rule, const char *path, @@ -1057,6 +1054,31 @@ bus_match_rule_parse (DBusConnection *matches_go_to, goto failed; } } + else if (strcmp (key, "eavesdrop") == 0) + { + /* do not detect "eavesdrop" being used more than once in rule: + * 1) it's not possible, it's only in the flags + * 2) it might be used twice to disable eavesdropping when it's + * automatically added (eg dbus-monitor/bustle) */ + + /* we accept only "true|false" as possible values */ + if ((strcmp (value, "true") == 0)) + { + bus_match_rule_set_client_is_eavesdropping (rule, TRUE); + } + else if (strcmp (value, "false") == 0) + { + bus_match_rule_set_client_is_eavesdropping (rule, FALSE); + } + else + { + dbus_set_error (error, DBUS_ERROR_MATCH_RULE_INVALID, + "eavesdrop='%s' is invalid, " + "it should be 'true' or 'false'\n", + value); + goto failed; + } + } else if (strncmp (key, "arg", 3) == 0) { if (!bus_match_rule_parse_arg_match (rule, key, &tmp_str, error)) @@ -1379,6 +1401,9 @@ match_rule_equal (BusMatchRule *a, strcmp (a->destination, b->destination) != 0) return FALSE; + /* we already compared the value of flags, and + * BUS_MATCH_CLIENT_IS_EAVESDROPPING does not have another struct member */ + if (a->flags & BUS_MATCH_ARGS) { int i; @@ -1646,6 +1671,7 @@ match_rule_matches (BusMatchRule *rule, DBusMessage *message, BusMatchFlags already_matched) { + dbus_bool_t wants_to_eavesdrop = FALSE; int flags; /* All features of the match rule are AND'd together, @@ -1660,6 +1686,9 @@ match_rule_matches (BusMatchRule *rule, /* Don't bother re-matching features we've already checked implicitly. */ flags = rule->flags & (~already_matched); + if (flags & BUS_MATCH_CLIENT_IS_EAVESDROPPING) + wants_to_eavesdrop = TRUE; + if (flags & BUS_MATCH_MESSAGE_TYPE) { _dbus_assert (rule->message_type != DBUS_MESSAGE_TYPE_INVALID); @@ -1713,6 +1742,24 @@ match_rule_matches (BusMatchRule *rule, } } + /* Note: this part is relevant for eavesdropper rules: + * Two cases: + * 1) rule has a destination to be matched + * (flag BUS_MATCH_DESTINATION present). Rule will match if: + * - rule->destination matches the addressed_recipient + * AND + * - wants_to_eavesdrop=TRUE + * + * Note: (the case in which addressed_recipient is the actual rule owner + * is handled elsewere in dispatch.c:bus_dispatch_matches(). + * + * 2) rule has no destination. Rule will match if: + * - message has no specified destination (ie broadcasts) + * (Note: this will rule out unicast method calls and unicast signals, + * fixing FDO#269748) + * OR + * - wants_to_eavesdrop=TRUE (destination-catch-all situation) + */ if (flags & BUS_MATCH_DESTINATION) { const char *destination; @@ -1721,6 +1768,12 @@ match_rule_matches (BusMatchRule *rule, destination = dbus_message_get_destination (message); if (destination == NULL) + /* broadcast, but this rule specified a destination: no match */ + return FALSE; + + /* rule owner does not intend to eavesdrop: we'll deliver only msgs + * directed to it, NOT MATCHING */ + if (!wants_to_eavesdrop) return FALSE; if (addressed_recipient == NULL) @@ -1734,6 +1787,19 @@ match_rule_matches (BusMatchRule *rule, if (!connection_is_primary_owner (addressed_recipient, rule->destination)) return FALSE; } + } else { /* no destination in rule */ + dbus_bool_t msg_is_broadcast; + + _dbus_assert (rule->destination == NULL); + + msg_is_broadcast = (dbus_message_get_destination (message) == NULL); + + if (!wants_to_eavesdrop && !msg_is_broadcast) + return FALSE; + + /* if we are here rule owner intends to eavesdrop + * OR + * message is being broadcasted */ } if (flags & BUS_MATCH_PATH) diff --git a/bus/signals.h b/bus/signals.h index 5b086f04..a71d2e45 100644 --- a/bus/signals.h +++ b/bus/signals.h @@ -31,14 +31,15 @@ typedef enum { - BUS_MATCH_MESSAGE_TYPE = 1 << 0, - BUS_MATCH_INTERFACE = 1 << 1, - BUS_MATCH_MEMBER = 1 << 2, - BUS_MATCH_SENDER = 1 << 3, - BUS_MATCH_DESTINATION = 1 << 4, - BUS_MATCH_PATH = 1 << 5, - BUS_MATCH_ARGS = 1 << 6, - BUS_MATCH_PATH_NAMESPACE = 1 << 7 + BUS_MATCH_MESSAGE_TYPE = 1 << 0, + BUS_MATCH_INTERFACE = 1 << 1, + BUS_MATCH_MEMBER = 1 << 2, + BUS_MATCH_SENDER = 1 << 3, + BUS_MATCH_DESTINATION = 1 << 4, + BUS_MATCH_PATH = 1 << 5, + BUS_MATCH_ARGS = 1 << 6, + BUS_MATCH_PATH_NAMESPACE = 1 << 7, + BUS_MATCH_CLIENT_IS_EAVESDROPPING = 1 << 8 } BusMatchFlags; BusMatchRule* bus_match_rule_new (DBusConnection *matches_go_to); @@ -64,6 +65,14 @@ dbus_bool_t bus_match_rule_set_arg (BusMatchRule *rule, dbus_bool_t is_path, dbus_bool_t is_namespace); +/* Calling this methods a client declares that it is creating a rule which + * needs to eavesdrop (e.g., dbus-monitor), any other created rules not + * setting themselves as eavesdropping won't receive any message not addressed + * to them, when eavedrop is enabled in the policy. On the other hand, when + * eavedrop is not enabled in policy, this method won't have any effect */ +void bus_match_rule_set_client_is_eavesdropping (BusMatchRule *rule, + dbus_bool_t is_eavesdropping); + BusMatchRule* bus_match_rule_parse (DBusConnection *matches_go_to, const DBusString *rule_text, DBusError *error); diff --git a/bus/stats.c b/bus/stats.c new file mode 100644 index 00000000..28fd49ba --- /dev/null +++ b/bus/stats.c @@ -0,0 +1,352 @@ +/* stats.c - statistics from the bus driver + * + * 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 <config.h> +#include "stats.h" + +#include <dbus/dbus-internals.h> +#include <dbus/dbus-connection-internal.h> + +#include "connection.h" +#include "services.h" +#include "utils.h" + +#ifdef DBUS_ENABLE_STATS + +static DBusMessage * +new_asv_reply (DBusMessage *message, + DBusMessageIter *iter, + DBusMessageIter *arr_iter) +{ + DBusMessage *reply = dbus_message_new_method_return (message); + + if (reply == NULL) + return NULL; + + dbus_message_iter_init_append (reply, iter); + + if (!dbus_message_iter_open_container (iter, DBUS_TYPE_ARRAY, "{sv}", + arr_iter)) + { + dbus_message_unref (reply); + return NULL; + } + + return reply; +} + +static dbus_bool_t +open_asv_entry (DBusMessageIter *arr_iter, + DBusMessageIter *entry_iter, + const char *key, + const char *type, + DBusMessageIter *var_iter) +{ + if (!dbus_message_iter_open_container (arr_iter, DBUS_TYPE_DICT_ENTRY, + NULL, entry_iter)) + return FALSE; + + if (!dbus_message_iter_append_basic (entry_iter, DBUS_TYPE_STRING, &key)) + { + dbus_message_iter_abandon_container (arr_iter, entry_iter); + return FALSE; + } + + if (!dbus_message_iter_open_container (entry_iter, DBUS_TYPE_VARIANT, + type, var_iter)) + { + dbus_message_iter_abandon_container (arr_iter, entry_iter); + return FALSE; + } + + return TRUE; +} + +static dbus_bool_t +close_asv_entry (DBusMessageIter *arr_iter, + DBusMessageIter *entry_iter, + DBusMessageIter *var_iter) +{ + if (!dbus_message_iter_close_container (entry_iter, var_iter)) + { + dbus_message_iter_abandon_container (arr_iter, entry_iter); + return FALSE; + } + + if (!dbus_message_iter_close_container (arr_iter, entry_iter)) + return FALSE; + + return TRUE; +} + +static dbus_bool_t +close_asv_reply (DBusMessageIter *iter, + DBusMessageIter *arr_iter) +{ + return dbus_message_iter_close_container (iter, arr_iter); +} + +static void +abandon_asv_entry (DBusMessageIter *arr_iter, + DBusMessageIter *entry_iter, + DBusMessageIter *var_iter) +{ + dbus_message_iter_abandon_container (entry_iter, var_iter); + dbus_message_iter_abandon_container (arr_iter, entry_iter); +} + +static void +abandon_asv_reply (DBusMessageIter *iter, + DBusMessageIter *arr_iter) +{ + dbus_message_iter_abandon_container (iter, arr_iter); +} + +static dbus_bool_t +asv_add_uint32 (DBusMessageIter *iter, + DBusMessageIter *arr_iter, + const char *key, + dbus_uint32_t value) +{ + DBusMessageIter entry_iter, var_iter; + + if (!open_asv_entry (arr_iter, &entry_iter, key, DBUS_TYPE_UINT32_AS_STRING, + &var_iter)) + goto oom; + + if (!dbus_message_iter_append_basic (&var_iter, DBUS_TYPE_UINT32, + &value)) + { + abandon_asv_entry (arr_iter, &entry_iter, &var_iter); + goto oom; + } + + if (!close_asv_entry (arr_iter, &entry_iter, &var_iter)) + goto oom; + + return TRUE; + +oom: + abandon_asv_reply (iter, arr_iter); + return FALSE; +} + +static dbus_bool_t +asv_add_string (DBusMessageIter *iter, + DBusMessageIter *arr_iter, + const char *key, + const char *value) +{ + DBusMessageIter entry_iter, var_iter; + + if (!open_asv_entry (arr_iter, &entry_iter, key, DBUS_TYPE_STRING_AS_STRING, + &var_iter)) + goto oom; + + if (!dbus_message_iter_append_basic (&var_iter, DBUS_TYPE_STRING, + &value)) + { + abandon_asv_entry (arr_iter, &entry_iter, &var_iter); + goto oom; + } + + if (!close_asv_entry (arr_iter, &entry_iter, &var_iter)) + goto oom; + + return TRUE; + +oom: + abandon_asv_reply (iter, arr_iter); + return FALSE; +} + +dbus_bool_t +bus_stats_handle_get_stats (DBusConnection *connection, + BusTransaction *transaction, + DBusMessage *message, + DBusError *error) +{ + BusConnections *connections; + DBusMessage *reply = NULL; + DBusMessageIter iter, arr_iter; + static dbus_uint32_t stats_serial = 0; + dbus_uint32_t in_use, in_free_list, allocated; + + _DBUS_ASSERT_ERROR_IS_CLEAR (error); + + connections = bus_transaction_get_connections (transaction); + + reply = new_asv_reply (message, &iter, &arr_iter); + + if (reply == NULL) + goto oom; + + /* Globals */ + + if (!asv_add_uint32 (&iter, &arr_iter, "Serial", stats_serial++)) + goto oom; + + _dbus_list_get_stats (&in_use, &in_free_list, &allocated); + if (!asv_add_uint32 (&iter, &arr_iter, "ListMemPoolUsedBytes", in_use) || + !asv_add_uint32 (&iter, &arr_iter, "ListMemPoolCachedBytes", + in_free_list) || + !asv_add_uint32 (&iter, &arr_iter, "ListMemPoolAllocatedBytes", + allocated)) + goto oom; + + /* Connections */ + + if (!asv_add_uint32 (&iter, &arr_iter, "ActiveConnections", + bus_connections_get_n_active (connections)) || + !asv_add_uint32 (&iter, &arr_iter, "IncompleteConnections", + bus_connections_get_n_incomplete (connections)) || + !asv_add_uint32 (&iter, &arr_iter, "MatchRules", + bus_connections_get_total_match_rules (connections)) || + !asv_add_uint32 (&iter, &arr_iter, "PeakMatchRules", + bus_connections_get_peak_match_rules (connections)) || + !asv_add_uint32 (&iter, &arr_iter, "PeakMatchRulesPerConnection", + bus_connections_get_peak_match_rules_per_conn (connections)) || + !asv_add_uint32 (&iter, &arr_iter, "BusNames", + bus_connections_get_total_bus_names (connections)) || + !asv_add_uint32 (&iter, &arr_iter, "PeakBusNames", + bus_connections_get_peak_bus_names (connections)) || + !asv_add_uint32 (&iter, &arr_iter, "PeakBusNamesPerConnection", + bus_connections_get_peak_bus_names_per_conn (connections))) + goto oom; + + /* end */ + + if (!close_asv_reply (&iter, &arr_iter)) + goto oom; + + if (!bus_transaction_send_from_driver (transaction, connection, reply)) + goto oom; + + dbus_message_unref (reply); + return TRUE; + +oom: + if (reply != NULL) + dbus_message_unref (reply); + + BUS_SET_OOM (error); + return FALSE; +} + +dbus_bool_t +bus_stats_handle_get_connection_stats (DBusConnection *caller_connection, + BusTransaction *transaction, + DBusMessage *message, + DBusError *error) +{ + const char *bus_name = NULL; + DBusString bus_name_str; + DBusMessage *reply = NULL; + DBusMessageIter iter, arr_iter; + static dbus_uint32_t stats_serial = 0; + dbus_uint32_t in_messages, in_bytes, in_fds, in_peak_bytes, in_peak_fds; + dbus_uint32_t out_messages, out_bytes, out_fds, out_peak_bytes, out_peak_fds; + BusRegistry *registry; + BusService *service; + DBusConnection *stats_connection; + + _DBUS_ASSERT_ERROR_IS_CLEAR (error); + + registry = bus_connection_get_registry (caller_connection); + + if (! dbus_message_get_args (message, error, + DBUS_TYPE_STRING, &bus_name, + DBUS_TYPE_INVALID)) + return FALSE; + + _dbus_string_init_const (&bus_name_str, bus_name); + service = bus_registry_lookup (registry, &bus_name_str); + + if (service == NULL) + { + dbus_set_error (error, DBUS_ERROR_NAME_HAS_NO_OWNER, + "Bus name '%s' has no owner", bus_name); + return FALSE; + } + + stats_connection = bus_service_get_primary_owners_connection (service); + _dbus_assert (stats_connection != NULL); + + reply = new_asv_reply (message, &iter, &arr_iter); + + if (reply == NULL) + goto oom; + + /* Bus daemon per-connection stats */ + + if (!asv_add_uint32 (&iter, &arr_iter, "Serial", stats_serial++) || + !asv_add_uint32 (&iter, &arr_iter, "MatchRules", + bus_connection_get_n_match_rules (stats_connection)) || + !asv_add_uint32 (&iter, &arr_iter, "PeakMatchRules", + bus_connection_get_peak_match_rules (stats_connection)) || + !asv_add_uint32 (&iter, &arr_iter, "BusNames", + bus_connection_get_n_services_owned (stats_connection)) || + !asv_add_uint32 (&iter, &arr_iter, "PeakBusNames", + bus_connection_get_peak_bus_names (stats_connection)) || + !asv_add_string (&iter, &arr_iter, "UniqueName", + bus_connection_get_name (stats_connection))) + goto oom; + + /* DBusConnection per-connection stats */ + + _dbus_connection_get_stats (stats_connection, + &in_messages, &in_bytes, &in_fds, + &in_peak_bytes, &in_peak_fds, + &out_messages, &out_bytes, &out_fds, + &out_peak_bytes, &out_peak_fds); + + if (!asv_add_uint32 (&iter, &arr_iter, "IncomingMessages", in_messages) || + !asv_add_uint32 (&iter, &arr_iter, "IncomingBytes", in_bytes) || + !asv_add_uint32 (&iter, &arr_iter, "IncomingFDs", in_fds) || + !asv_add_uint32 (&iter, &arr_iter, "PeakIncomingBytes", in_peak_bytes) || + !asv_add_uint32 (&iter, &arr_iter, "PeakIncomingFDs", in_peak_fds) || + !asv_add_uint32 (&iter, &arr_iter, "OutgoingMessages", out_messages) || + !asv_add_uint32 (&iter, &arr_iter, "OutgoingBytes", out_bytes) || + !asv_add_uint32 (&iter, &arr_iter, "OutgoingFDs", out_fds) || + !asv_add_uint32 (&iter, &arr_iter, "PeakOutgoingBytes", out_peak_bytes) || + !asv_add_uint32 (&iter, &arr_iter, "PeakOutgoingFDs", out_peak_fds)) + goto oom; + + /* end */ + + if (!close_asv_reply (&iter, &arr_iter)) + goto oom; + + if (!bus_transaction_send_from_driver (transaction, caller_connection, + reply)) + goto oom; + + dbus_message_unref (reply); + return TRUE; + +oom: + if (reply != NULL) + dbus_message_unref (reply); + + BUS_SET_OOM (error); + return FALSE; +} + +#endif diff --git a/bus/stats.h b/bus/stats.h new file mode 100644 index 00000000..0f843db5 --- /dev/null +++ b/bus/stats.h @@ -0,0 +1,38 @@ +/* stats.h - statistics from the bus driver + * + * 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 BUS_STATS_H +#define BUS_STATS_H + +#include "bus.h" + +#define BUS_INTERFACE_STATS "org.freedesktop.DBus.Debug.Stats" + +dbus_bool_t bus_stats_handle_get_stats (DBusConnection *connection, + BusTransaction *transaction, + DBusMessage *message, + DBusError *error); + +dbus_bool_t bus_stats_handle_get_connection_stats (DBusConnection *connection, + BusTransaction *transaction, + DBusMessage *message, + DBusError *error); + +#endif /* multiple-inclusion guard */ @@ -37,27 +37,12 @@ static DBusList *clients = NULL; static DBusLoop *client_loop = NULL; static dbus_bool_t -client_watch_callback (DBusWatch *watch, - unsigned int condition, - void *data) -{ - /* FIXME this can be done in dbus-mainloop.c - * if the code in activation.c for the babysitter - * watch handler is fixed. - */ - - return dbus_watch_handle (watch, condition); -} - -static dbus_bool_t add_client_watch (DBusWatch *watch, void *data) { DBusConnection *connection = data; - return _dbus_loop_add_watch (client_loop, - watch, client_watch_callback, connection, - NULL); + return _dbus_loop_add_watch (client_loop, watch); } static void @@ -66,22 +51,7 @@ remove_client_watch (DBusWatch *watch, { DBusConnection *connection = data; - _dbus_loop_remove_watch (client_loop, - watch, client_watch_callback, connection); -} - -static void -client_timeout_callback (DBusTimeout *timeout, - void *data) -{ - DBusConnection *connection = data; - - dbus_connection_ref (connection); - - /* can return FALSE on OOM but we just let it fire again later */ - dbus_timeout_handle (timeout); - - dbus_connection_unref (connection); + _dbus_loop_remove_watch (client_loop, watch); } static dbus_bool_t @@ -90,7 +60,7 @@ add_client_timeout (DBusTimeout *timeout, { DBusConnection *connection = data; - return _dbus_loop_add_timeout (client_loop, timeout, client_timeout_callback, connection, NULL); + return _dbus_loop_add_timeout (client_loop, timeout); } static void @@ -99,7 +69,7 @@ remove_client_timeout (DBusTimeout *timeout, { DBusConnection *connection = data; - _dbus_loop_remove_timeout (client_loop, timeout, client_timeout_callback, connection); + _dbus_loop_remove_timeout (client_loop, timeout); } static DBusHandlerResult diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 1d15d862..23c20aae 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -38,7 +38,7 @@ if ($ENV{DBUSDIR}) endif ($ENV{DBUSDIR}) if (DBUS_INSTALL_DIR) - set(CMAKE_INSTALL_PREFIX "${DBUS_INSTALL_DIR}" CACHE PATH FORCE) + set(CMAKE_INSTALL_PREFIX "${DBUS_INSTALL_DIR}" CACHE PATH "install prefix" FORCE) else (DBUS_INSTALL_DIR) set(DBUS_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}") endif (DBUS_INSTALL_DIR) @@ -98,6 +98,10 @@ endif(NOT WIN32) #AC_ARG_ENABLE(asserts, AS_HELP_STRING([--enable-asserts],[include assertion checks]),enable_asserts=$enableval,enable_asserts=$USE_MAINTAINER_MODE) option (DBUS_DISABLE_ASSERTS "Disable assertion checking" OFF) +option (DBUS_ENABLE_STATS "enable bus daemon usage statistics" OFF) + +option (DBUS_ENABLE_STATS "enable bus daemon usage statistics" OFF) + # do config checks INCLUDE(ConfigureChecks.cmake) @@ -108,7 +112,7 @@ SET(DBUS_SOURCE_DIR ${CMAKE_SOURCE_DIR}/..) include (MacroLibrary) if(VCS) - set(DBUS_VERBOSE_C_S 1 CACHE STRING FORCE) + set(DBUS_VERBOSE_C_S 1 CACHE STRING "verbose mode" FORCE) set(DBUS_VERBOSE_C_S 1) endif(VCS) @@ -126,8 +130,8 @@ if(WIN32) # Use the highest warning level if (WALL) - set(WALL 1 CACHE STRING FORCE) - set(CMAKE_CXX_WARNING_LEVEL 4 CACHE STRING FORCE) + set(WALL 1 CACHE STRING "all warnings" FORCE) + set(CMAKE_CXX_WARNING_LEVEL 4 CACHE STRING "warning level" FORCE) if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]") STRING(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") @@ -141,7 +145,7 @@ if(WIN32) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4") endif(CMAKE_C_FLAGS MATCHES "/W[0-4]") else (WALL) - set(CMAKE_CXX_WARNING_LEVEL 3 CACHE STRING FORCE) + set(CMAKE_CXX_WARNING_LEVEL 3 CACHE STRING "warning level" FORCE) endif (WALL) SET(MSVC_W_ERROR " /we4028 /we4013 /we4133 /we4047 /we4031 /we4002 /we4003 /we4114") @@ -285,7 +289,7 @@ STRING(TOUPPER ${CMAKE_SYSTEM_NAME} sysname) if("${sysname}" MATCHES ".*SOLARIS.*") option (HAVE_CONSOLE_OWNER_FILE "enable console owner file (solaris only)" ON) if(HAVE_CONSOLE_OWNER_FILE) - option (DBUS_CONSOLE_OWNER_FILE "Directory to check for console ownerhip" "/dev/console") + set (DBUS_CONSOLE_OWNER_FILE "/dev/console" CACHE STRING "Directory to check for console ownerhip") endif(HAVE_CONSOLE_OWNER_FILE) endif("${sysname}" MATCHES ".*SOLARIS.*") @@ -345,8 +349,8 @@ if(CMAKE_COMPILER_IS_GNUCC AND NOT DBUS_ENABLE_ANSI) endif(UNAME_EXECUTABLE) endif(CMAKE_COMPILER_IS_GNUCC AND NOT DBUS_ENABLE_ANSI) -option (DBUS_HAVE_ATOMIC_INT "Some atomic integer implementation present" ${atomic_int}) -option (DBUS_USE_ATOMIC_INT_486 "Use atomic integer implementation for 486" ${atomic_int_486}) +set (DBUS_HAVE_ATOMIC_INT ${atomic_int} CACHE STRING "Some atomic integer implementation present") +set (DBUS_USE_ATOMIC_INT_486 ${atomic_int_486} CACHE STRING "Use atomic integer implementation for 486") if(X11_FOUND) option (DBUS_BUILD_X11 "Build with X11 autolaunch support " ON) @@ -439,16 +443,16 @@ set (DBUS_USER ) if (WIN32) - set (DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "nonce-tcp:" CACHE STRING "system bus default address" FORCE) - set (DBUS_SESSION_BUS_DEFAULT_ADDRESS "nonce-tcp:" CACHE STRING "session bus default address" FORCE) + set (DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "nonce-tcp:" CACHE STRING "system bus default address") + set (DBUS_SESSION_BUS_DEFAULT_ADDRESS "nonce-tcp:" CACHE STRING "session bus default address") set (DBUS_SYSTEM_CONFIG_FILE "etc/dbus-1/system.conf") set (DBUS_SESSION_CONFIG_FILE "etc/dbus-1/session.conf") # bus-test expects a non empty string set (DBUS_USER "Administrator") else (WIN32) - option (DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "system bus default address" "unix:tmpdir=") - option (DBUS_SESSION_BUS_DEFAULT_ADDRESS "session bus default address" "unix:path=${DBUS_SESSION_SOCKET_DIR}") + set (DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "unix:tmpdir=" CACHE STRING "system bus default address") + set (DBUS_SESSION_BUS_DEFAULT_ADDRESS "unix:path=${DBUS_SESSION_SOCKET_DIR}" CACHE STRING "session bus default address") set (sysconfdir "") set (configdir ${sysconfdir}/dbus-1 ) set (DBUS_SYSTEM_CONFIG_FILE ${configdir}/system.conf) @@ -456,7 +460,7 @@ else (WIN32) set (DBUS_USER "root") endif (WIN32) -set (DBUS_DAEMON_NAME "dbus-daemon" CACHE STRING "The name of the dbus daemon executable" FORCE) +set (DBUS_DAEMON_NAME "dbus-daemon" CACHE STRING "The name of the dbus daemon executable") ########### create config.h ############### @@ -469,7 +473,7 @@ endif(MINGW) # compiler definitions add_definitions(-DHAVE_CONFIG_H=1) -add_definitions(${DBUS_BUS_CFLAGS} -DDBUS_API_SUBJECT_TO_CHANGE) +add_definitions(${DBUS_BUS_CFLAGS}) if (DBUS_BUILD_TESTS) @@ -500,8 +504,12 @@ set (DBUS_INTERNAL_LIBRARY_DEFINITIONS "-DDBUS_STATIC_BUILD") set (DBUS_INTERNAL_CLIENT_DEFINITIONS "-DDBUS_STATIC_BUILD") configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h ) + +if (WIN32) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/dbus-env.bat.cmake ${CMAKE_BINARY_DIR}/bin/dbus-env.bat ) install_files(/bin FILES ${CMAKE_BINARY_DIR}/bin/dbus-env.bat) +endif() + add_definitions(-DHAVE_CONFIG_H=1) ########### subdirs ############### @@ -557,6 +565,7 @@ message(" Building unit tests: ${DBUS_BUILD_TESTS} " message(" Building verbose mode: ${DBUS_ENABLE_VERBOSE_MODE} ") message(" Building w/o assertions: ${DBUS_DISABLE_ASSERTS} ") message(" Building w/o checks: ${DBUS_DISABLE_CHECKS} ") +message(" Building bus stats API: ${DBUS_ENABLE_STATS} ") message(" installing system libs: ${DBUS_INSTALL_SYSTEM_LIBS} ") #message(" Building SELinux support: ${have_selinux} ") #message(" Building dnotify support: ${have_dnotify} ") diff --git a/cmake/bus/CMakeLists.txt b/cmake/bus/CMakeLists.txt index 876be810..1db519f8 100644 --- a/cmake/bus/CMakeLists.txt +++ b/cmake/bus/CMakeLists.txt @@ -74,6 +74,12 @@ set (BUS_SOURCES ${XML_SOURCES} ${DIR_WATCH_SOURCE} ) +if(DBUS_ENABLE_STATS) + list(APPEND BUS_SOURCES + ${BUS_DIR}/stats.c + ${BUS_DIR}/stats.h + ) +endif() include_directories(${XML_INCLUDE_DIR}) diff --git a/cmake/config.h.cmake b/cmake/config.h.cmake index 5220a8d5..b4bfc802 100644 --- a/cmake/config.h.cmake +++ b/cmake/config.h.cmake @@ -25,6 +25,7 @@ #cmakedefine DBUS_MICRO_VERSION @DBUS_MICRO_VERSION@ #cmakedefine DBUS_VERSION ((@DBUS_MAJOR_VERSION@ << 16) | (@DBUS_MINOR_VERSION@ << 8) | (@DBUS_MICRO_VERSION@)) #cmakedefine DBUS_VERSION_STRING "@DBUS_VERSION_STRING@" +#cmakedefine DBUS_ENABLE_STATS #define VERSION DBUS_VERSION_STRING diff --git a/cmake/readme-cmake.txt b/cmake/readme-cmake.txt deleted file mode 100644 index 4056d3cc..00000000 --- a/cmake/readme-cmake.txt +++ /dev/null @@ -1,39 +0,0 @@ -This directory contains configuration files for the cmake build system - -Requirements ------------- -- cmake version >= 2.4.4 see http://www.cmake.org -- installed libxml2 or libexpat - -Building --------- - -unix -1. install cmake and libxml or libexpat -2. get dbus sources -3. mkdir dbus-build -4. cd dbus-build -5. cmake <dbus-src-root>/cmake or cmake -DDBUS_USE_EXPAT=on <dbus-src-root>/cmake in case libexpat should de used -5. make -6. make install - -win32-mingw -1. install cmake and libxml or libexpat in <ProgramDir>\gnuwin32 -2. get dbus sources -3. mkdir dbus-build -4. cd dbus-build -5. cmake -G "MinGW Makefiles" <dbus-src-root>/cmake -6. make -7. make install - -win32-msvc -1. install cmake and libxml or libexpat in <ProgramDir>\gnuwin32 -2. get dbus sources -3. mkdir dbus-build -4. cd dbus-build -5. cmake -G <msvc available target, see cmake --help for a list> <dbus-src-root>/cmake -6. make -7. make install - -A list of all available build options could be find in the file ../README. - diff --git a/cmake/test/CMakeLists.txt b/cmake/test/CMakeLists.txt index 9a259d22..4ec702d7 100644 --- a/cmake/test/CMakeLists.txt +++ b/cmake/test/CMakeLists.txt @@ -2,24 +2,20 @@ project(test) add_definitions(${DBUS_INTERNAL_CLIENT_DEFINITIONS}) -add_library(dbus_testutils STATIC +add_library(dbus-testutils STATIC ${CMAKE_SOURCE_DIR}/../test/test-utils.h ${CMAKE_SOURCE_DIR}/../test/test-utils.c ) -target_link_libraries(dbus_testutils ${DBUS_INTERNAL_LIBRARIES}) +target_link_libraries(dbus-testutils ${DBUS_INTERNAL_LIBRARIES}) add_subdirectory( name-test ) set (test-service_SOURCES ${CMAKE_SOURCE_DIR}/../test/test-service.c - ${CMAKE_SOURCE_DIR}/../test/test-utils.c - ${CMAKE_SOURCE_DIR}/../test/test-utils.h ) set (test-names_SOURCES ${CMAKE_SOURCE_DIR}/../test/test-names.c - ${CMAKE_SOURCE_DIR}/../test/test-utils.c - ${CMAKE_SOURCE_DIR}/../test/test-utils.h ) set (break_loader_SOURCES @@ -28,8 +24,6 @@ set (break_loader_SOURCES set (test-shell-service_SOURCES ${CMAKE_SOURCE_DIR}/../test/test-shell-service.c - ${CMAKE_SOURCE_DIR}/../test/test-utils.c - ${CMAKE_SOURCE_DIR}/../test/test-utils.h ) set (shell-test_SOURCES @@ -53,17 +47,17 @@ set (test-sleep-forever_SOURCES ) add_executable(test-service ${test-service_SOURCES}) -target_link_libraries(test-service ${DBUS_INTERNAL_LIBRARIES}) +target_link_libraries(test-service dbus-testutils) add_executable(test-names ${test-names_SOURCES}) -target_link_libraries(test-names ${DBUS_INTERNAL_LIBRARIES}) +target_link_libraries(test-names dbus-testutils) add_executable(shell-test ${shell-test_SOURCES}) target_link_libraries(shell-test ${DBUS_INTERNAL_LIBRARIES}) ADD_TEST(shell-test ${EXECUTABLE_OUTPUT_PATH}/shell-test${EXT}) add_executable(test-shell-service ${test-shell-service_SOURCES}) -target_link_libraries(test-shell-service ${DBUS_INTERNAL_LIBRARIES}) +target_link_libraries(test-shell-service dbus-testutils) add_executable(spawn-test ${spawn-test_SOURCES}) target_link_libraries(spawn-test ${DBUS_INTERNAL_LIBRARIES}) diff --git a/cmake/test/name-test/CMakeLists.txt b/cmake/test/name-test/CMakeLists.txt index 25ec7f65..80b9908b 100644 --- a/cmake/test/name-test/CMakeLists.txt +++ b/cmake/test/name-test/CMakeLists.txt @@ -21,19 +21,19 @@ target_link_libraries(test-ids ${DBUS_INTERNAL_LIBRARIES}) ADD_TEST(test-ids ${EXECUTABLE_OUTPUT_PATH}/test-ids) add_executable(test-shutdown ${NAMEtest-DIR}/test-shutdown.c) -target_link_libraries(test-shutdown ${DBUS_INTERNAL_LIBRARIES} dbus_testutils) +target_link_libraries(test-shutdown dbus-testutils) ADD_TEST(test-shutdown ${EXECUTABLE_OUTPUT_PATH}/test-shutdown) add_executable(test-privserver ${NAMEtest-DIR}/test-privserver.c) -target_link_libraries(test-privserver ${DBUS_INTERNAL_LIBRARIES} dbus_testutils) +target_link_libraries(test-privserver dbus-testutils) ADD_TEST(test-privserver ${EXECUTABLE_OUTPUT_PATH}/test-privserver) add_executable(test-privserver-client ${NAMEtest-DIR}/test-privserver-client.c) -target_link_libraries(test-privserver-client ${DBUS_INTERNAL_LIBRARIES} dbus_testutils) +target_link_libraries(test-privserver-client dbus-testutils) ADD_TEST(test-privserver-client ${EXECUTABLE_OUTPUT_PATH}/test-privserver-client) add_executable(test-autolaunch ${NAMEtest-DIR}/test-autolaunch.c) -target_link_libraries(test-autolaunch ${DBUS_INTERNAL_LIBRARIES} dbus_testutils) +target_link_libraries(test-autolaunch dbus-testutils) ADD_TEST(test-autolaunch ${EXECUTABLE_OUTPUT_PATH}/test-autolaunch) endif (DBUS_BUILD_TESTS) diff --git a/cmake/tools/CMakeLists.txt b/cmake/tools/CMakeLists.txt index e91a5094..101c7e60 100644 --- a/cmake/tools/CMakeLists.txt +++ b/cmake/tools/CMakeLists.txt @@ -33,14 +33,6 @@ set (dbus_cleanup_sockets_SOURCES ../../tools/dbus-cleanup-sockets.c ) -set (dbus_viewer_SOURCES - ../../tools/dbus-names-model.c - ../../tools/dbus-names-model.h - ../../tools/dbus-tree-view.c - ../../tools/dbus-tree-view.h - ../../tools/dbus-viewer.c -) - add_executable(dbus-send ${dbus_send_SOURCES}) target_link_libraries(dbus-send ${DBUS_LIBRARIES}) install_targets(/bin dbus-send ) diff --git a/config.h.in b/config.h.in index 1101227a..ee0ce085 100644 --- a/config.h.in +++ b/config.h.in @@ -60,6 +60,9 @@ /* Define to build independent test binaries (requires GLib) */ #undef DBUS_ENABLE_MODULAR_TESTS +/* Define to enable bus daemon usage statistics */ +#undef DBUS_ENABLE_STATS + /* Build with caching of user data */ #undef DBUS_ENABLE_USERDB_CACHE @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for dbus 1.5.4. +# Generated by GNU Autoconf 2.68 for dbus 1.5.6. # # Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=dbus>. # @@ -571,8 +571,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='dbus' PACKAGE_TARNAME='dbus' -PACKAGE_VERSION='1.5.4' -PACKAGE_STRING='dbus 1.5.4' +PACKAGE_VERSION='1.5.6' +PACKAGE_STRING='dbus 1.5.6' PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=dbus' PACKAGE_URL='' @@ -679,14 +679,10 @@ X_LIBS X_PRE_LIBS X_CFLAGS XMKMF -DBUS_TEST_LIBS -DBUS_TEST_CFLAGS -DBUS_LAUNCHER_LIBS -DBUS_LAUNCHER_CFLAGS -DBUS_BUS_LIBS -DBUS_BUS_CFLAGS -DBUS_CLIENT_LIBS -DBUS_CLIENT_CFLAGS +LIBDBUS_LIBS +NETWORK_libs +ADT_LIBS +SELINUX_LIBS HAVE_LIBAUDIT_FALSE HAVE_LIBAUDIT_TRUE HAVE_CONSOLE_OWNER_FILE_FALSE @@ -703,6 +699,9 @@ DBUS_BUS_ENABLE_INOTIFY_FALSE DBUS_BUS_ENABLE_INOTIFY_TRUE HAVE_SELINUX_FALSE HAVE_SELINUX_TRUE +THREAD_LIBS +XML_LIBS +XML_CFLAGS DBUS_USE_LIBXML_FALSE DBUS_USE_LIBXML_TRUE DBUS_USE_EXPAT_FALSE @@ -920,6 +919,7 @@ with_x enable_Werror with_systemdsystemunitdir with_dbus_test_dir +enable_stats ' ac_precious_vars='build_alias host_alias @@ -1485,7 +1485,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures dbus 1.5.4 to adapt to many kinds of systems. +\`configure' configures dbus 1.5.6 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1559,7 +1559,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of dbus 1.5.4:";; + short | recursive ) echo "Configuration of dbus 1.5.6:";; esac cat <<\_ACEOF @@ -1608,6 +1608,7 @@ Optional Features: --enable-x11-autolaunch build with X11 auto-launch support --disable-Werror compile without -Werror (normally enabled in development builds) + --enable-stats enable bus daemon usage statistics Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -1739,7 +1740,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -dbus configure 1.5.4 +dbus configure 1.5.6 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -2453,7 +2454,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by dbus $as_me 1.5.4, which was +It was created by dbus $as_me 1.5.6, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -3345,7 +3346,7 @@ fi # Define the identity of the package. PACKAGE='dbus' - VERSION='1.5.4' + VERSION='1.5.6' cat >>confdefs.h <<_ACEOF @@ -3529,7 +3530,7 @@ LT_CURRENT=9 ## increment any time the source changes; set to ## 0 if you increment CURRENT -LT_REVISION=2 +LT_REVISION=3 ## increment if any interfaces have been added; set to 0 ## if any interfaces have been changed or removed. removal has @@ -3542,8 +3543,8 @@ LT_AGE=6 DBUS_MAJOR_VERSION=1 DBUS_MINOR_VERSION=5 -DBUS_MICRO_VERSION=4 -DBUS_VERSION=1.5.4 +DBUS_MICRO_VERSION=6 +DBUS_VERSION=1.5.6 @@ -18911,6 +18912,8 @@ if $dbus_use_libxml; then XML_CFLAGS=$LIBXML_CFLAGS fi + + # Thread lib detection ac_fn_c_check_func "$LINENO" "pthread_cond_timedwait" "ac_cv_func_pthread_cond_timedwait" if test "x$ac_cv_func_pthread_cond_timedwait" = xyes; then : @@ -19062,6 +19065,8 @@ fi fi LIBS="$save_libs" + + # SELinux detection if test x$enable_selinux = xno ; then have_selinux=no; @@ -19549,7 +19554,9 @@ $as_echo "#define HAVE_LIBAUDIT 1" >>confdefs.h fi -# Check for ADT API + + +# Check for ADT API (Solaris Basic Security Mode auditing) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ADT API" >&5 $as_echo_n "checking for ADT API... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -19587,6 +19594,7 @@ else $as_echo "no" >&6; } fi + # Check for SCM_RIGHTS { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SCM_RIGHTS" >&5 $as_echo_n "checking for SCM_RIGHTS... " >&6; } @@ -19626,25 +19634,10 @@ if test x$dbus_win = xyes ; then fi fi -#### Set up final flags -DBUS_CLIENT_CFLAGS= -DBUS_CLIENT_LIBS="$THREAD_LIBS $NETWORK_libs" - - - -DBUS_BUS_CFLAGS="$XML_CFLAGS" -DBUS_BUS_LIBS="$XML_LIBS $SELINUX_LIBS $THREAD_LIBS $ADT_LIBS $NETWORK_libs" - - -DBUS_LAUNCHER_CFLAGS="$XML_CFLAGS" -DBUS_LAUNCHER_LIBS="$XML_LIBS $THREAD_LIBS $NETWORK_libs" - - - -DBUS_TEST_CFLAGS= -DBUS_TEST_LIBS="$THREAD_LIBS $NETWORK_libs" +#### Set up final flags +LIBDBUS_LIBS="$THREAD_LIBS $NETWORK_libs" ### X11 detection @@ -20789,6 +20782,9 @@ case $host_os in solaris*) # Solaris' C library apparently needs these runes to be threadsafe... CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT" + # ... and this opt-in to get file descriptor passing support + CFLAGS="$CFLAGS -D_XOPEN_SOURCE=500" + ;; esac ### Doxygen Documentation @@ -20869,7 +20865,6 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_doxygen_docs" >&5 $as_echo "$enable_doxygen_docs" >&6; } -XSLTPROC=false for ac_prog in xsltproc do # Extract the first word of "$ac_prog", so it can be a program name with args. @@ -20912,7 +20907,7 @@ fi test -n "$XSLTPROC" && break done - if test "$XSLTPROC" != false; then + if test "x$XSLTPROC" != "x"; then DBUS_HAVE_XSLTPROC_TRUE= DBUS_HAVE_XSLTPROC_FALSE='#' else @@ -21650,6 +21645,19 @@ fi +# Check whether --enable-stats was given. +if test "${enable_stats+set}" = set; then : + enableval=$enable_stats; +else + enable_stats=no +fi + +if test "x$enable_stats" = xyes; then + +$as_echo "#define DBUS_ENABLE_STATS 1" >>confdefs.h + +fi + ac_config_files="$ac_config_files Doxyfile dbus/versioninfo.rc dbus/dbus-arch-deps.h bus/system.conf bus/session.conf bus/messagebus bus/messagebus-config bus/org.freedesktop.dbus-session.plist bus/rc.messagebus bus/dbus.service bus/dbus.socket Makefile dbus/Makefile bus/Makefile tools/Makefile test/Makefile test/name-test/Makefile doc/Makefile doc/dbus-daemon.1 dbus-1.pc dbus-1-uninstalled.pc test/data/valid-config-files/debug-allow-all.conf test/data/valid-config-files/debug-allow-all-sha1.conf test/data/valid-config-files-system/debug-allow-all-pass.conf test/data/valid-config-files-system/debug-allow-all-fail.conf test/data/valid-service-files/org.freedesktop.DBus.TestSuite.PrivServer.service test/data/valid-service-files/org.freedesktop.DBus.TestSuiteEchoService.service test/data/valid-service-files/org.freedesktop.DBus.TestSuiteForkingEchoService.service test/data/valid-service-files/org.freedesktop.DBus.TestSuiteSegfaultService.service test/data/valid-service-files/org.freedesktop.DBus.TestSuiteShellEchoServiceSuccess.service test/data/valid-service-files/org.freedesktop.DBus.TestSuiteShellEchoServiceFail.service test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteEchoService.service test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteSegfaultService.service test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteShellEchoServiceSuccess.service test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteShellEchoServiceFail.service test/data/invalid-service-files-system/org.freedesktop.DBus.TestSuiteNoExec.service test/data/invalid-service-files-system/org.freedesktop.DBus.TestSuiteNoUser.service test/data/invalid-service-files-system/org.freedesktop.DBus.TestSuiteNoService.service" cat >confcache <<\_ACEOF @@ -22299,7 +22307,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by dbus $as_me 1.5.4, which was +This file was extended by dbus $as_me 1.5.6, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22365,7 +22373,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -dbus config.status 1.5.4 +dbus config.status 1.5.6 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" @@ -24720,6 +24728,7 @@ echo " Building verbose mode: ${enable_verbose_mode} Building assertions: ${enable_asserts} Building checks: ${enable_checks} + Building bus stats API: ${enable_stats} Building SELinux support: ${have_selinux} Building inotify support: ${have_inotify} Building dnotify support: ${have_dnotify} diff --git a/configure.ac b/configure.ac index ca318043..9222b18b 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ AC_PREREQ([2.63]) m4_define([dbus_major_version], [1]) m4_define([dbus_minor_version], [5]) -m4_define([dbus_micro_version], [4]) +m4_define([dbus_micro_version], [6]) m4_define([dbus_version], [dbus_major_version.dbus_minor_version.dbus_micro_version]) AC_INIT([dbus],[dbus_version],[https://bugs.freedesktop.org/enter_bug.cgi?product=dbus],[dbus]) @@ -36,7 +36,7 @@ LT_CURRENT=9 ## increment any time the source changes; set to ## 0 if you increment CURRENT -LT_REVISION=2 +LT_REVISION=3 ## increment if any interfaces have been added; set to 0 ## if any interfaces have been changed or removed. removal has @@ -890,6 +890,8 @@ if $dbus_use_libxml; then XML_LIBS=$LIBXML_LIBS XML_CFLAGS=$LIBXML_CFLAGS fi +AC_SUBST([XML_CFLAGS]) +AC_SUBST([XML_LIBS]) # Thread lib detection AC_CHECK_FUNC(pthread_cond_timedwait,[AC_CHECK_LIB(pthread,pthread_cond_timedwait, @@ -920,6 +922,8 @@ fi fi LIBS="$save_libs" +AC_SUBST([THREAD_LIBS]) + # SELinux detection if test x$enable_selinux = xno ; then have_selinux=no; @@ -1087,7 +1091,9 @@ if test x$have_libaudit = xyes ; then AC_DEFINE(HAVE_LIBAUDIT,1,[audit daemon SELinux support]) fi -# Check for ADT API +AC_SUBST([SELINUX_LIBS]) + +# Check for ADT API (Solaris Basic Security Mode auditing) AC_MSG_CHECKING(for ADT API) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <bsm/adt.h> @@ -1103,6 +1109,7 @@ then else AC_MSG_RESULT(no) fi +AC_SUBST([ADT_LIBS]) # Check for SCM_RIGHTS AC_MSG_CHECKING([for SCM_RIGHTS]) @@ -1124,26 +1131,11 @@ if test x$dbus_win = xyes ; then fi fi +AC_SUBST([NETWORK_libs]) + #### Set up final flags -DBUS_CLIENT_CFLAGS= -DBUS_CLIENT_LIBS="$THREAD_LIBS $NETWORK_libs" -AC_SUBST(DBUS_CLIENT_CFLAGS) -AC_SUBST(DBUS_CLIENT_LIBS) - -DBUS_BUS_CFLAGS="$XML_CFLAGS" -DBUS_BUS_LIBS="$XML_LIBS $SELINUX_LIBS $THREAD_LIBS $ADT_LIBS $NETWORK_libs" -AC_SUBST(DBUS_BUS_CFLAGS) -AC_SUBST(DBUS_BUS_LIBS) - -DBUS_LAUNCHER_CFLAGS="$XML_CFLAGS" -DBUS_LAUNCHER_LIBS="$XML_LIBS $THREAD_LIBS $NETWORK_libs" -AC_SUBST(DBUS_LAUNCHER_CFLAGS) -AC_SUBST(DBUS_LAUNCHER_LIBS) - -DBUS_TEST_CFLAGS= -DBUS_TEST_LIBS="$THREAD_LIBS $NETWORK_libs" -AC_SUBST(DBUS_TEST_CFLAGS) -AC_SUBST(DBUS_TEST_LIBS) +LIBDBUS_LIBS="$THREAD_LIBS $NETWORK_libs" +AC_SUBST([LIBDBUS_LIBS]) ### X11 detection DBUS_X_LIBS= @@ -1256,6 +1248,9 @@ case $host_os in solaris*) # Solaris' C library apparently needs these runes to be threadsafe... CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT" + # ... and this opt-in to get file descriptor passing support + CFLAGS="$CFLAGS -D_XOPEN_SOURCE=500" + ;; esac ### Doxygen Documentation @@ -1287,9 +1282,8 @@ fi AM_CONDITIONAL(DBUS_DOXYGEN_DOCS_ENABLED, test x$enable_doxygen_docs = xyes) AC_MSG_RESULT($enable_doxygen_docs) -XSLTPROC=false AC_CHECK_PROGS([XSLTPROC], [xsltproc]) -AM_CONDITIONAL(DBUS_HAVE_XSLTPROC, test "$XSLTPROC" != false) +AM_CONDITIONAL([DBUS_HAVE_XSLTPROC], [test "x$XSLTPROC" != "x"]) ### XML Documentation @@ -1558,6 +1552,15 @@ AH_VERBATIM(_DARWIN_ENVIRON, #endif ]) +AC_ARG_ENABLE([stats], + [AS_HELP_STRING([--enable-stats], + [enable bus daemon usage statistics])], + [], [enable_stats=no]) +if test "x$enable_stats" = xyes; then + AC_DEFINE([DBUS_ENABLE_STATS], [1], + [Define to enable bus daemon usage statistics]) +fi + AC_CONFIG_FILES([ Doxyfile dbus/versioninfo.rc @@ -1633,6 +1636,7 @@ echo " Building verbose mode: ${enable_verbose_mode} Building assertions: ${enable_asserts} Building checks: ${enable_checks} + Building bus stats API: ${enable_stats} Building SELinux support: ${have_selinux} Building inotify support: ${have_inotify} Building dnotify support: ${have_dnotify} diff --git a/dbus-1-uninstalled.pc.in b/dbus-1-uninstalled.pc.in index 082222d6..f0072325 100644 --- a/dbus-1-uninstalled.pc.in +++ b/dbus-1-uninstalled.pc.in @@ -13,5 +13,5 @@ Name: dbus Description: Free desktop message bus (uninstalled copy) Version: @VERSION@ Libs: ${abs_top_builddir}/dbus/libdbus-1.la -Libs.private: @DBUS_CLIENT_LIBS@ +Libs.private: @LIBDBUS_LIBS@ Cflags: -I${abs_top_srcdir} diff --git a/dbus-1.pc.in b/dbus-1.pc.in index 421f3c82..7201e07f 100644 --- a/dbus-1.pc.in +++ b/dbus-1.pc.in @@ -13,5 +13,5 @@ Name: dbus Description: Free desktop message bus Version: @VERSION@ Libs: -L${libdir} -ldbus-1 -Libs.private: @DBUS_CLIENT_LIBS@ +Libs.private: @LIBDBUS_LIBS@ Cflags: -I${includedir}/dbus-1.0 -I${libdir}/dbus-1.0/include diff --git a/dbus/Makefile.am b/dbus/Makefile.am index 2e6ca1de..3c44ae49 100644 --- a/dbus/Makefile.am +++ b/dbus/Makefile.am @@ -1,12 +1,17 @@ configdir=$(sysconfdir)/dbus-1 -INCLUDES = -I$(top_builddir) -I$(top_srcdir) \ - $(DBUS_CLIENT_CFLAGS) \ +AM_CPPFLAGS = \ + -I$(top_builddir) \ + -I$(top_srcdir) \ -DDBUS_COMPILATION \ -DDBUS_MACHINE_UUID_FILE=\""$(localstatedir)/lib/dbus/machine-id"\" \ -DDBUS_SYSTEM_CONFIG_FILE=\""$(configdir)/system.conf"\" \ - -DDBUS_SESSION_CONFIG_FILE=\""$(configdir)/session.conf"\" + -DDBUS_SESSION_CONFIG_FILE=\""$(configdir)/session.conf"\" \ + $(NULL) + +# if assertions are enabled, improve backtraces +AM_LDFLAGS = @R_DYNAMIC_LDFLAG@ dbusincludedir=$(includedir)/dbus-1.0/dbus dbusarchincludedir=$(libdir)/dbus-1.0/include/dbus @@ -27,7 +32,6 @@ dbus_res = versioninfo.o dbus_res_ldflag = -Wl,$(dbus_res) no_undefined = -no-undefined export_symbols = -export_symvols_internal = libdbus_1_la_DEPENDENCIES = $(dbus_res) intllibs = @@ -39,7 +43,6 @@ no_undefined = ## don't export symbols that start with "_" (we use this ## convention for internal symbols) export_symbols = -export-symbols-regex "^[^_].*" -export_symbols_internal = intllibs = @LTLIBINTL@ @@ -188,9 +191,6 @@ DBUS_LIB_SOURCES= \ dbus-watch.c \ dbus-watch.h -## dbus-md5.c \ -## dbus-md5.h \ - ### source code that goes in the installed client library ### AND is generic utility functionality used by the ### daemon or test programs (all symbols in here should @@ -261,33 +261,35 @@ EXTRA_DIST=dbus-arch-deps.h.in ## and is only used for static linking within the dbus package. noinst_LTLIBRARIES=libdbus-internal.la -libdbus_1_la_CPPFLAGS= -Ddbus_1_EXPORTS -libdbus_1_la_LIBADD= $(DBUS_CLIENT_LIBS) -libdbus_1_la_LDFLAGS= $(export_symbols) -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -no-undefined @R_DYNAMIC_LDFLAG@ - -libdbus_internal_la_CPPFLAGS = -DDBUS_STATIC_BUILD -libdbus_internal_la_LIBADD=$(DBUS_CLIENT_LIBS) -libdbus_internal_la_LDFLAGS=$(export_symbols_internal) @R_DYNAMIC_LDFLAG@ +libdbus_1_la_CPPFLAGS = \ + $(AM_CPPFLAGS) \ + -Ddbus_1_EXPORTS \ + $(NULL) +libdbus_1_la_LIBADD= $(LIBDBUS_LIBS) +libdbus_1_la_LDFLAGS = \ + $(AM_LDFLAGS) \ + $(export_symbols) \ + -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ + -no-undefined \ + $(NULL) + +libdbus_internal_la_CPPFLAGS = \ + $(AM_CPPFLAGS) \ + -DDBUS_STATIC_BUILD \ + $(NULL) +libdbus_internal_la_LIBADD=$(LIBDBUS_LIBS) + +noinst_PROGRAMS = -## note that TESTS has special meaning (stuff to use in make check) -## so if adding tests not to be run in make check, don't add them to -## TESTS if DBUS_BUILD_TESTS -TESTS_ENVIRONMENT=DBUS_TEST_DATA=$(top_builddir)/test/data DBUS_TEST_HOMEDIR=$(top_builddir)/dbus -TESTS=dbus-test -else -TESTS= +# We can't actually run this til we've reached test/ +noinst_PROGRAMS += dbus-test endif -## we use noinst_PROGRAMS not check_PROGRAMS so that we build -## even when not doing "make check" -noinst_PROGRAMS=$(TESTS) - dbus_test_SOURCES= \ dbus-test-main.c -dbus_test_LDADD=libdbus-internal.la $(DBUS_TEST_LIBS) -dbus_test_LDFLAGS=@R_DYNAMIC_LDFLAG@ +dbus_test_LDADD = libdbus-internal.la ## mop up the gcov files clean-local: diff --git a/dbus/Makefile.in b/dbus/Makefile.in index 65793af3..5deb9609 100644 --- a/dbus/Makefile.in +++ b/dbus/Makefile.in @@ -37,8 +37,10 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @DBUS_WIN_FALSE@libdbus_1_la_DEPENDENCIES = $(am__DEPENDENCIES_1) -@DBUS_BUILD_TESTS_TRUE@TESTS = dbus-test$(EXEEXT) noinst_PROGRAMS = $(am__EXEEXT_1) + +# We can't actually run this til we've reached test/ +@DBUS_BUILD_TESTS_TRUE@am__append_1 = dbus-test subdir = dbus DIST_COMMON = $(dbusinclude_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/dbus-arch-deps.h.in \ @@ -297,18 +299,11 @@ am__objects_14 = libdbus_internal_la-dbus-auth-util.lo \ am_libdbus_internal_la_OBJECTS = $(am__objects_8) $(am__objects_12) \ $(am__objects_14) libdbus_internal_la_OBJECTS = $(am_libdbus_internal_la_OBJECTS) -libdbus_internal_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(AM_CFLAGS) $(CFLAGS) $(libdbus_internal_la_LDFLAGS) \ - $(LDFLAGS) -o $@ @DBUS_BUILD_TESTS_TRUE@am__EXEEXT_1 = dbus-test$(EXEEXT) PROGRAMS = $(noinst_PROGRAMS) am_dbus_test_OBJECTS = dbus-test-main.$(OBJEXT) dbus_test_OBJECTS = $(am_dbus_test_OBJECTS) -dbus_test_DEPENDENCIES = libdbus-internal.la $(am__DEPENDENCIES_1) -dbus_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(dbus_test_LDFLAGS) $(LDFLAGS) -o $@ +dbus_test_DEPENDENCIES = libdbus-internal.la DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -342,10 +337,9 @@ DIST_SOURCES = $(am__libdbus_1_la_SOURCES_DIST) \ HEADERS = $(dbusinclude_HEADERS) $(nodist_dbusarchinclude_HEADERS) ETAGS = etags CTAGS = ctags -am__tty_colors = \ -red=; grn=; lgn=; blu=; std= DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ +ADT_LIBS = @ADT_LIBS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ @@ -366,10 +360,6 @@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DBUS_BINDIR = @DBUS_BINDIR@ -DBUS_BUS_CFLAGS = @DBUS_BUS_CFLAGS@ -DBUS_BUS_LIBS = @DBUS_BUS_LIBS@ -DBUS_CLIENT_CFLAGS = @DBUS_CLIENT_CFLAGS@ -DBUS_CLIENT_LIBS = @DBUS_CLIENT_LIBS@ DBUS_CONSOLE_AUTH_DIR = @DBUS_CONSOLE_AUTH_DIR@ DBUS_CONSOLE_OWNER_FILE = @DBUS_CONSOLE_OWNER_FILE@ DBUS_DAEMONDIR = @DBUS_DAEMONDIR@ @@ -381,8 +371,6 @@ DBUS_INT16_TYPE = @DBUS_INT16_TYPE@ DBUS_INT32_TYPE = @DBUS_INT32_TYPE@ DBUS_INT64_CONSTANT = @DBUS_INT64_CONSTANT@ DBUS_INT64_TYPE = @DBUS_INT64_TYPE@ -DBUS_LAUNCHER_CFLAGS = @DBUS_LAUNCHER_CFLAGS@ -DBUS_LAUNCHER_LIBS = @DBUS_LAUNCHER_LIBS@ DBUS_LIBEXECDIR = @DBUS_LIBEXECDIR@ DBUS_MAJOR_VERSION = @DBUS_MAJOR_VERSION@ DBUS_MICRO_VERSION = @DBUS_MICRO_VERSION@ @@ -394,8 +382,6 @@ DBUS_SESSION_SOCKET_DIR = @DBUS_SESSION_SOCKET_DIR@ DBUS_SYSTEM_BUS_DEFAULT_ADDRESS = @DBUS_SYSTEM_BUS_DEFAULT_ADDRESS@ DBUS_SYSTEM_PID_FILE = @DBUS_SYSTEM_PID_FILE@ DBUS_SYSTEM_SOCKET = @DBUS_SYSTEM_SOCKET@ -DBUS_TEST_CFLAGS = @DBUS_TEST_CFLAGS@ -DBUS_TEST_LIBS = @DBUS_TEST_LIBS@ DBUS_UINT64_CONSTANT = @DBUS_UINT64_CONSTANT@ DBUS_USER = @DBUS_USER@ DBUS_VERSION = @DBUS_VERSION@ @@ -433,6 +419,7 @@ LAUNCHCTL = @LAUNCHCTL@ LAUNCHD_AGENT_DIR = @LAUNCHD_AGENT_DIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBDBUS_LIBS = @LIBDBUS_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -449,6 +436,7 @@ MAKEINFO = @MAKEINFO@ MAN2HTML = @MAN2HTML@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +NETWORK_libs = @NETWORK_libs@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -468,6 +456,7 @@ RANLIB = @RANLIB@ RC = @RC@ R_DYNAMIC_LDFLAG = @R_DYNAMIC_LDFLAG@ SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -484,10 +473,13 @@ TEST_SLEEP_FOREVER_BINARY = @TEST_SLEEP_FOREVER_BINARY@ TEST_SOCKET_DIR = @TEST_SOCKET_DIR@ TEST_VALID_SERVICE_DIR = @TEST_VALID_SERVICE_DIR@ TEST_VALID_SERVICE_SYSTEM_DIR = @TEST_VALID_SERVICE_SYSTEM_DIR@ +THREAD_LIBS = @THREAD_LIBS@ VERSION = @VERSION@ WINDRES = @WINDRES@ XMKMF = @XMKMF@ XMLTO = @XMLTO@ +XML_CFLAGS = @XML_CFLAGS@ +XML_LIBS = @XML_LIBS@ XSLTPROC = @XSLTPROC@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ @@ -548,13 +540,18 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ configdir = $(sysconfdir)/dbus-1 -INCLUDES = -I$(top_builddir) -I$(top_srcdir) \ - $(DBUS_CLIENT_CFLAGS) \ +AM_CPPFLAGS = \ + -I$(top_builddir) \ + -I$(top_srcdir) \ -DDBUS_COMPILATION \ -DDBUS_MACHINE_UUID_FILE=\""$(localstatedir)/lib/dbus/machine-id"\" \ -DDBUS_SYSTEM_CONFIG_FILE=\""$(configdir)/system.conf"\" \ - -DDBUS_SESSION_CONFIG_FILE=\""$(configdir)/session.conf"\" + -DDBUS_SESSION_CONFIG_FILE=\""$(configdir)/session.conf"\" \ + $(NULL) + +# if assertions are enabled, improve backtraces +AM_LDFLAGS = @R_DYNAMIC_LDFLAG@ dbusincludedir = $(includedir)/dbus-1.0/dbus dbusarchincludedir = $(libdir)/dbus-1.0/include/dbus lib_LTLIBRARIES = libdbus-1.la @@ -571,11 +568,9 @@ lib_LTLIBRARIES = libdbus-1.la @DBUS_WIN_TRUE@no_undefined = -no-undefined @DBUS_WIN_FALSE@export_symbols = -export-symbols-regex "^[^_].*" @DBUS_WIN_TRUE@export_symbols = -@DBUS_WIN_TRUE@export_symvols_internal = @DBUS_WIN_TRUE@libdbus_1_la_DEPENDENCIES = $(dbus_res) @DBUS_WIN_FALSE@intllibs = @LTLIBINTL@ @DBUS_WIN_TRUE@intllibs = -@DBUS_WIN_FALSE@export_symbols_internal = @DBUS_WIN_FALSE@DBUS_LIB_arch_sources = \ @DBUS_WIN_FALSE@ dbus-uuidgen.c \ @DBUS_WIN_FALSE@ dbus-uuidgen.h \ @@ -776,18 +771,29 @@ libdbus_internal_la_SOURCES = \ BUILT_SOURCES = $(nodist_dbusarchinclude_HEADERS) EXTRA_DIST = dbus-arch-deps.h.in noinst_LTLIBRARIES = libdbus-internal.la -libdbus_1_la_CPPFLAGS = -Ddbus_1_EXPORTS -libdbus_1_la_LIBADD = $(DBUS_CLIENT_LIBS) -libdbus_1_la_LDFLAGS = $(export_symbols) -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -no-undefined @R_DYNAMIC_LDFLAG@ -libdbus_internal_la_CPPFLAGS = -DDBUS_STATIC_BUILD -libdbus_internal_la_LIBADD = $(DBUS_CLIENT_LIBS) -libdbus_internal_la_LDFLAGS = $(export_symbols_internal) @R_DYNAMIC_LDFLAG@ -@DBUS_BUILD_TESTS_TRUE@TESTS_ENVIRONMENT = DBUS_TEST_DATA=$(top_builddir)/test/data DBUS_TEST_HOMEDIR=$(top_builddir)/dbus +libdbus_1_la_CPPFLAGS = \ + $(AM_CPPFLAGS) \ + -Ddbus_1_EXPORTS \ + $(NULL) + +libdbus_1_la_LIBADD = $(LIBDBUS_LIBS) +libdbus_1_la_LDFLAGS = \ + $(AM_LDFLAGS) \ + $(export_symbols) \ + -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ + -no-undefined \ + $(NULL) + +libdbus_internal_la_CPPFLAGS = \ + $(AM_CPPFLAGS) \ + -DDBUS_STATIC_BUILD \ + $(NULL) + +libdbus_internal_la_LIBADD = $(LIBDBUS_LIBS) dbus_test_SOURCES = \ dbus-test-main.c -dbus_test_LDADD = libdbus-internal.la $(DBUS_TEST_LIBS) -dbus_test_LDFLAGS = @R_DYNAMIC_LDFLAG@ +dbus_test_LDADD = libdbus-internal.la all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am @@ -870,7 +876,7 @@ clean-noinstLTLIBRARIES: libdbus-1.la: $(libdbus_1_la_OBJECTS) $(libdbus_1_la_DEPENDENCIES) $(AM_V_CCLD)$(libdbus_1_la_LINK) -rpath $(libdir) $(libdbus_1_la_OBJECTS) $(libdbus_1_la_LIBADD) $(LIBS) libdbus-internal.la: $(libdbus_internal_la_OBJECTS) $(libdbus_internal_la_DEPENDENCIES) - $(AM_V_CCLD)$(libdbus_internal_la_LINK) $(libdbus_internal_la_OBJECTS) $(libdbus_internal_la_LIBADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(libdbus_internal_la_OBJECTS) $(libdbus_internal_la_LIBADD) $(LIBS) clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ @@ -882,7 +888,7 @@ clean-noinstPROGRAMS: rm -f $$list dbus-test$(EXEEXT): $(dbus_test_OBJECTS) $(dbus_test_DEPENDENCIES) @rm -f dbus-test$(EXEEXT) - $(AM_V_CCLD)$(dbus_test_LINK) $(dbus_test_OBJECTS) $(dbus_test_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(dbus_test_OBJECTS) $(dbus_test_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -2175,98 +2181,6 @@ GTAGS: distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ - fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ - else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ - else \ - skipped="($$skip tests were not run)"; \ - fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - echo "$$grn$$dashes"; \ - else \ - echo "$$red$$dashes"; \ - fi; \ - echo "$$banner"; \ - test -z "$$skipped" || echo "$$skipped"; \ - test -z "$$report" || echo "$$report"; \ - echo "$$dashes$$std"; \ - test "$$failed" -eq 0; \ - else :; fi - distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @@ -2298,7 +2212,6 @@ distdir: $(DISTFILES) fi; \ done check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) @@ -2406,10 +2319,10 @@ ps-am: uninstall-am: uninstall-dbusincludeHEADERS uninstall-libLTLIBRARIES \ uninstall-nodist_dbusarchincludeHEADERS -.MAKE: all check check-am install install-am install-strip +.MAKE: all check install install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ - clean-generic clean-libLTLIBRARIES clean-libtool clean-local \ +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool clean-local \ clean-noinstLTLIBRARIES clean-noinstPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ diff --git a/dbus/dbus-auth.c b/dbus/dbus-auth.c index 270d85e4..d2c37a7a 100644 --- a/dbus/dbus-auth.c +++ b/dbus/dbus-auth.c @@ -2067,7 +2067,7 @@ handle_client_state_waiting_for_agree_unix_fd(DBusAuth *auth, case DBUS_AUTH_COMMAND_AGREE_UNIX_FD: _dbus_assert(auth->unix_fd_possible); auth->unix_fd_negotiated = TRUE; - _dbus_verbose("Sucessfully negotiated UNIX FD passing\n"); + _dbus_verbose("Successfully negotiated UNIX FD passing\n"); return send_begin (auth); case DBUS_AUTH_COMMAND_ERROR: @@ -2794,7 +2794,7 @@ _dbus_auth_set_unix_fd_possible(DBusAuth *auth, dbus_bool_t b) } /** - * Queries whether unix fd passing was sucessfully negotiated. + * Queries whether unix fd passing was successfully negotiated. * * @param auth the auth conversion * @returns #TRUE when unix fd passing was negotiated. diff --git a/dbus/dbus-bus.c b/dbus/dbus-bus.c index ea4b1482..f05ddea4 100644 --- a/dbus/dbus-bus.c +++ b/dbus/dbus-bus.c @@ -661,6 +661,8 @@ dbus_bus_register (DBusConnection *connection, _dbus_return_val_if_error_is_set (error, FALSE); retval = FALSE; + message = NULL; + reply = NULL; _DBUS_LOCK (bus_datas); @@ -668,18 +670,16 @@ dbus_bus_register (DBusConnection *connection, if (bd == NULL) { _DBUS_SET_OOM (error); - _DBUS_UNLOCK (bus_datas); - return FALSE; + goto out; } if (bd->unique_name != NULL) { _dbus_verbose ("Ignoring attempt to register the same DBusConnection %s with the message bus a second time.\n", bd->unique_name); - _DBUS_UNLOCK (bus_datas); - /* Success! */ - return TRUE; + retval = TRUE; + goto out; } message = dbus_message_new_method_call (DBUS_SERVICE_DBUS, @@ -690,15 +690,11 @@ dbus_bus_register (DBusConnection *connection, if (!message) { _DBUS_SET_OOM (error); - - _DBUS_UNLOCK (bus_datas); - return FALSE; + goto out; } reply = dbus_connection_send_with_reply_and_block (connection, message, -1, error); - dbus_message_unref (message); - if (reply == NULL) goto out; else if (dbus_set_error_from_message (error, reply)) @@ -718,14 +714,17 @@ dbus_bus_register (DBusConnection *connection, retval = TRUE; out: + _DBUS_UNLOCK (bus_datas); + + if (message) + dbus_message_unref (message); + if (reply) dbus_message_unref (reply); if (!retval) _DBUS_ASSERT_ERROR_IS_SET (error); - _DBUS_UNLOCK (bus_datas); - return retval; } diff --git a/dbus/dbus-connection-internal.h b/dbus/dbus-connection-internal.h index cdf3f59d..4cc27610 100644 --- a/dbus/dbus-connection-internal.h +++ b/dbus/dbus-connection-internal.h @@ -54,7 +54,7 @@ void _dbus_connection_queue_received_message_link (DBusConnection DBusList *link); dbus_bool_t _dbus_connection_has_messages_to_send_unlocked (DBusConnection *connection); DBusMessage* _dbus_connection_get_message_to_send (DBusConnection *connection); -void _dbus_connection_message_sent (DBusConnection *connection, +void _dbus_connection_message_sent_unlocked (DBusConnection *connection, DBusMessage *message); dbus_bool_t _dbus_connection_add_watch_unlocked (DBusConnection *connection, DBusWatch *watch); @@ -103,6 +103,19 @@ void _dbus_connection_test_get_locks (DBusConnectio DBusCondVar **dispatch_cond_loc, DBusCondVar **io_path_cond_loc); +/* if DBUS_ENABLE_STATS */ +void _dbus_connection_get_stats (DBusConnection *connection, + dbus_uint32_t *in_messages, + dbus_uint32_t *in_bytes, + dbus_uint32_t *in_fds, + dbus_uint32_t *in_peak_bytes, + dbus_uint32_t *in_peak_fds, + dbus_uint32_t *out_messages, + dbus_uint32_t *out_bytes, + dbus_uint32_t *out_fds, + dbus_uint32_t *out_peak_bytes, + dbus_uint32_t *out_peak_fds); + /* This _dbus_bus_* stuff doesn't really belong here, but dbus-bus-internal.h seems * silly for one function */ diff --git a/dbus/dbus-connection.c b/dbus/dbus-connection.c index 1a7079d0..cb1da8c1 100644 --- a/dbus/dbus-connection.c +++ b/dbus/dbus-connection.c @@ -70,11 +70,7 @@ TOOK_LOCK_CHECK (connection); \ } while (0) -#define CONNECTION_UNLOCK(connection) do { \ - if (TRACE_LOCKS) { _dbus_verbose ("UNLOCK\n"); } \ - RELEASING_LOCK_CHECK (connection); \ - _dbus_mutex_unlock ((connection)->mutex); \ - } while (0) +#define CONNECTION_UNLOCK(connection) _dbus_connection_unlock (connection) #define SLOTS_LOCK(connection) do { \ _dbus_mutex_lock ((connection)->slot_mutex); \ @@ -256,6 +252,7 @@ struct DBusConnection DBusList *outgoing_messages; /**< Queue of messages we need to send, send the end of the list first. */ DBusList *incoming_messages; /**< Queue of messages we have received, end of the list received most recently. */ + DBusList *expired_messages; /**< Messages that will be released when we next unlock. */ DBusMessage *message_borrowed; /**< Filled in if the first incoming message has been borrowed; * dispatch_acquired will be set by the borrower @@ -290,9 +287,6 @@ struct DBusConnection DBusDispatchStatus last_dispatch_status; /**< The last dispatch status we reported to the application. */ - DBusList *link_cache; /**< A cache of linked list links to prevent contention - * for the global linked list mempool lock - */ DBusObjectTree *objects; /**< Object path handlers registered with this connection */ char *server_guid; /**< GUID of server if we are in shared_connections, #NULL if server GUID is unknown or connection is private */ @@ -342,8 +336,14 @@ static dbus_bool_t _dbus_connection_peek_for_reply_unlocked (DB static DBusMessageFilter * _dbus_message_filter_ref (DBusMessageFilter *filter) { - _dbus_assert (filter->refcount.value > 0); +#ifdef DBUS_DISABLE_ASSERT _dbus_atomic_inc (&filter->refcount); +#else + dbus_int32_t old_value; + + old_value = _dbus_atomic_inc (&filter->refcount); + _dbus_assert (old_value > 0); +#endif return filter; } @@ -351,9 +351,12 @@ _dbus_message_filter_ref (DBusMessageFilter *filter) static void _dbus_message_filter_unref (DBusMessageFilter *filter) { - _dbus_assert (filter->refcount.value > 0); + dbus_int32_t old_value; - if (_dbus_atomic_dec (&filter->refcount) == 1) + old_value = _dbus_atomic_dec (&filter->refcount); + _dbus_assert (old_value > 0); + + if (old_value == 1) { if (filter->free_user_data_function) (* filter->free_user_data_function) (filter->user_data); @@ -381,7 +384,31 @@ _dbus_connection_lock (DBusConnection *connection) void _dbus_connection_unlock (DBusConnection *connection) { - CONNECTION_UNLOCK (connection); + DBusList *expired_messages; + DBusList *iter; + + if (TRACE_LOCKS) + { + _dbus_verbose ("UNLOCK\n"); + } + + /* If we had messages that expired (fell off the incoming or outgoing + * queues) while we were locked, actually release them now */ + expired_messages = connection->expired_messages; + connection->expired_messages = NULL; + + RELEASING_LOCK_CHECK (connection); + _dbus_mutex_unlock (connection->mutex); + + for (iter = _dbus_list_pop_first_link (&expired_messages); + iter != NULL; + iter = _dbus_list_pop_first_link (&expired_messages)) + { + DBusMessage *message = iter->data; + + dbus_message_unref (message); + _dbus_list_free_link (iter); + } } /** @@ -600,8 +627,8 @@ _dbus_connection_get_message_to_send (DBusConnection *connection) * @param message the message that was sent. */ void -_dbus_connection_message_sent (DBusConnection *connection, - DBusMessage *message) +_dbus_connection_message_sent_unlocked (DBusConnection *connection, + DBusMessage *message) { DBusList *link; @@ -616,11 +643,10 @@ _dbus_connection_message_sent (DBusConnection *connection, _dbus_assert (link != NULL); _dbus_assert (link->data == message); - /* Save this link in the link cache */ _dbus_list_unlink (&connection->outgoing_messages, link); - _dbus_list_prepend_link (&connection->link_cache, link); - + _dbus_list_prepend_link (&connection->expired_messages, link); + connection->n_outgoing -= 1; _dbus_verbose ("Message %p (%s %s %s %s '%s') removed from outgoing queue %p, %d left to send\n", @@ -638,12 +664,11 @@ _dbus_connection_message_sent (DBusConnection *connection, dbus_message_get_signature (message), connection, connection->n_outgoing); - /* Save this link in the link cache also */ - _dbus_message_remove_counter (message, connection->outgoing_counter, - &link); - _dbus_list_prepend_link (&connection->link_cache, link); - - dbus_message_unref (message); + /* It's OK that in principle we call the notify function, because for the + * outgoing limit, there isn't one */ + _dbus_message_remove_counter (message, connection->outgoing_counter); + + /* The message will actually be unreffed when we unlock */ } /** Function to be called in protected_change_watch() with refcount held */ @@ -1310,8 +1335,9 @@ _dbus_connection_new_for_transport (DBusTransport *transport) if (_dbus_modify_sigpipe) _dbus_disable_sigpipe (); - - connection->refcount.value = 1; + + /* initialized to 0: use atomic op to avoid mixing atomic and non-atomic */ + _dbus_atomic_inc (&connection->refcount); connection->transport = transport; connection->watches = watch_list; connection->timeouts = timeout_list; @@ -1914,31 +1940,13 @@ _dbus_connection_preallocate_send_unlocked (DBusConnection *connection) if (preallocated == NULL) return NULL; - if (connection->link_cache != NULL) - { - preallocated->queue_link = - _dbus_list_pop_first_link (&connection->link_cache); - preallocated->queue_link->data = NULL; - } - else - { - preallocated->queue_link = _dbus_list_alloc_link (NULL); - if (preallocated->queue_link == NULL) - goto failed_0; - } - - if (connection->link_cache != NULL) - { - preallocated->counter_link = - _dbus_list_pop_first_link (&connection->link_cache); - preallocated->counter_link->data = connection->outgoing_counter; - } - else - { - preallocated->counter_link = _dbus_list_alloc_link (connection->outgoing_counter); - if (preallocated->counter_link == NULL) - goto failed_1; - } + preallocated->queue_link = _dbus_list_alloc_link (NULL); + if (preallocated->queue_link == NULL) + goto failed_0; + + preallocated->counter_link = _dbus_list_alloc_link (connection->outgoing_counter); + if (preallocated->counter_link == NULL) + goto failed_1; _dbus_counter_ref (preallocated->counter_link->data); @@ -1967,6 +1975,8 @@ _dbus_connection_send_preallocated_unlocked_no_update (DBusConnection *con _dbus_list_prepend_link (&connection->outgoing_messages, preallocated->queue_link); + /* It's OK that we'll never call the notify function, because for the + * outgoing limit, there isn't one */ _dbus_message_add_counter_link (message, preallocated->counter_link); @@ -2108,23 +2118,15 @@ _dbus_connection_send_and_unlock (DBusConnection *connection, void _dbus_connection_close_if_only_one_ref (DBusConnection *connection) { - dbus_int32_t tmp_refcount; + dbus_int32_t refcount; CONNECTION_LOCK (connection); - /* We increment and then decrement the refcount, because there is no - * _dbus_atomic_get (mirroring the fact that there's no InterlockedGet - * on Windows). */ - _dbus_atomic_inc (&connection->refcount); - tmp_refcount = _dbus_atomic_dec (&connection->refcount); - - /* The caller should have one ref, and this function temporarily took - * one more, which is reflected in this count even though we already - * released it (relying on the caller's ref) due to _dbus_atomic_dec - * semantics */ - _dbus_assert (tmp_refcount >= 2); + refcount = _dbus_atomic_get (&connection->refcount); + /* The caller should have at least one ref */ + _dbus_assert (refcount >= 1); - if (tmp_refcount == 2) + if (refcount == 1) _dbus_connection_close_possibly_shared_and_unlock (connection); else CONNECTION_UNLOCK (connection); @@ -2639,9 +2641,7 @@ free_outgoing_message (void *element, DBusMessage *message = element; DBusConnection *connection = data; - _dbus_message_remove_counter (message, - connection->outgoing_counter, - NULL); + _dbus_message_remove_counter (message, connection->outgoing_counter); dbus_message_unref (message); } @@ -2655,9 +2655,9 @@ _dbus_connection_last_unref (DBusConnection *connection) DBusList *link; _dbus_verbose ("Finalizing connection %p\n", connection); - - _dbus_assert (connection->refcount.value == 0); - + + _dbus_assert (_dbus_atomic_get (&connection->refcount) == 0); + /* You have to disconnect the connection before unref:ing it. Otherwise * you won't get the disconnected message. */ @@ -2723,8 +2723,6 @@ _dbus_connection_last_unref (DBusConnection *connection) _dbus_list_free_link (connection->disconnect_message_link); } - _dbus_list_clear (&connection->link_cache); - _dbus_condvar_free_at_location (&connection->dispatch_cond); _dbus_condvar_free_at_location (&connection->io_path_cond); @@ -3276,6 +3274,7 @@ reply_handler_timeout (void *data) DBusPendingCall *pending = data; connection = _dbus_pending_call_get_connection_and_lock (pending); + _dbus_connection_ref_unlocked (connection); _dbus_pending_call_queue_timeout_error_unlocked (pending, connection); @@ -3288,6 +3287,7 @@ reply_handler_timeout (void *data) /* Unlocks, and calls out to user code */ _dbus_connection_update_dispatch_status_and_unlock (connection, status); + dbus_connection_unref (connection); return TRUE; } @@ -4139,7 +4139,7 @@ notify_disconnected_unlocked (DBusConnection *connection) while ((link = _dbus_list_get_last_link (&connection->outgoing_messages))) { - _dbus_connection_message_sent (connection, link->data); + _dbus_connection_message_sent_unlocked (connection, link->data); } } } @@ -4324,44 +4324,48 @@ static DBusHandlerResult _dbus_connection_peer_filter_unlocked_no_update (DBusConnection *connection, DBusMessage *message) { + dbus_bool_t sent = FALSE; + DBusMessage *ret = NULL; + DBusList *expire_link; + if (connection->route_peer_messages && dbus_message_get_destination (message) != NULL) { /* This means we're letting the bus route this message */ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } - else if (dbus_message_is_method_call (message, - DBUS_INTERFACE_PEER, - "Ping")) + + if (!dbus_message_has_interface (message, DBUS_INTERFACE_PEER)) + { + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; + } + + /* Preallocate a linked-list link, so that if we need to dispose of a + * message, we can attach it to the expired list */ + expire_link = _dbus_list_alloc_link (NULL); + + if (!expire_link) + return DBUS_HANDLER_RESULT_NEED_MEMORY; + + if (dbus_message_is_method_call (message, + DBUS_INTERFACE_PEER, + "Ping")) { - DBusMessage *ret; - dbus_bool_t sent; - ret = dbus_message_new_method_return (message); if (ret == NULL) - return DBUS_HANDLER_RESULT_NEED_MEMORY; - - sent = _dbus_connection_send_unlocked_no_update (connection, ret, NULL); - - dbus_message_unref (ret); + goto out; - if (!sent) - return DBUS_HANDLER_RESULT_NEED_MEMORY; - - return DBUS_HANDLER_RESULT_HANDLED; + sent = _dbus_connection_send_unlocked_no_update (connection, ret, NULL); } else if (dbus_message_is_method_call (message, DBUS_INTERFACE_PEER, "GetMachineId")) { - DBusMessage *ret; - dbus_bool_t sent; DBusString uuid; ret = dbus_message_new_method_return (message); if (ret == NULL) - return DBUS_HANDLER_RESULT_NEED_MEMORY; + goto out; - sent = FALSE; _dbus_string_init (&uuid); if (_dbus_get_local_machine_uuid_encoded (&uuid)) { @@ -4374,43 +4378,38 @@ _dbus_connection_peer_filter_unlocked_no_update (DBusConnection *connection, } } _dbus_string_free (&uuid); - - dbus_message_unref (ret); - - if (!sent) - return DBUS_HANDLER_RESULT_NEED_MEMORY; - - return DBUS_HANDLER_RESULT_HANDLED; } - else if (dbus_message_has_interface (message, DBUS_INTERFACE_PEER)) + else { /* We need to bounce anything else with this interface, otherwise apps * could start extending the interface and when we added extensions * here to DBusConnection we'd break those apps. */ - - DBusMessage *ret; - dbus_bool_t sent; - ret = dbus_message_new_error (message, DBUS_ERROR_UNKNOWN_METHOD, "Unknown method invoked on org.freedesktop.DBus.Peer interface"); if (ret == NULL) - return DBUS_HANDLER_RESULT_NEED_MEMORY; - + goto out; + sent = _dbus_connection_send_unlocked_no_update (connection, ret, NULL); - - dbus_message_unref (ret); - - if (!sent) - return DBUS_HANDLER_RESULT_NEED_MEMORY; - - return DBUS_HANDLER_RESULT_HANDLED; + } + +out: + if (ret == NULL) + { + _dbus_list_free_link (expire_link); } else { - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; + /* It'll be safe to unref the reply when we unlock */ + expire_link->data = ret; + _dbus_list_prepend_link (&connection->expired_messages, expire_link); } + + if (!sent) + return DBUS_HANDLER_RESULT_NEED_MEMORY; + + return DBUS_HANDLER_RESULT_HANDLED; } /** @@ -4658,10 +4657,11 @@ dbus_connection_dispatch (DBusConnection *connection) DBusMessage *reply; DBusString str; DBusPreallocatedSend *preallocated; + DBusList *expire_link; _dbus_verbose (" sending error %s\n", DBUS_ERROR_UNKNOWN_METHOD); - + if (!_dbus_string_init (&str)) { result = DBUS_HANDLER_RESULT_NEED_MEMORY; @@ -4692,11 +4692,24 @@ dbus_connection_dispatch (DBusConnection *connection) _dbus_verbose ("no memory for error reply in dispatch\n"); goto out; } - + + expire_link = _dbus_list_alloc_link (reply); + + if (expire_link == NULL) + { + dbus_message_unref (reply); + result = DBUS_HANDLER_RESULT_NEED_MEMORY; + _dbus_verbose ("no memory for error send in dispatch\n"); + goto out; + } + preallocated = _dbus_connection_preallocate_send_unlocked (connection); if (preallocated == NULL) { + _dbus_list_free_link (expire_link); + /* It's OK that this is finalized, because it hasn't been seen by + * anything that could attach user callbacks */ dbus_message_unref (reply); result = DBUS_HANDLER_RESULT_NEED_MEMORY; _dbus_verbose ("no memory for error send in dispatch\n"); @@ -4705,9 +4718,9 @@ dbus_connection_dispatch (DBusConnection *connection) _dbus_connection_send_preallocated_unlocked_no_update (connection, preallocated, reply, NULL); + /* reply will be freed when we release the lock */ + _dbus_list_prepend_link (&connection->expired_messages, expire_link); - dbus_message_unref (reply); - result = DBUS_HANDLER_RESULT_HANDLED; } @@ -4733,20 +4746,35 @@ dbus_connection_dispatch (DBusConnection *connection) */ _dbus_connection_putback_message_link_unlocked (connection, message_link); + /* now we don't want to free them */ + message_link = NULL; + message = NULL; } else { _dbus_verbose (" ... done dispatching\n"); - - _dbus_list_free_link (message_link); - dbus_message_unref (message); /* don't want the message to count in max message limits - * in computing dispatch status below - */ } - + _dbus_connection_release_dispatch (connection); HAVE_LOCK_CHECK (connection); + if (message != NULL) + { + /* We don't want this message to count in maximum message limits when + * computing the dispatch status, below. We have to drop the lock + * temporarily, because finalizing a message can trigger callbacks. + * + * We have a reference to the connection, and we don't use any cached + * pointers to the connection's internals below this point, so it should + * be safe to drop the lock and take it back. */ + CONNECTION_UNLOCK (connection); + dbus_message_unref (message); + CONNECTION_LOCK (connection); + } + + if (message_link != NULL) + _dbus_list_free_link (message_link); + _dbus_verbose ("before final status update\n"); status = _dbus_connection_get_dispatch_status_unlocked (connection); @@ -5418,8 +5446,8 @@ dbus_connection_add_filter (DBusConnection *connection, if (filter == NULL) return FALSE; - filter->refcount.value = 1; - + _dbus_atomic_inc (&filter->refcount); + CONNECTION_LOCK (connection); if (!_dbus_list_append (&connection->filter_list, @@ -5510,31 +5538,30 @@ dbus_connection_remove_filter (DBusConnection *connection, } /** - * Registers a handler for a given path in the object hierarchy. - * The given vtable handles messages sent to exactly the given path. + * Registers a handler for a given path or subsection in the object + * hierarchy. The given vtable handles messages sent to exactly the + * given path or also for paths bellow that, depending on fallback + * parameter. * * @param connection the connection + * @param fallback whether to handle messages also for "subdirectory" * @param path a '/' delimited string of path elements * @param vtable the virtual table * @param user_data data to pass to functions in the vtable * @param error address where an error can be returned * @returns #FALSE if an error (#DBUS_ERROR_NO_MEMORY or - * #DBUS_ERROR_ADDRESS_IN_USE) is reported + * #DBUS_ERROR_OBJECT_PATH_IN_USE) is reported */ -dbus_bool_t -dbus_connection_try_register_object_path (DBusConnection *connection, - const char *path, - const DBusObjectPathVTable *vtable, - void *user_data, - DBusError *error) +static dbus_bool_t +_dbus_connection_register_object_path (DBusConnection *connection, + dbus_bool_t fallback, + const char *path, + const DBusObjectPathVTable *vtable, + void *user_data, + DBusError *error) { char **decomposed_path; dbus_bool_t retval; - - _dbus_return_val_if_fail (connection != NULL, FALSE); - _dbus_return_val_if_fail (path != NULL, FALSE); - _dbus_return_val_if_fail (path[0] == '/', FALSE); - _dbus_return_val_if_fail (vtable != NULL, FALSE); if (!_dbus_decompose_path (path, strlen (path), &decomposed_path, NULL)) return FALSE; @@ -5542,7 +5569,7 @@ dbus_connection_try_register_object_path (DBusConnection *connectio CONNECTION_LOCK (connection); retval = _dbus_object_tree_register (connection->objects, - FALSE, + fallback, (const char **) decomposed_path, vtable, user_data, error); @@ -5557,6 +5584,33 @@ dbus_connection_try_register_object_path (DBusConnection *connectio * Registers a handler for a given path in the object hierarchy. * The given vtable handles messages sent to exactly the given path. * + * @param connection the connection + * @param path a '/' delimited string of path elements + * @param vtable the virtual table + * @param user_data data to pass to functions in the vtable + * @param error address where an error can be returned + * @returns #FALSE if an error (#DBUS_ERROR_NO_MEMORY or + * #DBUS_ERROR_OBJECT_PATH_IN_USE) is reported + */ +dbus_bool_t +dbus_connection_try_register_object_path (DBusConnection *connection, + const char *path, + const DBusObjectPathVTable *vtable, + void *user_data, + DBusError *error) +{ + _dbus_return_val_if_fail (connection != NULL, FALSE); + _dbus_return_val_if_fail (path != NULL, FALSE); + _dbus_return_val_if_fail (path[0] == '/', FALSE); + _dbus_return_val_if_fail (vtable != NULL, FALSE); + + return _dbus_connection_register_object_path (connection, FALSE, path, vtable, user_data, error); +} + +/** + * Registers a handler for a given path in the object hierarchy. + * The given vtable handles messages sent to exactly the given path. + * * It is a bug to call this function for object paths which already * have a handler. Use dbus_connection_try_register_object_path() if this * might be the case. @@ -5565,7 +5619,8 @@ dbus_connection_try_register_object_path (DBusConnection *connectio * @param path a '/' delimited string of path elements * @param vtable the virtual table * @param user_data data to pass to functions in the vtable - * @returns #FALSE if not enough memory + * @returns #FALSE if an error (#DBUS_ERROR_NO_MEMORY or + * #DBUS_ERROR_OBJECT_PATH_IN_USE) ocurred */ dbus_bool_t dbus_connection_register_object_path (DBusConnection *connection, @@ -5573,7 +5628,6 @@ dbus_connection_register_object_path (DBusConnection *connection, const DBusObjectPathVTable *vtable, void *user_data) { - char **decomposed_path; dbus_bool_t retval; DBusError error = DBUS_ERROR_INIT; @@ -5582,21 +5636,9 @@ dbus_connection_register_object_path (DBusConnection *connection, _dbus_return_val_if_fail (path[0] == '/', FALSE); _dbus_return_val_if_fail (vtable != NULL, FALSE); - if (!_dbus_decompose_path (path, strlen (path), &decomposed_path, NULL)) - return FALSE; - - CONNECTION_LOCK (connection); + retval = _dbus_connection_register_object_path (connection, FALSE, path, vtable, user_data, &error); - retval = _dbus_object_tree_register (connection->objects, - FALSE, - (const char **) decomposed_path, vtable, - user_data, &error); - - CONNECTION_UNLOCK (connection); - - dbus_free_string_array (decomposed_path); - - if (dbus_error_has_name (&error, DBUS_ERROR_ADDRESS_IN_USE)) + if (dbus_error_has_name (&error, DBUS_ERROR_OBJECT_PATH_IN_USE)) { _dbus_warn ("%s\n", error.message); dbus_error_free (&error); @@ -5618,7 +5660,7 @@ dbus_connection_register_object_path (DBusConnection *connection, * @param user_data data to pass to functions in the vtable * @param error address where an error can be returned * @returns #FALSE if an error (#DBUS_ERROR_NO_MEMORY or - * #DBUS_ERROR_ADDRESS_IN_USE) is reported + * #DBUS_ERROR_OBJECT_PATH_IN_USE) is reported */ dbus_bool_t dbus_connection_try_register_fallback (DBusConnection *connection, @@ -5627,29 +5669,12 @@ dbus_connection_try_register_fallback (DBusConnection *connection, void *user_data, DBusError *error) { - char **decomposed_path; - dbus_bool_t retval; - _dbus_return_val_if_fail (connection != NULL, FALSE); _dbus_return_val_if_fail (path != NULL, FALSE); _dbus_return_val_if_fail (path[0] == '/', FALSE); _dbus_return_val_if_fail (vtable != NULL, FALSE); - if (!_dbus_decompose_path (path, strlen (path), &decomposed_path, NULL)) - return FALSE; - - CONNECTION_LOCK (connection); - - retval = _dbus_object_tree_register (connection->objects, - TRUE, - (const char **) decomposed_path, vtable, - user_data, error); - - CONNECTION_UNLOCK (connection); - - dbus_free_string_array (decomposed_path); - - return retval; + return _dbus_connection_register_object_path (connection, TRUE, path, vtable, user_data, error); } /** @@ -5666,7 +5691,8 @@ dbus_connection_try_register_fallback (DBusConnection *connection, * @param path a '/' delimited string of path elements * @param vtable the virtual table * @param user_data data to pass to functions in the vtable - * @returns #FALSE if not enough memory + * @returns #FALSE if an error (#DBUS_ERROR_NO_MEMORY or + * #DBUS_ERROR_OBJECT_PATH_IN_USE) occured */ dbus_bool_t dbus_connection_register_fallback (DBusConnection *connection, @@ -5674,7 +5700,6 @@ dbus_connection_register_fallback (DBusConnection *connection, const DBusObjectPathVTable *vtable, void *user_data) { - char **decomposed_path; dbus_bool_t retval; DBusError error = DBUS_ERROR_INIT; @@ -5683,21 +5708,9 @@ dbus_connection_register_fallback (DBusConnection *connection, _dbus_return_val_if_fail (path[0] == '/', FALSE); _dbus_return_val_if_fail (vtable != NULL, FALSE); - if (!_dbus_decompose_path (path, strlen (path), &decomposed_path, NULL)) - return FALSE; - - CONNECTION_LOCK (connection); - - retval = _dbus_object_tree_register (connection->objects, - TRUE, - (const char **) decomposed_path, vtable, - user_data, &error); + retval = _dbus_connection_register_object_path (connection, TRUE, path, vtable, user_data, &error); - CONNECTION_UNLOCK (connection); - - dbus_free_string_array (decomposed_path); - - if (dbus_error_has_name (&error, DBUS_ERROR_ADDRESS_IN_USE)) + if (dbus_error_has_name (&error, DBUS_ERROR_OBJECT_PATH_IN_USE)) { _dbus_warn ("%s\n", error.message); dbus_error_free (&error); @@ -6155,6 +6168,47 @@ dbus_connection_get_outgoing_size (DBusConnection *connection) return res; } +#ifdef DBUS_ENABLE_STATS +void +_dbus_connection_get_stats (DBusConnection *connection, + dbus_uint32_t *in_messages, + dbus_uint32_t *in_bytes, + dbus_uint32_t *in_fds, + dbus_uint32_t *in_peak_bytes, + dbus_uint32_t *in_peak_fds, + dbus_uint32_t *out_messages, + dbus_uint32_t *out_bytes, + dbus_uint32_t *out_fds, + dbus_uint32_t *out_peak_bytes, + dbus_uint32_t *out_peak_fds) +{ + CONNECTION_LOCK (connection); + + if (in_messages != NULL) + *in_messages = connection->n_incoming; + + _dbus_transport_get_stats (connection->transport, + in_bytes, in_fds, in_peak_bytes, in_peak_fds); + + if (out_messages != NULL) + *out_messages = connection->n_outgoing; + + if (out_bytes != NULL) + *out_bytes = _dbus_counter_get_size_value (connection->outgoing_counter); + + if (out_fds != NULL) + *out_fds = _dbus_counter_get_unix_fd_value (connection->outgoing_counter); + + if (out_peak_bytes != NULL) + *out_peak_bytes = _dbus_counter_get_peak_size_value (connection->outgoing_counter); + + if (out_peak_fds != NULL) + *out_peak_fds = _dbus_counter_get_peak_unix_fd_value (connection->outgoing_counter); + + CONNECTION_UNLOCK (connection); +} +#endif /* DBUS_ENABLE_STATS */ + /** * Gets the approximate number of uni fds of all messages in the * outgoing message queue. diff --git a/dbus/dbus-list.c b/dbus/dbus-list.c index 6a16ed60..d4d74f69 100644 --- a/dbus/dbus-list.c +++ b/dbus/dbus-list.c @@ -146,6 +146,18 @@ link_after (DBusList **list, } } +#ifdef DBUS_ENABLE_STATS +void +_dbus_list_get_stats (dbus_uint32_t *in_use_p, + dbus_uint32_t *in_free_list_p, + dbus_uint32_t *allocated_p) +{ + _DBUS_LOCK (list); + _dbus_mem_pool_get_stats (list_pool, in_use_p, in_free_list_p, allocated_p); + _DBUS_UNLOCK (list); +} +#endif + /** @} */ /** diff --git a/dbus/dbus-list.h b/dbus/dbus-list.h index 663ad257..2e346d5e 100644 --- a/dbus/dbus-list.h +++ b/dbus/dbus-list.h @@ -84,8 +84,6 @@ void _dbus_list_prepend_link (DBusList **list, dbus_bool_t _dbus_list_length_is_one (DBusList **list); - - void _dbus_list_foreach (DBusList **list, DBusForeachFunction function, void *data); @@ -93,6 +91,11 @@ void _dbus_list_foreach (DBusList **list, #define _dbus_list_get_next_link(list, link) ((link)->next == *(list) ? NULL : (link)->next) #define _dbus_list_get_prev_link(list, link) ((link) == *(list) ? NULL : (link)->prev) +/* if DBUS_ENABLE_STATS */ +void _dbus_list_get_stats (dbus_uint32_t *in_use_p, + dbus_uint32_t *in_free_list_p, + dbus_uint32_t *allocated_p); + DBUS_END_DECLS #endif /* DBUS_LIST_H */ diff --git a/dbus/dbus-mainloop.c b/dbus/dbus-mainloop.c index 43159a70..b49c9b2c 100644 --- a/dbus/dbus-mainloop.c +++ b/dbus/dbus-mainloop.c @@ -26,6 +26,7 @@ #ifndef DOXYGEN_SHOULD_SKIP_THIS +#include <dbus/dbus-hash.h> #include <dbus/dbus-list.h> #include <dbus/dbus-sysdeps.h> #include <dbus/dbus-watch.h> @@ -56,7 +57,9 @@ watch_flags_to_string (int flags) struct DBusLoop { int refcount; - DBusList *callbacks; + /** fd => dbus_malloc'd DBusList ** of references to DBusWatch */ + DBusHashTable *watches; + DBusList *timeouts; int callback_list_serial; int watch_count; int timeout_count; @@ -64,69 +67,48 @@ struct DBusLoop DBusList *need_dispatch; }; -typedef enum +static short +watch_flags_to_poll_events (unsigned int flags) { - CALLBACK_WATCH, - CALLBACK_TIMEOUT -} CallbackType; + short events = 0; -typedef struct -{ - int refcount; - CallbackType type; - void *data; - DBusFreeFunction free_data_func; -} Callback; + if (flags & DBUS_WATCH_READABLE) + events |= _DBUS_POLLIN; + if (flags & DBUS_WATCH_WRITABLE) + events |= _DBUS_POLLOUT; -typedef struct + return events; +} + +static unsigned int +watch_flags_from_poll_revents (short revents) { - Callback callback; - DBusWatchFunction function; - DBusWatch *watch; - /* last watch handle failed due to OOM */ - unsigned int last_iteration_oom : 1; -} WatchCallback; + unsigned int condition = 0; + + if (revents & _DBUS_POLLIN) + condition |= DBUS_WATCH_READABLE; + if (revents & _DBUS_POLLOUT) + condition |= DBUS_WATCH_WRITABLE; + if (revents & _DBUS_POLLHUP) + condition |= DBUS_WATCH_HANGUP; + if (revents & _DBUS_POLLERR) + condition |= DBUS_WATCH_ERROR; + + return condition; +} typedef struct { - Callback callback; + int refcount; DBusTimeout *timeout; - DBusTimeoutFunction function; unsigned long last_tv_sec; unsigned long last_tv_usec; } TimeoutCallback; -#define WATCH_CALLBACK(callback) ((WatchCallback*)callback) #define TIMEOUT_CALLBACK(callback) ((TimeoutCallback*)callback) -static WatchCallback* -watch_callback_new (DBusWatch *watch, - DBusWatchFunction function, - void *data, - DBusFreeFunction free_data_func) -{ - WatchCallback *cb; - - cb = dbus_new (WatchCallback, 1); - if (cb == NULL) - return NULL; - - cb->watch = watch; - cb->function = function; - cb->last_iteration_oom = FALSE; - cb->callback.refcount = 1; - cb->callback.type = CALLBACK_WATCH; - cb->callback.data = data; - cb->callback.free_data_func = free_data_func; - - return cb; -} - static TimeoutCallback* -timeout_callback_new (DBusTimeout *timeout, - DBusTimeoutFunction function, - void *data, - DBusFreeFunction free_data_func) +timeout_callback_new (DBusTimeout *timeout) { TimeoutCallback *cb; @@ -135,19 +117,14 @@ timeout_callback_new (DBusTimeout *timeout, return NULL; cb->timeout = timeout; - cb->function = function; _dbus_get_current_time (&cb->last_tv_sec, &cb->last_tv_usec); - cb->callback.refcount = 1; - cb->callback.type = CALLBACK_TIMEOUT; - cb->callback.data = data; - cb->callback.free_data_func = free_data_func; - + cb->refcount = 1; return cb; } -static Callback * -callback_ref (Callback *cb) +static TimeoutCallback * +timeout_callback_ref (TimeoutCallback *cb) { _dbus_assert (cb->refcount > 0); @@ -157,7 +134,7 @@ callback_ref (Callback *cb) } static void -callback_unref (Callback *cb) +timeout_callback_unref (TimeoutCallback *cb) { _dbus_assert (cb->refcount > 0); @@ -165,54 +142,30 @@ callback_unref (Callback *cb) if (cb->refcount == 0) { - if (cb->free_data_func) - (* cb->free_data_func) (cb->data); - dbus_free (cb); } } -static dbus_bool_t -add_callback (DBusLoop *loop, - Callback *cb) +static void +free_watch_table_entry (void *data) { - if (!_dbus_list_append (&loop->callbacks, cb)) - return FALSE; + DBusList **watches = data; + DBusWatch *watch; - loop->callback_list_serial += 1; + /* DBusHashTable sometimes calls free_function(NULL) even if you never + * have NULL as a value */ + if (watches == NULL) + return; - switch (cb->type) + for (watch = _dbus_list_pop_first (watches); + watch != NULL; + watch = _dbus_list_pop_first (watches)) { - case CALLBACK_WATCH: - loop->watch_count += 1; - break; - case CALLBACK_TIMEOUT: - loop->timeout_count += 1; - break; + _dbus_watch_unref (watch); } - - return TRUE; -} -static void -remove_callback (DBusLoop *loop, - DBusList *link) -{ - Callback *cb = link->data; - - switch (cb->type) - { - case CALLBACK_WATCH: - loop->watch_count -= 1; - break; - case CALLBACK_TIMEOUT: - loop->timeout_count -= 1; - break; - } - - callback_unref (cb); - _dbus_list_remove_link (&loop->callbacks, link); - loop->callback_list_serial += 1; + _dbus_assert (*watches == NULL); + dbus_free (watches); } DBusLoop* @@ -224,8 +177,17 @@ _dbus_loop_new (void) if (loop == NULL) return NULL; + loop->watches = _dbus_hash_table_new (DBUS_HASH_INT, NULL, + free_watch_table_entry); + + if (loop->watches == NULL) + { + dbus_free (loop); + return NULL; + } + loop->refcount = 1; - + return loop; } @@ -255,82 +217,169 @@ _dbus_loop_unref (DBusLoop *loop) dbus_connection_unref (connection); } - + + _dbus_hash_table_unref (loop->watches); dbus_free (loop); } } +static DBusList ** +ensure_watch_table_entry (DBusLoop *loop, + int fd) +{ + DBusList **watches; + + watches = _dbus_hash_table_lookup_int (loop->watches, fd); + + if (watches == NULL) + { + watches = dbus_new0 (DBusList *, 1); + + if (watches == NULL) + return watches; + + if (!_dbus_hash_table_insert_int (loop->watches, fd, watches)) + { + dbus_free (watches); + watches = NULL; + } + } + + return watches; +} + +static void +cull_watches_for_invalid_fd (DBusLoop *loop, + int fd) +{ + DBusList *link; + DBusList *next; + DBusList **watches; + + _dbus_warn ("invalid request, socket fd %d not open\n", fd); + watches = _dbus_hash_table_lookup_int (loop->watches, fd); + + if (watches != NULL) + { + for (link = _dbus_list_get_first_link (watches); + link != NULL; + link = _dbus_list_get_next_link (watches, link)) + _dbus_watch_invalidate (link->data); + } + + _dbus_hash_table_remove_int (loop->watches, fd); +} + +static void +gc_watch_table_entry (DBusLoop *loop, + DBusList **watches, + int fd) +{ + /* If watches is already NULL we have nothing to do */ + if (watches == NULL) + return; + + /* We can't GC hash table entries if they're non-empty lists */ + if (*watches != NULL) + return; + + _dbus_hash_table_remove_int (loop->watches, fd); +} + dbus_bool_t -_dbus_loop_add_watch (DBusLoop *loop, - DBusWatch *watch, - DBusWatchFunction function, - void *data, - DBusFreeFunction free_data_func) +_dbus_loop_add_watch (DBusLoop *loop, + DBusWatch *watch) { - WatchCallback *wcb; + int fd; + DBusList **watches; - wcb = watch_callback_new (watch, function, data, free_data_func); - if (wcb == NULL) + fd = dbus_watch_get_socket (watch); + _dbus_assert (fd != -1); + + watches = ensure_watch_table_entry (loop, fd); + + if (watches == NULL) return FALSE; - if (!add_callback (loop, (Callback*) wcb)) + if (_dbus_list_append (watches, _dbus_watch_ref (watch))) { - wcb->callback.free_data_func = NULL; /* don't want to have this side effect */ - callback_unref ((Callback*) wcb); - return FALSE; + loop->callback_list_serial += 1; + loop->watch_count += 1; } - + else + { + _dbus_watch_unref (watch); + gc_watch_table_entry (loop, watches, fd); + + return FALSE; + } + return TRUE; } void -_dbus_loop_remove_watch (DBusLoop *loop, - DBusWatch *watch, - DBusWatchFunction function, - void *data) +_dbus_loop_remove_watch (DBusLoop *loop, + DBusWatch *watch) { + DBusList **watches; DBusList *link; - - link = _dbus_list_get_first_link (&loop->callbacks); - while (link != NULL) - { - DBusList *next = _dbus_list_get_next_link (&loop->callbacks, link); - Callback *this = link->data; + int fd; + + /* This relies on people removing watches before they invalidate them, + * which has been safe since fd.o #33336 was fixed. Assert about it + * so we don't regress. */ + fd = dbus_watch_get_socket (watch); + _dbus_assert (fd != -1); + + watches = _dbus_hash_table_lookup_int (loop->watches, fd); - if (this->type == CALLBACK_WATCH && - WATCH_CALLBACK (this)->watch == watch && - this->data == data && - WATCH_CALLBACK (this)->function == function) + if (watches != NULL) + { + link = _dbus_list_get_first_link (watches); + while (link != NULL) { - remove_callback (loop, link); - - return; - } - - link = next; - } + DBusList *next = _dbus_list_get_next_link (watches, link); + DBusWatch *this = link->data; + + if (this == watch) + { + _dbus_list_remove_link (watches, link); + loop->callback_list_serial += 1; + loop->watch_count -= 1; + _dbus_watch_unref (this); + + /* if that was the last watch for that fd, drop the hash table + * entry too */ + gc_watch_table_entry (loop, watches, fd); + + return; + } - _dbus_warn ("could not find watch %p function %p data %p to remove\n", - watch, (void *)function, data); + link = next; + } + } + + _dbus_warn ("could not find watch %p to remove\n", watch); } dbus_bool_t -_dbus_loop_add_timeout (DBusLoop *loop, - DBusTimeout *timeout, - DBusTimeoutFunction function, - void *data, - DBusFreeFunction free_data_func) +_dbus_loop_add_timeout (DBusLoop *loop, + DBusTimeout *timeout) { TimeoutCallback *tcb; - tcb = timeout_callback_new (timeout, function, data, free_data_func); + tcb = timeout_callback_new (timeout); if (tcb == NULL) return FALSE; - if (!add_callback (loop, (Callback*) tcb)) + if (_dbus_list_append (&loop->timeouts, tcb)) + { + loop->callback_list_serial += 1; + loop->timeout_count += 1; + } + else { - tcb->callback.free_data_func = NULL; /* don't want to have this side effect */ - callback_unref ((Callback*) tcb); + timeout_callback_unref (tcb); return FALSE; } @@ -338,34 +387,31 @@ _dbus_loop_add_timeout (DBusLoop *loop, } void -_dbus_loop_remove_timeout (DBusLoop *loop, - DBusTimeout *timeout, - DBusTimeoutFunction function, - void *data) +_dbus_loop_remove_timeout (DBusLoop *loop, + DBusTimeout *timeout) { DBusList *link; - link = _dbus_list_get_first_link (&loop->callbacks); + link = _dbus_list_get_first_link (&loop->timeouts); while (link != NULL) { - DBusList *next = _dbus_list_get_next_link (&loop->callbacks, link); - Callback *this = link->data; + DBusList *next = _dbus_list_get_next_link (&loop->timeouts, link); + TimeoutCallback *this = link->data; - if (this->type == CALLBACK_TIMEOUT && - TIMEOUT_CALLBACK (this)->timeout == timeout && - this->data == data && - TIMEOUT_CALLBACK (this)->function == function) + if (this->timeout == timeout) { - remove_callback (loop, link); - + _dbus_list_remove_link (&loop->timeouts, link); + loop->callback_list_serial += 1; + loop->timeout_count -= 1; + timeout_callback_unref (this); + return; } link = next; } - _dbus_warn ("could not find timeout %p function %p data %p to remove\n", - timeout, (void *)function, data); + _dbus_warn ("could not find timeout %p to remove\n", timeout); } /* Convolutions from GLib, there really must be a better way @@ -525,8 +571,6 @@ _dbus_loop_iterate (DBusLoop *loop, DBusPollFD *fds; DBusPollFD stack_fds[N_STACK_DESCRIPTORS]; int n_fds; - WatchCallback **watches_for_fds; - WatchCallback *stack_watches_for_fds[N_STACK_DESCRIPTORS]; int i; DBusList *link; int n_ready; @@ -534,11 +578,11 @@ _dbus_loop_iterate (DBusLoop *loop, long timeout; dbus_bool_t oom_watch_pending; int orig_depth; - + DBusHashIter hash_iter; + retval = FALSE; fds = NULL; - watches_for_fds = NULL; n_fds = 0; oom_watch_pending = FALSE; orig_depth = loop->depth; @@ -547,8 +591,9 @@ _dbus_loop_iterate (DBusLoop *loop, _dbus_verbose ("Iteration block=%d depth=%d timeout_count=%d watch_count=%d\n", block, loop->depth, loop->timeout_count, loop->watch_count); #endif - - if (loop->callbacks == NULL) + + if (_dbus_hash_table_get_n_entries (loop->watches) == 0 && + loop->timeouts == NULL) goto next_iteration; if (loop->watch_count > N_STACK_DESCRIPTORS) @@ -560,41 +605,40 @@ _dbus_loop_iterate (DBusLoop *loop, _dbus_wait_for_memory (); fds = dbus_new0 (DBusPollFD, loop->watch_count); } - - watches_for_fds = dbus_new (WatchCallback*, loop->watch_count); - while (watches_for_fds == NULL) - { - _dbus_wait_for_memory (); - watches_for_fds = dbus_new (WatchCallback*, loop->watch_count); - } } else { fds = stack_fds; - watches_for_fds = stack_watches_for_fds; } /* fill our array of fds and watches */ n_fds = 0; - link = _dbus_list_get_first_link (&loop->callbacks); - while (link != NULL) + _dbus_hash_iter_init (loop->watches, &hash_iter); + + while (_dbus_hash_iter_next (&hash_iter)) { - DBusList *next = _dbus_list_get_next_link (&loop->callbacks, link); - Callback *cb = link->data; - if (cb->type == CALLBACK_WATCH) + DBusList **watches; + unsigned int flags; + int fd; + + fd = _dbus_hash_iter_get_int_key (&hash_iter); + watches = _dbus_hash_iter_get_value (&hash_iter); + flags = 0; + + for (link = _dbus_list_get_first_link (watches); + link != NULL; + link = _dbus_list_get_next_link (watches, link)) { - unsigned int flags; - WatchCallback *wcb = WATCH_CALLBACK (cb); - int fd = dbus_watch_get_socket (wcb->watch); + DBusWatch *watch = link->data; - if (wcb->last_iteration_oom) + if (_dbus_watch_get_oom_last_time (watch)) { /* we skip this one this time, but reenable it next time, * and have a timeout on this iteration */ - wcb->last_iteration_oom = FALSE; + _dbus_watch_set_oom_last_time (watch, FALSE); oom_watch_pending = TRUE; - + retval = TRUE; /* return TRUE here to keep the loop going, * since we don't know the watch is inactive */ @@ -604,49 +648,35 @@ _dbus_loop_iterate (DBusLoop *loop, fd); #endif } - else if (_DBUS_UNLIKELY (fd == -1)) + else if (dbus_watch_get_enabled (watch)) { - _dbus_warn ("watch %p was invalidated but not removed; " - "removing it now\n", wcb->watch); - _dbus_loop_remove_watch (loop, wcb->watch, wcb->function, - ((Callback *)wcb)->data); + flags |= dbus_watch_get_flags (watch); } - else if (dbus_watch_get_enabled (wcb->watch)) - { - watches_for_fds[n_fds] = wcb; + } - callback_ref (cb); - - flags = dbus_watch_get_flags (wcb->watch); - - fds[n_fds].fd = fd; - fds[n_fds].revents = 0; - fds[n_fds].events = 0; - if (flags & DBUS_WATCH_READABLE) - fds[n_fds].events |= _DBUS_POLLIN; - if (flags & DBUS_WATCH_WRITABLE) - fds[n_fds].events |= _DBUS_POLLOUT; + if (flags != 0) + { + fds[n_fds].fd = fd; + fds[n_fds].revents = 0; + fds[n_fds].events = watch_flags_to_poll_events (flags); #if MAINLOOP_SPEW - _dbus_verbose (" polling watch on fd %d %s\n", - fd, watch_flags_to_string (flags)); + _dbus_verbose (" polling watch on fd %d %s\n", + loop->fds[loop->n_fds].fd, watch_flags_to_string (flags)); #endif - n_fds += 1; - } - else - { + n_fds += 1; + } + else + { #if MAINLOOP_SPEW - _dbus_verbose (" skipping disabled watch on fd %d %s\n", - fd, - watch_flags_to_string (dbus_watch_get_flags (wcb->watch))); + _dbus_verbose (" skipping disabled watch on fd %d %s\n", + fd, + watch_flags_to_string (dbus_watch_get_flags (watch))); #endif - } } - - link = next; } - + timeout = -1; if (loop->timeout_count > 0) { @@ -654,17 +684,15 @@ _dbus_loop_iterate (DBusLoop *loop, unsigned long tv_usec; _dbus_get_current_time (&tv_sec, &tv_usec); - - link = _dbus_list_get_first_link (&loop->callbacks); + + link = _dbus_list_get_first_link (&loop->timeouts); while (link != NULL) { - DBusList *next = _dbus_list_get_next_link (&loop->callbacks, link); - Callback *cb = link->data; + DBusList *next = _dbus_list_get_next_link (&loop->timeouts, link); + TimeoutCallback *tcb = link->data; - if (cb->type == CALLBACK_TIMEOUT && - dbus_timeout_get_enabled (TIMEOUT_CALLBACK (cb)->timeout)) + if (dbus_timeout_get_enabled (tcb->timeout)) { - TimeoutCallback *tcb = TIMEOUT_CALLBACK (cb); int msecs_remaining; check_timeout (tv_sec, tv_usec, tcb, &msecs_remaining); @@ -685,7 +713,7 @@ _dbus_loop_iterate (DBusLoop *loop, break; /* it's not going to get shorter... */ } #if MAINLOOP_SPEW - else if (cb->type == CALLBACK_TIMEOUT) + else { _dbus_verbose (" skipping disabled timeout\n"); } @@ -726,22 +754,20 @@ _dbus_loop_iterate (DBusLoop *loop, _dbus_get_current_time (&tv_sec, &tv_usec); /* It'd be nice to avoid this O(n) thingy here */ - link = _dbus_list_get_first_link (&loop->callbacks); + link = _dbus_list_get_first_link (&loop->timeouts); while (link != NULL) { - DBusList *next = _dbus_list_get_next_link (&loop->callbacks, link); - Callback *cb = link->data; + DBusList *next = _dbus_list_get_next_link (&loop->timeouts, link); + TimeoutCallback *tcb = link->data; if (initial_serial != loop->callback_list_serial) goto next_iteration; if (loop->depth != orig_depth) goto next_iteration; - - if (cb->type == CALLBACK_TIMEOUT && - dbus_timeout_get_enabled (TIMEOUT_CALLBACK (cb)->timeout)) + + if (dbus_timeout_get_enabled (tcb->timeout)) { - TimeoutCallback *tcb = TIMEOUT_CALLBACK (cb); int msecs_remaining; if (check_timeout (tv_sec, tv_usec, @@ -754,9 +780,11 @@ _dbus_loop_iterate (DBusLoop *loop, #if MAINLOOP_SPEW _dbus_verbose (" invoking timeout\n"); #endif - - (* tcb->function) (tcb->timeout, - cb->data); + + /* can theoretically return FALSE on OOM, but we just + * let it fire again later - in practice that's what + * every wrapper callback in dbus-daemon used to do */ + dbus_timeout_handle (tcb->timeout); retval = TRUE; } @@ -768,7 +796,7 @@ _dbus_loop_iterate (DBusLoop *loop, } } #if MAINLOOP_SPEW - else if (cb->type == CALLBACK_TIMEOUT) + else { _dbus_verbose (" skipping invocation of disabled timeout\n"); } @@ -780,9 +808,12 @@ _dbus_loop_iterate (DBusLoop *loop, if (n_ready > 0) { - i = 0; - while (i < n_fds) + for (i = 0; i < n_fds; i++) { + DBusList **watches; + DBusList *next; + unsigned int condition; + /* FIXME I think this "restart if we change the watches" * approach could result in starving watches * toward the end of the list. @@ -793,54 +824,62 @@ _dbus_loop_iterate (DBusLoop *loop, if (loop->depth != orig_depth) goto next_iteration; - if (fds[i].revents != 0) + if (fds[i].revents == 0) + continue; + + if (_DBUS_UNLIKELY (fds[i].revents & _DBUS_POLLNVAL)) { - WatchCallback *wcb; - unsigned int condition; - - wcb = watches_for_fds[i]; - - condition = 0; - if (fds[i].revents & _DBUS_POLLIN) - condition |= DBUS_WATCH_READABLE; - if (fds[i].revents & _DBUS_POLLOUT) - condition |= DBUS_WATCH_WRITABLE; - if (fds[i].revents & _DBUS_POLLHUP) - condition |= DBUS_WATCH_HANGUP; - if (fds[i].revents & _DBUS_POLLERR) - condition |= DBUS_WATCH_ERROR; - - /* condition may still be 0 if we got some - * weird POLLFOO thing like POLLWRBAND - */ - - if (condition != 0 && - dbus_watch_get_enabled (wcb->watch)) + cull_watches_for_invalid_fd (loop, fds[i].fd); + goto next_iteration; + } + + condition = watch_flags_from_poll_revents (fds[i].revents); + + /* condition may still be 0 if we got some + * weird POLLFOO thing like POLLWRBAND + */ + if (condition == 0) + continue; + + watches = _dbus_hash_table_lookup_int (loop->watches, fds[i].fd); + + if (watches == NULL) + continue; + + for (link = _dbus_list_get_first_link (watches); + link != NULL; + link = next) + { + DBusWatch *watch = link->data; + + next = _dbus_list_get_next_link (watches, link); + + if (dbus_watch_get_enabled (watch)) { - if (!(* wcb->function) (wcb->watch, - condition, - ((Callback*)wcb)->data)) - wcb->last_iteration_oom = TRUE; + dbus_bool_t oom; + + oom = !dbus_watch_handle (watch, condition); + + if (oom) + { + _dbus_watch_set_oom_last_time (watch, TRUE); + } #if MAINLOOP_SPEW - _dbus_verbose (" Invoked watch, oom = %d\n", - wcb->last_iteration_oom); + _dbus_verbose (" Invoked watch, oom = %d\n", oom); #endif - retval = TRUE; - } - if (_DBUS_UNLIKELY (fds[i].revents & _DBUS_POLLNVAL)) - { - _dbus_warn ("invalid request, socket fd %d not open\n", - fds[i].fd); - _dbus_watch_invalidate (wcb->watch); - _dbus_loop_remove_watch (loop, wcb->watch, wcb->function, - ((Callback *)wcb)->data); + /* We re-check this every time, in case the callback + * added/removed watches, which might make our position in + * the linked list invalid. See the FIXME above. */ + if (initial_serial != loop->callback_list_serial) + goto next_iteration; + + if (loop->depth != orig_depth) + goto next_iteration; } } - - ++i; } } @@ -851,19 +890,7 @@ _dbus_loop_iterate (DBusLoop *loop, if (fds && fds != stack_fds) dbus_free (fds); - if (watches_for_fds) - { - i = 0; - while (i < n_fds) - { - callback_unref (&watches_for_fds[i]->callback); - ++i; - } - - if (watches_for_fds != stack_watches_for_fds) - dbus_free (watches_for_fds); - } - + if (_dbus_loop_dispatch (loop)) retval = TRUE; diff --git a/dbus/dbus-mainloop.h b/dbus/dbus-mainloop.h index 656f8231..a3417adb 100644 --- a/dbus/dbus-mainloop.h +++ b/dbus/dbus-mainloop.h @@ -33,30 +33,18 @@ typedef struct DBusLoop DBusLoop; typedef dbus_bool_t (* DBusWatchFunction) (DBusWatch *watch, unsigned int condition, void *data); -typedef void (* DBusTimeoutFunction) (DBusTimeout *timeout, - void *data); DBusLoop* _dbus_loop_new (void); DBusLoop* _dbus_loop_ref (DBusLoop *loop); void _dbus_loop_unref (DBusLoop *loop); dbus_bool_t _dbus_loop_add_watch (DBusLoop *loop, - DBusWatch *watch, - DBusWatchFunction function, - void *data, - DBusFreeFunction free_data_func); + DBusWatch *watch); void _dbus_loop_remove_watch (DBusLoop *loop, - DBusWatch *watch, - DBusWatchFunction function, - void *data); + DBusWatch *watch); dbus_bool_t _dbus_loop_add_timeout (DBusLoop *loop, - DBusTimeout *timeout, - DBusTimeoutFunction function, - void *data, - DBusFreeFunction free_data_func); + DBusTimeout *timeout); void _dbus_loop_remove_timeout (DBusLoop *loop, - DBusTimeout *timeout, - DBusTimeoutFunction function, - void *data); + DBusTimeout *timeout); dbus_bool_t _dbus_loop_queue_dispatch (DBusLoop *loop, DBusConnection *connection); diff --git a/dbus/dbus-marshal-header.c b/dbus/dbus-marshal-header.c index a6c9b80d..28984f4c 100644 --- a/dbus/dbus-marshal-header.c +++ b/dbus/dbus-marshal-header.c @@ -165,6 +165,20 @@ _dbus_header_cache_one (DBusHeader *header, } /** + * Returns the header's byte order. + * + * @param header the header + * @returns the byte order + */ +char +_dbus_header_get_byte_order (const DBusHeader *header) +{ + _dbus_assert (_dbus_string_get_length (&header->data) > BYTE_ORDER_OFFSET); + + return (char) _dbus_string_get_byte (&header->data, BYTE_ORDER_OFFSET); +} + +/** * Revalidates the fields cache * * @param header the header @@ -184,7 +198,7 @@ _dbus_header_cache_revalidate (DBusHeader *header) } _dbus_type_reader_init (&reader, - header->byte_order, + _dbus_header_get_byte_order (header), &_dbus_header_signature_str, FIELDS_ARRAY_SIGNATURE_OFFSET, &header->data, @@ -398,7 +412,7 @@ _dbus_header_set_serial (DBusHeader *header, _dbus_marshal_set_uint32 (&header->data, SERIAL_OFFSET, serial, - header->byte_order); + _dbus_header_get_byte_order (header)); } /** @@ -412,7 +426,7 @@ _dbus_header_get_serial (DBusHeader *header) { return _dbus_marshal_read_uint32 (&header->data, SERIAL_OFFSET, - header->byte_order, + _dbus_header_get_byte_order (header), NULL); } @@ -422,15 +436,12 @@ _dbus_header_get_serial (DBusHeader *header) * _dbus_header_create(). * * @param header header to re-initialize - * @param byte_order byte order of the header */ void -_dbus_header_reinit (DBusHeader *header, - int byte_order) +_dbus_header_reinit (DBusHeader *header) { _dbus_string_set_length (&header->data, 0); - header->byte_order = byte_order; header->padding = 0; _dbus_header_cache_invalidate_all (header); @@ -445,13 +456,12 @@ _dbus_header_reinit (DBusHeader *header, * @returns #FALSE if not enough memory */ dbus_bool_t -_dbus_header_init (DBusHeader *header, - int byte_order) +_dbus_header_init (DBusHeader *header) { if (!_dbus_string_init_preallocated (&header->data, 32)) return FALSE; - _dbus_header_reinit (header, byte_order); + _dbus_header_reinit (header); return TRUE; } @@ -514,6 +524,7 @@ _dbus_header_copy (const DBusHeader *header, */ dbus_bool_t _dbus_header_create (DBusHeader *header, + int byte_order, int message_type, const char *destination, const char *path, @@ -526,6 +537,8 @@ _dbus_header_create (DBusHeader *header, DBusTypeWriter writer; DBusTypeWriter array; + _dbus_assert (byte_order == DBUS_LITTLE_ENDIAN || + byte_order == DBUS_BIG_ENDIAN); _dbus_assert (((interface || message_type != DBUS_MESSAGE_TYPE_SIGNAL) && member) || (error_name) || !(interface || member || error_name)); @@ -534,12 +547,12 @@ _dbus_header_create (DBusHeader *header, if (!reserve_header_padding (header)) return FALSE; - _dbus_type_writer_init_values_only (&writer, header->byte_order, + _dbus_type_writer_init_values_only (&writer, byte_order, &_dbus_header_signature_str, 0, &header->data, HEADER_END_BEFORE_PADDING (header)); - v_BYTE = header->byte_order; + v_BYTE = byte_order; if (!_dbus_type_writer_write_basic (&writer, DBUS_TYPE_BYTE, &v_BYTE)) goto oom; @@ -911,7 +924,8 @@ load_and_validate_field (DBusHeader *header, _dbus_assert (bad_string_code != DBUS_VALID); len = _dbus_marshal_read_uint32 (value_str, value_pos, - header->byte_order, NULL); + _dbus_header_get_byte_order (header), + NULL); #if 0 _dbus_verbose ("Validating string header field; code %d if fails\n", @@ -1042,7 +1056,6 @@ _dbus_header_load (DBusHeader *header, _dbus_type_reader_next (&reader); _dbus_assert (v_byte == byte_order); - header->byte_order = byte_order; /* MESSAGE TYPE */ _dbus_assert (_dbus_type_reader_get_current_type (&reader) == DBUS_TYPE_BYTE); @@ -1184,7 +1197,7 @@ _dbus_header_update_lengths (DBusHeader *header, _dbus_marshal_set_uint32 (&header->data, BODY_LENGTH_OFFSET, body_len, - header->byte_order); + _dbus_header_get_byte_order (header)); } static dbus_bool_t @@ -1198,7 +1211,7 @@ find_field_for_modification (DBusHeader *header, retval = FALSE; _dbus_type_reader_init (realign_root, - header->byte_order, + _dbus_header_get_byte_order (header), &_dbus_header_signature_str, FIELDS_ARRAY_SIGNATURE_OFFSET, &header->data, @@ -1271,7 +1284,7 @@ _dbus_header_set_field_basic (DBusHeader *header, DBusTypeWriter array; _dbus_type_writer_init_values_only (&writer, - header->byte_order, + _dbus_header_get_byte_order (header), &_dbus_header_signature_str, FIELDS_ARRAY_SIGNATURE_OFFSET, &header->data, @@ -1341,7 +1354,7 @@ _dbus_header_get_field_basic (DBusHeader *header, _dbus_marshal_read_basic (&header->data, header->fields[field].value_pos, - type, value, header->byte_order, + type, value, _dbus_header_get_byte_order (header), NULL); return TRUE; @@ -1468,21 +1481,19 @@ void _dbus_header_byteswap (DBusHeader *header, int new_order) { - unsigned char byte_order; + char byte_order; - if (header->byte_order == new_order) - return; + byte_order = _dbus_header_get_byte_order (header); - byte_order = _dbus_string_get_byte (&header->data, BYTE_ORDER_OFFSET); - _dbus_assert (header->byte_order == byte_order); + if (byte_order == new_order) + return; _dbus_marshal_byteswap (&_dbus_header_signature_str, - 0, header->byte_order, + 0, byte_order, new_order, &header->data, 0); _dbus_string_set_byte (&header->data, BYTE_ORDER_OFFSET, new_order); - header->byte_order = new_order; } /** @} */ diff --git a/dbus/dbus-marshal-header.h b/dbus/dbus-marshal-header.h index fd16c5f0..350fe5c4 100644 --- a/dbus/dbus-marshal-header.h +++ b/dbus/dbus-marshal-header.h @@ -59,12 +59,11 @@ struct DBusHeader dbus_uint32_t byte_order : 8; /**< byte order of header */ }; -dbus_bool_t _dbus_header_init (DBusHeader *header, - int byte_order); +dbus_bool_t _dbus_header_init (DBusHeader *header); void _dbus_header_free (DBusHeader *header); -void _dbus_header_reinit (DBusHeader *header, - int byte_order); +void _dbus_header_reinit (DBusHeader *header); dbus_bool_t _dbus_header_create (DBusHeader *header, + int byte_order, int type, const char *destination, const char *path, @@ -122,6 +121,7 @@ dbus_bool_t _dbus_header_load (DBusHeader *header, int len); void _dbus_header_byteswap (DBusHeader *header, int new_order); +char _dbus_header_get_byte_order (const DBusHeader *header); diff --git a/dbus/dbus-memory.c b/dbus/dbus-memory.c index a37759c0..ee40e82b 100644 --- a/dbus/dbus-memory.c +++ b/dbus/dbus-memory.c @@ -295,7 +295,7 @@ _dbus_decrement_fail_alloc_counter (void) int _dbus_get_malloc_blocks_outstanding (void) { - return n_blocks_outstanding.value; + return _dbus_atomic_get (&n_blocks_outstanding); } /** @@ -634,10 +634,15 @@ dbus_free (void *memory) check_guards (memory, TRUE); if (memory) { - _dbus_atomic_dec (&n_blocks_outstanding); - - _dbus_assert (n_blocks_outstanding.value >= 0); - +#ifdef DBUS_DISABLE_ASSERT + _dbus_atomic_dec (&n_blocks_outstanding); +#else + dbus_int32_t old_value; + + old_value = _dbus_atomic_dec (&n_blocks_outstanding); + _dbus_assert (old_value >= 1); +#endif + free (((unsigned char*)memory) - GUARD_START_OFFSET); } @@ -648,9 +653,14 @@ dbus_free (void *memory) if (memory) /* we guarantee it's safe to free (NULL) */ { #ifdef DBUS_BUILD_TESTS +#ifdef DBUS_DISABLE_ASSERT _dbus_atomic_dec (&n_blocks_outstanding); - - _dbus_assert (n_blocks_outstanding.value >= 0); +#else + dbus_int32_t old_value; + + old_value = _dbus_atomic_dec (&n_blocks_outstanding); + _dbus_assert (old_value >= 1); +#endif #endif free (memory); diff --git a/dbus/dbus-mempool.c b/dbus/dbus-mempool.c index 680586b7..563bffc6 100644 --- a/dbus/dbus-mempool.c +++ b/dbus/dbus-mempool.c @@ -390,6 +390,48 @@ _dbus_mem_pool_dealloc (DBusMemPool *pool, } } +#ifdef DBUS_ENABLE_STATS +void +_dbus_mem_pool_get_stats (DBusMemPool *pool, + dbus_uint32_t *in_use_p, + dbus_uint32_t *in_free_list_p, + dbus_uint32_t *allocated_p) +{ + DBusMemBlock *block; + DBusFreedElement *freed; + dbus_uint32_t in_use = 0; + dbus_uint32_t in_free_list = 0; + dbus_uint32_t allocated = 0; + + if (pool != NULL) + { + in_use = pool->element_size * pool->allocated_elements; + + for (freed = pool->free_elements; freed != NULL; freed = freed->next) + { + in_free_list += pool->element_size; + } + + for (block = pool->blocks; block != NULL; block = block->next) + { + if (block == pool->blocks) + allocated += pool->block_size; + else + allocated += block->used_so_far; + } + } + + if (in_use_p != NULL) + *in_use_p = in_use; + + if (in_free_list_p != NULL) + *in_free_list_p = in_free_list; + + if (allocated_p != NULL) + *allocated_p = allocated; +} +#endif /* DBUS_ENABLE_STATS */ + /** @} */ #ifdef DBUS_BUILD_TESTS diff --git a/dbus/dbus-mempool.h b/dbus/dbus-mempool.h index afe52472..6693eeb2 100644 --- a/dbus/dbus-mempool.h +++ b/dbus/dbus-mempool.h @@ -39,6 +39,12 @@ void* _dbus_mem_pool_alloc (DBusMemPool *pool); dbus_bool_t _dbus_mem_pool_dealloc (DBusMemPool *pool, void *element); +/* if DBUS_ENABLE_STATS */ +void _dbus_mem_pool_get_stats (DBusMemPool *pool, + dbus_uint32_t *in_use_p, + dbus_uint32_t *in_free_list_p, + dbus_uint32_t *allocated_p); + DBUS_END_DECLS #endif /* DBUS_MEMPOOL_H */ diff --git a/dbus/dbus-message-factory.c b/dbus/dbus-message-factory.c index 7fae5833..b5a06f1d 100644 --- a/dbus/dbus-message-factory.c +++ b/dbus/dbus-message-factory.c @@ -170,6 +170,7 @@ generate_many_bodies_inner (DBusMessageDataIter *iter, DBusMessage *message; DBusString signature; DBusString body; + char byte_order; /* Keeping this small makes things go faster */ message = dbus_message_new_method_call ("o.z.F", @@ -179,13 +180,15 @@ generate_many_bodies_inner (DBusMessageDataIter *iter, if (message == NULL) _dbus_assert_not_reached ("oom"); + byte_order = _dbus_header_get_byte_order (&message->header); + set_reply_serial (message); if (!_dbus_string_init (&signature) || !_dbus_string_init (&body)) _dbus_assert_not_reached ("oom"); if (dbus_internal_do_not_use_generate_bodies (iter_get_sequence (iter), - message->byte_order, + byte_order, &signature, &body)) { const char *v_SIGNATURE; @@ -202,7 +205,7 @@ generate_many_bodies_inner (DBusMessageDataIter *iter, _dbus_marshal_set_uint32 (&message->header.data, BODY_LENGTH_OFFSET, _dbus_string_get_length (&message->body), - message->byte_order); + byte_order); *message_p = message; } @@ -578,15 +581,18 @@ generate_special (DBusMessageDataIter *iter, } else if (item_seq == 8) { + char byte_order; + message = simple_method_call (); + byte_order = _dbus_header_get_byte_order (&message->header); generate_from_message (data, expected_validity, message); _dbus_marshal_set_uint32 (data, BODY_LENGTH_OFFSET, DBUS_MAXIMUM_MESSAGE_LENGTH / 2 + 4, - message->byte_order); + byte_order); _dbus_marshal_set_uint32 (data, FIELDS_ARRAY_LENGTH_OFFSET, DBUS_MAXIMUM_MESSAGE_LENGTH / 2 + 4, - message->byte_order); + byte_order); *expected_validity = DBUS_INVALID_MESSAGE_TOO_LONG; } else if (item_seq == 9) diff --git a/dbus/dbus-message-internal.h b/dbus/dbus-message-internal.h index 870934b9..d4e8a6c5 100644 --- a/dbus/dbus-message-internal.h +++ b/dbus/dbus-message-internal.h @@ -46,8 +46,7 @@ dbus_bool_t _dbus_message_add_counter (DBusMessage *message, void _dbus_message_add_counter_link (DBusMessage *message, DBusList *link); void _dbus_message_remove_counter (DBusMessage *message, - DBusCounter *counter, - DBusList **link_return); + DBusCounter *counter); DBusMessageLoader* _dbus_message_loader_new (void); DBusMessageLoader* _dbus_message_loader_ref (DBusMessageLoader *loader); diff --git a/dbus/dbus-message-private.h b/dbus/dbus-message-private.h index c5e3b3ea..e64258ca 100644 --- a/dbus/dbus-message-private.h +++ b/dbus/dbus-message-private.h @@ -102,8 +102,6 @@ struct DBusMessage DBusString body; /**< Body network data. */ - char byte_order; /**< Message byte order. */ - unsigned int locked : 1; /**< Message being sent, no modifications allowed. */ #ifndef DBUS_DISABLE_CHECKS diff --git a/dbus/dbus-message-util.c b/dbus/dbus-message-util.c index e06886a1..f7859520 100644 --- a/dbus/dbus-message-util.c +++ b/dbus/dbus-message-util.c @@ -619,8 +619,8 @@ process_test_subdir (const DBusString *test_base_dir, { if (_dbus_string_ends_with_c_str (&filename, ".message")) { - _dbus_warn ("Could not load %s, message builder language no longer supported\n", - _dbus_string_get_const_data (&filename)); + printf ("SKIP: Could not load %s, message builder language no longer supported\n", + _dbus_string_get_const_data (&filename)); } _dbus_verbose ("Skipping non-.message file %s\n", diff --git a/dbus/dbus-message.c b/dbus/dbus-message.c index a59ed9bf..cc1cfa17 100644 --- a/dbus/dbus-message.c +++ b/dbus/dbus-message.c @@ -115,8 +115,11 @@ _dbus_message_byteswap (DBusMessage *message) { const DBusString *type_str; int type_pos; - - if (message->byte_order == DBUS_COMPILER_BYTE_ORDER) + char byte_order; + + byte_order = _dbus_header_get_byte_order (&message->header); + + if (byte_order == DBUS_COMPILER_BYTE_ORDER) return; _dbus_verbose ("Swapping message into compiler byte order\n"); @@ -124,13 +127,13 @@ _dbus_message_byteswap (DBusMessage *message) get_const_signature (&message->header, &type_str, &type_pos); _dbus_marshal_byteswap (type_str, type_pos, - message->byte_order, + byte_order, DBUS_COMPILER_BYTE_ORDER, &message->body, 0); - message->byte_order = DBUS_COMPILER_BYTE_ORDER; - _dbus_header_byteswap (&message->header, DBUS_COMPILER_BYTE_ORDER); + _dbus_assert (_dbus_header_get_byte_order (&message->header) == + DBUS_COMPILER_BYTE_ORDER); } /** byte-swap the message if it doesn't match our byte order. @@ -139,9 +142,7 @@ _dbus_message_byteswap (DBusMessage *message) * Otherwise should not be called since it would do needless * work. */ -#define ensure_byte_order(message) \ - if (message->byte_order != DBUS_COMPILER_BYTE_ORDER) \ - _dbus_message_byteswap (message) +#define ensure_byte_order(message) _dbus_message_byteswap (message) /** * Gets the data to be sent over the network for this message. @@ -217,6 +218,11 @@ dbus_message_set_serial (DBusMessage *message, * itself not incremented. Ownership of link and counter refcount is * passed to the message. * + * This function may be called with locks held. As a result, the counter's + * notify function is not called; the caller is expected to either call + * _dbus_counter_notify() on the counter when they are no longer holding + * locks, or take the same action that would be taken by the notify function. + * * @param message the message * @param link link with counter as data */ @@ -260,6 +266,11 @@ _dbus_message_add_counter_link (DBusMessage *message, * of this message, and decremented by the size/unix fds of this * message when this message if finalized. * + * This function may be called with locks held. As a result, the counter's + * notify function is not called; the caller is expected to either call + * _dbus_counter_notify() on the counter when they are no longer holding + * locks, or take the same action that would be taken by the notify function. + * * @param message the message * @param counter the counter * @returns #FALSE if no memory @@ -285,13 +296,11 @@ _dbus_message_add_counter (DBusMessage *message, * decrements the counter by the size/unix fds of this message. * * @param message the message - * @param link_return return the link used * @param counter the counter */ void _dbus_message_remove_counter (DBusMessage *message, - DBusCounter *counter, - DBusList **link_return) + DBusCounter *counter) { DBusList *link; @@ -299,12 +308,7 @@ _dbus_message_remove_counter (DBusMessage *message, counter); _dbus_assert (link != NULL); - _dbus_list_unlink (&message->counters, - link); - if (link_return) - *link_return = link; - else - _dbus_list_free_link (link); + _dbus_list_remove_link (&message->counters, link); _dbus_counter_adjust_size (counter, - message->size_counter_delta); @@ -312,6 +316,7 @@ _dbus_message_remove_counter (DBusMessage *message, _dbus_counter_adjust_unix_fd (counter, - message->unix_fd_counter_delta); #endif + _dbus_counter_notify (counter); _dbus_counter_unref (counter); } @@ -526,7 +531,8 @@ dbus_message_get_cached (void) _dbus_assert (i < MAX_MESSAGE_CACHE_SIZE); _dbus_assert (message != NULL); - _dbus_assert (message->refcount.value == 0); + _dbus_assert (_dbus_atomic_get (&message->refcount) == 0); + _dbus_assert (message->counters == NULL); _DBUS_UNLOCK (message_cache); @@ -573,6 +579,7 @@ free_counter (void *element, _dbus_counter_adjust_unix_fd (counter, - message->unix_fd_counter_delta); #endif + _dbus_counter_notify (counter); _dbus_counter_unref (counter); } @@ -586,8 +593,8 @@ dbus_message_cache_or_finalize (DBusMessage *message) { dbus_bool_t was_cached; int i; - - _dbus_assert (message->refcount.value == 0); + + _dbus_assert (_dbus_atomic_get (&message->refcount) == 0); /* This calls application code and has to be done first thing * without holding the lock @@ -649,8 +656,8 @@ dbus_message_cache_or_finalize (DBusMessage *message) #endif out: - _dbus_assert (message->refcount.value == 0); - + _dbus_assert (_dbus_atomic_get (&message->refcount) == 0); + _DBUS_UNLOCK (message_cache); if (!was_cached) @@ -661,15 +668,19 @@ dbus_message_cache_or_finalize (DBusMessage *message) static dbus_bool_t _dbus_message_iter_check (DBusMessageRealIter *iter) { + char byte_order; + if (iter == NULL) { _dbus_warn_check_failed ("dbus message iterator is NULL\n"); return FALSE; } + byte_order = _dbus_header_get_byte_order (&iter->message->header); + if (iter->iter_type == DBUS_MESSAGE_ITER_TYPE_READER) { - if (iter->u.reader.byte_order != iter->message->byte_order) + if (iter->u.reader.byte_order != byte_order) { _dbus_warn_check_failed ("dbus message changed byte order since iterator was created\n"); return FALSE; @@ -679,7 +690,7 @@ _dbus_message_iter_check (DBusMessageRealIter *iter) } else if (iter->iter_type == DBUS_MESSAGE_ITER_TYPE_WRITER) { - if (iter->u.writer.byte_order != iter->message->byte_order) + if (iter->u.writer.byte_order != byte_order) { _dbus_warn_check_failed ("dbus message changed byte order since append iterator was created\n"); return FALSE; @@ -1039,7 +1050,7 @@ dbus_message_get_reply_serial (DBusMessage *message) static void dbus_message_finalize (DBusMessage *message) { - _dbus_assert (message->refcount.value == 0); + _dbus_assert (_dbus_atomic_get (&message->refcount) == 0); /* This calls application callbacks! */ _dbus_data_slot_list_free (&message->slot_list); @@ -1056,8 +1067,8 @@ dbus_message_finalize (DBusMessage *message) dbus_free(message->unix_fds); #endif - _dbus_assert (message->refcount.value == 0); - + _dbus_assert (_dbus_atomic_get (&message->refcount) == 0); + dbus_free (message); } @@ -1076,7 +1087,7 @@ dbus_message_new_empty_header (void) else { from_cache = FALSE; - message = dbus_new (DBusMessage, 1); + message = dbus_new0 (DBusMessage, 1); if (message == NULL) return NULL; #ifndef DBUS_DISABLE_CHECKS @@ -1088,9 +1099,9 @@ dbus_message_new_empty_header (void) message->n_unix_fds_allocated = 0; #endif } - - message->refcount.value = 1; - message->byte_order = DBUS_COMPILER_BYTE_ORDER; + + _dbus_atomic_inc (&message->refcount); + message->locked = FALSE; #ifndef DBUS_DISABLE_CHECKS message->in_cache = FALSE; @@ -1110,12 +1121,12 @@ dbus_message_new_empty_header (void) if (from_cache) { - _dbus_header_reinit (&message->header, message->byte_order); + _dbus_header_reinit (&message->header); _dbus_string_set_length (&message->body, 0); } else { - if (!_dbus_header_init (&message->header, message->byte_order)) + if (!_dbus_header_init (&message->header)) { dbus_free (message); return NULL; @@ -1156,6 +1167,7 @@ dbus_message_new (int message_type) return NULL; if (!_dbus_header_create (&message->header, + DBUS_COMPILER_BYTE_ORDER, message_type, NULL, NULL, NULL, NULL, NULL)) { @@ -1209,6 +1221,7 @@ dbus_message_new_method_call (const char *destination, return NULL; if (!_dbus_header_create (&message->header, + DBUS_COMPILER_BYTE_ORDER, DBUS_MESSAGE_TYPE_METHOD_CALL, destination, path, interface, method, NULL)) { @@ -1243,6 +1256,7 @@ dbus_message_new_method_return (DBusMessage *method_call) return NULL; if (!_dbus_header_create (&message->header, + DBUS_COMPILER_BYTE_ORDER, DBUS_MESSAGE_TYPE_METHOD_RETURN, sender, NULL, NULL, NULL, NULL)) { @@ -1295,6 +1309,7 @@ dbus_message_new_signal (const char *path, return NULL; if (!_dbus_header_create (&message->header, + DBUS_COMPILER_BYTE_ORDER, DBUS_MESSAGE_TYPE_SIGNAL, NULL, path, interface, name, NULL)) { @@ -1345,6 +1360,7 @@ dbus_message_new_error (DBusMessage *reply_to, return NULL; if (!_dbus_header_create (&message->header, + DBUS_COMPILER_BYTE_ORDER, DBUS_MESSAGE_TYPE_ERROR, sender, NULL, NULL, NULL, error_name)) { @@ -1448,8 +1464,8 @@ dbus_message_copy (const DBusMessage *message) if (retval == NULL) return NULL; - retval->refcount.value = 1; - retval->byte_order = message->byte_order; + _dbus_atomic_inc (&retval->refcount); + retval->locked = FALSE; #ifndef DBUS_DISABLE_CHECKS retval->generation = message->generation; @@ -1519,14 +1535,20 @@ dbus_message_copy (const DBusMessage *message) DBusMessage * dbus_message_ref (DBusMessage *message) { +#ifndef DBUS_DISABLE_ASSERT dbus_int32_t old_refcount; +#endif _dbus_return_val_if_fail (message != NULL, NULL); _dbus_return_val_if_fail (message->generation == _dbus_current_generation, NULL); _dbus_return_val_if_fail (!message->in_cache, NULL); - + +#ifdef DBUS_DISABLE_ASSERT + _dbus_atomic_inc (&message->refcount); +#else old_refcount = _dbus_atomic_inc (&message->refcount); _dbus_assert (old_refcount >= 1); +#endif return message; } @@ -1549,7 +1571,7 @@ dbus_message_unref (DBusMessage *message) old_refcount = _dbus_atomic_dec (&message->refcount); - _dbus_assert (old_refcount >= 0); + _dbus_assert (old_refcount >= 1); if (old_refcount == 1) { @@ -1929,7 +1951,7 @@ dbus_message_iter_init (DBusMessage *message, DBUS_MESSAGE_ITER_TYPE_READER); _dbus_type_reader_init (&real->u.reader, - message->byte_order, + _dbus_header_get_byte_order (&message->header), type_str, type_pos, &message->body, 0); @@ -2284,7 +2306,7 @@ dbus_message_iter_init_append (DBusMessage *message, * due to OOM. */ _dbus_type_writer_init_types_delayed (&real->u.writer, - message->byte_order, + _dbus_header_get_byte_order (&message->header), &message->body, _dbus_string_get_length (&message->body)); } @@ -3995,8 +4017,6 @@ load_message (DBusMessageLoader *loader, _dbus_assert (validity == DBUS_VALID); - message->byte_order = byte_order; - /* 2. VALIDATE BODY */ if (mode != DBUS_VALIDATION_MODE_WE_TRUST_THIS_DATA_ABSOLUTELY) { diff --git a/dbus/dbus-object-tree.c b/dbus/dbus-object-tree.c index 989e5d8b..172c9d95 100644 --- a/dbus/dbus-object-tree.c +++ b/dbus/dbus-object-tree.c @@ -954,7 +954,7 @@ allocate_subtree_object (const char *name) len = strlen (name); - subtree = dbus_malloc (MAX (front_padding + (len + 1), sizeof (DBusObjectSubtree))); + subtree = dbus_malloc0 (MAX (front_padding + (len + 1), sizeof (DBusObjectSubtree))); if (subtree == NULL) return NULL; @@ -991,7 +991,7 @@ _dbus_object_subtree_new (const char *name, } subtree->user_data = user_data; - subtree->refcount.value = 1; + _dbus_atomic_inc (&subtree->refcount); subtree->subtrees = NULL; subtree->n_subtrees = 0; subtree->max_subtrees = 0; @@ -1006,8 +1006,14 @@ _dbus_object_subtree_new (const char *name, static DBusObjectSubtree * _dbus_object_subtree_ref (DBusObjectSubtree *subtree) { - _dbus_assert (subtree->refcount.value > 0); +#ifdef DBUS_DISABLE_ASSERT _dbus_atomic_inc (&subtree->refcount); +#else + dbus_int32_t old_value; + + old_value = _dbus_atomic_inc (&subtree->refcount); + _dbus_assert (old_value > 0); +#endif return subtree; } @@ -1015,9 +1021,12 @@ _dbus_object_subtree_ref (DBusObjectSubtree *subtree) static void _dbus_object_subtree_unref (DBusObjectSubtree *subtree) { - _dbus_assert (subtree->refcount.value > 0); + dbus_int32_t old_value; + + old_value = _dbus_atomic_dec (&subtree->refcount); + _dbus_assert (old_value > 0); - if (_dbus_atomic_dec (&subtree->refcount) == 1) + if (old_value == 1) { _dbus_assert (subtree->unregister_function == NULL); _dbus_assert (subtree->message_function == NULL); diff --git a/dbus/dbus-pending-call.c b/dbus/dbus-pending-call.c index 70392b79..f9613195 100644 --- a/dbus/dbus-pending-call.c +++ b/dbus/dbus-pending-call.c @@ -133,8 +133,8 @@ _dbus_pending_call_new_unlocked (DBusConnection *connection, { pending->timeout = NULL; } - - pending->refcount.value = 1; + + _dbus_atomic_inc (&pending->refcount); pending->connection = connection; _dbus_connection_ref_unlocked (pending->connection); @@ -353,6 +353,8 @@ _dbus_pending_call_set_timeout_error_unlocked (DBusPendingCall *pending, reply_link = _dbus_list_alloc_link (reply); if (reply_link == NULL) { + /* it's OK to unref this, nothing that could have attached a callback + * has ever seen it */ dbus_message_unref (reply); return FALSE; } @@ -374,8 +376,8 @@ _dbus_pending_call_set_timeout_error_unlocked (DBusPendingCall *pending, DBusPendingCall * _dbus_pending_call_ref_unlocked (DBusPendingCall *pending) { - pending->refcount.value += 1; - + _dbus_atomic_inc (&pending->refcount); + return pending; } @@ -433,15 +435,14 @@ _dbus_pending_call_last_unref (DBusPendingCall *pending) void _dbus_pending_call_unref_and_unlock (DBusPendingCall *pending) { - dbus_bool_t last_unref; - - _dbus_assert (pending->refcount.value > 0); + dbus_int32_t old_refcount; - pending->refcount.value -= 1; - last_unref = pending->refcount.value == 0; + old_refcount = _dbus_atomic_dec (&pending->refcount); + _dbus_assert (old_refcount > 0); CONNECTION_UNLOCK (pending->connection); - if (last_unref) + + if (old_refcount == 1) _dbus_pending_call_last_unref (pending); } @@ -554,19 +555,8 @@ dbus_pending_call_ref (DBusPendingCall *pending) { _dbus_return_val_if_fail (pending != NULL, NULL); - /* The connection lock is better than the global - * lock in the atomic increment fallback - */ -#ifdef DBUS_HAVE_ATOMIC_INT _dbus_atomic_inc (&pending->refcount); -#else - CONNECTION_LOCK (pending->connection); - _dbus_assert (pending->refcount.value > 0); - pending->refcount.value += 1; - CONNECTION_UNLOCK (pending->connection); -#endif - return pending; } @@ -583,19 +573,8 @@ dbus_pending_call_unref (DBusPendingCall *pending) _dbus_return_if_fail (pending != NULL); - /* More efficient to use the connection lock instead of atomic - * int fallback if we lack atomic int decrement - */ -#ifdef DBUS_HAVE_ATOMIC_INT last_unref = (_dbus_atomic_dec (&pending->refcount) == 1); -#else - CONNECTION_LOCK (pending->connection); - _dbus_assert (pending->refcount.value > 0); - pending->refcount.value -= 1; - last_unref = pending->refcount.value == 0; - CONNECTION_UNLOCK (pending->connection); -#endif - + if (last_unref) _dbus_pending_call_last_unref(pending); } diff --git a/dbus/dbus-resources.c b/dbus/dbus-resources.c index 5f7001cc..42aedf58 100644 --- a/dbus/dbus-resources.c +++ b/dbus/dbus-resources.c @@ -58,11 +58,17 @@ struct DBusCounter long size_value; /**< current size counter value */ long unix_fd_value; /**< current unix fd counter value */ +#ifdef DBUS_ENABLE_STATS + long peak_size_value; /**< largest ever size counter value */ + long peak_unix_fd_value; /**< largest ever unix fd counter value */ +#endif + long notify_size_guard_value; /**< call notify function when crossing this size value */ long notify_unix_fd_guard_value; /**< call notify function when crossing this unix fd value */ DBusCounterNotifyFunction notify_function; /**< notify function */ void *notify_data; /**< data for notify function */ + dbus_bool_t notify_pending : 1; /**< TRUE if the guard value has been crossed */ }; /** @} */ /* end of resource limits internals docs */ @@ -91,10 +97,16 @@ _dbus_counter_new (void) counter->size_value = 0; counter->unix_fd_value = 0; +#ifdef DBUS_ENABLE_STATS + counter->peak_size_value = 0; + counter->peak_unix_fd_value = 0; +#endif + counter->notify_size_guard_value = 0; counter->notify_unix_fd_guard_value = 0; counter->notify_function = NULL; counter->notify_data = NULL; + counter->notify_pending = FALSE; return counter; } @@ -138,8 +150,9 @@ _dbus_counter_unref (DBusCounter *counter) /** * Adjusts the value of the size counter by the given * delta which may be positive or negative. - * Calls the notify function from _dbus_counter_set_notify() - * if that function has been specified. + * + * This function may be called with locks held. After calling it, when + * any relevant locks are no longer held you must call _dbus_counter_notify(). * * @param counter the counter * @param delta value to add to the size counter's current value @@ -152,6 +165,11 @@ _dbus_counter_adjust_size (DBusCounter *counter, counter->size_value += delta; +#ifdef DBUS_ENABLE_STATS + if (counter->peak_size_value < counter->size_value) + counter->peak_size_value = counter->size_value; +#endif + #if 0 _dbus_verbose ("Adjusting counter %ld by %ld = %ld\n", old, delta, counter->size_value); @@ -162,14 +180,33 @@ _dbus_counter_adjust_size (DBusCounter *counter, counter->size_value >= counter->notify_size_guard_value) || (old >= counter->notify_size_guard_value && counter->size_value < counter->notify_size_guard_value))) - (* counter->notify_function) (counter, counter->notify_data); + counter->notify_pending = TRUE; +} + +/** + * Calls the notify function from _dbus_counter_set_notify(), + * if that function has been specified and the counter has crossed the + * guard value (in either direction) since the last call to this function. + * + * This function must not be called with locks held, since it can call out + * to user code. + */ +void +_dbus_counter_notify (DBusCounter *counter) +{ + if (counter->notify_pending) + { + counter->notify_pending = FALSE; + (* counter->notify_function) (counter, counter->notify_data); + } } /** * Adjusts the value of the unix fd counter by the given * delta which may be positive or negative. - * Calls the notify function from _dbus_counter_set_notify() - * if that function has been specified. + * + * This function may be called with locks held. After calling it, when + * any relevant locks are no longer held you must call _dbus_counter_notify(). * * @param counter the counter * @param delta value to add to the unix fds counter's current value @@ -182,6 +219,11 @@ _dbus_counter_adjust_unix_fd (DBusCounter *counter, counter->unix_fd_value += delta; +#ifdef DBUS_ENABLE_STATS + if (counter->peak_unix_fd_value < counter->unix_fd_value) + counter->peak_unix_fd_value = counter->unix_fd_value; +#endif + #if 0 _dbus_verbose ("Adjusting counter %ld by %ld = %ld\n", old, delta, counter->unix_fd_value); @@ -192,7 +234,7 @@ _dbus_counter_adjust_unix_fd (DBusCounter *counter, counter->unix_fd_value >= counter->notify_unix_fd_guard_value) || (old >= counter->notify_unix_fd_guard_value && counter->unix_fd_value < counter->notify_unix_fd_guard_value))) - (* counter->notify_function) (counter, counter->notify_data); + counter->notify_pending = TRUE; } /** @@ -241,6 +283,21 @@ _dbus_counter_set_notify (DBusCounter *counter, counter->notify_unix_fd_guard_value = unix_fd_guard_value; counter->notify_function = function; counter->notify_data = user_data; + counter->notify_pending = FALSE; +} + +#ifdef DBUS_ENABLE_STATS +long +_dbus_counter_get_peak_size_value (DBusCounter *counter) +{ + return counter->peak_size_value; } +long +_dbus_counter_get_peak_unix_fd_value (DBusCounter *counter) +{ + return counter->peak_unix_fd_value; +} +#endif + /** @} */ /* end of resource limits exported API */ diff --git a/dbus/dbus-resources.h b/dbus/dbus-resources.h index 4763a97f..781a5756 100644 --- a/dbus/dbus-resources.h +++ b/dbus/dbus-resources.h @@ -42,6 +42,7 @@ void _dbus_counter_adjust_size (DBusCounter *counter, long delta); void _dbus_counter_adjust_unix_fd (DBusCounter *counter, long delta); +void _dbus_counter_notify (DBusCounter *counter); long _dbus_counter_get_size_value (DBusCounter *counter); long _dbus_counter_get_unix_fd_value (DBusCounter *counter); @@ -51,6 +52,9 @@ void _dbus_counter_set_notify (DBusCounter *counter, DBusCounterNotifyFunction function, void *user_data); +/* if DBUS_ENABLE_STATS */ +long _dbus_counter_get_peak_size_value (DBusCounter *counter); +long _dbus_counter_get_peak_unix_fd_value (DBusCounter *counter); DBUS_END_DECLS diff --git a/dbus/dbus-server-socket.c b/dbus/dbus-server-socket.c index e8a24e48..02973c19 100644 --- a/dbus/dbus-server-socket.c +++ b/dbus/dbus-server-socket.c @@ -236,6 +236,7 @@ socket_disconnect (DBusServer *server) { _dbus_server_remove_watch (server, socket_server->watch[i]); + _dbus_watch_invalidate (socket_server->watch[i]); _dbus_watch_unref (socket_server->watch[i]); socket_server->watch[i] = NULL; } diff --git a/dbus/dbus-server.c b/dbus/dbus-server.c index 60d14b33..5383a66a 100644 --- a/dbus/dbus-server.c +++ b/dbus/dbus-server.c @@ -99,7 +99,16 @@ _dbus_server_init_base (DBusServer *server, const DBusString *address) { server->vtable = vtable; - server->refcount.value = 1; + +#ifdef DBUS_DISABLE_ASSERT + _dbus_atomic_inc (&server->refcount); +#else + { + dbus_int32_t old_refcount = _dbus_atomic_inc (&server->refcount); + + _dbus_assert (old_refcount == 0); + } +#endif server->address = NULL; server->watches = NULL; @@ -434,16 +443,16 @@ void _dbus_server_ref_unlocked (DBusServer *server) { _dbus_assert (server != NULL); - _dbus_assert (server->refcount.value > 0); - HAVE_LOCK_CHECK (server); -#ifdef DBUS_HAVE_ATOMIC_INT +#ifdef DBUS_DISABLE_ASSERT _dbus_atomic_inc (&server->refcount); #else - _dbus_assert (server->refcount.value > 0); + { + dbus_int32_t old_refcount = _dbus_atomic_inc (&server->refcount); - server->refcount.value += 1; + _dbus_assert (old_refcount > 0); + } #endif } @@ -455,25 +464,18 @@ _dbus_server_ref_unlocked (DBusServer *server) void _dbus_server_unref_unlocked (DBusServer *server) { - dbus_bool_t last_unref; + dbus_int32_t old_refcount; /* Keep this in sync with dbus_server_unref */ - + _dbus_assert (server != NULL); - _dbus_assert (server->refcount.value > 0); HAVE_LOCK_CHECK (server); - -#ifdef DBUS_HAVE_ATOMIC_INT - last_unref = (_dbus_atomic_dec (&server->refcount) == 1); -#else - _dbus_assert (server->refcount.value > 0); - server->refcount.value -= 1; - last_unref = (server->refcount.value == 0); -#endif - - if (last_unref) + old_refcount = _dbus_atomic_dec (&server->refcount); + _dbus_assert (old_refcount > 0); + + if (old_refcount == 1) { _dbus_assert (server->disconnected); @@ -680,16 +682,26 @@ DBusServer * dbus_server_ref (DBusServer *server) { _dbus_return_val_if_fail (server != NULL, NULL); - _dbus_return_val_if_fail (server->refcount.value > 0, NULL); -#ifdef DBUS_HAVE_ATOMIC_INT +#ifdef DBUS_DISABLE_CHECKS _dbus_atomic_inc (&server->refcount); #else - SERVER_LOCK (server); - _dbus_assert (server->refcount.value > 0); + { + dbus_int32_t old_refcount; - server->refcount.value += 1; - SERVER_UNLOCK (server); + /* can't get the refcount without a side-effect */ + old_refcount = _dbus_atomic_inc (&server->refcount); + + if (_DBUS_UNLIKELY (old_refcount <= 0)) + { + /* undo side-effect first */ + _dbus_atomic_dec (&server->refcount); + _dbus_warn_check_failed (_dbus_return_if_fail_warning_format, + _DBUS_FUNCTION_NAME, "old_refcount > 0", + __FILE__, __LINE__); + return NULL; + } + } #endif return server; @@ -706,27 +718,28 @@ dbus_server_ref (DBusServer *server) void dbus_server_unref (DBusServer *server) { - dbus_bool_t last_unref; + dbus_int32_t old_refcount; /* keep this in sync with unref_unlocked */ - + _dbus_return_if_fail (server != NULL); - _dbus_return_if_fail (server->refcount.value > 0); -#ifdef DBUS_HAVE_ATOMIC_INT - last_unref = (_dbus_atomic_dec (&server->refcount) == 1); -#else - SERVER_LOCK (server); - - _dbus_assert (server->refcount.value > 0); + /* can't get the refcount without a side-effect */ + old_refcount = _dbus_atomic_dec (&server->refcount); - server->refcount.value -= 1; - last_unref = (server->refcount.value == 0); - - SERVER_UNLOCK (server); +#ifndef DBUS_DISABLE_CHECKS + if (_DBUS_UNLIKELY (old_refcount <= 0)) + { + /* undo side-effect first */ + _dbus_atomic_inc (&server->refcount); + _dbus_warn_check_failed (_dbus_return_if_fail_warning_format, + _DBUS_FUNCTION_NAME, "old_refcount > 0", + __FILE__, __LINE__); + return; + } #endif - - if (last_unref) + + if (old_refcount == 1) { /* lock not held! */ _dbus_assert (server->disconnected); @@ -749,11 +762,19 @@ void dbus_server_disconnect (DBusServer *server) { _dbus_return_if_fail (server != NULL); - _dbus_return_if_fail (server->refcount.value > 0); + +#ifdef DBUS_DISABLE_CHECKS + _dbus_atomic_inc (&server->refcount); +#else + { + dbus_int32_t old_refcount = _dbus_atomic_inc (&server->refcount); + + _dbus_return_if_fail (old_refcount > 0); + } +#endif SERVER_LOCK (server); - _dbus_server_ref_unlocked (server); - + _dbus_assert (server->vtable->disconnect != NULL); if (!server->disconnected) diff --git a/dbus/dbus-spawn-win.c b/dbus/dbus-spawn-win.c index 8ac837ed..df073722 100644 --- a/dbus/dbus-spawn-win.c +++ b/dbus/dbus-spawn-win.c @@ -81,6 +81,8 @@ struct DBusBabysitter DBusWatchList *watches; DBusWatch *sitter_watch; + DBusBabysitterFinishedFunc finished_cb; + void *finished_data; dbus_bool_t have_spawn_errno; int spawn_errno; @@ -154,6 +156,27 @@ _dbus_babysitter_ref (DBusBabysitter *sitter) return sitter; } +static void +close_socket_to_babysitter (DBusBabysitter *sitter) +{ + _dbus_verbose ("Closing babysitter\n"); + + if (sitter->sitter_watch != NULL) + { + _dbus_assert (sitter->watches != NULL); + _dbus_watch_list_remove_watch (sitter->watches, sitter->sitter_watch); + _dbus_watch_invalidate (sitter->sitter_watch); + _dbus_watch_unref (sitter->sitter_watch); + sitter->sitter_watch = NULL; + } + + if (sitter->socket_to_babysitter != -1) + { + _dbus_close_socket (sitter->socket_to_babysitter, NULL); + sitter->socket_to_babysitter = -1; + } +} + /** * Decrement the reference count on the babysitter object. * @@ -172,11 +195,7 @@ _dbus_babysitter_unref (DBusBabysitter *sitter) if (sitter->refcount == 0) { - if (sitter->socket_to_babysitter != -1) - { - _dbus_close_socket (sitter->socket_to_babysitter, NULL); - sitter->socket_to_babysitter = -1; - } + close_socket_to_babysitter (sitter); if (sitter->socket_to_main != -1) { @@ -372,9 +391,15 @@ handle_watch (DBusWatch *watch, */ PING(); - _dbus_close_socket (sitter->socket_to_babysitter, NULL); + close_socket_to_babysitter (sitter); PING(); - sitter->socket_to_babysitter = -1; + + if (_dbus_babysitter_get_child_exited (sitter) && + sitter->finished_cb != NULL) + { + sitter->finished_cb (sitter, sitter->finished_data); + sitter->finished_cb = NULL; + } return TRUE; } @@ -668,6 +693,12 @@ _dbus_spawn_async_with_babysitter (DBusBabysitter **sitter_p, PING(); if (!_dbus_watch_list_add_watch (sitter->watches, sitter->sitter_watch)) { + /* we need to free it early so the destructor won't try to remove it + * without it having been added, which DBusLoop doesn't allow */ + _dbus_watch_invalidate (sitter->sitter_watch); + _dbus_watch_unref (sitter->sitter_watch); + sitter->sitter_watch = NULL; + _DBUS_SET_OOM (error); goto out0; } @@ -713,6 +744,15 @@ out0: return FALSE; } +void +_dbus_babysitter_set_result_function (DBusBabysitter *sitter, + DBusBabysitterFinishedFunc finished, + void *user_data) +{ + sitter->finished_cb = finished; + sitter->finished_data = user_data; +} + #ifdef DBUS_BUILD_TESTS #define LIVE_CHILDREN(sitter) ((sitter)->child_handle != NULL) diff --git a/dbus/dbus-spawn.c b/dbus/dbus-spawn.c index a1bab3df..a4652a3e 100644 --- a/dbus/dbus-spawn.c +++ b/dbus/dbus-spawn.c @@ -205,6 +205,9 @@ struct DBusBabysitter DBusWatch *error_watch; /**< Error pipe watch */ DBusWatch *sitter_watch; /**< Sitter pipe watch */ + DBusBabysitterFinishedFunc finished_cb; + void *finished_data; + int errnum; /**< Error number */ int status; /**< Exit status code */ unsigned int have_child_status : 1; /**< True if child status has been reaped */ @@ -257,6 +260,9 @@ _dbus_babysitter_ref (DBusBabysitter *sitter) return sitter; } +static void close_socket_to_babysitter (DBusBabysitter *sitter); +static void close_error_pipe_from_child (DBusBabysitter *sitter); + /** * Decrement the reference count on the babysitter object. * When the reference count of the babysitter object reaches @@ -273,25 +279,17 @@ _dbus_babysitter_unref (DBusBabysitter *sitter) sitter->refcount -= 1; if (sitter->refcount == 0) - { - if (sitter->socket_to_babysitter >= 0) - { - /* If we haven't forked other babysitters - * since this babysitter and socket were - * created then this close will cause the - * babysitter to wake up from poll with - * a hangup and then the babysitter will - * quit itself. - */ - _dbus_close_socket (sitter->socket_to_babysitter, NULL); - sitter->socket_to_babysitter = -1; - } + { + /* If we haven't forked other babysitters + * since this babysitter and socket were + * created then this close will cause the + * babysitter to wake up from poll with + * a hangup and then the babysitter will + * quit itself. + */ + close_socket_to_babysitter (sitter); - if (sitter->error_pipe_from_child >= 0) - { - _dbus_close_socket (sitter->error_pipe_from_child, NULL); - sitter->error_pipe_from_child = -1; - } + close_error_pipe_from_child (sitter); if (sitter->sitter_pid > 0) { @@ -341,21 +339,7 @@ _dbus_babysitter_unref (DBusBabysitter *sitter) sitter->sitter_pid = -1; } - - if (sitter->error_watch) - { - _dbus_watch_invalidate (sitter->error_watch); - _dbus_watch_unref (sitter->error_watch); - sitter->error_watch = NULL; - } - if (sitter->sitter_watch) - { - _dbus_watch_invalidate (sitter->sitter_watch); - _dbus_watch_unref (sitter->sitter_watch); - sitter->sitter_watch = NULL; - } - if (sitter->watches) _dbus_watch_list_free (sitter->watches); @@ -476,16 +460,42 @@ static void close_socket_to_babysitter (DBusBabysitter *sitter) { _dbus_verbose ("Closing babysitter\n"); - _dbus_close_socket (sitter->socket_to_babysitter, NULL); - sitter->socket_to_babysitter = -1; + + if (sitter->sitter_watch != NULL) + { + _dbus_assert (sitter->watches != NULL); + _dbus_watch_list_remove_watch (sitter->watches, sitter->sitter_watch); + _dbus_watch_invalidate (sitter->sitter_watch); + _dbus_watch_unref (sitter->sitter_watch); + sitter->sitter_watch = NULL; + } + + if (sitter->socket_to_babysitter >= 0) + { + _dbus_close_socket (sitter->socket_to_babysitter, NULL); + sitter->socket_to_babysitter = -1; + } } static void close_error_pipe_from_child (DBusBabysitter *sitter) { _dbus_verbose ("Closing child error\n"); - _dbus_close_socket (sitter->error_pipe_from_child, NULL); - sitter->error_pipe_from_child = -1; + + if (sitter->error_watch != NULL) + { + _dbus_assert (sitter->watches != NULL); + _dbus_watch_list_remove_watch (sitter->watches, sitter->error_watch); + _dbus_watch_invalidate (sitter->error_watch); + _dbus_watch_unref (sitter->error_watch); + sitter->error_watch = NULL; + } + + if (sitter->error_pipe_from_child >= 0) + { + _dbus_close_socket (sitter->error_pipe_from_child, NULL); + sitter->error_pipe_from_child = -1; + } } static void @@ -752,7 +762,7 @@ handle_watch (DBusWatch *watch, unsigned int condition, void *data) { - DBusBabysitter *sitter = data; + DBusBabysitter *sitter = _dbus_babysitter_ref (data); int revents; int fd; @@ -775,31 +785,19 @@ handle_watch (DBusWatch *watch, babysitter_iteration (sitter, FALSE)) ; - /* Those might have closed the sockets we're watching. Before returning - * to the main loop, we must sort that out. */ + /* fd.o #32992: if the handle_* methods closed their sockets, they previously + * didn't always remove the watches. Check that we don't regress. */ + _dbus_assert (sitter->socket_to_babysitter != -1 || sitter->sitter_watch == NULL); + _dbus_assert (sitter->error_pipe_from_child != -1 || sitter->error_watch == NULL); - if (sitter->error_watch != NULL && sitter->error_pipe_from_child == -1) + if (_dbus_babysitter_get_child_exited (sitter) && + sitter->finished_cb != NULL) { - _dbus_watch_invalidate (sitter->error_watch); - - if (sitter->watches != NULL) - _dbus_watch_list_remove_watch (sitter->watches, sitter->error_watch); - - _dbus_watch_unref (sitter->error_watch); - sitter->error_watch = NULL; - } - - if (sitter->sitter_watch != NULL && sitter->socket_to_babysitter == -1) - { - _dbus_watch_invalidate (sitter->sitter_watch); - - if (sitter->watches != NULL) - _dbus_watch_list_remove_watch (sitter->watches, sitter->sitter_watch); - - _dbus_watch_unref (sitter->sitter_watch); - sitter->sitter_watch = NULL; + sitter->finished_cb (sitter, sitter->finished_data); + sitter->finished_cb = NULL; } + _dbus_babysitter_unref (sitter); return TRUE; } @@ -1189,6 +1187,12 @@ _dbus_spawn_async_with_babysitter (DBusBabysitter **sitter_p, if (!_dbus_watch_list_add_watch (sitter->watches, sitter->error_watch)) { + /* we need to free it early so the destructor won't try to remove it + * without it having been added, which DBusLoop doesn't allow */ + _dbus_watch_invalidate (sitter->error_watch); + _dbus_watch_unref (sitter->error_watch); + sitter->error_watch = NULL; + dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); goto cleanup_and_fail; } @@ -1204,6 +1208,12 @@ _dbus_spawn_async_with_babysitter (DBusBabysitter **sitter_p, if (!_dbus_watch_list_add_watch (sitter->watches, sitter->sitter_watch)) { + /* we need to free it early so the destructor won't try to remove it + * without it having been added, which DBusLoop doesn't allow */ + _dbus_watch_invalidate (sitter->sitter_watch); + _dbus_watch_unref (sitter->sitter_watch); + sitter->sitter_watch = NULL; + dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); goto cleanup_and_fail; } @@ -1298,6 +1308,15 @@ _dbus_spawn_async_with_babysitter (DBusBabysitter **sitter_p, return FALSE; } +void +_dbus_babysitter_set_result_function (DBusBabysitter *sitter, + DBusBabysitterFinishedFunc finished, + void *user_data) +{ + sitter->finished_cb = finished; + sitter->finished_data = user_data; +} + /** @} */ #ifdef DBUS_BUILD_TESTS diff --git a/dbus/dbus-spawn.h b/dbus/dbus-spawn.h index 5af54b72..a8814fb9 100644 --- a/dbus/dbus-spawn.h +++ b/dbus/dbus-spawn.h @@ -35,12 +35,18 @@ typedef void (* DBusSpawnChildSetupFunc) (void *user_data); typedef struct DBusBabysitter DBusBabysitter; +typedef void (* DBusBabysitterFinishedFunc) (DBusBabysitter *sitter, + void *user_data); + dbus_bool_t _dbus_spawn_async_with_babysitter (DBusBabysitter **sitter_p, char **argv, char **env, DBusSpawnChildSetupFunc child_setup, void *user_data, DBusError *error); +void _dbus_babysitter_set_result_function (DBusBabysitter *sitter, + DBusBabysitterFinishedFunc finished, + void *user_data); DBusBabysitter* _dbus_babysitter_ref (DBusBabysitter *sitter); void _dbus_babysitter_unref (DBusBabysitter *sitter); void _dbus_babysitter_kill_child (DBusBabysitter *sitter); diff --git a/dbus/dbus-string-private.h b/dbus/dbus-string-private.h index 365d89a3..185515d8 100644 --- a/dbus/dbus-string-private.h +++ b/dbus/dbus-string-private.h @@ -44,7 +44,6 @@ typedef struct unsigned char *str; /**< String data, plus nul termination */ int len; /**< Length without nul */ int allocated; /**< Allocated size of data */ - int max_length; /**< Max length of this string, without nul byte */ unsigned int constant : 1; /**< String data is not owned by DBusString */ unsigned int locked : 1; /**< DBusString has been locked and can't be changed */ unsigned int invalid : 1; /**< DBusString is invalid (e.g. already freed) */ @@ -63,17 +62,24 @@ typedef struct */ /** - * This is the maximum max length (and thus also the maximum length) - * of a DBusString + * The maximum length of a DBusString */ -#define _DBUS_STRING_MAX_MAX_LENGTH (_DBUS_INT32_MAX - _DBUS_STRING_ALLOCATION_PADDING) +#define _DBUS_STRING_MAX_LENGTH (_DBUS_INT32_MAX - _DBUS_STRING_ALLOCATION_PADDING) /** * Checks a bunch of assertions about a string object * * @param real the DBusRealString */ -#define DBUS_GENERIC_STRING_PREAMBLE(real) _dbus_assert ((real) != NULL); _dbus_assert (!(real)->invalid); _dbus_assert ((real)->len >= 0); _dbus_assert ((real)->allocated >= 0); _dbus_assert ((real)->max_length >= 0); _dbus_assert ((real)->len <= ((real)->allocated - _DBUS_STRING_ALLOCATION_PADDING)); _dbus_assert ((real)->len <= (real)->max_length) +#define DBUS_GENERIC_STRING_PREAMBLE(real) \ + do { \ + _dbus_assert ((real) != NULL); \ + _dbus_assert (!(real)->invalid); \ + _dbus_assert ((real)->len >= 0); \ + _dbus_assert ((real)->allocated >= 0); \ + _dbus_assert ((real)->len <= ((real)->allocated - _DBUS_STRING_ALLOCATION_PADDING)); \ + _dbus_assert ((real)->len <= _DBUS_STRING_MAX_LENGTH); \ + } while (0) /** * Checks assertions about a string object that needs to be diff --git a/dbus/dbus-string-util.c b/dbus/dbus-string-util.c index b31703ca..421ac1b4 100644 --- a/dbus/dbus-string-util.c +++ b/dbus/dbus-string-util.c @@ -120,26 +120,6 @@ _dbus_string_find_byte_backward (const DBusString *str, #include <stdio.h> static void -test_max_len (DBusString *str, - int max_len) -{ - if (max_len > 0) - { - if (!_dbus_string_set_length (str, max_len - 1)) - _dbus_assert_not_reached ("setting len to one less than max should have worked"); - } - - if (!_dbus_string_set_length (str, max_len)) - _dbus_assert_not_reached ("setting len to max len should have worked"); - - if (_dbus_string_set_length (str, max_len + 1)) - _dbus_assert_not_reached ("setting len to one more than max len should not have worked"); - - if (!_dbus_string_set_length (str, 0)) - _dbus_assert_not_reached ("setting len to zero should have worked"); -} - -static void test_hex_roundtrip (const unsigned char *data, int len) { @@ -232,25 +212,6 @@ test_roundtrips (TestRoundtripFunc func) } } -#ifdef DBUS_BUILD_TESTS -/* The max length thing is sort of a historical artifact - * from a feature that turned out to be dumb; perhaps - * we should purge it entirely. The problem with - * the feature is that it looks like memory allocation - * failure, but is not a transient or resolvable failure. - */ -static void -set_max_length (DBusString *str, - int max_length) -{ - DBusRealString *real; - - real = (DBusRealString*) str; - - real->max_length = max_length; -} -#endif /* DBUS_BUILD_TESTS */ - /** * @ingroup DBusStringInternals * Unit test for DBusString. @@ -272,20 +233,6 @@ _dbus_string_test (void) int lens[] = { 0, 1, 2, 3, 4, 5, 10, 16, 17, 18, 25, 31, 32, 33, 34, 35, 63, 64, 65, 66, 67, 68, 69, 70, 71, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136 }; char *s; dbus_unichar_t ch; - - i = 0; - while (i < _DBUS_N_ELEMENTS (lens)) - { - if (!_dbus_string_init (&str)) - _dbus_assert_not_reached ("failed to init string"); - - set_max_length (&str, lens[i]); - - test_max_len (&str, lens[i]); - _dbus_string_free (&str); - - ++i; - } /* Test shortening and setting length */ i = 0; @@ -296,8 +243,6 @@ _dbus_string_test (void) if (!_dbus_string_init (&str)) _dbus_assert_not_reached ("failed to init string"); - set_max_length (&str, lens[i]); - if (!_dbus_string_set_length (&str, lens[i])) _dbus_assert_not_reached ("failed to set string length"); diff --git a/dbus/dbus-string.c b/dbus/dbus-string.c index 2471f46d..6658abd4 100644 --- a/dbus/dbus-string.c +++ b/dbus/dbus-string.c @@ -154,7 +154,6 @@ _dbus_string_init_preallocated (DBusString *str, real->len = 0; real->str[real->len] = '\0'; - real->max_length = _DBUS_STRING_MAX_MAX_LENGTH; real->constant = FALSE; real->locked = FALSE; real->invalid = FALSE; @@ -178,25 +177,6 @@ _dbus_string_init (DBusString *str) return _dbus_string_init_preallocated (str, 0); } -#ifdef DBUS_BUILD_TESTS -/* The max length thing is sort of a historical artifact - * from a feature that turned out to be dumb; perhaps - * we should purge it entirely. The problem with - * the feature is that it looks like memory allocation - * failure, but is not a transient or resolvable failure. - */ -static void -set_max_length (DBusString *str, - int max_length) -{ - DBusRealString *real; - - real = (DBusRealString*) str; - - real->max_length = max_length; -} -#endif /* DBUS_BUILD_TESTS */ - /** * Initializes a constant string. The value parameter is not copied * (should be static), and the string may never be modified. @@ -235,7 +215,7 @@ _dbus_string_init_const_len (DBusString *str, _dbus_assert (str != NULL); _dbus_assert (len == 0 || value != NULL); - _dbus_assert (len <= _DBUS_STRING_MAX_MAX_LENGTH); + _dbus_assert (len <= _DBUS_STRING_MAX_LENGTH); _dbus_assert (len >= 0); real = (DBusRealString*) str; @@ -243,7 +223,6 @@ _dbus_string_init_const_len (DBusString *str, real->str = (unsigned char*) value; real->len = len; real->allocated = real->len + _DBUS_STRING_ALLOCATION_PADDING; /* a lie, just to avoid special-case assertions... */ - real->max_length = real->len + 1; real->constant = TRUE; real->locked = TRUE; real->invalid = FALSE; @@ -336,8 +315,8 @@ reallocate_for_length (DBusRealString *real, /* at least double our old allocation to avoid O(n), avoiding * overflow */ - if (real->allocated > (_DBUS_STRING_MAX_MAX_LENGTH + _DBUS_STRING_ALLOCATION_PADDING) / 2) - new_allocated = _DBUS_STRING_MAX_MAX_LENGTH + _DBUS_STRING_ALLOCATION_PADDING; + if (real->allocated > (_DBUS_STRING_MAX_LENGTH + _DBUS_STRING_ALLOCATION_PADDING) / 2) + new_allocated = _DBUS_STRING_MAX_LENGTH + _DBUS_STRING_ALLOCATION_PADDING; else new_allocated = real->allocated * 2; @@ -400,7 +379,7 @@ set_length (DBusRealString *real, /* Note, we are setting the length not including nul termination */ /* exceeding max length is the same as failure to allocate memory */ - if (_DBUS_UNLIKELY (new_length > real->max_length)) + if (_DBUS_UNLIKELY (new_length > _DBUS_STRING_MAX_LENGTH)) return FALSE; else if (new_length > (real->allocated - _DBUS_STRING_ALLOCATION_PADDING) && _DBUS_UNLIKELY (!reallocate_for_length (real, new_length))) @@ -421,7 +400,7 @@ open_gap (int len, if (len == 0) return TRUE; - if (len > dest->max_length - dest->len) + if (len > _DBUS_STRING_MAX_LENGTH - dest->len) return FALSE; /* detected overflow of dest->len + len below */ if (!set_length (dest, dest->len + len)) @@ -640,7 +619,6 @@ dbus_bool_t _dbus_string_steal_data (DBusString *str, char **data_return) { - int old_max_length; DBUS_STRING_PREAMBLE (str); _dbus_assert (data_return != NULL); @@ -648,8 +626,6 @@ _dbus_string_steal_data (DBusString *str, *data_return = (char*) real->str; - old_max_length = real->max_length; - /* reset the string */ if (!_dbus_string_init (str)) { @@ -660,63 +636,8 @@ _dbus_string_steal_data (DBusString *str, return FALSE; } - real->max_length = old_max_length; - - return TRUE; -} - -#ifdef DBUS_BUILD_TESTS -/** - * Like _dbus_string_get_data_len(), but removes the gotten data from - * the original string. The caller must free the data returned. This - * function may fail due to lack of memory, and return #FALSE. - * The returned string is nul-terminated and has length len. - * - * @todo this function is broken because on failure it - * may corrupt the source string. - * - * @param str the string - * @param data_return location to return the buffer - * @param start the start of segment to steal - * @param len the length of segment to steal - * @returns #TRUE on success - */ -dbus_bool_t -_dbus_string_steal_data_len (DBusString *str, - char **data_return, - int start, - int len) -{ - DBusString dest; - DBUS_STRING_PREAMBLE (str); - _dbus_assert (data_return != NULL); - _dbus_assert (start >= 0); - _dbus_assert (len >= 0); - _dbus_assert (start <= real->len); - _dbus_assert (len <= real->len - start); - - if (!_dbus_string_init (&dest)) - return FALSE; - - set_max_length (&dest, real->max_length); - - if (!_dbus_string_move_len (str, start, len, &dest, 0)) - { - _dbus_string_free (&dest); - return FALSE; - } - - _dbus_warn ("Broken code in _dbus_string_steal_data_len(), see @todo, FIXME\n"); - if (!_dbus_string_steal_data (&dest, data_return)) - { - _dbus_string_free (&dest); - return FALSE; - } - - _dbus_string_free (&dest); return TRUE; } -#endif /* DBUS_BUILD_TESTS */ /** * Copies the data from the string into a char* @@ -785,53 +706,6 @@ _dbus_string_copy_to_buffer_with_nul (const DBusString *str, memcpy (buffer, real->str, real->len+1); } -#ifdef DBUS_BUILD_TESTS -/** - * Copies a segment of the string into a char* - * - * @param str the string - * @param data_return place to return the data - * @param start start index - * @param len length to copy - * @returns #FALSE if no memory - */ -dbus_bool_t -_dbus_string_copy_data_len (const DBusString *str, - char **data_return, - int start, - int len) -{ - DBusString dest; - - DBUS_CONST_STRING_PREAMBLE (str); - _dbus_assert (data_return != NULL); - _dbus_assert (start >= 0); - _dbus_assert (len >= 0); - _dbus_assert (start <= real->len); - _dbus_assert (len <= real->len - start); - - if (!_dbus_string_init (&dest)) - return FALSE; - - set_max_length (&dest, real->max_length); - - if (!_dbus_string_copy_len (str, start, len, &dest, 0)) - { - _dbus_string_free (&dest); - return FALSE; - } - - if (!_dbus_string_steal_data (&dest, data_return)) - { - _dbus_string_free (&dest); - return FALSE; - } - - _dbus_string_free (&dest); - return TRUE; -} -#endif /* DBUS_BUILD_TESTS */ - /* Only have the function if we don't have the macro */ #ifndef _dbus_string_get_length /** @@ -867,7 +741,7 @@ _dbus_string_lengthen (DBusString *str, DBUS_STRING_PREAMBLE (str); _dbus_assert (additional_length >= 0); - if (_DBUS_UNLIKELY (additional_length > real->max_length - real->len)) + if (_DBUS_UNLIKELY (additional_length > _DBUS_STRING_MAX_LENGTH - real->len)) return FALSE; /* would overflow */ return set_length (real, @@ -933,7 +807,7 @@ align_insert_point_then_open_gap (DBusString *str, gap_pos = _DBUS_ALIGN_VALUE (insert_at, alignment); new_len = real->len + (gap_pos - insert_at) + gap_size; - if (_DBUS_UNLIKELY (new_len > (unsigned long) real->max_length)) + if (_DBUS_UNLIKELY (new_len > (unsigned long) _DBUS_STRING_MAX_LENGTH)) return FALSE; delta = new_len - real->len; @@ -1045,7 +919,7 @@ _dbus_string_append (DBusString *str, _dbus_assert (buffer != NULL); buffer_len = strlen (buffer); - if (buffer_len > (unsigned long) real->max_length) + if (buffer_len > (unsigned long) _DBUS_STRING_MAX_LENGTH) return FALSE; return append (real, buffer, buffer_len); @@ -1255,6 +1129,9 @@ _dbus_string_append_printf_valist (DBusString *str, /* Measure the message length without terminating nul */ len = _dbus_printf_string_upper_bound (format, args); + if (len < 0) + return FALSE; + if (!_dbus_string_lengthen (str, len)) { /* don't leak the copy */ @@ -1389,7 +1266,7 @@ _dbus_string_append_unichar (DBusString *str, len = 6; } - if (len > (real->max_length - real->len)) + if (len > (_DBUS_STRING_MAX_LENGTH - real->len)) return FALSE; /* real->len + len would overflow */ if (!set_length (real, real->len + len)) @@ -1538,9 +1415,6 @@ _dbus_string_copy (const DBusString *source, * Like _dbus_string_move(), but can move a segment from * the middle of the source string. * - * @todo this doesn't do anything with max_length field. - * we should probably just kill the max_length field though. - * * @param source the source string * @param start first byte of source string to move * @param len length of segment to move diff --git a/dbus/dbus-string.h b/dbus/dbus-string.h index 2f1ed31c..2f1fe878 100644 --- a/dbus/dbus-string.h +++ b/dbus/dbus-string.h @@ -48,11 +48,10 @@ struct DBusString #endif int dummy2; /**< placeholder */ int dummy3; /**< placeholder */ - int dummy4; /**< placeholder */ - unsigned int dummy5 : 1; /**< placeholder */ - unsigned int dummy6 : 1; /**< placeholder */ - unsigned int dummy7 : 1; /**< placeholder */ - unsigned int dummy8 : 3; /**< placeholder */ + unsigned int dummy_bit1 : 1; /**< placeholder */ + unsigned int dummy_bit2 : 1; /**< placeholder */ + unsigned int dummy_bit3 : 1; /**< placeholder */ + unsigned int dummy_bits : 3; /**< placeholder */ }; #ifdef DBUS_DISABLE_ASSERT @@ -324,7 +323,6 @@ void _dbus_string_zero (DBusString *str); sizeof(_dbus_static_string_##name), \ sizeof(_dbus_static_string_##name) + \ _DBUS_STRING_ALLOCATION_PADDING, \ - sizeof(_dbus_static_string_##name), \ TRUE, TRUE, FALSE, 0 } DBUS_END_DECLS diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c index e1e1728d..f9315702 100644 --- a/dbus/dbus-sysdeps-unix.c +++ b/dbus/dbus-sysdeps-unix.c @@ -132,13 +132,6 @@ _dbus_open_socket (int *fd_p, } } -dbus_bool_t -_dbus_open_tcp_socket (int *fd, - DBusError *error) -{ - return _dbus_open_socket(fd, AF_INET, SOCK_STREAM, 0, error); -} - /** * Opens a UNIX domain socket (as in the socket() call). * Does not bind the socket. @@ -149,7 +142,7 @@ _dbus_open_tcp_socket (int *fd, * @param error return location for an error * @returns #FALSE if error is set */ -dbus_bool_t +static dbus_bool_t _dbus_open_unix_socket (int *fd, DBusError *error) { @@ -826,8 +819,6 @@ _dbus_connect_unix_socket (const char *path, path, _dbus_strerror (errno)); _dbus_close (fd, NULL); - fd = -1; - return -1; } @@ -836,8 +827,6 @@ _dbus_connect_unix_socket (const char *path, _DBUS_ASSERT_ERROR_IS_SET (error); _dbus_close (fd, NULL); - fd = -1; - return -1; } @@ -1161,14 +1150,6 @@ _dbus_connect_tcp_socket_with_nonce (const char *host, struct addrinfo hints; struct addrinfo *ai, *tmp; - _DBUS_ASSERT_ERROR_IS_CLEAR (error); - - if (!_dbus_open_tcp_socket (&fd, error)) - { - _DBUS_ASSERT_ERROR_IS_SET(error); - return -1; - } - _DBUS_ASSERT_ERROR_IS_CLEAR(error); _DBUS_ZERO (hints); @@ -2367,6 +2348,29 @@ _dbus_atomic_dec (DBusAtomic *atomic) #endif } +/** + * Atomically get the value of an integer. It may change at any time + * thereafter, so this is mostly only useful for assertions. + * + * @param atomic pointer to the integer to get + * @returns the value at this moment + */ +dbus_int32_t +_dbus_atomic_get (DBusAtomic *atomic) +{ +#if DBUS_USE_SYNC + __sync_synchronize (); + return atomic->value; +#else + dbus_int32_t res; + + _DBUS_LOCK (atomic); + res = atomic->value; + _DBUS_UNLOCK (atomic); + return res; +#endif +} + #ifdef DBUS_BUILD_TESTS /** Gets our GID * @returns process GID @@ -3641,12 +3645,18 @@ _dbus_get_standard_system_servicedirs (DBusList **dirs) } /* - * add configured datadir to defaults - * this may be the same as an xdg dir - * however the config parser should take - * care of duplicates + * Add configured datadir to defaults. This may be the same as one + * of the XDG directories. However, the config parser should take + * care of the duplicates. + * + * Also, append /lib as counterpart of /usr/share on the root + * directory (the root directory does not know /share), in order to + * facilitate early boot system bus activation where /usr might not + * be available. */ - if (!_dbus_string_append (&servicedir_path, DBUS_DATADIR":")) + if (!_dbus_string_append (&servicedir_path, + DBUS_DATADIR":" + "/lib:")) goto oom; if (!_dbus_split_paths_and_append (&servicedir_path, diff --git a/dbus/dbus-sysdeps-unix.h b/dbus/dbus-sysdeps-unix.h index d7022b07..200ec8a3 100644 --- a/dbus/dbus-sysdeps-unix.h +++ b/dbus/dbus-sysdeps-unix.h @@ -63,8 +63,6 @@ _dbus_write_two (int fd, int start2, int len2); -dbus_bool_t _dbus_open_unix_socket (int *fd, - DBusError *error); int _dbus_connect_unix_socket (const char *path, dbus_bool_t abstract, DBusError *error); diff --git a/dbus/dbus-sysdeps-win.c b/dbus/dbus-sysdeps-win.c index 19f6fa0b..a8c60bda 100644 --- a/dbus/dbus-sysdeps-win.c +++ b/dbus/dbus-sysdeps-win.c @@ -549,6 +549,10 @@ int _dbus_printf_string_upper_bound (const char *format, bufsize *= 2; p = malloc (bufsize); + + if (p == NULL) + return -1; + len = _vsnprintf (p, bufsize - 1, format, args); free (p); } @@ -2639,6 +2643,10 @@ _dbus_daemon_is_session_bus_address_published (const char *scope) // see http://msdn.microsoft.com/en-us/library/ms684315%28VS.85%29.aspx hDBusDaemonMutex = CreateMutexA( NULL, FALSE, _dbus_string_get_const_data(&mutex_name) ); + /* The client uses mutex ownership to detect a running server, so the server should do so too. + Fortunally the client deletes the mutex in the lock protected area, so checking presence + will work too. */ + _dbus_global_unlock( lock ); _dbus_string_free( &mutex_name ); @@ -2684,6 +2692,14 @@ _dbus_daemon_publish_session_bus_address (const char* address, const char *scope } _dbus_string_free( &mutex_name ); + // acquire the mutex + if (WaitForSingleObject( hDBusDaemonMutex, 10 ) != WAIT_OBJECT_0) + { + _dbus_global_unlock( lock ); + CloseHandle( hDBusDaemonMutex ); + return FALSE; + } + if (!_dbus_get_shm_name(&shm_name,scope)) { _dbus_string_free( &shm_name ); @@ -3066,6 +3082,21 @@ _dbus_atomic_dec (DBusAtomic *atomic) } /** + * Atomically get the value of an integer. It may change at any time + * thereafter, so this is mostly only useful for assertions. + * + * @param atomic pointer to the integer to get + * @returns the value at this moment + */ +dbus_int32_t +_dbus_atomic_get (DBusAtomic *atomic) +{ + /* this is what GLib does, hopefully it's right... */ + MemoryBarrier (); + return atomic->value; +} + +/** * Called when the bus daemon is signaled to reload its configuration; any * caches should be nuked. Of course any caches that need explicit reload * are probably broken, but c'est la vie. diff --git a/dbus/dbus-sysdeps.h b/dbus/dbus-sysdeps.h index 22d7969e..f66efaad 100644 --- a/dbus/dbus-sysdeps.h +++ b/dbus/dbus-sysdeps.h @@ -121,8 +121,6 @@ typedef unsigned long dbus_gid_t; * */ -dbus_bool_t _dbus_open_tcp_socket (int *fd, - DBusError *error); dbus_bool_t _dbus_close_socket (int fd, DBusError *error); int _dbus_read_socket (int fd, @@ -244,6 +242,7 @@ struct DBusAtomic dbus_int32_t _dbus_atomic_inc (DBusAtomic *atomic); dbus_int32_t _dbus_atomic_dec (DBusAtomic *atomic); +dbus_int32_t _dbus_atomic_get (DBusAtomic *atomic); /* AIX uses different values for poll */ diff --git a/dbus/dbus-test.c b/dbus/dbus-test.c index deb4c932..1fbaf8c8 100644 --- a/dbus/dbus-test.c +++ b/dbus/dbus-test.c @@ -135,7 +135,7 @@ dbus_internal_do_not_use_run_tests (const char *test_data_dir, const char *speci check_memleaks (); #else - _dbus_warn ("recursive marshal tests disabled\n"); + printf ("SKIP: recursive marshal tests disabled\n"); #endif run_test ("byteswap", specific_test, _dbus_marshal_byteswap_test); diff --git a/dbus/dbus-test.h b/dbus/dbus-test.h index 0238b0ce..982577fb 100644 --- a/dbus/dbus-test.h +++ b/dbus/dbus-test.h @@ -29,7 +29,6 @@ #include <dbus/dbus-marshal-validate.h> dbus_bool_t _dbus_hash_test (void); -dbus_bool_t _dbus_dict_test (void); dbus_bool_t _dbus_list_test (void); dbus_bool_t _dbus_marshal_test (void); dbus_bool_t _dbus_marshal_recursive_test (void); @@ -44,7 +43,6 @@ dbus_bool_t _dbus_address_test (void); dbus_bool_t _dbus_server_test (void); dbus_bool_t _dbus_message_test (const char *test_data_dir); dbus_bool_t _dbus_auth_test (const char *test_data_dir); -dbus_bool_t _dbus_md5_test (void); dbus_bool_t _dbus_sha_test (const char *test_data_dir); dbus_bool_t _dbus_keyring_test (void); dbus_bool_t _dbus_data_slot_test (void); diff --git a/dbus/dbus-transport-socket.c b/dbus/dbus-transport-socket.c index 1d4c2bf7..0673a8ce 100644 --- a/dbus/dbus-transport-socket.c +++ b/dbus/dbus-transport-socket.c @@ -677,8 +677,8 @@ do_writing (DBusTransport *transport) _dbus_string_set_length (&socket_transport->encoded_outgoing, 0); _dbus_string_compact (&socket_transport->encoded_outgoing, 2048); - _dbus_connection_message_sent (transport->connection, - message); + _dbus_connection_message_sent_unlocked (transport->connection, + message); } } } @@ -1278,8 +1278,10 @@ _dbus_transport_new_for_socket (int fd, return (DBusTransport*) socket_transport; failed_4: + _dbus_watch_invalidate (socket_transport->read_watch); _dbus_watch_unref (socket_transport->read_watch); failed_3: + _dbus_watch_invalidate (socket_transport->write_watch); _dbus_watch_unref (socket_transport->write_watch); failed_2: _dbus_string_free (&socket_transport->encoded_incoming); diff --git a/dbus/dbus-transport.c b/dbus/dbus-transport.c index ba6bd4b4..f743d010 100644 --- a/dbus/dbus-transport.c +++ b/dbus/dbus-transport.c @@ -72,12 +72,16 @@ live_messages_notify (DBusCounter *counter, _dbus_verbose ("Unix FD counter value is now %d\n", (int) _dbus_counter_get_unix_fd_value (counter)); #endif - + /* disable or re-enable the read watch for the transport if * required. */ if (transport->vtable->live_messages_changed) - (* transport->vtable->live_messages_changed) (transport); + { + _dbus_connection_lock (transport->connection); + (* transport->vtable->live_messages_changed) (transport); + _dbus_connection_unlock (transport->connection); + } _dbus_transport_unref (transport); } @@ -1144,6 +1148,13 @@ _dbus_transport_queue_messages (DBusTransport *transport) } else { + /* We didn't call the notify function when we added the counter, so + * catch up now. Since we have the connection's lock, it's desirable + * that we bypass the notify function and call this virtual method + * directly. */ + if (transport->vtable->live_messages_changed) + (* transport->vtable->live_messages_changed) (transport); + /* pass ownership of link and message ref to connection */ _dbus_connection_queue_received_message_link (transport->connection, link); @@ -1482,4 +1493,26 @@ _dbus_transport_set_allow_anonymous (DBusTransport *transport, transport->allow_anonymous = value != FALSE; } +#ifdef DBUS_ENABLE_STATS +void +_dbus_transport_get_stats (DBusTransport *transport, + dbus_uint32_t *queue_bytes, + dbus_uint32_t *queue_fds, + dbus_uint32_t *peak_queue_bytes, + dbus_uint32_t *peak_queue_fds) +{ + if (queue_bytes != NULL) + *queue_bytes = _dbus_counter_get_size_value (transport->live_messages); + + if (queue_fds != NULL) + *queue_fds = _dbus_counter_get_unix_fd_value (transport->live_messages); + + if (peak_queue_bytes != NULL) + *peak_queue_bytes = _dbus_counter_get_peak_size_value (transport->live_messages); + + if (peak_queue_fds != NULL) + *peak_queue_fds = _dbus_counter_get_peak_unix_fd_value (transport->live_messages); +} +#endif /* DBUS_ENABLE_STATS */ + /** @} */ diff --git a/dbus/dbus-transport.h b/dbus/dbus-transport.h index 0db048a2..4b821517 100644 --- a/dbus/dbus-transport.h +++ b/dbus/dbus-transport.h @@ -97,6 +97,12 @@ dbus_bool_t _dbus_transport_set_auth_mechanisms (DBusTransport void _dbus_transport_set_allow_anonymous (DBusTransport *transport, dbus_bool_t value); +/* if DBUS_ENABLE_STATS */ +void _dbus_transport_get_stats (DBusTransport *transport, + dbus_uint32_t *queue_bytes, + dbus_uint32_t *queue_fds, + dbus_uint32_t *peak_queue_bytes, + dbus_uint32_t *peak_queue_fds); DBUS_END_DECLS diff --git a/dbus/dbus-watch.c b/dbus/dbus-watch.c index 8d759e5e..b9f4ac23 100644 --- a/dbus/dbus-watch.c +++ b/dbus/dbus-watch.c @@ -50,6 +50,7 @@ struct DBusWatch void *data; /**< Application data. */ DBusFreeFunction free_data_function; /**< Free the application data. */ unsigned int enabled : 1; /**< Whether it's enabled. */ + unsigned int oom_last_time : 1; /**< Whether it was OOM last time. */ }; dbus_bool_t @@ -58,6 +59,19 @@ _dbus_watch_get_enabled (DBusWatch *watch) return watch->enabled; } +dbus_bool_t +_dbus_watch_get_oom_last_time (DBusWatch *watch) +{ + return watch->oom_last_time; +} + +void +_dbus_watch_set_oom_last_time (DBusWatch *watch, + dbus_bool_t oom) +{ + watch->oom_last_time = oom; +} + /** * Creates a new DBusWatch. Used to add a file descriptor to be polled * by a main loop. @@ -129,6 +143,9 @@ _dbus_watch_unref (DBusWatch *watch) watch->refcount -= 1; if (watch->refcount == 0) { + if (watch->fd != -1) + _dbus_warn ("this watch should have been invalidated"); + dbus_watch_set_data (watch, NULL, NULL); /* call free_data_function */ if (watch->free_handler_data_function) diff --git a/dbus/dbus-watch.h b/dbus/dbus-watch.h index fa953ec1..dd23b862 100644 --- a/dbus/dbus-watch.h +++ b/dbus/dbus-watch.h @@ -76,6 +76,10 @@ void _dbus_watch_list_toggle_watch (DBusWatchList *watch_li dbus_bool_t enabled); dbus_bool_t _dbus_watch_get_enabled (DBusWatch *watch); +dbus_bool_t _dbus_watch_get_oom_last_time (DBusWatch *watch); +void _dbus_watch_set_oom_last_time (DBusWatch *watch, + dbus_bool_t oom); + /** @} */ DBUS_END_DECLS diff --git a/doc/Makefile.am b/doc/Makefile.am index 11f756de..e4ab5fb8 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -28,16 +28,18 @@ DTDS = \ busconfig.dtd \ introspect.dtd -STATIC_DOCS = \ +dist_doc_DATA = \ diagram.png \ diagram.svg \ + system-activation.txt + +STATIC_DOCS = \ dbus-faq.xml \ dbus-specification.xml \ dbus-test-plan.xml \ dbus-tutorial.xml \ dcop-howto.txt \ introspect.xsl \ - system-activation.txt \ $(DTDS) EXTRA_DIST = \ @@ -46,17 +48,18 @@ EXTRA_DIST = \ $(STATIC_DOCS) \ $(MAN_IN_FILES) -HTML_FILES= \ +html_DATA = + +# we distribute these in the tarball so users don't necessarily need xmlto +dist_html_DATA = $(XMLTO_OUTPUT) + +XMLTO_OUTPUT= \ dbus-faq.html \ dbus-specification.html \ dbus-test-plan.html \ dbus-tutorial.html if DBUS_XML_DOCS_ENABLED -all-local:: $(HTML_FILES) - -EXTRA_DIST += $(HTML_FILES) - dbus-specification.html: dbus-specification.xml $(XMLTO) html-nochunks $< @@ -68,7 +71,6 @@ dbus-tutorial.html: dbus-tutorial.xml dbus-faq.html: dbus-faq.xml $(XMLTO) html-nochunks $< - endif if DBUS_DOXYGEN_DOCS_ENABLED @@ -79,7 +81,7 @@ doxygen.stamp: $(wildcard $(top_srcdir)/dbus/*.[ch]) @touch $@ if DBUS_HAVE_XSLTPROC -api_DATA = dbus.devhelp +html_DATA += dbus.devhelp dbus.devhelp: $(srcdir)/doxygen_to_devhelp.xsl doxygen.stamp $(XSLTPROC) -o $@ $< api/xml/index.xml @@ -95,12 +97,16 @@ uninstall-local:: rm -f $(DESTDIR)$(apidir)/*.html rm -f $(DESTDIR)$(apidir)/*.png rm -f $(DESTDIR)$(apidir)/*.css + rm -f $(DESTDIR)$(htmldir)/*.html + rm -f $(DESTDIR)$(docdir)/*.txt + rm -f $(DESTDIR)$(docdir)/*.png + rm -f $(DESTDIR)$(docdir)/*.svg rmdir --ignore-fail-on-non-empty $(DESTDIR)$(apidir) || \ rmdir $(DESTDIR)$(apidir) endif if DBUS_HAVE_MAN2HTML -all-local:: $(MAN_HTML_FILES) +html_DATA += $(MAN_HTML_FILES) %.1.html: %.1 $(AM_V_GEN)( $(MAN2HTML) $< > $@.tmp && mv $@.tmp $@ ) @@ -115,11 +121,12 @@ BONUS_FILES = \ $(top_srcdir)/COPYING \ $(top_srcdir)/ChangeLog -dbus-docs: $(STATIC_DOCS) $(HTML_FILES) $(MAN_HTML_FILES) $(BONUS_FILES) doxygen.stamp +dbus-docs: $(STATIC_DOCS) $(dist_doc_DATA) $(dist_html_DATA) $(MAN_HTML_FILES) $(BONUS_FILES) doxygen.stamp $(AM_V_at)rm -rf $@ $(AM_V_GEN)$(MKDIR_P) $@/api $(AM_V_at)cp $(STATIC_DOCS) $@ - $(AM_V_at)cp $(HTML_FILES) $@ + $(AM_V_at)cp $(dist_doc_DATA) $@ + $(AM_V_at)cp $(dist_html_DATA) $@ $(AM_V_at)cp $(MAN_HTML_FILES) $@ $(AM_V_at)cp $(BONUS_FILES) $@ $(AM_V_at)cp -r api/html $@/api @@ -147,10 +154,11 @@ maintainer-upload-docs: endif clean-local: + rm -f $(html_DATA) rm -rf api rm -rf dbus-docs rm -f *.1.html rm -f doxygen.stamp maintainer-clean-local: - rm -f $(HTML_FILES) + rm -f $(XMLTO_OUTPUT) diff --git a/doc/Makefile.in b/doc/Makefile.in index 1bcea172..0e352846 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -34,10 +34,12 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -@DBUS_XML_DOCS_ENABLED_TRUE@am__append_1 = $(HTML_FILES) +@DBUS_DOXYGEN_DOCS_ENABLED_TRUE@@DBUS_HAVE_XSLTPROC_TRUE@am__append_1 = dbus.devhelp +@DBUS_HAVE_MAN2HTML_TRUE@am__append_2 = $(MAN_HTML_FILES) subdir = doc -DIST_COMMON = $(dist_man1_MANS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(srcdir)/dbus-daemon.1.in TODO +DIST_COMMON = $(dist_doc_DATA) $(dist_html_DATA) $(dist_man1_MANS) \ + $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/dbus-daemon.1.in TODO ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ $(top_srcdir)/m4/compiler.m4 $(top_srcdir)/m4/libtool.m4 \ @@ -82,12 +84,14 @@ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' man1dir = $(mandir)/man1 -am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(apidir)" +am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(docdir)" \ + "$(DESTDIR)$(htmldir)" "$(DESTDIR)$(htmldir)" NROFF = nroff MANS = $(dist_man1_MANS) $(man1_MANS) -DATA = $(api_DATA) +DATA = $(dist_doc_DATA) $(dist_html_DATA) $(html_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ +ADT_LIBS = @ADT_LIBS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ @@ -108,10 +112,6 @@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DBUS_BINDIR = @DBUS_BINDIR@ -DBUS_BUS_CFLAGS = @DBUS_BUS_CFLAGS@ -DBUS_BUS_LIBS = @DBUS_BUS_LIBS@ -DBUS_CLIENT_CFLAGS = @DBUS_CLIENT_CFLAGS@ -DBUS_CLIENT_LIBS = @DBUS_CLIENT_LIBS@ DBUS_CONSOLE_AUTH_DIR = @DBUS_CONSOLE_AUTH_DIR@ DBUS_CONSOLE_OWNER_FILE = @DBUS_CONSOLE_OWNER_FILE@ DBUS_DAEMONDIR = @DBUS_DAEMONDIR@ @@ -123,8 +123,6 @@ DBUS_INT16_TYPE = @DBUS_INT16_TYPE@ DBUS_INT32_TYPE = @DBUS_INT32_TYPE@ DBUS_INT64_CONSTANT = @DBUS_INT64_CONSTANT@ DBUS_INT64_TYPE = @DBUS_INT64_TYPE@ -DBUS_LAUNCHER_CFLAGS = @DBUS_LAUNCHER_CFLAGS@ -DBUS_LAUNCHER_LIBS = @DBUS_LAUNCHER_LIBS@ DBUS_LIBEXECDIR = @DBUS_LIBEXECDIR@ DBUS_MAJOR_VERSION = @DBUS_MAJOR_VERSION@ DBUS_MICRO_VERSION = @DBUS_MICRO_VERSION@ @@ -136,8 +134,6 @@ DBUS_SESSION_SOCKET_DIR = @DBUS_SESSION_SOCKET_DIR@ DBUS_SYSTEM_BUS_DEFAULT_ADDRESS = @DBUS_SYSTEM_BUS_DEFAULT_ADDRESS@ DBUS_SYSTEM_PID_FILE = @DBUS_SYSTEM_PID_FILE@ DBUS_SYSTEM_SOCKET = @DBUS_SYSTEM_SOCKET@ -DBUS_TEST_CFLAGS = @DBUS_TEST_CFLAGS@ -DBUS_TEST_LIBS = @DBUS_TEST_LIBS@ DBUS_UINT64_CONSTANT = @DBUS_UINT64_CONSTANT@ DBUS_USER = @DBUS_USER@ DBUS_VERSION = @DBUS_VERSION@ @@ -175,6 +171,7 @@ LAUNCHCTL = @LAUNCHCTL@ LAUNCHD_AGENT_DIR = @LAUNCHD_AGENT_DIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBDBUS_LIBS = @LIBDBUS_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -191,6 +188,7 @@ MAKEINFO = @MAKEINFO@ MAN2HTML = @MAN2HTML@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +NETWORK_libs = @NETWORK_libs@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -210,6 +208,7 @@ RANLIB = @RANLIB@ RC = @RC@ R_DYNAMIC_LDFLAG = @R_DYNAMIC_LDFLAG@ SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -226,10 +225,13 @@ TEST_SLEEP_FOREVER_BINARY = @TEST_SLEEP_FOREVER_BINARY@ TEST_SOCKET_DIR = @TEST_SOCKET_DIR@ TEST_VALID_SERVICE_DIR = @TEST_VALID_SERVICE_DIR@ TEST_VALID_SERVICE_SYSTEM_DIR = @TEST_VALID_SERVICE_SYSTEM_DIR@ +THREAD_LIBS = @THREAD_LIBS@ VERSION = @VERSION@ WINDRES = @WINDRES@ XMKMF = @XMKMF@ XMLTO = @XMLTO@ +XML_CFLAGS = @XML_CFLAGS@ +XML_LIBS = @XML_LIBS@ XSLTPROC = @XSLTPROC@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ @@ -319,27 +321,36 @@ DTDS = \ busconfig.dtd \ introspect.dtd -STATIC_DOCS = \ +dist_doc_DATA = \ diagram.png \ diagram.svg \ + system-activation.txt + +STATIC_DOCS = \ dbus-faq.xml \ dbus-specification.xml \ dbus-test-plan.xml \ dbus-tutorial.xml \ dcop-howto.txt \ introspect.xsl \ - system-activation.txt \ $(DTDS) -EXTRA_DIST = file-boilerplate.c doxygen_to_devhelp.xsl $(STATIC_DOCS) \ - $(MAN_IN_FILES) $(am__append_1) -HTML_FILES = \ +EXTRA_DIST = \ + file-boilerplate.c \ + doxygen_to_devhelp.xsl \ + $(STATIC_DOCS) \ + $(MAN_IN_FILES) + +html_DATA = $(am__append_1) $(am__append_2) + +# we distribute these in the tarball so users don't necessarily need xmlto +dist_html_DATA = $(XMLTO_OUTPUT) +XMLTO_OUTPUT = \ dbus-faq.html \ dbus-specification.html \ dbus-test-plan.html \ dbus-tutorial.html -@DBUS_DOXYGEN_DOCS_ENABLED_TRUE@@DBUS_HAVE_XSLTPROC_TRUE@api_DATA = dbus.devhelp @DBUS_CAN_UPLOAD_DOCS_TRUE@BONUS_FILES = \ @DBUS_CAN_UPLOAD_DOCS_TRUE@ $(top_srcdir)/README \ @DBUS_CAN_UPLOAD_DOCS_TRUE@ $(top_srcdir)/HACKING \ @@ -427,26 +438,66 @@ uninstall-man1: test -z "$$files" || { \ echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(man1dir)" && rm -f $$files; } -install-apiDATA: $(api_DATA) +install-dist_docDATA: $(dist_doc_DATA) @$(NORMAL_INSTALL) - test -z "$(apidir)" || $(MKDIR_P) "$(DESTDIR)$(apidir)" - @list='$(api_DATA)'; test -n "$(apidir)" || list=; \ + test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)" + @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(apidir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(apidir)" || exit $$?; \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done -uninstall-apiDATA: +uninstall-dist_docDATA: @$(NORMAL_UNINSTALL) - @list='$(api_DATA)'; test -n "$(apidir)" || list=; \ + @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(apidir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(apidir)" && rm -f $$files + echo " ( cd '$(DESTDIR)$(docdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(docdir)" && rm -f $$files +install-dist_htmlDATA: $(dist_html_DATA) + @$(NORMAL_INSTALL) + test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)" + @list='$(dist_html_DATA)'; test -n "$(htmldir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \ + done + +uninstall-dist_htmlDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_html_DATA)'; test -n "$(htmldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(htmldir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(htmldir)" && rm -f $$files +install-htmlDATA: $(html_DATA) + @$(NORMAL_INSTALL) + test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)" + @list='$(html_DATA)'; test -n "$(htmldir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \ + done + +uninstall-htmlDATA: + @$(NORMAL_UNINSTALL) + @list='$(html_DATA)'; test -n "$(htmldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(htmldir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(htmldir)" && rm -f $$files tags: TAGS TAGS: @@ -499,10 +550,10 @@ distdir: $(DISTFILES) done check-am: all-am check: check-am -@DBUS_DOXYGEN_DOCS_ENABLED_FALSE@@DBUS_HAVE_MAN2HTML_FALSE@@DBUS_XML_DOCS_ENABLED_FALSE@all-local: +@DBUS_DOXYGEN_DOCS_ENABLED_FALSE@all-local: all-am: Makefile $(MANS) $(DATA) all-local installdirs: - for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(apidir)"; do \ + for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(htmldir)" "$(DESTDIR)$(htmldir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am @@ -552,7 +603,8 @@ info: info-am info-am: -install-data-am: install-apiDATA install-data-local install-man +install-data-am: install-data-local install-dist_docDATA \ + install-dist_htmlDATA install-htmlDATA install-man install-dvi: install-dvi-am @@ -597,7 +649,8 @@ ps: ps-am ps-am: -uninstall-am: uninstall-apiDATA uninstall-local uninstall-man +uninstall-am: uninstall-dist_docDATA uninstall-dist_htmlDATA \ + uninstall-htmlDATA uninstall-local uninstall-man uninstall-man: uninstall-man1 @@ -606,19 +659,19 @@ uninstall-man: uninstall-man1 .PHONY: all all-am all-local check check-am clean clean-generic \ clean-libtool clean-local distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ - install install-am install-apiDATA install-data \ - install-data-am install-data-local install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-man1 \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic \ - maintainer-clean-local mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-apiDATA uninstall-local uninstall-man uninstall-man1 - + install install-am install-data install-data-am \ + install-data-local install-dist_docDATA install-dist_htmlDATA \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-htmlDATA install-info \ + install-info-am install-man install-man1 install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic maintainer-clean-local mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-dist_docDATA \ + uninstall-dist_htmlDATA uninstall-htmlDATA uninstall-local \ + uninstall-man uninstall-man1 -@DBUS_XML_DOCS_ENABLED_TRUE@all-local:: $(HTML_FILES) @DBUS_XML_DOCS_ENABLED_TRUE@dbus-specification.html: dbus-specification.xml @DBUS_XML_DOCS_ENABLED_TRUE@ $(XMLTO) html-nochunks $< @@ -651,19 +704,22 @@ uninstall-man: uninstall-man1 @DBUS_DOXYGEN_DOCS_ENABLED_TRUE@ rm -f $(DESTDIR)$(apidir)/*.html @DBUS_DOXYGEN_DOCS_ENABLED_TRUE@ rm -f $(DESTDIR)$(apidir)/*.png @DBUS_DOXYGEN_DOCS_ENABLED_TRUE@ rm -f $(DESTDIR)$(apidir)/*.css +@DBUS_DOXYGEN_DOCS_ENABLED_TRUE@ rm -f $(DESTDIR)$(htmldir)/*.html +@DBUS_DOXYGEN_DOCS_ENABLED_TRUE@ rm -f $(DESTDIR)$(docdir)/*.txt +@DBUS_DOXYGEN_DOCS_ENABLED_TRUE@ rm -f $(DESTDIR)$(docdir)/*.png +@DBUS_DOXYGEN_DOCS_ENABLED_TRUE@ rm -f $(DESTDIR)$(docdir)/*.svg @DBUS_DOXYGEN_DOCS_ENABLED_TRUE@ rmdir --ignore-fail-on-non-empty $(DESTDIR)$(apidir) || \ @DBUS_DOXYGEN_DOCS_ENABLED_TRUE@ rmdir $(DESTDIR)$(apidir) -@DBUS_HAVE_MAN2HTML_TRUE@all-local:: $(MAN_HTML_FILES) - @DBUS_HAVE_MAN2HTML_TRUE@%.1.html: %.1 @DBUS_HAVE_MAN2HTML_TRUE@ $(AM_V_GEN)( $(MAN2HTML) $< > $@.tmp && mv $@.tmp $@ ) -@DBUS_CAN_UPLOAD_DOCS_TRUE@dbus-docs: $(STATIC_DOCS) $(HTML_FILES) $(MAN_HTML_FILES) $(BONUS_FILES) doxygen.stamp +@DBUS_CAN_UPLOAD_DOCS_TRUE@dbus-docs: $(STATIC_DOCS) $(dist_doc_DATA) $(dist_html_DATA) $(MAN_HTML_FILES) $(BONUS_FILES) doxygen.stamp @DBUS_CAN_UPLOAD_DOCS_TRUE@ $(AM_V_at)rm -rf $@ @DBUS_CAN_UPLOAD_DOCS_TRUE@ $(AM_V_GEN)$(MKDIR_P) $@/api @DBUS_CAN_UPLOAD_DOCS_TRUE@ $(AM_V_at)cp $(STATIC_DOCS) $@ -@DBUS_CAN_UPLOAD_DOCS_TRUE@ $(AM_V_at)cp $(HTML_FILES) $@ +@DBUS_CAN_UPLOAD_DOCS_TRUE@ $(AM_V_at)cp $(dist_doc_DATA) $@ +@DBUS_CAN_UPLOAD_DOCS_TRUE@ $(AM_V_at)cp $(dist_html_DATA) $@ @DBUS_CAN_UPLOAD_DOCS_TRUE@ $(AM_V_at)cp $(MAN_HTML_FILES) $@ @DBUS_CAN_UPLOAD_DOCS_TRUE@ $(AM_V_at)cp $(BONUS_FILES) $@ @DBUS_CAN_UPLOAD_DOCS_TRUE@ $(AM_V_at)cp -r api/html $@/api @@ -683,13 +739,14 @@ uninstall-man: uninstall-man1 @DBUS_CAN_UPLOAD_DOCS_FALSE@ @false clean-local: + rm -f $(html_DATA) rm -rf api rm -rf dbus-docs rm -f *.1.html rm -f doxygen.stamp maintainer-clean-local: - rm -f $(HTML_FILES) + rm -f $(XMLTO_OUTPUT) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/doc/dbus-cleanup-sockets.1 b/doc/dbus-cleanup-sockets.1 index ca669f49..a062d498 100644 --- a/doc/dbus-cleanup-sockets.1 +++ b/doc/dbus-cleanup-sockets.1 @@ -1,43 +1,43 @@ .\" -.\" dbus-cleanup-sockets manual page. +.\" dbus\-cleanup\-sockets manual page. .\" Copyright (C) 2003 Red Hat, Inc. .\" -.TH dbus-cleanup-sockets 1 +.TH dbus\-cleanup\-sockets 1 .SH NAME -dbus-cleanup-sockets \- clean up leftover sockets in a directory +dbus\-cleanup\-sockets \- clean up leftover sockets in a directory .SH SYNOPSIS .PP -.B dbus-cleanup-sockets [DIRECTORY] +.B dbus\-cleanup\-sockets [DIRECTORY] .SH DESCRIPTION -The \fIdbus-cleanup-sockets\fP command cleans up unused D-Bus +The \fIdbus\-cleanup\-sockets\fP command cleans up unused D\-Bus connection sockets. See http://www.freedesktop.org/software/dbus/ for more information about the big picture. .PP -If given no arguments, \fIdbus-cleanup-sockets\fP cleans up sockets +If given no arguments, \fIdbus\-cleanup\-sockets\fP cleans up sockets in the standard default socket directory for the -per-user-login-session message bus; this is usually /tmp. +per\-user\-login\-session message bus; this is usually /tmp. Optionally, you can pass a different directory on the command line. .PP -On Linux, this program is essentially useless, because D-Bus defaults +On Linux, this program is essentially useless, because D\-Bus defaults to using "abstract sockets" that exist only in memory and don't have a corresponding file in /tmp. .PP On most other flavors of UNIX, it's possible for the socket files to -leak when programs using D-Bus exit abnormally or without closing -their D-Bus connections. Thus, it might be interesting to run -dbus-cleanup-sockets in a cron job to mop up any leaked sockets. +leak when programs using D\-Bus exit abnormally or without closing +their D\-Bus connections. Thus, it might be interesting to run +dbus\-cleanup\-sockets in a cron job to mop up any leaked sockets. Or you can just ignore the leaked sockets, they aren't really hurting anything, other than cluttering the output of "ls /tmp" .SH AUTHOR -dbus-cleanup-sockets was adapted by Havoc Pennington from -linc-cleanup-sockets written by Michael Meeks. +dbus\-cleanup\-sockets was adapted by Havoc Pennington from +linc\-cleanup\-sockets written by Michael Meeks. .SH BUGS -Please send bug reports to the D-Bus mailing list or bug tracker, +Please send bug reports to the D\-Bus mailing list or bug tracker, see http://www.freedesktop.org/software/dbus/ diff --git a/doc/dbus-daemon.1.in b/doc/dbus-daemon.1.in index a54f8634..185441c9 100644 --- a/doc/dbus-daemon.1.in +++ b/doc/dbus-daemon.1.in @@ -1,37 +1,37 @@ .\" -.\" dbus-daemon manual page. +.\" dbus\-daemon manual page. .\" Copyright (C) 2003,2008 Red Hat, Inc. .\" -.TH dbus-daemon 1 +.TH dbus\-daemon 1 .SH NAME -dbus-daemon \- Message bus daemon +dbus\-daemon \- Message bus daemon .SH SYNOPSIS .PP -.B dbus-daemon -dbus-daemon [\-\-version] [\-\-session] [\-\-system] [\-\-config-file=FILE] -[\-\-print-address[=DESCRIPTOR]] [\-\-print-pid[=DESCRIPTOR]] [\-\-fork] +.B dbus\-daemon +dbus\-daemon [\-\-version] [\-\-session] [\-\-system] [\-\-config\-file=FILE] +[\-\-print\-address[=DESCRIPTOR]] [\-\-print\-pid[=DESCRIPTOR]] [\-\-fork] .SH DESCRIPTION -\fIdbus-daemon\fP is the D-Bus message bus daemon. See +\fIdbus\-daemon\fP is the D\-Bus message bus daemon. See http://www.freedesktop.org/software/dbus/ for more information about -the big picture. D-Bus is first a library that provides one-to-one -communication between any two applications; \fIdbus-daemon\fP is an +the big picture. D\-Bus is first a library that provides one\-to\-one +communication between any two applications; \fIdbus\-daemon\fP is an application that uses this library to implement a message bus daemon. Multiple programs connect to the message bus daemon and can exchange messages with one another. .PP There are two standard message bus instances: the systemwide message bus (installed on many systems as the "messagebus" init service) and the -per-user-login-session message bus (started each time a user logs in). -\fIdbus-daemon\fP is used for both of these instances, but with +per\-user\-login\-session message bus (started each time a user logs in). +\fIdbus\-daemon\fP is used for both of these instances, but with a different configuration file. .PP The \-\-session option is equivalent to -"\-\-config-file=@EXPANDED_SYSCONFDIR@/dbus-1/session.conf" and the \-\-system +"\-\-config\-file=@EXPANDED_SYSCONFDIR@/dbus\-1/session.conf" and the \-\-system option is equivalent to -"\-\-config-file=@EXPANDED_SYSCONFDIR@/dbus-1/system.conf". By creating -additional configuration files and using the \-\-config-file option, -additional special-purpose message bus daemons could be created. +"\-\-config\-file=@EXPANDED_SYSCONFDIR@/dbus\-1/system.conf". By creating +additional configuration files and using the \-\-config\-file option, +additional special\-purpose message bus daemons could be created. .PP The systemwide daemon is normally launched by an init script, standardly called simply "messagebus". @@ -39,11 +39,11 @@ standardly called simply "messagebus". The systemwide daemon is largely used for broadcasting system events, such as changes to the printer queue, or adding/removing devices. .PP -The per-session daemon is used for various interprocess communication +The per\-session daemon is used for various interprocess communication among desktop applications (however, it is not tied to X or the GUI in any way). .PP -SIGHUP will cause the D-Bus daemon to PARTIALLY reload its +SIGHUP will cause the D\-Bus daemon to PARTIALLY reload its configuration file and to flush its user/group information caches. Some configuration changes would require kicking all apps off the bus; so they will only take effect if you restart the daemon. Policy changes should take effect @@ -52,47 +52,47 @@ with SIGHUP. .SH OPTIONS The following options are supported: .TP -.I "--config-file=FILE" +.I "\-\-config\-file=FILE" Use the given configuration file. .TP -.I "--fork" +.I "\-\-fork" Force the message bus to fork and become a daemon, even if the configuration file does not specify that it should. In most contexts the configuration file already gets this right, though. -.I "--nofork" +.I "\-\-nofork" Force the message bus not to fork and become a daemon, even if the configuration file specifies that it should. .TP -.I "--print-address[=DESCRIPTOR]" +.I "\-\-print\-address[=DESCRIPTOR]" Print the address of the message bus to standard output, or to the given file descriptor. This is used by programs that launch the message bus. .TP -.I "--print-pid[=DESCRIPTOR]" +.I "\-\-print\-pid[=DESCRIPTOR]" Print the process ID of the message bus to standard output, or to the given file descriptor. This is used by programs that launch the message bus. .TP -.I "--session" -Use the standard configuration file for the per-login-session message +.I "\-\-session" +Use the standard configuration file for the per\-login\-session message bus. .TP -.I "--system" +.I "\-\-system" Use the standard configuration file for the systemwide message bus. .TP -.I "--version" +.I "\-\-version" Print the version of the daemon. .TP -.I "--introspect" -Print the introspection information for all D-Bus internal interfaces. +.I "\-\-introspect" +Print the introspection information for all D\-Bus internal interfaces. .TP -.I "--address[=ADDRESS]" +.I "\-\-address[=ADDRESS]" Set the address to listen on. This option overrides the address configured in the configuration file. .TP -.I "--systemd-activation" -Enable systemd-style service activation. Only useful in conjunction +.I "\-\-systemd\-activation" +Enable systemd\-style service activation. Only useful in conjunction with the systemd system and session manager on Linux. .SH CONFIGURATION FILE @@ -100,7 +100,7 @@ with the systemd system and session manager on Linux. A message bus daemon has a configuration file that specializes it for a particular application. For example, one configuration file might set up the message bus to be a systemwide message bus, -while another might set it up to be a per-user-login-session bus. +while another might set it up to be a per\-user\-login\-session bus. .PP The configuration file also establishes resource limits, security parameters, and so forth. @@ -109,10 +109,10 @@ The configuration file is not part of any interoperability specification and its backward compatibility is not guaranteed; this document is documentation, not specification. .PP -The standard systemwide and per-session message bus setups are -configured in the files "@EXPANDED_SYSCONFDIR@/dbus-1/system.conf" and -"@EXPANDED_SYSCONFDIR@/dbus-1/session.conf". These files normally -<include> a system-local.conf or session-local.conf; you can put local +The standard systemwide and per\-session message bus setups are +configured in the files "@EXPANDED_SYSCONFDIR@/dbus\-1/system.conf" and +"@EXPANDED_SYSCONFDIR@/dbus\-1/session.conf". These files normally +<include> a system\-local.conf or session\-local.conf; you can put local overrides in those files to avoid modifying the primary configuration files. @@ -121,7 +121,7 @@ The configuration file is an XML document. It must have the following doctype declaration: .nf - <!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN" + <!DOCTYPE busconfig PUBLIC "\-//freedesktop//DTD D\-Bus Bus Configuration 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> .fi @@ -139,9 +139,9 @@ Root element. .I "<type>" .PP -The well-known type of the message bus. Currently known values are +The well\-known type of the message bus. Currently known values are "system" and "session"; if other values are set, they should be -either added to the D-Bus specification, or namespaced. The last +either added to the D\-Bus specification, or namespaced. The last <type> element "wins" (previous values are ignored). This element only controls which message bus specific environment variables are set in activated clients. Most of the policy that distinguishes a @@ -149,7 +149,7 @@ session bus from the system bus is controlled from the other elements in the configuration file. .PP -If the well-known type of the message bus is "session", then the +If the well\-known type of the message bus is "session", then the DBUS_STARTER_BUS_TYPE environment variable will be set to "session" and the DBUS_SESSION_BUS_ADDRESS environment variable will be set to the address of the session bus. Likewise, if the type of the @@ -187,7 +187,7 @@ Only files ending in ".conf" are included. This is intended to allow extension of the system bus by particular packages. For example, if CUPS wants to be able to send out notification of printer queue changes, it could install a file to -@EXPANDED_SYSCONFDIR@/dbus-1/system.d that allowed all apps to receive +@EXPANDED_SYSCONFDIR@/dbus\-1/system.d that allowed all apps to receive this message and allowed the printer daemon user to send it. .TP @@ -229,7 +229,7 @@ This may be useful to avoid affecting the behavior of child processes. .PP Add an address that the bus should listen on. The -address is in the standard D-Bus format that contains +address is in the standard D\-Bus format that contains a transport name plus possible parameters/options. .PP @@ -258,7 +258,7 @@ Example: <listen>tcp:host=localhost,port=0,family=ipv4</listen> A special case is using a port number of zero (or omitting the port), which means to choose an available port selected by the operating system. The port number chosen can be obtained with the ---print-address command line parameter and will be present in other +\-\-print\-address command line parameter and will be present in other cases where the server reports its own address, such as when DBUS_SESSION_BUS_ADDRESS is set. @@ -302,7 +302,7 @@ service will be used). .PP Service files tell the bus how to automatically start a program. -They are primarily used with the per-user-session bus, +They are primarily used with the per\-user\-session bus, not the systemwide bus. .TP @@ -311,33 +311,33 @@ not the systemwide bus. .PP <standard_session_servicedirs/> is equivalent to specifying a series of <servicedir/> elements for each of the data directories in the "XDG -Base Directory Specification" with the subdirectory "dbus-1/services", -so for example "/usr/share/dbus-1/services" would be among the +Base Directory Specification" with the subdirectory "dbus\-1/services", +so for example "/usr/share/dbus\-1/services" would be among the directories searched. .PP The "XDG Base Directory Specification" can be found at -http://freedesktop.org/wiki/Standards/basedir-spec if it hasn't moved, +http://freedesktop.org/wiki/Standards/basedir\-spec if it hasn't moved, otherwise try your favorite search engine. .PP The <standard_session_servicedirs/> option is only relevant to the -per-user-session bus daemon defined in -@EXPANDED_SYSCONFDIR@/dbus-1/session.conf. Putting it in any other +per\-user\-session bus daemon defined in +@EXPANDED_SYSCONFDIR@/dbus\-1/session.conf. Putting it in any other configuration file would probably be nonsense. .TP .I "<standard_system_servicedirs/>" .PP -<standard_system_servicedirs/> specifies the standard system-wide +<standard_system_servicedirs/> specifies the standard system\-wide activation directories that should be searched for service files. -This option defaults to @EXPANDED_DATADIR@/dbus-1/system-services. +This option defaults to @EXPANDED_DATADIR@/dbus\-1/system\-services. .PP The <standard_system_servicedirs/> option is only relevant to the -per-system bus daemon defined in -@EXPANDED_SYSCONFDIR@/dbus-1/system.conf. Putting it in any other +per\-system bus daemon defined in +@EXPANDED_SYSCONFDIR@/dbus\-1/system.conf. Putting it in any other configuration file would probably be nonsense. .TP @@ -346,11 +346,11 @@ configuration file would probably be nonsense. .PP <servicehelper/> specifies the setuid helper that is used to launch system daemons with an alternate user. Typically this should be -the dbus-daemon-launch-helper executable in located in libexec. +the dbus\-daemon\-launch\-helper executable in located in libexec. .PP -The <servicehelper/> option is only relevant to the per-system bus daemon -defined in @EXPANDED_SYSCONFDIR@/dbus-1/system.conf. Putting it in any other +The <servicehelper/> option is only relevant to the per\-system bus daemon +defined in @EXPANDED_SYSCONFDIR@/dbus\-1/system.conf. Putting it in any other configuration file would probably be nonsense. .TP @@ -396,7 +396,7 @@ Available limit names are: connection "max_replies_per_connection" : max number of pending method replies per connection - (number of calls-in-progress) + (number of calls\-in\-progress) "reply_timeout" : milliseconds (thousandths) until a method call times out .fi @@ -408,7 +408,7 @@ by max_message_size. .PP max_completed_connections divided by max_connections_per_user is the -number of users that can work together to denial-of-service all other users by using +number of users that can work together to denial\-of\-service all other users by using up all connections on the systemwide bus. .PP @@ -426,7 +426,7 @@ they are analogous to a firewall in that they allow expected traffic and prevent unexpected traffic. .PP -Currently, the system bus has a default-deny policy for sending method calls +Currently, the system bus has a default\-deny policy for sending method calls and owning bus names. Everything else, in particular reply messages, receive checks, and signals has a default allow policy. @@ -449,14 +449,14 @@ The <policy> element has one of four attributes: .PP Policies are applied to a connection as follows: .nf - - all context="default" policies are applied - - all group="connection's user's group" policies are applied + \- all context="default" policies are applied + \- all group="connection's user's group" policies are applied in undefined order - - all user="connection's auth user" policies are applied + \- all user="connection's auth user" policies are applied in undefined order - - all at_console="true" policies are applied - - all at_console="false" policies are applied - - all context="mandatory" policies are applied + \- all at_console="true" policies are applied + \- all at_console="false" policies are applied + \- all context="mandatory" policies are applied .fi .PP @@ -522,7 +522,7 @@ they may not be sent *to that name*. That is, if a connection owns services A, B, C, and sending to A is denied, sending to B or C will not work either. .PP -The other send_* and receive_* attributes are purely textual/by-value +The other send_* and receive_* attributes are purely textual/by\-value matches against the given field in the message header. .PP "Eavesdropping" occurs when an application receives a message that @@ -590,7 +590,7 @@ received" are evaluated separately. Be careful with send_interface/receive_interface, because the interface field in messages is optional. In particular, do NOT specify <deny send_interface="org.foo.Bar"/>! This will cause -no-interface messages to be blocked for all services, which is +no\-interface messages to be blocked for all services, which is almost certainly not what you intended. Always use rules of the form: <deny send_interface="org.foo.Bar" send_destination="org.foo.Service"/> @@ -614,7 +614,7 @@ creates a mapping. Right now only one kind of association is possible: .PP This means that if a connection asks to own the name "org.freedesktop.Foobar" then the source context will be the context -of the connection and the target context will be "foo_t" - see the +of the connection and the target context will be "foo_t" \- see the short discussion of SELinux below. .PP @@ -668,7 +668,7 @@ associated permissions defined to control operations on objects with that class. .PP -D-Bus performs SELinux security checks in two places. +D\-Bus performs SELinux security checks in two places. .PP First, any time a message is routed from one connection to another @@ -710,8 +710,8 @@ haven't installed a security policy file to allow your message through, it won't work. For the session bus, this is not a concern. .PP The simplest way to figure out what's happening on the bus is to run -the \fIdbus-monitor\fP program, which comes with the D-Bus -package. You can also send test messages with \fIdbus-send\fP. These +the \fIdbus\-monitor\fP program, which comes with the D\-Bus +package. You can also send test messages with \fIdbus\-send\fP. These programs have their own man pages. .PP If you want to know what the daemon itself is doing, you might consider @@ -722,20 +722,20 @@ messing up your real session and system daemons. To run a separate test copy of the daemon, for example you might open a terminal and type: .nf - DBUS_VERBOSE=1 dbus-daemon --session --print-address + DBUS_VERBOSE=1 dbus\-daemon \-\-session \-\-print\-address .fi .PP The test daemon address will be printed when the daemon starts. You will need -to copy-and-paste this address and use it as the value of the +to copy\-and\-paste this address and use it as the value of the DBUS_SESSION_BUS_ADDRESS environment variable when you launch the applications you want to test. This will cause those applications to connect to your test bus instead of the DBUS_SESSION_BUS_ADDRESS of your real session bus. .PP -DBUS_VERBOSE=1 will have NO EFFECT unless your copy of D-Bus +DBUS_VERBOSE=1 will have NO EFFECT unless your copy of D\-Bus was compiled with verbose mode enabled. This is not recommended in production builds due to performance impact. You may need to rebuild -D-Bus if your copy was not built with debugging in mind. (DBUS_VERBOSE -also affects the D-Bus library and thus applications using D-Bus; it may +D\-Bus if your copy was not built with debugging in mind. (DBUS_VERBOSE +also affects the D\-Bus library and thus applications using D\-Bus; it may be useful to see verbose output on both the client side and from the daemon.) .PP If you want to get fancy, you can create a custom bus @@ -748,5 +748,5 @@ for example. See http://www.freedesktop.org/software/dbus/doc/AUTHORS .SH BUGS -Please send bug reports to the D-Bus mailing list or bug tracker, +Please send bug reports to the D\-Bus mailing list or bug tracker, see http://www.freedesktop.org/software/dbus/ diff --git a/doc/dbus-faq.html b/doc/dbus-faq.html index 57dddb45..10d48443 100644 --- a/doc/dbus-faq.html +++ b/doc/dbus-faq.html @@ -1,13 +1,13 @@ <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>D-Bus FAQ</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article" title="D-Bus FAQ"><div class="titlepage"><div><div><h2 class="title"><a name="index"></a>D-Bus FAQ</h2></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname">Havoc</span> <span class="surname">Pennington</span></h3><div class="affiliation"><span class="orgname">Red Hat, Inc.<br></span><div class="address"><p><br> <code class="email"><<a class="email" href="mailto:hp@pobox.com">hp@pobox.com</a>></code><br> - </p></div></div></div><div class="author"><h3 class="author"><span class="firstname">David</span> <span class="othername">A</span> <span class="surname">Wheeler</span></h3></div></div></div><div><p class="releaseinfo">Version 0.3</p></div></div><hr></div><div class="qandaset" title="Frequently Asked Questions"><a name="faq"></a><dl><dt>1. <a href="#idp24880752"> + </p></div></div></div><div class="author"><h3 class="author"><span class="firstname">David</span> <span class="othername">A</span> <span class="surname">Wheeler</span></h3></div></div></div><div><p class="releaseinfo">Version 0.3</p></div></div><hr></div><div class="qandaset" title="Frequently Asked Questions"><a name="faq"></a><dl><dt>1. <a href="#idp480240"> What is D-Bus? - </a></dt><dt>2. <a href="#idp28175136"> + </a></dt><dt>2. <a href="#idp3774672"> Is D-Bus stable/finished? - </a></dt><dt>3. <a href="#idp28178304"> + </a></dt><dt>3. <a href="#idp3777840"> How is the reference implementation licensed? Can I use it in proprietary applications? - </a></dt><dt>4. <a href="#idp24480880"> + </a></dt><dt>4. <a href="#idp80544"> What is the difference between a bus name, and object path, and an interface? </a></dt><dt>5. <a href="#service"> @@ -39,9 +39,9 @@ How does D-Bus differ from [yet more IPC mechanisms]? </a></dt><dt>18. <a href="#which-ipc"> Which IPC mechanism should I use? - </a></dt><dt>19. <a href="#idp29282624"> + </a></dt><dt>19. <a href="#idp4882048"> How can I submit a bug or patch? - </a></dt></dl><table border="0" width="100%" summary="Q and A Set"><col align="left" width="1%"><col><tbody><tr class="question" title="1."><td align="left" valign="top"><a name="idp24880752"></a><a name="idp24881008"></a><p><b>1.</b></p></td><td align="left" valign="top"><p> + </a></dt></dl><table border="0" width="100%" summary="Q and A Set"><col align="left" width="1%"><col><tbody><tr class="question" title="1."><td align="left" valign="top"><a name="idp480240"></a><a name="idp480496"></a><p><b>1.</b></p></td><td align="left" valign="top"><p> What is D-Bus? </p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p> This is probably best answered by reading the D-Bus <a class="ulink" href="dbus-tutorial.html" target="_top">tutorial</a> or @@ -52,7 +52,7 @@ Phrased differently, D-Bus is 1) an interprocess communication (IPC) system and 2) some higher-level structure (lifecycle tracking, service activation, security policy) provided by two bus daemons, one systemwide and one per-user-session. - </p></td></tr><tr class="question" title="2."><td align="left" valign="top"><a name="idp28175136"></a><a name="idp28175392"></a><p><b>2.</b></p></td><td align="left" valign="top"><p> + </p></td></tr><tr class="question" title="2."><td align="left" valign="top"><a name="idp3774672"></a><a name="idp3774928"></a><p><b>2.</b></p></td><td align="left" valign="top"><p> Is D-Bus stable/finished? </p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p> The low-level library "libdbus" and the protocol specification are considered @@ -62,7 +62,7 @@ have their own release schedules and degree of maturity, not linked to the low-level library and bus daemon release. Check the project page for the binding you're considering to understand that project's policies. - </p></td></tr><tr class="question" title="3."><td align="left" valign="top"><a name="idp28178304"></a><a name="idp28178560"></a><p><b>3.</b></p></td><td align="left" valign="top"><p> + </p></td></tr><tr class="question" title="3."><td align="left" valign="top"><a name="idp3777840"></a><a name="idp3778096"></a><p><b>3.</b></p></td><td align="left" valign="top"><p> How is the reference implementation licensed? Can I use it in proprietary applications? </p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p> @@ -77,7 +77,7 @@ use D-Bus</em></span>. If you're going to sue, you have to stop using the software. Read the licenses to determine their meaning, this FAQ entry is not intended to change the meaning or terms of the licenses. - </p></td></tr><tr class="question" title="4."><td align="left" valign="top"><a name="idp24480880"></a><a name="idp24481136"></a><p><b>4.</b></p></td><td align="left" valign="top"><p> + </p></td></tr><tr class="question" title="4."><td align="left" valign="top"><a name="idp80544"></a><a name="idp80800"></a><p><b>4.</b></p></td><td align="left" valign="top"><p> What is the difference between a bus name, and object path, and an interface? </p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p> @@ -107,7 +107,7 @@ interfaces, such as <code class="literal">org.freedesktop.DBus.Introspectable</code>, <code class="literal">org.freedesktop.BasicTextField</code>, <code class="literal">org.kde.RichTextDocument</code>. - </p></td></tr><tr class="question" title="5."><td align="left" valign="top"><a name="service"></a><a name="idp24498048"></a><p><b>5.</b></p></td><td align="left" valign="top"><p> + </p></td></tr><tr class="question" title="5."><td align="left" valign="top"><a name="service"></a><a name="idp97424"></a><p><b>5.</b></p></td><td align="left" valign="top"><p> What is a "service"? </p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p> A service is a program that can be launched by the bus daemon @@ -120,7 +120,7 @@ In the D-Bus docs we try to use "service" only when talking about programs the bus knows how to launch, i.e. a service always has a .service file. - </p></td></tr><tr class="question" title="6."><td align="left" valign="top"><a name="components"></a><a name="idp24501264"></a><p><b>6.</b></p></td><td align="left" valign="top"><p> + </p></td></tr><tr class="question" title="6."><td align="left" valign="top"><a name="components"></a><a name="idp100640"></a><p><b>6.</b></p></td><td align="left" valign="top"><p> Is D-Bus a "component system"? </p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p> It helps to keep these concepts separate in your mind: @@ -170,7 +170,7 @@ from component/object systems, though perhaps a "plugin" tends to be a bundle of objects with a user-visible name and can be downloaded/packaged as a unit. - </p></td></tr><tr class="question" title="7."><td align="left" valign="top"><a name="speed"></a><a name="idp24513808"></a><p><b>7.</b></p></td><td align="left" valign="top"><p> + </p></td></tr><tr class="question" title="7."><td align="left" valign="top"><a name="speed"></a><a name="idp113280"></a><p><b>7.</b></p></td><td align="left" valign="top"><p> How fast is the D-Bus reference implementation? </p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p> Of course it depends a bit on what you're doing. @@ -198,7 +198,7 @@ enable asynchronous communication and avoid round trips. This is frequently a more important performance issue than throughput. - </p></td></tr><tr class="question" title="8."><td align="left" valign="top"><a name="size"></a><a name="idp29197408"></a><p><b>8.</b></p></td><td align="left" valign="top"><p> + </p></td></tr><tr class="question" title="8."><td align="left" valign="top"><a name="size"></a><a name="idp4796832"></a><p><b>8.</b></p></td><td align="left" valign="top"><p> How large is the D-Bus reference implementation? </p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p> A production build (with assertions, unit tests, and verbose logging @@ -207,7 +207,7 @@ A much, much smaller implementation would be possible by omitting out of memory handling, hardcoding a main loop (or always using blocking I/O), skipping validation, and otherwise simplifying things. - </p></td></tr><tr class="question" title="9."><td align="left" valign="top"><a name="other-ipc"></a><a name="idp29200368"></a><p><b>9.</b></p></td><td align="left" valign="top"><p> + </p></td></tr><tr class="question" title="9."><td align="left" valign="top"><a name="other-ipc"></a><a name="idp4799792"></a><p><b>9.</b></p></td><td align="left" valign="top"><p> How does D-Bus differ from other interprocess communication or networking protocols? </p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p> @@ -240,7 +240,7 @@ Note: the D-Bus mailing list subscribers are <span class="emphasis"><em>very much not interested</em></span> in debating which IPC system is the One True System. So if you want to discuss that, please use another forum. - </p></td></tr><tr class="question" title="10."><td align="left" valign="top"><a name="corba"></a><a name="idp29208896"></a><p><b>10.</b></p></td><td align="left" valign="top"><p> + </p></td></tr><tr class="question" title="10."><td align="left" valign="top"><a name="corba"></a><a name="idp4808320"></a><p><b>10.</b></p></td><td align="left" valign="top"><p> How does D-Bus differ from CORBA? </p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p> Start by reading <a class="xref" href="#other-ipc" title="9.">Q: 9</a>. @@ -292,7 +292,7 @@ </p><p> On a more trivial note, D-Bus involves substantially fewer acronyms than CORBA. - </p></td></tr><tr class="question" title="11."><td align="left" valign="top"><a name="xmlrpcsoap"></a><a name="idp24449888"></a><p><b>11.</b></p></td><td align="left" valign="top"><p> + </p></td></tr><tr class="question" title="11."><td align="left" valign="top"><a name="xmlrpcsoap"></a><a name="idp49472"></a><p><b>11.</b></p></td><td align="left" valign="top"><p> How does D-Bus differ from XML-RPC and SOAP? </p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p> Start by reading <a class="xref" href="#other-ipc" title="9.">Q: 9</a>. @@ -311,7 +311,7 @@ supports lifecycle tracking of other applications connected to the bus. With XML-RPC and SOAP, typically each method call exists in isolation and has its own HTTP connection. - </p></td></tr><tr class="question" title="12."><td align="left" valign="top"><a name="dce"></a><a name="idp29247984"></a><p><b>12.</b></p></td><td align="left" valign="top"><p> + </p></td></tr><tr class="question" title="12."><td align="left" valign="top"><a name="dce"></a><a name="idp4847408"></a><p><b>12.</b></p></td><td align="left" valign="top"><p> How does D-Bus differ from DCE? </p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p> Start by reading <a class="xref" href="#other-ipc" title="9.">Q: 9</a>. @@ -324,7 +324,7 @@ a distributed time service. As the name implies, DCE is intended for use in a large, multi-computer distributed application. D-Bus would not be well-suited for this. - </p></td></tr><tr class="question" title="13."><td align="left" valign="top"><a name="dcom"></a><a name="idp29252784"></a><p><b>13.</b></p></td><td align="left" valign="top"><p> + </p></td></tr><tr class="question" title="13."><td align="left" valign="top"><a name="dcom"></a><a name="idp4852208"></a><p><b>13.</b></p></td><td align="left" valign="top"><p> How does D-Bus differ from DCOM and COM? </p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p> Start by reading <a class="xref" href="#other-ipc" title="9.">Q: 9</a>. @@ -334,7 +334,7 @@ </p><p> DCOM (distributed COM) is a Windows IPC system designed for use with the COM object system. It's similar in some ways to DCE and CORBA. - </p></td></tr><tr class="question" title="14."><td align="left" valign="top"><a name="internet-communications-engine"></a><a name="idp29257056"></a><p><b>14.</b></p></td><td align="left" valign="top"><p> + </p></td></tr><tr class="question" title="14."><td align="left" valign="top"><a name="internet-communications-engine"></a><a name="idp4856480"></a><p><b>14.</b></p></td><td align="left" valign="top"><p> How does D-Bus differ from ZeroC's Internet Communications Engine (Ice) </p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p> Start by reading <a class="xref" href="#other-ipc" title="9.">Q: 9</a>. @@ -344,7 +344,7 @@ on the level of SOAP or CORBA than D-Bus. Ice has a "dual-license" business around it; i.e. you can use it under the GPL, or pay for a proprietary license. - </p></td></tr><tr class="question" title="15."><td align="left" valign="top"><a name="inter-client-exchange"></a><a name="idp29261072"></a><p><b>15.</b></p></td><td align="left" valign="top"><p> + </p></td></tr><tr class="question" title="15."><td align="left" valign="top"><a name="inter-client-exchange"></a><a name="idp4860496"></a><p><b>15.</b></p></td><td align="left" valign="top"><p> How does D-Bus differ from Inter-Client Exchange (ICE)? </p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p> <a class="ulink" href="http://www.x.org/X11R6.8.1/docs/ICE/ice.pdf" target="_top">ICE</a> @@ -362,7 +362,7 @@ DCOP and XSMP are the only two widely-used applications of ICE, and both could in principle be replaced by D-Bus. (Though whether GNOME and KDE will bother is an open question.) - </p></td></tr><tr class="question" title="16."><td align="left" valign="top"><a name="dcop"></a><a name="idp29265696"></a><p><b>16.</b></p></td><td align="left" valign="top"><p> + </p></td></tr><tr class="question" title="16."><td align="left" valign="top"><a name="dcop"></a><a name="idp4865120"></a><p><b>16.</b></p></td><td align="left" valign="top"><p> How does D-Bus differ from DCOP? </p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p> Start by reading <a class="xref" href="#other-ipc" title="9.">Q: 9</a>. @@ -389,14 +389,14 @@ DCOP's implementation to use D-Bus internally (so that GNOME and KDE would end up using exactly the same bus). See the KDE mailing list archives for some of these discussions. - </p></td></tr><tr class="question" title="17."><td align="left" valign="top"><a name="yet-more-ipc"></a><a name="idp29272688"></a><p><b>17.</b></p></td><td align="left" valign="top"><p> + </p></td></tr><tr class="question" title="17."><td align="left" valign="top"><a name="yet-more-ipc"></a><a name="idp4872112"></a><p><b>17.</b></p></td><td align="left" valign="top"><p> How does D-Bus differ from [yet more IPC mechanisms]? </p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p> Start by reading <a class="xref" href="#other-ipc" title="9.">Q: 9</a>. </p><p> There are countless uses of network sockets in the world. <a class="ulink" href="http://www.mbus.org/" target="_top">MBUS</a>, Sun ONC/RPC, Jabber/XMPP, SIP, are some we can think of quickly. - </p></td></tr><tr class="question" title="18."><td align="left" valign="top"><a name="which-ipc"></a><a name="idp29276624"></a><p><b>18.</b></p></td><td align="left" valign="top"><p> + </p></td></tr><tr class="question" title="18."><td align="left" valign="top"><a name="which-ipc"></a><a name="idp4876048"></a><p><b>18.</b></p></td><td align="left" valign="top"><p> Which IPC mechanism should I use? </p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p> Start by reading <a class="xref" href="#other-ipc" title="9.">Q: 9</a>. @@ -427,7 +427,7 @@ to search the list archives is probably to use an Internet engine such as Google. On Google, include "site:freedesktop.org" in your search. - </p></td></tr><tr class="question" title="19."><td align="left" valign="top"><a name="idp29282624"></a><a name="idp29282880"></a><p><b>19.</b></p></td><td align="left" valign="top"><p> + </p></td></tr><tr class="question" title="19."><td align="left" valign="top"><a name="idp4882048"></a><a name="idp4882304"></a><p><b>19.</b></p></td><td align="left" valign="top"><p> How can I submit a bug or patch? </p></td></tr><tr class="answer"><td align="left" valign="top"></td><td align="left" valign="top"><p> The D-Bus <a class="ulink" href="http://dbus.freedesktop.org" target="_top">web site</a> diff --git a/doc/dbus-launch.1 b/doc/dbus-launch.1 index 0ea19495..089e0f2c 100644 --- a/doc/dbus-launch.1 +++ b/doc/dbus-launch.1 @@ -1,77 +1,77 @@ .\" -.\" dbus-launch manual page. +.\" dbus\-launch manual page. .\" Copyright (C) 2003 Red Hat, Inc. .\" -.TH dbus-launch 1 +.TH dbus\-launch 1 .SH NAME -dbus-launch \- Utility to start a message bus from a shell script +dbus\-launch \- Utility to start a message bus from a shell script .SH SYNOPSIS .PP -.B dbus-launch [\-\-version] [\-\-sh-syntax] [\-\-csh-syntax] [\-\-auto-syntax] [\-\-exit-with-session] [\-\-autolaunch=MACHINEID] [\-\-config-file=FILENAME] [PROGRAM] [ARGS...] +.B dbus\-launch [\-\-version] [\-\-sh\-syntax] [\-\-csh\-syntax] [\-\-auto\-syntax] [\-\-exit\-with\-session] [\-\-autolaunch=MACHINEID] [\-\-config\-file=FILENAME] [PROGRAM] [ARGS...] .SH DESCRIPTION -The \fIdbus-launch\fP command is used to start a session bus -instance of \fIdbus-daemon\fP from a shell script. +The \fIdbus\-launch\fP command is used to start a session bus +instance of \fIdbus\-daemon\fP from a shell script. It would normally be called from a user's login -scripts. Unlike the daemon itself, \fIdbus-launch\fP exits, so +scripts. Unlike the daemon itself, \fIdbus\-launch\fP exits, so backticks or the $() construct can be used to read information from -\fIdbus-launch\fP. +\fIdbus\-launch\fP. -With no arguments, \fIdbus-launch\fP will launch a session bus +With no arguments, \fIdbus\-launch\fP will launch a session bus instance and print the address and pid of that instance to standard output. -You may specify a program to be run; in this case, \fIdbus-launch\fP +You may specify a program to be run; in this case, \fIdbus\-launch\fP will launch a session bus instance, set the appropriate environment variables so the specified program can find the bus, and then execute the specified program, with the specified arguments. See below for examples. -If you launch a program, \fIdbus-launch\fP will not print the +If you launch a program, \fIdbus\-launch\fP will not print the information about the new bus to standard output. -When \fIdbus-launch\fP prints bus information to standard output, by -default it is in a simple key-value pairs format. However, you may -request several alternate syntaxes using the \-\-sh-syntax, \-\-csh-syntax, -\-\-binary-syntax, or -\-\-auto-syntax options. Several of these cause \fIdbus-launch\fP to emit shell code +When \fIdbus\-launch\fP prints bus information to standard output, by +default it is in a simple key\-value pairs format. However, you may +request several alternate syntaxes using the \-\-sh\-syntax, \-\-csh\-syntax, +\-\-binary\-syntax, or +\-\-auto\-syntax options. Several of these cause \fIdbus\-launch\fP to emit shell code to set up the environment. -With the \-\-auto-syntax option, \fIdbus-launch\fP looks at the value +With the \-\-auto\-syntax option, \fIdbus\-launch\fP looks at the value of the SHELL environment variable to determine which shell syntax -should be used. If SHELL ends in "csh", then csh-compatible code is +should be used. If SHELL ends in "csh", then csh\-compatible code is emitted; otherwise Bourne shell code is emitted. Instead of passing -\-\-auto-syntax, you may explicity specify a particular one by using -\-\-sh-syntax for Bourne syntax, or \-\-csh-syntax for csh syntax. -In scripts, it's more robust to avoid \-\-auto-syntax and you hopefully +\-\-auto\-syntax, you may explicity specify a particular one by using +\-\-sh\-syntax for Bourne syntax, or \-\-csh\-syntax for csh syntax. +In scripts, it's more robust to avoid \-\-auto\-syntax and you hopefully know which shell your script is written in. .PP See http://www.freedesktop.org/software/dbus/ for more information -about D-Bus. See also the man page for \fIdbus-daemon\fP. +about D\-Bus. See also the man page for \fIdbus\-daemon\fP. .PP -Here is an example of how to use \fIdbus-launch\fP with an -sh-compatible shell to start the per-session bus daemon: +Here is an example of how to use \fIdbus\-launch\fP with an +sh\-compatible shell to start the per\-session bus daemon: .nf ## test for an existing bus daemon, just to be safe - if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then + if test \-z "$DBUS_SESSION_BUS_ADDRESS" ; then ## if not found, launch a new one - eval `dbus-launch --sh-syntax --exit-with-session` - echo "D-Bus per-session daemon address is: $DBUS_SESSION_BUS_ADDRESS" + eval `dbus\-launch \-\-sh\-syntax \-\-exit\-with\-session` + echo "D\-Bus per\-session daemon address is: $DBUS_SESSION_BUS_ADDRESS" fi .fi You might run something like that in your login scripts. .PP -Another way to use \fIdbus-launch\fP is to run your main session +Another way to use \fIdbus\-launch\fP is to run your main session program, like so: .nf -dbus-launch gnome-session +dbus\-launch gnome\-session .fi The above would likely be appropriate for ~/.xsession or ~/.Xclients. @@ -80,10 +80,10 @@ The above would likely be appropriate for ~/.xsession or ~/.Xclients. .PP If DBUS_SESSION_BUS_ADDRESS is not set for a process that tries to use -D-Bus, by default the process will attempt to invoke dbus-launch with -the --autolaunch option to start up a new session bus or find the +D\-Bus, by default the process will attempt to invoke dbus\-launch with +the \-\-autolaunch option to start up a new session bus or find the existing bus address on the X display or in a file in -~/.dbus/session-bus/ +~/.dbus/session\-bus/ .PP Whenever an autolaunch occurs, the application that had to @@ -114,70 +114,70 @@ DBUS_SESSION_BUS_ADDRESS. Autolaunch happens because the default address if none is set is "autolaunch:", so if any other address is set there will be no autolaunch. You can however include autolaunch in an explicit session bus address as a fallback, for example -DBUS_SESSION_BUS_ADDRESS="something:,autolaunch:" - in that case if +DBUS_SESSION_BUS_ADDRESS="something:,autolaunch:" \- in that case if the first address doesn't work, processes will autolaunch. (The bus -address variable contains a comma-separated list of addresses to try.) +address variable contains a comma\-separated list of addresses to try.) .PP -The --autolaunch option is considered an internal implementation +The \-\-autolaunch option is considered an internal implementation detail of libdbus, and in fact there are plans to change it. There's no real reason to use it outside of the libdbus implementation anyhow. .SH OPTIONS The following options are supported: .TP -.I "--auto-syntax" -Choose \-\-csh-syntax or \-\-sh-syntax based on the SHELL environment variable. +.I "\-\-auto\-syntax" +Choose \-\-csh\-syntax or \-\-sh\-syntax based on the SHELL environment variable. -.I "--binary-syntax" -Write to stdout a nul-terminated bus address, then the bus PID as a +.I "\-\-binary\-syntax" +Write to stdout a nul\-terminated bus address, then the bus PID as a binary integer of size sizeof(pid_t), then the bus X window ID as a binary integer of size sizeof(long). Integers are in the machine's byte order, not network byte order or any other canonical byte order. .TP -.I "--close-stderr" -Close the standard error output stream before starting the D-Bus -daemon. This is useful if you want to capture dbus-launch error -messages but you don't want dbus-daemon to keep the stream open to +.I "\-\-close\-stderr" +Close the standard error output stream before starting the D\-Bus +daemon. This is useful if you want to capture dbus\-launch error +messages but you don't want dbus\-daemon to keep the stream open to your application. .TP -.I "--config-file=FILENAME" -Pass \-\-config-file=FILENAME to the bus daemon, instead of passing it -the \-\-session argument. See the man page for dbus-daemon +.I "\-\-config\-file=FILENAME" +Pass \-\-config\-file=FILENAME to the bus daemon, instead of passing it +the \-\-session argument. See the man page for dbus\-daemon .TP -.I "--csh-syntax" +.I "\-\-csh\-syntax" Emit csh compatible code to set up environment variables. .TP -.I "--exit-with-session" +.I "\-\-exit\-with\-session" If this option is provided, a persistent "babysitter" process will be created that watches stdin for HUP and tries to connect to the X server. If this process gets a HUP on stdin or loses its X connection, it kills the message bus daemon. .TP -.I "--autolaunch=MACHINEID" -This option implies that \fIdbus-launch\fP should scan for a -previously-started session and reuse the values found there. If no +.I "\-\-autolaunch=MACHINEID" +This option implies that \fIdbus\-launch\fP should scan for a +previously\-started session and reuse the values found there. If no session is found, it will start a new session. The -\-\-exit-with-session option is implied if \-\-autolaunch is given. +\-\-exit\-with\-session option is implied if \-\-autolaunch is given. This option is for the exclusive use of libdbus, you do not want to use it manually. It may change in the future. .TP -.I "--sh-syntax" -Emit Bourne-shell compatible code to set up environment variables. +.I "\-\-sh\-syntax" +Emit Bourne\-shell compatible code to set up environment variables. .TP -.I "--version" -Print the version of dbus-launch +.I "\-\-version" +Print the version of dbus\-launch .SH AUTHOR See http://www.freedesktop.org/software/dbus/doc/AUTHORS .SH BUGS -Please send bug reports to the D-Bus mailing list or bug tracker, +Please send bug reports to the D\-Bus mailing list or bug tracker, see http://www.freedesktop.org/software/dbus/ diff --git a/doc/dbus-monitor.1 b/doc/dbus-monitor.1 index c24c14d9..6282b9eb 100644 --- a/doc/dbus-monitor.1 +++ b/doc/dbus-monitor.1 @@ -1,78 +1,78 @@ .\" -.\" dbus-monitor manual page. +.\" dbus\-monitor manual page. .\" Copyright (C) 2003 Red Hat, Inc. .\" -.TH dbus-monitor 1 +.TH dbus\-monitor 1 .SH NAME -dbus-monitor \- debug probe to print message bus messages +dbus\-monitor \- debug probe to print message bus messages .SH SYNOPSIS .PP -.B dbus-monitor +.B dbus\-monitor [\-\-system | \-\-session | \-\-address ADDRESS] [\-\-profile | \-\-monitor] [watch expressions] .SH DESCRIPTION -The \fIdbus-monitor\fP command is used to monitor messages going -through a D-Bus message bus. See +The \fIdbus\-monitor\fP command is used to monitor messages going +through a D\-Bus message bus. See http://www.freedesktop.org/software/dbus/ for more information about the big picture. .PP -There are two well-known message buses: the systemwide message bus +There are two well\-known message buses: the systemwide message bus (installed on many systems as the "messagebus" service) and the -per-user-login-session message bus (started each time a user logs in). -The \-\-system and \-\-session options direct \fIdbus-monitor\fP to +per\-user\-login\-session message bus (started each time a user logs in). +The \-\-system and \-\-session options direct \fIdbus\-monitor\fP to monitor the system or session buses respectively. If neither is -specified, \fIdbus-monitor\fP monitors the session bus. +specified, \fIdbus\-monitor\fP monitors the session bus. .PP -\fIdbus-monitor\fP has two different output modes, the 'classic'-style +\fIdbus\-monitor\fP has two different output modes, the 'classic'\-style monitoring mode and profiling mode. The profiling format is a compact -format with a single line per message and microsecond-resolution timing +format with a single line per message and microsecond\-resolution timing information. The \-\-profile and \-\-monitor options select the profiling and monitoring output format respectively. If neither is specified, -\fIdbus-monitor\fP uses the monitoring output format. +\fIdbus\-monitor\fP uses the monitoring output format. .PP -In order to get \fIdbus-monitor\fP to see the messages you are interested +In order to get \fIdbus\-monitor\fP to see the messages you are interested in, you should specify a set of watch expressions as you would expect to be passed to the \fIdbus_bus_add_match\fP function. .PP -The message bus configuration may keep \fIdbus-monitor\fP from seeing -all messages, especially if you run the monitor as a non-root user. +The message bus configuration may keep \fIdbus\-monitor\fP from seeing +all messages, especially if you run the monitor as a non\-root user. .SH OPTIONS .TP -.I "--system" +.I "\-\-system" Monitor the system message bus. .TP -.I "--session" +.I "\-\-session" Monitor the session message bus. (This is the default.) .TP -.I "--address ADDRESS" +.I "\-\-address ADDRESS" Monitor an arbitrary message bus given at ADDRESS. .TP -.I "--profile" +.I "\-\-profile" Use the profiling output format. .TP -.I "--monitor" +.I "\-\-monitor" Use the monitoring output format. (This is the default.) .SH EXAMPLE -Here is an example of using dbus-monitor to watch for the gnome typing +Here is an example of using dbus\-monitor to watch for the gnome typing monitor to say things .nf - dbus-monitor "type='signal',sender='org.gnome.TypingMonitor',interface='org.gnome.TypingMonitor'" + dbus\-monitor "type='signal',sender='org.gnome.TypingMonitor',interface='org.gnome.TypingMonitor'" .fi .SH AUTHOR -dbus-monitor was written by Philip Blundell. +dbus\-monitor was written by Philip Blundell. The profiling output mode was added by Olli Salli. .SH BUGS -Please send bug reports to the D-Bus mailing list or bug tracker, +Please send bug reports to the D\-Bus mailing list or bug tracker, see http://www.freedesktop.org/software/dbus/ diff --git a/doc/dbus-send.1 b/doc/dbus-send.1 index 4878c3d9..adbb869c 100644 --- a/doc/dbus-send.1 +++ b/doc/dbus-send.1 @@ -1,39 +1,39 @@ .\" -.\" dbus-send manual page. +.\" dbus\-send manual page. .\" Copyright (C) 2003 Red Hat, Inc. .\" -.TH dbus-send 1 +.TH dbus\-send 1 .SH NAME -dbus-send \- Send a message to a message bus +dbus\-send \- Send a message to a message bus .SH SYNOPSIS .PP -.B dbus-send -[\-\-system | \-\-session] [\-\-dest=NAME] [\-\-print-reply] +.B dbus\-send +[\-\-system | \-\-session] [\-\-dest=NAME] [\-\-print\-reply] [\-\-type=TYPE] <destination object path> <message name> [contents ...] .SH DESCRIPTION -The \fIdbus-send\fP command is used to send a message to a D-Bus message +The \fIdbus\-send\fP command is used to send a message to a D\-Bus message bus. See http://www.freedesktop.org/software/dbus/ for more information about the big picture. .PP -There are two well-known message buses: the systemwide message bus +There are two well\-known message buses: the systemwide message bus (installed on many systems as the "messagebus" service) and the -per-user-login-session message bus (started each time a user logs in). -The \-\-system and \-\-session options direct \fIdbus-send\fP to send +per\-user\-login\-session message bus (started each time a user logs in). +The \-\-system and \-\-session options direct \fIdbus\-send\fP to send messages to the system or session buses respectively. If neither is -specified, \fIdbus-send\fP sends to the session bus. +specified, \fIdbus\-send\fP sends to the session bus. .PP -Nearly all uses of \fIdbus-send\fP must provide the \-\-dest argument +Nearly all uses of \fIdbus\-send\fP must provide the \-\-dest argument which is the name of a connection on the bus to send the message to. If \-\-dest is omitted, no destination is set. .PP The object path and the name of the message to send must always be specified. Following arguments, if any, are the message contents -(message arguments). These are given as type-specified values and +(message arguments). These are given as type\-specified values and may include containers (arrays, dicts, and variants) as described below. .nf @@ -46,21 +46,21 @@ may include containers (arrays, dicts, and variants) as described below. <type> ::= string | int16 | uint 16 | int32 | uint32 | int64 | uint64 | double | byte | boolean | objpath .fi -D-Bus supports more types than these, but \fIdbus-send\fP currently -does not. Also, \fIdbus-send\fP does not permit empty containers +D\-Bus supports more types than these, but \fIdbus\-send\fP currently +does not. Also, \fIdbus\-send\fP does not permit empty containers or nested containers (e.g. arrays of variants). .PP Here is an example invocation: .nf - dbus-send \-\-dest=org.freedesktop.ExampleName \\ + dbus\-send \-\-dest=org.freedesktop.ExampleName \\ /org/freedesktop/sample/object/name \\ org.freedesktop.ExampleInterface.ExampleMethod \\ int32:47 string:'hello world' double:65.32 \\ array:string:"1st item","next item","last item" \\ dict:string:int32:"one",1,"two",2,"three",3 \\ - variant:int32:-8 \\ + variant:int32:\-8 \\ objpath:/org/freedesktop/sample/object/name .fi @@ -72,24 +72,24 @@ and the interface member are separate fields. .SH OPTIONS The following options are supported: .TP -.I "--dest=NAME" +.I "\-\-dest=NAME" Specify the name of the connection to receive the message. .TP -.I "--print-reply" +.I "\-\-print\-reply" Block for a reply to the message sent, and print any reply received. .TP -.I "--system" +.I "\-\-system" Send to the system message bus. .TP -.I "--session" +.I "\-\-session" Send to the session message bus. (This is the default.) .TP -.I "--type=TYPE" +.I "\-\-type=TYPE" Specify "method_call" or "signal" (defaults to "signal"). .SH AUTHOR -dbus-send was written by Philip Blundell. +dbus\-send was written by Philip Blundell. .SH BUGS -Please send bug reports to the D-Bus mailing list or bug tracker, +Please send bug reports to the D\-Bus mailing list or bug tracker, see http://www.freedesktop.org/software/dbus/ diff --git a/doc/dbus-specification.html b/doc/dbus-specification.html index d137646f..d2e988c0 100644 --- a/doc/dbus-specification.html +++ b/doc/dbus-specification.html @@ -10,9 +10,10 @@ <code class="email"><<a class="email" href="mailto:simon.mcvittie@collabora.co.uk">simon.mcvittie@collabora.co.uk</a>></code><br> </p></div></div></div><div class="author"><h3 class="author"><span class="firstname">David</span> <span class="surname">Zeuthen</span></h3><div class="affiliation"><span class="orgname">Red Hat, Inc.<br></span><div class="address"><p><br> <code class="email"><<a class="email" href="mailto:davidz@redhat.com">davidz@redhat.com</a>></code><br> - </p></div></div></div></div></div><div><p class="releaseinfo">Version 0.17</p></div><div><div class="revhistory"><table border="1" width="100%" summary="Revision history"><tr><th align="left" valign="top" colspan="3"><b>Revision History</b></th></tr><tr><td align="left">Revision current</td><td align="left"><a class="ulink" href="http://cgit.freedesktop.org/dbus/dbus/log/doc/dbus-specification.xml" target="_top">commit log</a></td><td align="left"></td></tr><tr><td align="left" colspan="3"></td></tr><tr><td align="left">Revision 0.17</td><td align="left">1 June 2011</td><td align="left">smcv/davidz</td></tr><tr><td align="left" colspan="3">define ObjectManager; reserve extra pseudo-type-codes used + </p></div></div></div></div></div><div><p class="releaseinfo">Version 0.17</p></div><div><div class="revhistory"><table border="1" width="100%" summary="Revision history"><tr><th align="left" valign="top" colspan="3"><b>Revision History</b></th></tr><tr><td align="left">Revision current</td><td align="left"><a class="ulink" href="http://cgit.freedesktop.org/dbus/dbus/log/doc/dbus-specification.xml" target="_top">commit log</a></td><td align="left"></td></tr><tr><td align="left" colspan="3"></td></tr><tr><td align="left">Revision 0.18</td><td align="left">29 July 2011</td><td align="left">smcv</td></tr><tr><td align="left" colspan="3">define eavesdropping, unicast, broadcast; add eavesdrop + match keyword; promote type system to a top-level section</td></tr><tr><td align="left">Revision 0.17</td><td align="left">1 June 2011</td><td align="left">smcv/davidz</td></tr><tr><td align="left" colspan="3">define ObjectManager; reserve extra pseudo-type-codes used by GVariant</td></tr><tr><td align="left">Revision 0.16</td><td align="left">11 April 2011</td><td align="left"></td></tr><tr><td align="left" colspan="3">add path_namespace, arg0namespace; argNpath matches object - paths</td></tr><tr><td align="left">Revision 0.15</td><td align="left">3 November 2010</td><td align="left"></td></tr><tr><td align="left" colspan="3"></td></tr><tr><td align="left">Revision 0.14</td><td align="left">12 May 2010</td><td align="left"></td></tr><tr><td align="left" colspan="3"></td></tr><tr><td align="left">Revision 0.13</td><td align="left">23 Dezember 2009</td><td align="left"></td></tr><tr><td align="left" colspan="3"></td></tr><tr><td align="left">Revision 0.12</td><td align="left">7 November, 2006</td><td align="left"></td></tr><tr><td align="left" colspan="3"></td></tr><tr><td align="left">Revision 0.11</td><td align="left">6 February 2005</td><td align="left"></td></tr><tr><td align="left" colspan="3"></td></tr><tr><td align="left">Revision 0.10</td><td align="left">28 January 2005</td><td align="left"></td></tr><tr><td align="left" colspan="3"></td></tr><tr><td align="left">Revision 0.9</td><td align="left">7 Januar 2005</td><td align="left"></td></tr><tr><td align="left" colspan="3"></td></tr><tr><td align="left">Revision 0.8</td><td align="left">06 September 2003</td><td align="left"></td></tr><tr><td align="left" colspan="3">First released document.</td></tr></table></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#introduction">Introduction</a></span></dt><dd><dl><dt><span class="sect2"><a href="#stability">Protocol and Specification Stability</a></span></dt></dl></dd><dt><span class="sect1"><a href="#message-protocol">Message Protocol</a></span></dt><dd><dl><dt><span class="sect2"><a href="#message-protocol-signatures">Type Signatures</a></span></dt><dt><span class="sect2"><a href="#message-protocol-marshaling">Marshaling (Wire Format)</a></span></dt><dt><span class="sect2"><a href="#message-protocol-messages">Message Format</a></span></dt><dt><span class="sect2"><a href="#message-protocol-names">Valid Names</a></span></dt><dt><span class="sect2"><a href="#message-protocol-types">Message Types</a></span></dt><dt><span class="sect2"><a href="#message-protocol-handling-invalid">Invalid Protocol and Spec Extensions</a></span></dt></dl></dd><dt><span class="sect1"><a href="#auth-protocol">Authentication Protocol</a></span></dt><dd><dl><dt><span class="sect2"><a href="#auth-protocol-overview">Protocol Overview</a></span></dt><dt><span class="sect2"><a href="#auth-nul-byte">Special credentials-passing nul byte</a></span></dt><dt><span class="sect2"><a href="#auth-command-auth">AUTH command</a></span></dt><dt><span class="sect2"><a href="#auth-command-cancel">CANCEL Command</a></span></dt><dt><span class="sect2"><a href="#auth-command-data">DATA Command</a></span></dt><dt><span class="sect2"><a href="#auth-command-begin">BEGIN Command</a></span></dt><dt><span class="sect2"><a href="#auth-command-rejected">REJECTED Command</a></span></dt><dt><span class="sect2"><a href="#auth-command-ok">OK Command</a></span></dt><dt><span class="sect2"><a href="#auth-command-error">ERROR Command</a></span></dt><dt><span class="sect2"><a href="#auth-command-negotiate-unix-fd">NEGOTIATE_UNIX_FD Command</a></span></dt><dt><span class="sect2"><a href="#auth-command-agree-unix-fd">AGREE_UNIX_FD Command</a></span></dt><dt><span class="sect2"><a href="#auth-command-future">Future Extensions</a></span></dt><dt><span class="sect2"><a href="#auth-examples">Authentication examples</a></span></dt><dt><span class="sect2"><a href="#auth-states">Authentication state diagrams</a></span></dt><dt><span class="sect2"><a href="#auth-mechanisms">Authentication mechanisms</a></span></dt></dl></dd><dt><span class="sect1"><a href="#addresses">Server Addresses</a></span></dt><dt><span class="sect1"><a href="#transports">Transports</a></span></dt><dd><dl><dt><span class="sect2"><a href="#transports-unix-domain-sockets">Unix Domain Sockets</a></span></dt><dt><span class="sect2"><a href="#transports-launchd">launchd</a></span></dt><dt><span class="sect2"><a href="#transports-tcp-sockets">TCP Sockets</a></span></dt><dt><span class="sect2"><a href="#transports-nonce-tcp-sockets">Nonce-secured TCP Sockets</a></span></dt></dl></dd><dt><span class="sect1"><a href="#meta-transports">Meta Transports</a></span></dt><dd><dl><dt><span class="sect2"><a href="#meta-transports-autolaunch">Autolaunch</a></span></dt></dl></dd><dt><span class="sect1"><a href="#naming-conventions">Naming Conventions</a></span></dt><dt><span class="sect1"><a href="#uuids">UUIDs</a></span></dt><dt><span class="sect1"><a href="#standard-interfaces">Standard Interfaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="#standard-interfaces-peer"><code class="literal">org.freedesktop.DBus.Peer</code></a></span></dt><dt><span class="sect2"><a href="#standard-interfaces-introspectable"><code class="literal">org.freedesktop.DBus.Introspectable</code></a></span></dt><dt><span class="sect2"><a href="#standard-interfaces-properties"><code class="literal">org.freedesktop.DBus.Properties</code></a></span></dt><dt><span class="sect2"><a href="#standard-interfaces-objectmanager"><code class="literal">org.freedesktop.DBus.ObjectManager</code></a></span></dt></dl></dd><dt><span class="sect1"><a href="#introspection-format">Introspection Data Format</a></span></dt><dt><span class="sect1"><a href="#message-bus">Message Bus Specification</a></span></dt><dd><dl><dt><span class="sect2"><a href="#message-bus-overview">Message Bus Overview</a></span></dt><dt><span class="sect2"><a href="#message-bus-names">Message Bus Names</a></span></dt><dt><span class="sect2"><a href="#message-bus-routing">Message Bus Message Routing</a></span></dt><dt><span class="sect2"><a href="#message-bus-starting-services">Message Bus Starting Services</a></span></dt><dt><span class="sect2"><a href="#message-bus-types">Well-known Message Bus Instances</a></span></dt><dt><span class="sect2"><a href="#message-bus-messages">Message Bus Messages</a></span></dt></dl></dd><dt><span class="glossary"><a href="#idp30273536">Glossary</a></span></dt></dl></div><div class="sect1" title="Introduction"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="introduction"></a>Introduction</h2></div></div></div><p> + paths</td></tr><tr><td align="left">Revision 0.15</td><td align="left">3 November 2010</td><td align="left"></td></tr><tr><td align="left" colspan="3"></td></tr><tr><td align="left">Revision 0.14</td><td align="left">12 May 2010</td><td align="left"></td></tr><tr><td align="left" colspan="3"></td></tr><tr><td align="left">Revision 0.13</td><td align="left">23 Dezember 2009</td><td align="left"></td></tr><tr><td align="left" colspan="3"></td></tr><tr><td align="left">Revision 0.12</td><td align="left">7 November, 2006</td><td align="left"></td></tr><tr><td align="left" colspan="3"></td></tr><tr><td align="left">Revision 0.11</td><td align="left">6 February 2005</td><td align="left"></td></tr><tr><td align="left" colspan="3"></td></tr><tr><td align="left">Revision 0.10</td><td align="left">28 January 2005</td><td align="left"></td></tr><tr><td align="left" colspan="3"></td></tr><tr><td align="left">Revision 0.9</td><td align="left">7 Januar 2005</td><td align="left"></td></tr><tr><td align="left" colspan="3"></td></tr><tr><td align="left">Revision 0.8</td><td align="left">06 September 2003</td><td align="left"></td></tr><tr><td align="left" colspan="3">First released document.</td></tr></table></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#introduction">Introduction</a></span></dt><dd><dl><dt><span class="sect2"><a href="#stability">Protocol and Specification Stability</a></span></dt></dl></dd><dt><span class="sect1"><a href="#type-system">Type System</a></span></dt><dd><dl><dt><span class="sect2"><a href="#message-protocol-signatures">Type Signatures</a></span></dt><dt><span class="sect2"><a href="#message-protocol-marshaling">Marshaling (Wire Format)</a></span></dt></dl></dd><dt><span class="sect1"><a href="#message-protocol">Message Protocol</a></span></dt><dd><dl><dt><span class="sect2"><a href="#message-protocol-messages">Message Format</a></span></dt><dt><span class="sect2"><a href="#message-protocol-names">Valid Names</a></span></dt><dt><span class="sect2"><a href="#message-protocol-types">Message Types</a></span></dt><dt><span class="sect2"><a href="#message-protocol-handling-invalid">Invalid Protocol and Spec Extensions</a></span></dt></dl></dd><dt><span class="sect1"><a href="#auth-protocol">Authentication Protocol</a></span></dt><dd><dl><dt><span class="sect2"><a href="#auth-protocol-overview">Protocol Overview</a></span></dt><dt><span class="sect2"><a href="#auth-nul-byte">Special credentials-passing nul byte</a></span></dt><dt><span class="sect2"><a href="#auth-command-auth">AUTH command</a></span></dt><dt><span class="sect2"><a href="#auth-command-cancel">CANCEL Command</a></span></dt><dt><span class="sect2"><a href="#auth-command-data">DATA Command</a></span></dt><dt><span class="sect2"><a href="#auth-command-begin">BEGIN Command</a></span></dt><dt><span class="sect2"><a href="#auth-command-rejected">REJECTED Command</a></span></dt><dt><span class="sect2"><a href="#auth-command-ok">OK Command</a></span></dt><dt><span class="sect2"><a href="#auth-command-error">ERROR Command</a></span></dt><dt><span class="sect2"><a href="#auth-command-negotiate-unix-fd">NEGOTIATE_UNIX_FD Command</a></span></dt><dt><span class="sect2"><a href="#auth-command-agree-unix-fd">AGREE_UNIX_FD Command</a></span></dt><dt><span class="sect2"><a href="#auth-command-future">Future Extensions</a></span></dt><dt><span class="sect2"><a href="#auth-examples">Authentication examples</a></span></dt><dt><span class="sect2"><a href="#auth-states">Authentication state diagrams</a></span></dt><dt><span class="sect2"><a href="#auth-mechanisms">Authentication mechanisms</a></span></dt></dl></dd><dt><span class="sect1"><a href="#addresses">Server Addresses</a></span></dt><dt><span class="sect1"><a href="#transports">Transports</a></span></dt><dd><dl><dt><span class="sect2"><a href="#transports-unix-domain-sockets">Unix Domain Sockets</a></span></dt><dt><span class="sect2"><a href="#transports-launchd">launchd</a></span></dt><dt><span class="sect2"><a href="#transports-tcp-sockets">TCP Sockets</a></span></dt><dt><span class="sect2"><a href="#transports-nonce-tcp-sockets">Nonce-secured TCP Sockets</a></span></dt></dl></dd><dt><span class="sect1"><a href="#meta-transports">Meta Transports</a></span></dt><dd><dl><dt><span class="sect2"><a href="#meta-transports-autolaunch">Autolaunch</a></span></dt></dl></dd><dt><span class="sect1"><a href="#naming-conventions">Naming Conventions</a></span></dt><dt><span class="sect1"><a href="#uuids">UUIDs</a></span></dt><dt><span class="sect1"><a href="#standard-interfaces">Standard Interfaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="#standard-interfaces-peer"><code class="literal">org.freedesktop.DBus.Peer</code></a></span></dt><dt><span class="sect2"><a href="#standard-interfaces-introspectable"><code class="literal">org.freedesktop.DBus.Introspectable</code></a></span></dt><dt><span class="sect2"><a href="#standard-interfaces-properties"><code class="literal">org.freedesktop.DBus.Properties</code></a></span></dt><dt><span class="sect2"><a href="#standard-interfaces-objectmanager"><code class="literal">org.freedesktop.DBus.ObjectManager</code></a></span></dt></dl></dd><dt><span class="sect1"><a href="#introspection-format">Introspection Data Format</a></span></dt><dt><span class="sect1"><a href="#message-bus">Message Bus Specification</a></span></dt><dd><dl><dt><span class="sect2"><a href="#message-bus-overview">Message Bus Overview</a></span></dt><dt><span class="sect2"><a href="#message-bus-names">Message Bus Names</a></span></dt><dt><span class="sect2"><a href="#message-bus-routing">Message Bus Message Routing</a></span></dt><dt><span class="sect2"><a href="#message-bus-starting-services">Message Bus Starting Services</a></span></dt><dt><span class="sect2"><a href="#message-bus-types">Well-known Message Bus Instances</a></span></dt><dt><span class="sect2"><a href="#message-bus-messages">Message Bus Messages</a></span></dt></dl></dd><dt><span class="glossary"><a href="#idp5877344">Glossary</a></span></dt></dl></div><div class="sect1" title="Introduction"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="introduction"></a>Introduction</h2></div></div></div><p> D-Bus is a system for low-latency, low-overhead, easy to use interprocess communication (IPC). In more detail: </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> @@ -91,20 +92,10 @@ </p><p> Nonetheless, this document should be a useful starting point and is to our knowledge accurate, though incomplete. - </p></div></div><div class="sect1" title="Message Protocol"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="message-protocol"></a>Message Protocol</h2></div></div></div><p> - A <em class="firstterm">message</em> consists of a - <em class="firstterm">header</em> and a <em class="firstterm">body</em>. If you - think of a message as a package, the header is the address, and the body - contains the package contents. The message delivery system uses the header - information to figure out where to send the message and how to interpret - it; the recipient interprets the body of the message. - </p><p> - The body of the message is made up of zero or more - <em class="firstterm">arguments</em>, which are typed values, such as an - integer or a byte array. - </p><p> - Both header and body use the same type system and format for - serializing data. Each type of value has a wire format. + </p></div></div><div class="sect1" title="Type System"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="type-system"></a>Type System</h2></div></div></div><p> + D-Bus has a type system, in which values of various types can be + serialized into a sequence of bytes referred to as the + <em class="firstterm">wire format</em> in a standard way. Converting a value from some other representation into the wire format is called <em class="firstterm">marshaling</em> and converting it back from the wire format is <em class="firstterm">unmarshaling</em>. @@ -373,7 +364,21 @@ </p></li><li class="listitem"><p> Signatures must be nul-terminated. </p></li></ul></div><p> - </p></div></div><div class="sect2" title="Message Format"><div class="titlepage"><div><div><h3 class="title"><a name="message-protocol-messages"></a>Message Format</h3></div></div></div><p> + </p></div></div></div><div class="sect1" title="Message Protocol"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="message-protocol"></a>Message Protocol</h2></div></div></div><p> + A <em class="firstterm">message</em> consists of a + <em class="firstterm">header</em> and a <em class="firstterm">body</em>. If you + think of a message as a package, the header is the address, and the body + contains the package contents. The message delivery system uses the header + information to figure out where to send the message and how to interpret + it; the recipient interprets the body of the message. + </p><p> + The body of the message is made up of zero or more + <em class="firstterm">arguments</em>, which are typed values, such as an + integer or a byte array. + </p><p> + Both header and body use the D-Bus <a class="link" href="#type-system" title="Type System">type + system</a> and format for serializing data. + </p><div class="sect2" title="Message Format"><div class="titlepage"><div><div><h3 class="title"><a name="message-protocol-messages"></a>Message Format</h3></div></div></div><p> A message consists of a header and a body. The header is a block of values with a fixed signature and meaning. The body is a separate block of values, with a signature specified in the header. @@ -923,14 +928,14 @@ commands may be introduced both before, and after authentication, i.e. both before and after the OK command. </p></div><div class="sect2" title="Authentication examples"><div class="titlepage"><div><div><h3 class="title"><a name="auth-examples"></a>Authentication examples</h3></div></div></div><p> - </p><div class="figure"><a name="idp29600080"></a><p class="title"><b>Figure 1. Example of successful magic cookie authentication</b></p><div class="figure-contents"><pre class="programlisting"> + </p><div class="figure"><a name="idp5183376"></a><p class="title"><b>Figure 1. Example of successful magic cookie authentication</b></p><div class="figure-contents"><pre class="programlisting"> (MAGIC_COOKIE is a made up mechanism) C: AUTH MAGIC_COOKIE 3138363935333137393635383634 S: OK 1234deadbeef C: BEGIN </pre></div></div><p><br class="figure-break"> - </p><div class="figure"><a name="idp29601904"></a><p class="title"><b>Figure 2. Example of finding out mechanisms then picking one</b></p><div class="figure-contents"><pre class="programlisting"> + </p><div class="figure"><a name="idp5185200"></a><p class="title"><b>Figure 2. Example of finding out mechanisms then picking one</b></p><div class="figure-contents"><pre class="programlisting"> C: AUTH S: REJECTED KERBEROS_V4 SKEY C: AUTH SKEY 7ab83f32ee @@ -939,14 +944,14 @@ S: OK 1234deadbeef C: BEGIN </pre></div></div><p><br class="figure-break"> - </p><div class="figure"><a name="idp29603808"></a><p class="title"><b>Figure 3. Example of client sends unknown command then falls back to regular auth</b></p><div class="figure-contents"><pre class="programlisting"> + </p><div class="figure"><a name="idp5187104"></a><p class="title"><b>Figure 3. Example of client sends unknown command then falls back to regular auth</b></p><div class="figure-contents"><pre class="programlisting"> C: FOOBAR S: ERROR C: AUTH MAGIC_COOKIE 3736343435313230333039 S: OK 1234deadbeef C: BEGIN </pre></div></div><p><br class="figure-break"> - </p><div class="figure"><a name="idp29605696"></a><p class="title"><b>Figure 4. Example of server doesn't support initial auth mechanism</b></p><div class="figure-contents"><pre class="programlisting"> + </p><div class="figure"><a name="idp5188992"></a><p class="title"><b>Figure 4. Example of server doesn't support initial auth mechanism</b></p><div class="figure-contents"><pre class="programlisting"> C: AUTH MAGIC_COOKIE 3736343435313230333039 S: REJECTED KERBEROS_V4 SKEY C: AUTH SKEY 7ab83f32ee @@ -955,7 +960,7 @@ S: OK 1234deadbeef C: BEGIN </pre></div></div><p><br class="figure-break"> - </p><div class="figure"><a name="idp29607712"></a><p class="title"><b>Figure 5. Example of wrong password or the like followed by successful retry</b></p><div class="figure-contents"><pre class="programlisting"> + </p><div class="figure"><a name="idp5191008"></a><p class="title"><b>Figure 5. Example of wrong password or the like followed by successful retry</b></p><div class="figure-contents"><pre class="programlisting"> C: AUTH MAGIC_COOKIE 3736343435313230333039 S: REJECTED KERBEROS_V4 SKEY C: AUTH SKEY 7ab83f32ee @@ -968,7 +973,7 @@ S: OK 1234deadbeef C: BEGIN </pre></div></div><p><br class="figure-break"> - </p><div class="figure"><a name="idp29609888"></a><p class="title"><b>Figure 6. Example of skey cancelled and restarted</b></p><div class="figure-contents"><pre class="programlisting"> + </p><div class="figure"><a name="idp5193184"></a><p class="title"><b>Figure 6. Example of skey cancelled and restarted</b></p><div class="figure-contents"><pre class="programlisting"> C: AUTH MAGIC_COOKIE 3736343435313230333039 S: REJECTED KERBEROS_V4 SKEY C: AUTH SKEY 7ab83f32ee @@ -981,7 +986,7 @@ S: OK 1234deadbeef C: BEGIN </pre></div></div><p><br class="figure-break"> - </p><div class="figure"><a name="idp29611952"></a><p class="title"><b>Figure 7. Example of successful magic cookie authentication with successful negotiation of Unix FD passing</b></p><div class="figure-contents"><pre class="programlisting"> + </p><div class="figure"><a name="idp5195248"></a><p class="title"><b>Figure 7. Example of successful magic cookie authentication with successful negotiation of Unix FD passing</b></p><div class="figure-contents"><pre class="programlisting"> (MAGIC_COOKIE is a made up mechanism) C: AUTH MAGIC_COOKIE 3138363935333137393635383634 @@ -990,7 +995,7 @@ S: AGREE_UNIX_FD C: BEGIN </pre></div></div><p><br class="figure-break"> - </p><div class="figure"><a name="idp29613952"></a><p class="title"><b>Figure 8. Example of successful magic cookie authentication with unsuccessful negotiation of Unix FD passing</b></p><div class="figure-contents"><pre class="programlisting"> + </p><div class="figure"><a name="idp5197248"></a><p class="title"><b>Figure 8. Example of successful magic cookie authentication with unsuccessful negotiation of Unix FD passing</b></p><div class="figure-contents"><pre class="programlisting"> (MAGIC_COOKIE is a made up mechanism) C: AUTH MAGIC_COOKIE 3138363935333137393635383634 @@ -1268,7 +1273,7 @@ fails, the lock fails. Servers should retry for a reasonable period of time, then they may choose to delete an existing lock to keep users from having to manually delete a stale - lock. <sup>[<a name="idp29699408" href="#ftn.idp29699408" class="footnote">1</a>]</sup> + lock. <sup>[<a name="idp5282704" href="#ftn.idp5282704" class="footnote">1</a>]</sup> </p></li><li class="listitem"><p> Once the lockfile has been created, the server loads the cookie file. It should then delete any cookies that are old (the @@ -1826,32 +1831,10 @@ and the second will be queued as a possible owner of that name. When the first exits, the second will take over. </p><p> - Messages may have a <code class="literal">DESTINATION</code> field (see <a class="xref" href="#message-protocol-header-fields" title="Header Fields">the section called “Header Fields”</a>). If the - <code class="literal">DESTINATION</code> field is present, it specifies a message - recipient by name. Method calls and replies normally specify this field. - The message bus must send messages (of any type) with the - <code class="literal">DESTINATION</code> field set to the specified recipient, - regardless of whether the recipient has set up a match rule matching - the message. - </p><p> - Signals normally do not specify a destination; they are sent to all - applications with <em class="firstterm">message matching rules</em> that - match the message. - </p><p> - When the message bus receives a method call, if the - <code class="literal">DESTINATION</code> field is absent, the call is taken to be - a standard one-to-one message and interpreted by the message bus - itself. For example, sending an - <code class="literal">org.freedesktop.DBus.Peer.Ping</code> message with no - <code class="literal">DESTINATION</code> will cause the message bus itself to - reply to the ping immediately; the message bus will not make this - message visible to other applications. - </p><p> - Continuing the <code class="literal">org.freedesktop.DBus.Peer.Ping</code> example, if - the ping message were sent with a <code class="literal">DESTINATION</code> name of - <code class="literal">com.yoyodyne.Screensaver</code>, then the ping would be - forwarded, and the Yoyodyne Corporation screensaver application would be - expected to reply to the ping. + Applications may send <em class="firstterm">unicast messages</em> to + a specific recipient or to the message bus itself, or + <em class="firstterm">broadcast messages</em> to all interested recipients. + See <a class="xref" href="#message-bus-routing" title="Message Bus Message Routing">the section called “Message Bus Message Routing”</a> for details. </p></div><div class="sect2" title="Message Bus Names"><div class="titlepage"><div><div><h3 class="title"><a name="message-bus-names"></a>Message Bus Names</h3></div></div></div><p> Each connection has at least one name, assigned at connection time and returned in response to the @@ -2040,16 +2023,94 @@ currently queued for a bus name (see <a class="xref" href="#term-queued-owner" title="Queued Name Owner">Queued Name Owner</a>). </p></div></div><div class="sect2" title="Message Bus Message Routing"><div class="titlepage"><div><div><h3 class="title"><a name="message-bus-routing"></a>Message Bus Message Routing</h3></div></div></div><p> - FIXME - </p><div class="sect3" title="Match Rules"><div class="titlepage"><div><div><h4 class="title"><a name="message-bus-routing-match-rules"></a>Match Rules</h4></div></div></div><p> - An important part of the message bus routing protocol is match - rules. Match rules describe what messages can be sent to a client - based on the contents of the message. When a message is routed - through the bus it is compared to clients' match rules. If any - of the rules match, the message is dispatched to the client. - If none of the rules match the message never leaves the bus. This - is an effective way to control traffic over the bus and to make sure - only relevant message need to be processed by the client. + Messages may have a <code class="literal">DESTINATION</code> field (see <a class="xref" href="#message-protocol-header-fields" title="Header Fields">the section called “Header Fields”</a>), resulting in a + <em class="firstterm">unicast message</em>. If the + <code class="literal">DESTINATION</code> field is present, it specifies a message + recipient by name. Method calls and replies normally specify this field. + The message bus must send messages (of any type) with the + <code class="literal">DESTINATION</code> field set to the specified recipient, + regardless of whether the recipient has set up a match rule matching + the message. + </p><p> + When the message bus receives a signal, if the + <code class="literal">DESTINATION</code> field is absent, it is considered to + be a <em class="firstterm">broadcast signal</em>, and is sent to all + applications with <em class="firstterm">message matching rules</em> that + match the message. Most signal messages are broadcasts. + </p><p> + Unicast signal messages (those with a <code class="literal">DESTINATION</code> + field) are not commonly used, but they are treated like any unicast + message: they are delivered to the specified receipient, + regardless of its match rules. One use for unicast signals is to + avoid a race condition in which a signal is emitted before the intended + recipient can call <a class="xref" href="#bus-messages-add-match" title="org.freedesktop.DBus.AddMatch">the section called “<code class="literal">org.freedesktop.DBus.AddMatch</code>”</a> to + receive that signal: if the signal is sent directly to that recipient + using a unicast message, it does not need to add a match rule at all, + and there is no race condition. Another use for unicast signals, + on message buses whose security policy prevents eavesdropping, is to + send sensitive information which should only be visible to one + recipient. + </p><p> + When the message bus receives a method call, if the + <code class="literal">DESTINATION</code> field is absent, the call is taken to be + a standard one-to-one message and interpreted by the message bus + itself. For example, sending an + <code class="literal">org.freedesktop.DBus.Peer.Ping</code> message with no + <code class="literal">DESTINATION</code> will cause the message bus itself to + reply to the ping immediately; the message bus will not make this + message visible to other applications. + </p><p> + Continuing the <code class="literal">org.freedesktop.DBus.Peer.Ping</code> example, if + the ping message were sent with a <code class="literal">DESTINATION</code> name of + <code class="literal">com.yoyodyne.Screensaver</code>, then the ping would be + forwarded, and the Yoyodyne Corporation screensaver application would be + expected to reply to the ping. + </p><p> + Message bus implementations may impose a security policy which + prevents certain messages from being sent or received. + When a message cannot be sent or received due to a security + policy, the message bus should send an error reply, unless the + original message had the <code class="literal">NO_REPLY</code> flag. + </p><div class="sect3" title="Eavesdropping"><div class="titlepage"><div><div><h4 class="title"><a name="message-bus-routing-eavesdropping"></a>Eavesdropping</h4></div></div></div><p> + Receiving a unicast message whose <code class="literal">DESTINATION</code> + indicates a different recipient is called + <em class="firstterm">eavesdropping</em>. On a message bus which acts as + a security boundary (like the standard system bus), the security + policy should usually prevent eavesdropping, since unicast messages + are normally kept private and may contain security-sensitive + information. + </p><p> + Eavesdropping is mainly useful for debugging tools, such as + the <code class="literal">dbus-monitor</code> tool in the reference + implementation of D-Bus. Tools which eavesdrop on the message bus + should be careful to avoid sending a reply or error in response to + messages intended for a different client. + </p><p> + Clients may attempt to eavesdrop by adding match rules + (see <a class="xref" href="#message-bus-routing-match-rules" title="Match Rules">the section called “Match Rules”</a>) containing + the <code class="literal">eavesdrop='true'</code> match. If the message bus' + security policy does not allow eavesdropping, the match rule can + still be added, but will not have any practical effect. For + compatibility with older message bus implementations, if adding such + a match rule results in an error reply, the client may fall back to + adding the same rule with the <code class="literal">eavesdrop</code> match + omitted. + </p></div><div class="sect3" title="Match Rules"><div class="titlepage"><div><div><h4 class="title"><a name="message-bus-routing-match-rules"></a>Match Rules</h4></div></div></div><p> + An important part of the message bus routing protocol is match + rules. Match rules describe the messages that should be sent to a + client, based on the contents of the message. Broadcast signals + are only sent to clients which have a suitable match rule: this + avoids waking up client processes to deal with signals that are + not relevant to that client. + </p><p> + Messages that list a client as their <code class="literal">DESTINATION</code> + do not need to match the client's match rules, and are sent to that + client regardless. As a result, match rules are mainly used to + receive a subset of broadcast signals. + </p><p> + Match rules can also be used for eavesdropping + (see <a class="xref" href="#message-bus-routing-eavesdropping" title="Eavesdropping">the section called “Eavesdropping”</a>), + if the security policy of the message bus allows it. </p><p> Match rules are added using the AddMatch bus method (see <a class="xref" href="#bus-messages-add-match" title="org.freedesktop.DBus.AddMatch">the section called “<code class="literal">org.freedesktop.DBus.AddMatch</code>”</a>). Rules are @@ -2165,6 +2226,23 @@ daemon in dbus 1.5.0 and later. </em></span> </p> + </td></tr><tr><td><code class="literal">eavesdrop</code></td><td><code class="literal">'true'</code>, <code class="literal">'false'</code></td><td>Since D-Bus 1.5.6, match rules do not + match messages which have a <code class="literal">DESTINATION</code> + field unless the match rule specifically + requests this + (see <a class="xref" href="#message-bus-routing-eavesdropping" title="Eavesdropping">the section called “Eavesdropping”</a>) + by specifying <code class="literal">eavesdrop='true'</code> + in the match rule. <code class="literal">eavesdrop='false'</code> + restores the default behaviour. Messages are + delivered to their <code class="literal">DESTINATION</code> + regardless of match rules, so this match does not + affect normal delivery of unicast messages. + If the message bus has a security policy which forbids + eavesdropping, this match may still be used without error, + but will not have any practical effect. + In older versions of D-Bus, this match was not allowed + in match rules, and all match rules behaved as if + <code class="literal">eavesdrop='true'</code> had been used. </td></tr></tbody></table></div><p> </p></div></div><div class="sect2" title="Message Bus Starting Services"><div class="titlepage"><div><div><h3 class="title"><a name="message-bus-starting-services"></a>Message Bus Starting Services</h3></div></div></div><p> The message bus can start applications on behalf of other applications. @@ -2202,7 +2280,7 @@ </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>General syntax</p></li><li class="listitem"><p>Comment format</p></li></ul></div><p> - </p><div class="figure"><a name="idp30049712"></a><p class="title"><b>Figure 9. Example service description file</b></p><div class="figure-contents"><pre class="programlisting"> + </p><div class="figure"><a name="idp5653952"></a><p class="title"><b>Figure 9. Example service description file</b></p><div class="figure-contents"><pre class="programlisting"> # Sample service description file [D-BUS Service] Names=org.freedesktop.ConfigurationDatabase;org.gnome.GConf; @@ -2372,7 +2450,7 @@ allowing another process to set the selection between the verification and the setting (e.g., by using XGrabServer / XungrabServer). - </p></div><div class="sect4"><div class="titlepage"><div><div><h5 class="title"><a name="idp30102912"></a></h5></div></div></div><p> + </p></div><div class="sect4"><div class="titlepage"><div><div><h5 class="title"><a name="idp5706720"></a></h5></div></div></div><p> [FIXME specify location of .service files, probably using DESKTOP_DIRS etc. from basedir specification, though login session bus is not really desktop-specific] @@ -2387,7 +2465,7 @@ variable. If that variable is not set, applications should try to connect to the well-known address <code class="literal">unix:path=/var/run/dbus/system_bus_socket</code>. - <sup>[<a name="idp30107936" href="#ftn.idp30107936" class="footnote">2</a>]</sup> + <sup>[<a name="idp5711744" href="#ftn.idp5711744" class="footnote">2</a>]</sup> </p><p> [FIXME specify location of system bus .service files] </p></div></div><div class="sect2" title="Message Bus Messages"><div class="titlepage"><div><div><h3 class="title"><a name="message-bus-messages"></a>Message Bus Messages</h3></div></div></div><p> @@ -2572,7 +2650,7 @@ There is also a per-machine ID, described in <a class="xref" href="#standard-interfaces-peer" title="org.freedesktop.DBus.Peer">the section called “<code class="literal">org.freedesktop.DBus.Peer</code>”</a> and returned by org.freedesktop.DBus.Peer.GetMachineId(). For a desktop session bus, the bus ID can be used as a way to uniquely identify a user's session. - </p></div></div></div><div class="glossary" title="Glossary"><div class="titlepage"><div><div><h2 class="title"><a name="idp30273536"></a>Glossary</h2></div></div></div><p> + </p></div></div></div><div class="glossary" title="Glossary"><div class="titlepage"><div><div><h2 class="title"><a name="idp5877344"></a>Glossary</h2></div></div></div><p> This glossary defines some of the terms used in this specification. </p><dl><dt><a name="term-bus-name"></a>Bus Name</dt><dd><p> The message bus maintains an association between names and @@ -2646,10 +2724,10 @@ message bus. This name will never change owner, and will be unique (never reused during the lifetime of the message bus). It will begin with a ':' character. - </p></dd></dl></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a name="ftn.idp29699408" href="#idp29699408" class="para">1</a>] </sup>Lockfiles are used instead of real file + </p></dd></dl></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a name="ftn.idp5282704" href="#idp5282704" class="para">1</a>] </sup>Lockfiles are used instead of real file locking <code class="literal">fcntl()</code> because real locking implementations are still flaky on network - filesystems.</p></div><div class="footnote"><p><sup>[<a name="ftn.idp30107936" href="#idp30107936" class="para">2</a>] </sup> + filesystems.</p></div><div class="footnote"><p><sup>[<a name="ftn.idp5711744" href="#idp5711744" class="para">2</a>] </sup> The D-Bus reference implementation actually honors the <code class="literal">$(localstatedir)</code> configure option for this address, on both client and server side. diff --git a/doc/dbus-specification.xml b/doc/dbus-specification.xml index 4bd0cb32..282fb3b0 100644 --- a/doc/dbus-specification.xml +++ b/doc/dbus-specification.xml @@ -78,6 +78,13 @@ <revremark></revremark> </revision> <revision> + <revnumber>0.18</revnumber> + <date>29 July 2011</date> + <authorinitials>smcv</authorinitials> + <revremark>define eavesdropping, unicast, broadcast; add eavesdrop + match keyword; promote type system to a top-level section</revremark> + </revision> + <revision> <revnumber>0.17</revnumber> <date>1 June 2011</date> <authorinitials>smcv/davidz</authorinitials> @@ -264,27 +271,13 @@ </sect1> - <sect1 id="message-protocol"> - <title>Message Protocol</title> - - <para> - A <firstterm>message</firstterm> consists of a - <firstterm>header</firstterm> and a <firstterm>body</firstterm>. If you - think of a message as a package, the header is the address, and the body - contains the package contents. The message delivery system uses the header - information to figure out where to send the message and how to interpret - it; the recipient interprets the body of the message. - </para> - - <para> - The body of the message is made up of zero or more - <firstterm>arguments</firstterm>, which are typed values, such as an - integer or a byte array. - </para> + <sect1 id="type-system"> + <title>Type System</title> <para> - Both header and body use the same type system and format for - serializing data. Each type of value has a wire format. + D-Bus has a type system, in which values of various types can be + serialized into a sequence of bytes referred to as the + <firstterm>wire format</firstterm> in a standard way. Converting a value from some other representation into the wire format is called <firstterm>marshaling</firstterm> and converting it back from the wire format is <firstterm>unmarshaling</firstterm>. @@ -843,6 +836,31 @@ </sect2> + </sect1> + + <sect1 id="message-protocol"> + <title>Message Protocol</title> + + <para> + A <firstterm>message</firstterm> consists of a + <firstterm>header</firstterm> and a <firstterm>body</firstterm>. If you + think of a message as a package, the header is the address, and the body + contains the package contents. The message delivery system uses the header + information to figure out where to send the message and how to interpret + it; the recipient interprets the body of the message. + </para> + + <para> + The body of the message is made up of zero or more + <firstterm>arguments</firstterm>, which are typed values, such as an + integer or a byte array. + </para> + + <para> + Both header and body use the D-Bus <link linkend="type-system">type + system</link> and format for serializing data. + </para> + <sect2 id="message-protocol-messages"> <title>Message Format</title> @@ -3374,39 +3392,10 @@ </para> <para> - Messages may have a <literal>DESTINATION</literal> field (see <xref - linkend="message-protocol-header-fields"/>). If the - <literal>DESTINATION</literal> field is present, it specifies a message - recipient by name. Method calls and replies normally specify this field. - The message bus must send messages (of any type) with the - <literal>DESTINATION</literal> field set to the specified recipient, - regardless of whether the recipient has set up a match rule matching - the message. - </para> - - <para> - Signals normally do not specify a destination; they are sent to all - applications with <firstterm>message matching rules</firstterm> that - match the message. - </para> - - <para> - When the message bus receives a method call, if the - <literal>DESTINATION</literal> field is absent, the call is taken to be - a standard one-to-one message and interpreted by the message bus - itself. For example, sending an - <literal>org.freedesktop.DBus.Peer.Ping</literal> message with no - <literal>DESTINATION</literal> will cause the message bus itself to - reply to the ping immediately; the message bus will not make this - message visible to other applications. - </para> - - <para> - Continuing the <literal>org.freedesktop.DBus.Peer.Ping</literal> example, if - the ping message were sent with a <literal>DESTINATION</literal> name of - <literal>com.yoyodyne.Screensaver</literal>, then the ping would be - forwarded, and the Yoyodyne Corporation screensaver application would be - expected to reply to the ping. + Applications may send <firstterm>unicast messages</firstterm> to + a specific recipient or to the message bus itself, or + <firstterm>broadcast messages</firstterm> to all interested recipients. + See <xref linkend="message-bus-routing"/> for details. </para> </sect2> @@ -3840,20 +3829,122 @@ <sect2 id="message-bus-routing"> <title>Message Bus Message Routing</title> + + <para> + Messages may have a <literal>DESTINATION</literal> field (see <xref + linkend="message-protocol-header-fields"/>), resulting in a + <firstterm>unicast message</firstterm>. If the + <literal>DESTINATION</literal> field is present, it specifies a message + recipient by name. Method calls and replies normally specify this field. + The message bus must send messages (of any type) with the + <literal>DESTINATION</literal> field set to the specified recipient, + regardless of whether the recipient has set up a match rule matching + the message. + </para> + + <para> + When the message bus receives a signal, if the + <literal>DESTINATION</literal> field is absent, it is considered to + be a <firstterm>broadcast signal</firstterm>, and is sent to all + applications with <firstterm>message matching rules</firstterm> that + match the message. Most signal messages are broadcasts. + </para> + <para> - FIXME + Unicast signal messages (those with a <literal>DESTINATION</literal> + field) are not commonly used, but they are treated like any unicast + message: they are delivered to the specified receipient, + regardless of its match rules. One use for unicast signals is to + avoid a race condition in which a signal is emitted before the intended + recipient can call <xref linkend="bus-messages-add-match"/> to + receive that signal: if the signal is sent directly to that recipient + using a unicast message, it does not need to add a match rule at all, + and there is no race condition. Another use for unicast signals, + on message buses whose security policy prevents eavesdropping, is to + send sensitive information which should only be visible to one + recipient. </para> + + <para> + When the message bus receives a method call, if the + <literal>DESTINATION</literal> field is absent, the call is taken to be + a standard one-to-one message and interpreted by the message bus + itself. For example, sending an + <literal>org.freedesktop.DBus.Peer.Ping</literal> message with no + <literal>DESTINATION</literal> will cause the message bus itself to + reply to the ping immediately; the message bus will not make this + message visible to other applications. + </para> + + <para> + Continuing the <literal>org.freedesktop.DBus.Peer.Ping</literal> example, if + the ping message were sent with a <literal>DESTINATION</literal> name of + <literal>com.yoyodyne.Screensaver</literal>, then the ping would be + forwarded, and the Yoyodyne Corporation screensaver application would be + expected to reply to the ping. + </para> + + <para> + Message bus implementations may impose a security policy which + prevents certain messages from being sent or received. + When a message cannot be sent or received due to a security + policy, the message bus should send an error reply, unless the + original message had the <literal>NO_REPLY</literal> flag. + </para> + + <sect3 id="message-bus-routing-eavesdropping"> + <title>Eavesdropping</title> + <para> + Receiving a unicast message whose <literal>DESTINATION</literal> + indicates a different recipient is called + <firstterm>eavesdropping</firstterm>. On a message bus which acts as + a security boundary (like the standard system bus), the security + policy should usually prevent eavesdropping, since unicast messages + are normally kept private and may contain security-sensitive + information. + </para> + + <para> + Eavesdropping is mainly useful for debugging tools, such as + the <literal>dbus-monitor</literal> tool in the reference + implementation of D-Bus. Tools which eavesdrop on the message bus + should be careful to avoid sending a reply or error in response to + messages intended for a different client. + </para> + + <para> + Clients may attempt to eavesdrop by adding match rules + (see <xref linkend="message-bus-routing-match-rules"/>) containing + the <literal>eavesdrop='true'</literal> match. If the message bus' + security policy does not allow eavesdropping, the match rule can + still be added, but will not have any practical effect. For + compatibility with older message bus implementations, if adding such + a match rule results in an error reply, the client may fall back to + adding the same rule with the <literal>eavesdrop</literal> match + omitted. + </para> + </sect3> + <sect3 id="message-bus-routing-match-rules"> <title>Match Rules</title> <para> - An important part of the message bus routing protocol is match - rules. Match rules describe what messages can be sent to a client - based on the contents of the message. When a message is routed - through the bus it is compared to clients' match rules. If any - of the rules match, the message is dispatched to the client. - If none of the rules match the message never leaves the bus. This - is an effective way to control traffic over the bus and to make sure - only relevant message need to be processed by the client. + An important part of the message bus routing protocol is match + rules. Match rules describe the messages that should be sent to a + client, based on the contents of the message. Broadcast signals + are only sent to clients which have a suitable match rule: this + avoids waking up client processes to deal with signals that are + not relevant to that client. + </para> + <para> + Messages that list a client as their <literal>DESTINATION</literal> + do not need to match the client's match rules, and are sent to that + client regardless. As a result, match rules are mainly used to + receive a subset of broadcast signals. + </para> + <para> + Match rules can also be used for eavesdropping + (see <xref linkend="message-bus-routing-eavesdropping"/>), + if the security policy of the message bus allows it. </para> <para> Match rules are added using the AddMatch bus method @@ -4031,6 +4122,28 @@ </para> </entry> </row> + <row> + <entry><literal>eavesdrop</literal></entry> + <entry><literal>'true'</literal>, <literal>'false'</literal></entry> + <entry>Since D-Bus 1.5.6, match rules do not + match messages which have a <literal>DESTINATION</literal> + field unless the match rule specifically + requests this + (see <xref linkend="message-bus-routing-eavesdropping"/>) + by specifying <literal>eavesdrop='true'</literal> + in the match rule. <literal>eavesdrop='false'</literal> + restores the default behaviour. Messages are + delivered to their <literal>DESTINATION</literal> + regardless of match rules, so this match does not + affect normal delivery of unicast messages. + If the message bus has a security policy which forbids + eavesdropping, this match may still be used without error, + but will not have any practical effect. + In older versions of D-Bus, this match was not allowed + in match rules, and all match rules behaved as if + <literal>eavesdrop='true'</literal> had been used. + </entry> + </row> </tbody> </tgroup> </informaltable> diff --git a/doc/dbus-test-plan.html b/doc/dbus-test-plan.html index 06c735aa..44991af2 100644 --- a/doc/dbus-test-plan.html +++ b/doc/dbus-test-plan.html @@ -38,7 +38,7 @@ Message Builder. The message builder can take a serialized message in string-form and convert it into a raw character string which can then be loaded by the message loader. - </p><div class="figure"><a name="idp24476880"></a><p class="title"><b>Figure 1. Example of a message in string form</b></p><div class="figure-contents"><pre class="programlisting"> + </p><div class="figure"><a name="idp24477888"></a><p class="title"><b>Figure 1. Example of a message in string form</b></p><div class="figure-contents"><pre class="programlisting"> # Standard org.freedesktop.DBus.Hello message VALID_HEADER @@ -75,7 +75,7 @@ can read authentication sequences from a file and play them back to a dummy server and client to make sure that authentication is working according to the specification. - </p><div class="figure"><a name="idp24483568"></a><p class="title"><b>Figure 2. Example of an authentication script</b></p><div class="figure-contents"><pre class="programlisting"> + </p><div class="figure"><a name="idp24484576"></a><p class="title"><b>Figure 2. Example of an authentication script</b></p><div class="figure-contents"><pre class="programlisting"> ## this tests a successful auth of type EXTERNAL SERVER diff --git a/doc/dbus-uuidgen.1 b/doc/dbus-uuidgen.1 index 480fd18f..8ed8dd20 100644 --- a/doc/dbus-uuidgen.1 +++ b/doc/dbus-uuidgen.1 @@ -1,36 +1,36 @@ .\" -.\" dbus-uuidgen manual page. +.\" dbus\-uuidgen manual page. .\" Copyright (C) 2006 Red Hat, Inc. .\" -.TH dbus-uuidgen 1 +.TH dbus\-uuidgen 1 .SH NAME -dbus-uuidgen \- Utility to generate UUIDs +dbus\-uuidgen \- Utility to generate UUIDs .SH SYNOPSIS .PP -.B dbus-uuidgen [\-\-version] [\-\-ensure[=FILENAME]] [\-\-get[=FILENAME]] +.B dbus\-uuidgen [\-\-version] [\-\-ensure[=FILENAME]] [\-\-get[=FILENAME]] .SH DESCRIPTION -The \fIdbus-uuidgen\fP command generates or reads a universally unique ID. +The \fIdbus\-uuidgen\fP command generates or reads a universally unique ID. .PP -Note that the D-Bus UUID has no relationship to RFC 4122 and does not generate +Note that the D\-Bus UUID has no relationship to RFC 4122 and does not generate UUIDs compatible with that spec. Many systems have a separate command for that (often called "uuidgen"). .PP See http://www.freedesktop.org/software/dbus/ for more information -about D-Bus. +about D\-Bus. .PP -The primary usage of \fIdbus-uuidgen\fP is to run in the post-install -script of a D-Bus package like this: +The primary usage of \fIdbus\-uuidgen\fP is to run in the post\-install +script of a D\-Bus package like this: .nf - dbus-uuidgen --ensure + dbus\-uuidgen \-\-ensure .fi .PP -This will ensure that /var/lib/dbus/machine-id exists and has the uuid in it. +This will ensure that /var/lib/dbus/machine\-id exists and has the uuid in it. It won't overwrite an existing uuid, since this id should remain fixed for a single machine until the next reboot at least. @@ -43,15 +43,15 @@ sockets, local X displays, localhost.localdomain resolution, process IDs, and so forth. .PP -If you run \fIdbus-uuidgen\fP with no options it just prints a new uuid made +If you run \fIdbus\-uuidgen\fP with no options it just prints a new uuid made up out of thin air. .PP -If you run it with --get, it prints the machine UUID by default, or +If you run it with \-\-get, it prints the machine UUID by default, or the UUID in the specified file if you specify a file. .PP -If you try to change an existing machine-id on a running system, it will +If you try to change an existing machine\-id on a running system, it will probably result in bad things happening. Don't try to change this file. Also, don't make it the same on two different systems; it needs to be different anytime there are two different kernels running. @@ -63,27 +63,27 @@ because there are two different kernels. .SH OPTIONS The following options are supported: .TP -.I "--get[=FILENAME]" -If a filename is not given, defaults to localstatedir/lib/dbus/machine-id +.I "\-\-get[=FILENAME]" +If a filename is not given, defaults to localstatedir/lib/dbus/machine\-id (localstatedir is usually /var). If this file exists and is valid, the uuid in the file is printed on stdout. Otherwise, the command exits with a nonzero status. .TP -.I "--ensure[=FILENAME]" -If a filename is not given, defaults to localstatedir/lib/dbus/machine-id +.I "\-\-ensure[=FILENAME]" +If a filename is not given, defaults to localstatedir/lib/dbus/machine\-id (localstatedir is usually /var). If this file exists then it will be validated, and a failure code returned if it contains the wrong thing. If the file does not exist, it will be created with a new uuid in it. On success, prints no output. .TP -.I "--version" -Print the version of dbus-uuidgen +.I "\-\-version" +Print the version of dbus\-uuidgen .SH AUTHOR See http://www.freedesktop.org/software/dbus/doc/AUTHORS .SH BUGS -Please send bug reports to the D-Bus mailing list or bug tracker, +Please send bug reports to the D\-Bus mailing list or bug tracker, see http://www.freedesktop.org/software/dbus/ diff --git a/test/Makefile.am b/test/Makefile.am index 99740c9a..7adb8233 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -4,71 +4,84 @@ SUBDIRS= . name-test DIST_SUBDIRS=name-test -INCLUDES=-I$(top_srcdir) $(DBUS_TEST_CFLAGS) +AM_CPPFLAGS = \ + -I$(top_srcdir) \ + $(GLIB_CFLAGS) \ + $(DBUS_GLIB_CFLAGS) \ + $(NULL) + +# improve backtraces from test stuff +AM_LDFLAGS = @R_DYNAMIC_LDFLAG@ -libdbus_testutils_la_SOURCES = test-utils.h test-utils.c +libdbus_testutils_la_SOURCES = \ + test-utils.c \ + test-utils.h \ + $(NULL) +libdbus_testutils_la_LIBADD = \ + $(top_builddir)/dbus/libdbus-internal.la \ + $(NULL) noinst_LTLIBRARIES = libdbus-testutils.la if DBUS_BUILD_TESTS ## break-loader removed for now ## most of these binaries are used in tests but are not themselves tests -TEST_BINARIES=test-service test-names test-shell-service shell-test spawn-test test-segfault test-exit test-sleep-forever +TEST_BINARIES = \ + shell-test \ + spawn-test \ + test-exit \ + test-names \ + test-segfault \ + test-service \ + test-shell-service \ + test-sleep-forever \ + $(NULL) ## these are the things to run in make check (i.e. they are actual tests) ## (binaries in here must also be in TEST_BINARIES) -TESTS=shell-test -else -TEST_BINARIES= -TESTS= -endif - -noinst_PROGRAMS= $(TEST_BINARIES) - -test_service_SOURCES= \ - test-service.c - -test_names_SOURCES= \ - test-names.c - -##break_loader_SOURCES= \ -## break-loader.c +TESTS = \ + shell-test \ + $(NULL) -test_shell_service_SOURCES = \ - test-shell-service.c +## These are conceptually part of directories that come earlier in SUBDIRS +## order, but we don't want to run them til we arrive in this directory, +## since they depend on stuff from this directory +TESTS += \ + ../bus/bus-test$(EXEEXT) \ + ../bus/bus-test-system$(EXEEXT) \ + ../dbus/dbus-test$(EXEEXT) \ + $(NULL) -shell_test_SOURCES= \ - shell-test.c +if DBUS_UNIX +TESTS += ../bus/bus-test-launch-helper$(EXEEXT) +endif -spawn_test_SOURCES= \ - spawn-test.c +else !DBUS_BUILD_TESTS -test_exit_SOURCES = \ - test-exit.c +TEST_BINARIES= +TESTS= -test_segfault_SOURCES = \ - test-segfault.c +endif !DBUS_BUILD_TESTS -test_sleep_forever_SOURCES = \ - test-sleep-forever.c +noinst_PROGRAMS= $(TEST_BINARIES) -# This assumes that most tests will be linked to libdbus-internal; -# tests linked to only the public libdbus have their own CPPFLAGS. -AM_CPPFLAGS=-DDBUS_STATIC_BUILD -TEST_LIBS=$(top_builddir)/dbus/libdbus-internal.la $(DBUS_TEST_LIBS) +static_cppflags = \ + $(AM_CPPFLAGS) \ + -DDBUS_STATIC_BUILD \ + $(NULL) -test_service_LDADD=libdbus-testutils.la $(TEST_LIBS) -test_service_LDFLAGS=@R_DYNAMIC_LDFLAG@ -test_names_LDADD=libdbus-testutils.la $(TEST_LIBS) -test_names_LDFLAGS=@R_DYNAMIC_LDFLAG@ -## break_loader_LDADD= $(TEST_LIBS) -## break_loader_LDFLAGS=@R_DYNAMIC_LDFLAG@ -test_shell_service_LDADD=libdbus-testutils.la $(TEST_LIBS) -test_shell_service_LDFLAGS=@R_DYNAMIC_LDFLAG@ -shell_test_LDADD=libdbus-testutils.la $(TEST_LIBS) -shell_test_LDFLAGS=@R_DYNAMIC_LDFLAG@ -spawn_test_LDADD=$(TEST_LIBS) -spawn_test_LDFLAGS=@R_DYNAMIC_LDFLAG@ +test_service_CPPFLAGS = $(static_cppflags) +test_service_LDADD = libdbus-testutils.la +test_names_CPPFLAGS = $(static_cppflags) +test_names_LDADD = libdbus-testutils.la +## break_loader_CPPFLAGS = $(static_cppflags) +## break_loader_LDADD = $(top_builddir)/dbus/libdbus-internal.la +test_shell_service_CPPFLAGS = $(static_cppflags) +test_shell_service_LDADD = libdbus-testutils.la +shell_test_CPPFLAGS = $(static_cppflags) +shell_test_LDADD = libdbus-testutils.la +spawn_test_CPPFLAGS = $(static_cppflags) +spawn_test_LDADD = $(top_builddir)/dbus/libdbus-internal.la EXTRA_DIST = dbus-test-runner @@ -79,6 +92,7 @@ testexec_PROGRAMS = installable_tests = \ test-corrupt \ test-dbus-daemon \ + test-dbus-daemon-eavesdrop \ test-loopback \ test-marshal \ test-relay \ @@ -90,40 +104,41 @@ installcheck_environment = \ DBUS_TEST_SYSCONFDIR=$(DESTDIR)$(sysconfdir) TESTS_ENVIRONMENT = \ + DBUS_BLOCK_ON_ABORT=1 \ + DBUS_FATAL_WARNINGS=1 \ DBUS_TEST_DAEMON=@abs_top_builddir@/bus/dbus-daemon$(EXEEXT) \ - DBUS_TEST_DATA=@abs_top_builddir@/test/data + DBUS_TEST_DATA=@abs_top_builddir@/test/data \ + DBUS_TEST_HOMEDIR=@abs_top_builddir@/dbus \ + $(NULL) test_corrupt_SOURCES = corrupt.c -test_corrupt_CPPFLAGS = $(GLIB_CFLAGS) $(DBUS_GLIB_CFLAGS) -test_corrupt_LDFLAGS = @R_DYNAMIC_LDFLAG@ test_corrupt_LDADD = $(top_builddir)/dbus/libdbus-1.la \ $(GLIB_LIBS) \ $(DBUS_GLIB_LIBS) test_loopback_SOURCES = loopback.c -test_loopback_CPPFLAGS = $(GLIB_CFLAGS) $(DBUS_GLIB_CFLAGS) -test_loopback_LDFLAGS = @R_DYNAMIC_LDFLAG@ test_loopback_LDADD = $(top_builddir)/dbus/libdbus-1.la \ $(GLIB_LIBS) \ $(DBUS_GLIB_LIBS) test_relay_SOURCES = relay.c -test_relay_CPPFLAGS = $(GLIB_CFLAGS) $(DBUS_GLIB_CFLAGS) -test_relay_LDFLAGS = @R_DYNAMIC_LDFLAG@ test_relay_LDADD = $(top_builddir)/dbus/libdbus-1.la \ $(GLIB_LIBS) \ $(DBUS_GLIB_LIBS) test_dbus_daemon_SOURCES = dbus-daemon.c -test_dbus_daemon_CPPFLAGS = $(GLIB_CFLAGS) $(DBUS_GLIB_CFLAGS) -test_dbus_daemon_LDFLAGS = @R_DYNAMIC_LDFLAG@ test_dbus_daemon_LDADD = $(top_builddir)/dbus/libdbus-1.la \ $(GLIB_LIBS) \ $(DBUS_GLIB_LIBS) +test_dbus_daemon_eavesdrop_SOURCES = dbus-daemon-eavesdrop.c +test_dbus_daemon_eavesdrop_CPPFLAGS = $(GLIB_CFLAGS) $(DBUS_GLIB_CFLAGS) +test_dbus_daemon_eavesdrop_LDFLAGS = @R_DYNAMIC_LDFLAG@ +test_dbus_daemon_eavesdrop_LDADD = $(top_builddir)/dbus/libdbus-1.la \ + $(GLIB_LIBS) \ + $(DBUS_GLIB_LIBS) + test_marshal_SOURCES = marshal.c -test_marshal_CPPFLAGS = $(GLIB_CFLAGS) $(DBUS_GLIB_CFLAGS) -test_marshal_LDFLAGS = @R_DYNAMIC_LDFLAG@ test_marshal_LDADD = $(top_builddir)/dbus/libdbus-1.la \ $(GLIB_LIBS) \ $(DBUS_GLIB_LIBS) diff --git a/test/Makefile.in b/test/Makefile.in index c9a0ab76..76c547a6 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -36,13 +36,18 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @DBUS_BUILD_TESTS_FALSE@TESTS = $(am__EXEEXT_5) -@DBUS_BUILD_TESTS_TRUE@TESTS = shell-test$(EXEEXT) $(am__EXEEXT_5) +@DBUS_BUILD_TESTS_TRUE@TESTS = shell-test$(EXEEXT) \ +@DBUS_BUILD_TESTS_TRUE@ ../bus/bus-test$(EXEEXT) \ +@DBUS_BUILD_TESTS_TRUE@ ../bus/bus-test-system$(EXEEXT) \ +@DBUS_BUILD_TESTS_TRUE@ ../dbus/dbus-test$(EXEEXT) \ +@DBUS_BUILD_TESTS_TRUE@ $(am__append_1) $(am__EXEEXT_5) +@DBUS_BUILD_TESTS_TRUE@@DBUS_UNIX_TRUE@am__append_1 = ../bus/bus-test-launch-helper$(EXEEXT) noinst_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_3) testexec_PROGRAMS = $(am__EXEEXT_4) -@DBUS_ENABLE_MODULAR_TESTS_TRUE@am__append_1 = $(installable_tests) @DBUS_ENABLE_MODULAR_TESTS_TRUE@am__append_2 = $(installable_tests) -@DBUS_ENABLE_INSTALLED_TESTS_TRUE@@DBUS_ENABLE_MODULAR_TESTS_TRUE@am__append_3 = $(installable_tests) -@DBUS_ENABLE_INSTALLED_TESTS_FALSE@@DBUS_ENABLE_MODULAR_TESTS_TRUE@am__append_4 = $(installable_tests) +@DBUS_ENABLE_MODULAR_TESTS_TRUE@am__append_3 = $(installable_tests) +@DBUS_ENABLE_INSTALLED_TESTS_TRUE@@DBUS_ENABLE_MODULAR_TESTS_TRUE@am__append_4 = $(installable_tests) +@DBUS_ENABLE_INSTALLED_TESTS_FALSE@@DBUS_ENABLE_MODULAR_TESTS_TRUE@am__append_5 = $(installable_tests) subdir = test DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -60,105 +65,83 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) -libdbus_testutils_la_LIBADD = +libdbus_testutils_la_DEPENDENCIES = \ + $(top_builddir)/dbus/libdbus-internal.la am_libdbus_testutils_la_OBJECTS = test-utils.lo libdbus_testutils_la_OBJECTS = $(am_libdbus_testutils_la_OBJECTS) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent -@DBUS_BUILD_TESTS_TRUE@am__EXEEXT_1 = test-service$(EXEEXT) \ +@DBUS_BUILD_TESTS_TRUE@am__EXEEXT_1 = shell-test$(EXEEXT) \ +@DBUS_BUILD_TESTS_TRUE@ spawn-test$(EXEEXT) test-exit$(EXEEXT) \ @DBUS_BUILD_TESTS_TRUE@ test-names$(EXEEXT) \ -@DBUS_BUILD_TESTS_TRUE@ test-shell-service$(EXEEXT) \ -@DBUS_BUILD_TESTS_TRUE@ shell-test$(EXEEXT) spawn-test$(EXEEXT) \ @DBUS_BUILD_TESTS_TRUE@ test-segfault$(EXEEXT) \ -@DBUS_BUILD_TESTS_TRUE@ test-exit$(EXEEXT) \ +@DBUS_BUILD_TESTS_TRUE@ test-service$(EXEEXT) \ +@DBUS_BUILD_TESTS_TRUE@ test-shell-service$(EXEEXT) \ @DBUS_BUILD_TESTS_TRUE@ test-sleep-forever$(EXEEXT) am__EXEEXT_2 = test-corrupt$(EXEEXT) test-dbus-daemon$(EXEEXT) \ - test-loopback$(EXEEXT) test-marshal$(EXEEXT) \ - test-relay$(EXEEXT) + test-dbus-daemon-eavesdrop$(EXEEXT) test-loopback$(EXEEXT) \ + test-marshal$(EXEEXT) test-relay$(EXEEXT) @DBUS_ENABLE_INSTALLED_TESTS_FALSE@@DBUS_ENABLE_MODULAR_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_2) @DBUS_ENABLE_INSTALLED_TESTS_TRUE@@DBUS_ENABLE_MODULAR_TESTS_TRUE@am__EXEEXT_4 = $(am__EXEEXT_2) am__installdirs = "$(DESTDIR)$(testexecdir)" PROGRAMS = $(noinst_PROGRAMS) $(testexec_PROGRAMS) -am_shell_test_OBJECTS = shell-test.$(OBJEXT) -shell_test_OBJECTS = $(am_shell_test_OBJECTS) -am__DEPENDENCIES_1 = -am__DEPENDENCIES_2 = $(top_builddir)/dbus/libdbus-internal.la \ - $(am__DEPENDENCIES_1) -shell_test_DEPENDENCIES = libdbus-testutils.la $(am__DEPENDENCIES_2) -shell_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(shell_test_LDFLAGS) $(LDFLAGS) -o $@ -am_spawn_test_OBJECTS = spawn-test.$(OBJEXT) -spawn_test_OBJECTS = $(am_spawn_test_OBJECTS) -spawn_test_DEPENDENCIES = $(am__DEPENDENCIES_2) -spawn_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(spawn_test_LDFLAGS) $(LDFLAGS) -o $@ -am_test_corrupt_OBJECTS = test_corrupt-corrupt.$(OBJEXT) +shell_test_SOURCES = shell-test.c +shell_test_OBJECTS = shell_test-shell-test.$(OBJEXT) +shell_test_DEPENDENCIES = libdbus-testutils.la +spawn_test_SOURCES = spawn-test.c +spawn_test_OBJECTS = spawn_test-spawn-test.$(OBJEXT) +spawn_test_DEPENDENCIES = $(top_builddir)/dbus/libdbus-internal.la +am_test_corrupt_OBJECTS = corrupt.$(OBJEXT) test_corrupt_OBJECTS = $(am_test_corrupt_OBJECTS) +am__DEPENDENCIES_1 = test_corrupt_DEPENDENCIES = $(top_builddir)/dbus/libdbus-1.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -test_corrupt_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(test_corrupt_LDFLAGS) $(LDFLAGS) -o $@ -am_test_dbus_daemon_OBJECTS = test_dbus_daemon-dbus-daemon.$(OBJEXT) +am_test_dbus_daemon_OBJECTS = dbus-daemon.$(OBJEXT) test_dbus_daemon_OBJECTS = $(am_test_dbus_daemon_OBJECTS) test_dbus_daemon_DEPENDENCIES = $(top_builddir)/dbus/libdbus-1.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -test_dbus_daemon_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ +am_test_dbus_daemon_eavesdrop_OBJECTS = \ + test_dbus_daemon_eavesdrop-dbus-daemon-eavesdrop.$(OBJEXT) +test_dbus_daemon_eavesdrop_OBJECTS = \ + $(am_test_dbus_daemon_eavesdrop_OBJECTS) +test_dbus_daemon_eavesdrop_DEPENDENCIES = \ + $(top_builddir)/dbus/libdbus-1.la $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) +test_dbus_daemon_eavesdrop_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(AM_CFLAGS) $(CFLAGS) $(test_dbus_daemon_LDFLAGS) $(LDFLAGS) \ - -o $@ -am_test_exit_OBJECTS = test-exit.$(OBJEXT) -test_exit_OBJECTS = $(am_test_exit_OBJECTS) + $(AM_CFLAGS) $(CFLAGS) $(test_dbus_daemon_eavesdrop_LDFLAGS) \ + $(LDFLAGS) -o $@ +test_exit_SOURCES = test-exit.c +test_exit_OBJECTS = test-exit.$(OBJEXT) test_exit_LDADD = $(LDADD) -am_test_loopback_OBJECTS = test_loopback-loopback.$(OBJEXT) +am_test_loopback_OBJECTS = loopback.$(OBJEXT) test_loopback_OBJECTS = $(am_test_loopback_OBJECTS) test_loopback_DEPENDENCIES = $(top_builddir)/dbus/libdbus-1.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -test_loopback_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(test_loopback_LDFLAGS) $(LDFLAGS) -o $@ -am_test_marshal_OBJECTS = test_marshal-marshal.$(OBJEXT) +am_test_marshal_OBJECTS = marshal.$(OBJEXT) test_marshal_OBJECTS = $(am_test_marshal_OBJECTS) test_marshal_DEPENDENCIES = $(top_builddir)/dbus/libdbus-1.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -test_marshal_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(test_marshal_LDFLAGS) $(LDFLAGS) -o $@ -am_test_names_OBJECTS = test-names.$(OBJEXT) -test_names_OBJECTS = $(am_test_names_OBJECTS) -test_names_DEPENDENCIES = libdbus-testutils.la $(am__DEPENDENCIES_2) -test_names_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(test_names_LDFLAGS) $(LDFLAGS) -o $@ -am_test_relay_OBJECTS = test_relay-relay.$(OBJEXT) +test_names_SOURCES = test-names.c +test_names_OBJECTS = test_names-test-names.$(OBJEXT) +test_names_DEPENDENCIES = libdbus-testutils.la +am_test_relay_OBJECTS = relay.$(OBJEXT) test_relay_OBJECTS = $(am_test_relay_OBJECTS) test_relay_DEPENDENCIES = $(top_builddir)/dbus/libdbus-1.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -test_relay_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(test_relay_LDFLAGS) $(LDFLAGS) -o $@ -am_test_segfault_OBJECTS = test-segfault.$(OBJEXT) -test_segfault_OBJECTS = $(am_test_segfault_OBJECTS) +test_segfault_SOURCES = test-segfault.c +test_segfault_OBJECTS = test-segfault.$(OBJEXT) test_segfault_LDADD = $(LDADD) -am_test_service_OBJECTS = test-service.$(OBJEXT) -test_service_OBJECTS = $(am_test_service_OBJECTS) -test_service_DEPENDENCIES = libdbus-testutils.la $(am__DEPENDENCIES_2) -test_service_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(test_service_LDFLAGS) $(LDFLAGS) -o $@ -am_test_shell_service_OBJECTS = test-shell-service.$(OBJEXT) -test_shell_service_OBJECTS = $(am_test_shell_service_OBJECTS) -test_shell_service_DEPENDENCIES = libdbus-testutils.la \ - $(am__DEPENDENCIES_2) -test_shell_service_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(AM_CFLAGS) $(CFLAGS) $(test_shell_service_LDFLAGS) \ - $(LDFLAGS) -o $@ -am_test_sleep_forever_OBJECTS = test-sleep-forever.$(OBJEXT) -test_sleep_forever_OBJECTS = $(am_test_sleep_forever_OBJECTS) +test_service_SOURCES = test-service.c +test_service_OBJECTS = test_service-test-service.$(OBJEXT) +test_service_DEPENDENCIES = libdbus-testutils.la +test_shell_service_SOURCES = test-shell-service.c +test_shell_service_OBJECTS = \ + test_shell_service-test-shell-service.$(OBJEXT) +test_shell_service_DEPENDENCIES = libdbus-testutils.la +test_sleep_forever_SOURCES = test-sleep-forever.c +test_sleep_forever_OBJECTS = test-sleep-forever.$(OBJEXT) test_sleep_forever_LDADD = $(LDADD) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp @@ -186,20 +169,19 @@ am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(libdbus_testutils_la_SOURCES) $(shell_test_SOURCES) \ - $(spawn_test_SOURCES) $(test_corrupt_SOURCES) \ - $(test_dbus_daemon_SOURCES) $(test_exit_SOURCES) \ - $(test_loopback_SOURCES) $(test_marshal_SOURCES) \ - $(test_names_SOURCES) $(test_relay_SOURCES) \ - $(test_segfault_SOURCES) $(test_service_SOURCES) \ - $(test_shell_service_SOURCES) $(test_sleep_forever_SOURCES) -DIST_SOURCES = $(libdbus_testutils_la_SOURCES) $(shell_test_SOURCES) \ - $(spawn_test_SOURCES) $(test_corrupt_SOURCES) \ - $(test_dbus_daemon_SOURCES) $(test_exit_SOURCES) \ - $(test_loopback_SOURCES) $(test_marshal_SOURCES) \ - $(test_names_SOURCES) $(test_relay_SOURCES) \ - $(test_segfault_SOURCES) $(test_service_SOURCES) \ - $(test_shell_service_SOURCES) $(test_sleep_forever_SOURCES) +SOURCES = $(libdbus_testutils_la_SOURCES) shell-test.c spawn-test.c \ + $(test_corrupt_SOURCES) $(test_dbus_daemon_SOURCES) \ + $(test_dbus_daemon_eavesdrop_SOURCES) test-exit.c \ + $(test_loopback_SOURCES) $(test_marshal_SOURCES) test-names.c \ + $(test_relay_SOURCES) test-segfault.c test-service.c \ + test-shell-service.c test-sleep-forever.c +DIST_SOURCES = $(libdbus_testutils_la_SOURCES) shell-test.c \ + spawn-test.c $(test_corrupt_SOURCES) \ + $(test_dbus_daemon_SOURCES) \ + $(test_dbus_daemon_eavesdrop_SOURCES) test-exit.c \ + $(test_loopback_SOURCES) $(test_marshal_SOURCES) test-names.c \ + $(test_relay_SOURCES) test-segfault.c test-service.c \ + test-shell-service.c test-sleep-forever.c RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ @@ -244,6 +226,7 @@ am__relativize = \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ +ADT_LIBS = @ADT_LIBS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ @@ -264,10 +247,6 @@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DBUS_BINDIR = @DBUS_BINDIR@ -DBUS_BUS_CFLAGS = @DBUS_BUS_CFLAGS@ -DBUS_BUS_LIBS = @DBUS_BUS_LIBS@ -DBUS_CLIENT_CFLAGS = @DBUS_CLIENT_CFLAGS@ -DBUS_CLIENT_LIBS = @DBUS_CLIENT_LIBS@ DBUS_CONSOLE_AUTH_DIR = @DBUS_CONSOLE_AUTH_DIR@ DBUS_CONSOLE_OWNER_FILE = @DBUS_CONSOLE_OWNER_FILE@ DBUS_DAEMONDIR = @DBUS_DAEMONDIR@ @@ -279,8 +258,6 @@ DBUS_INT16_TYPE = @DBUS_INT16_TYPE@ DBUS_INT32_TYPE = @DBUS_INT32_TYPE@ DBUS_INT64_CONSTANT = @DBUS_INT64_CONSTANT@ DBUS_INT64_TYPE = @DBUS_INT64_TYPE@ -DBUS_LAUNCHER_CFLAGS = @DBUS_LAUNCHER_CFLAGS@ -DBUS_LAUNCHER_LIBS = @DBUS_LAUNCHER_LIBS@ DBUS_LIBEXECDIR = @DBUS_LIBEXECDIR@ DBUS_MAJOR_VERSION = @DBUS_MAJOR_VERSION@ DBUS_MICRO_VERSION = @DBUS_MICRO_VERSION@ @@ -292,8 +269,6 @@ DBUS_SESSION_SOCKET_DIR = @DBUS_SESSION_SOCKET_DIR@ DBUS_SYSTEM_BUS_DEFAULT_ADDRESS = @DBUS_SYSTEM_BUS_DEFAULT_ADDRESS@ DBUS_SYSTEM_PID_FILE = @DBUS_SYSTEM_PID_FILE@ DBUS_SYSTEM_SOCKET = @DBUS_SYSTEM_SOCKET@ -DBUS_TEST_CFLAGS = @DBUS_TEST_CFLAGS@ -DBUS_TEST_LIBS = @DBUS_TEST_LIBS@ DBUS_UINT64_CONSTANT = @DBUS_UINT64_CONSTANT@ DBUS_USER = @DBUS_USER@ DBUS_VERSION = @DBUS_VERSION@ @@ -331,6 +306,7 @@ LAUNCHCTL = @LAUNCHCTL@ LAUNCHD_AGENT_DIR = @LAUNCHD_AGENT_DIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBDBUS_LIBS = @LIBDBUS_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -347,6 +323,7 @@ MAKEINFO = @MAKEINFO@ MAN2HTML = @MAN2HTML@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +NETWORK_libs = @NETWORK_libs@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -366,6 +343,7 @@ RANLIB = @RANLIB@ RC = @RC@ R_DYNAMIC_LDFLAG = @R_DYNAMIC_LDFLAG@ SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -382,10 +360,13 @@ TEST_SLEEP_FOREVER_BINARY = @TEST_SLEEP_FOREVER_BINARY@ TEST_SOCKET_DIR = @TEST_SOCKET_DIR@ TEST_VALID_SERVICE_DIR = @TEST_VALID_SERVICE_DIR@ TEST_VALID_SERVICE_SYSTEM_DIR = @TEST_VALID_SERVICE_SYSTEM_DIR@ +THREAD_LIBS = @THREAD_LIBS@ VERSION = @VERSION@ WINDRES = @WINDRES@ XMKMF = @XMKMF@ XMLTO = @XMLTO@ +XML_CFLAGS = @XML_CFLAGS@ +XML_LIBS = @XML_LIBS@ XSLTPROC = @XSLTPROC@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ @@ -447,100 +428,104 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = . name-test DIST_SUBDIRS = name-test -INCLUDES = -I$(top_srcdir) $(DBUS_TEST_CFLAGS) -libdbus_testutils_la_SOURCES = test-utils.h test-utils.c +AM_CPPFLAGS = \ + -I$(top_srcdir) \ + $(GLIB_CFLAGS) \ + $(DBUS_GLIB_CFLAGS) \ + $(NULL) + + +# improve backtraces from test stuff +AM_LDFLAGS = @R_DYNAMIC_LDFLAG@ +libdbus_testutils_la_SOURCES = \ + test-utils.c \ + test-utils.h \ + $(NULL) + +libdbus_testutils_la_LIBADD = \ + $(top_builddir)/dbus/libdbus-internal.la \ + $(NULL) + noinst_LTLIBRARIES = libdbus-testutils.la @DBUS_BUILD_TESTS_FALSE@TEST_BINARIES = -@DBUS_BUILD_TESTS_TRUE@TEST_BINARIES = test-service test-names test-shell-service shell-test spawn-test test-segfault test-exit test-sleep-forever -test_service_SOURCES = \ - test-service.c - -test_names_SOURCES = \ - test-names.c - -test_shell_service_SOURCES = \ - test-shell-service.c - -shell_test_SOURCES = \ - shell-test.c - -spawn_test_SOURCES = \ - spawn-test.c - -test_exit_SOURCES = \ - test-exit.c - -test_segfault_SOURCES = \ - test-segfault.c - -test_sleep_forever_SOURCES = \ - test-sleep-forever.c - - -# This assumes that most tests will be linked to libdbus-internal; -# tests linked to only the public libdbus have their own CPPFLAGS. -AM_CPPFLAGS = -DDBUS_STATIC_BUILD -TEST_LIBS = $(top_builddir)/dbus/libdbus-internal.la $(DBUS_TEST_LIBS) -test_service_LDADD = libdbus-testutils.la $(TEST_LIBS) -test_service_LDFLAGS = @R_DYNAMIC_LDFLAG@ -test_names_LDADD = libdbus-testutils.la $(TEST_LIBS) -test_names_LDFLAGS = @R_DYNAMIC_LDFLAG@ -test_shell_service_LDADD = libdbus-testutils.la $(TEST_LIBS) -test_shell_service_LDFLAGS = @R_DYNAMIC_LDFLAG@ -shell_test_LDADD = libdbus-testutils.la $(TEST_LIBS) -shell_test_LDFLAGS = @R_DYNAMIC_LDFLAG@ -spawn_test_LDADD = $(TEST_LIBS) -spawn_test_LDFLAGS = @R_DYNAMIC_LDFLAG@ +@DBUS_BUILD_TESTS_TRUE@TEST_BINARIES = \ +@DBUS_BUILD_TESTS_TRUE@ shell-test \ +@DBUS_BUILD_TESTS_TRUE@ spawn-test \ +@DBUS_BUILD_TESTS_TRUE@ test-exit \ +@DBUS_BUILD_TESTS_TRUE@ test-names \ +@DBUS_BUILD_TESTS_TRUE@ test-segfault \ +@DBUS_BUILD_TESTS_TRUE@ test-service \ +@DBUS_BUILD_TESTS_TRUE@ test-shell-service \ +@DBUS_BUILD_TESTS_TRUE@ test-sleep-forever \ +@DBUS_BUILD_TESTS_TRUE@ $(NULL) + +static_cppflags = \ + $(AM_CPPFLAGS) \ + -DDBUS_STATIC_BUILD \ + $(NULL) + +test_service_CPPFLAGS = $(static_cppflags) +test_service_LDADD = libdbus-testutils.la +test_names_CPPFLAGS = $(static_cppflags) +test_names_LDADD = libdbus-testutils.la +test_shell_service_CPPFLAGS = $(static_cppflags) +test_shell_service_LDADD = libdbus-testutils.la +shell_test_CPPFLAGS = $(static_cppflags) +shell_test_LDADD = libdbus-testutils.la +spawn_test_CPPFLAGS = $(static_cppflags) +spawn_test_LDADD = $(top_builddir)/dbus/libdbus-internal.la EXTRA_DIST = dbus-test-runner testexecdir = $(libdir)/dbus-1.0/test installable_tests = \ test-corrupt \ test-dbus-daemon \ + test-dbus-daemon-eavesdrop \ test-loopback \ test-marshal \ test-relay \ $(NULL) -installcheck_tests = $(am__append_2) +installcheck_tests = $(am__append_3) installcheck_environment = \ DBUS_TEST_DAEMON=$(DESTDIR)$(DBUS_DAEMONDIR)/dbus-daemon$(EXEEXT) \ DBUS_TEST_SYSCONFDIR=$(DESTDIR)$(sysconfdir) TESTS_ENVIRONMENT = \ + DBUS_BLOCK_ON_ABORT=1 \ + DBUS_FATAL_WARNINGS=1 \ DBUS_TEST_DAEMON=@abs_top_builddir@/bus/dbus-daemon$(EXEEXT) \ - DBUS_TEST_DATA=@abs_top_builddir@/test/data + DBUS_TEST_DATA=@abs_top_builddir@/test/data \ + DBUS_TEST_HOMEDIR=@abs_top_builddir@/dbus \ + $(NULL) test_corrupt_SOURCES = corrupt.c -test_corrupt_CPPFLAGS = $(GLIB_CFLAGS) $(DBUS_GLIB_CFLAGS) -test_corrupt_LDFLAGS = @R_DYNAMIC_LDFLAG@ test_corrupt_LDADD = $(top_builddir)/dbus/libdbus-1.la \ $(GLIB_LIBS) \ $(DBUS_GLIB_LIBS) test_loopback_SOURCES = loopback.c -test_loopback_CPPFLAGS = $(GLIB_CFLAGS) $(DBUS_GLIB_CFLAGS) -test_loopback_LDFLAGS = @R_DYNAMIC_LDFLAG@ test_loopback_LDADD = $(top_builddir)/dbus/libdbus-1.la \ $(GLIB_LIBS) \ $(DBUS_GLIB_LIBS) test_relay_SOURCES = relay.c -test_relay_CPPFLAGS = $(GLIB_CFLAGS) $(DBUS_GLIB_CFLAGS) -test_relay_LDFLAGS = @R_DYNAMIC_LDFLAG@ test_relay_LDADD = $(top_builddir)/dbus/libdbus-1.la \ $(GLIB_LIBS) \ $(DBUS_GLIB_LIBS) test_dbus_daemon_SOURCES = dbus-daemon.c -test_dbus_daemon_CPPFLAGS = $(GLIB_CFLAGS) $(DBUS_GLIB_CFLAGS) -test_dbus_daemon_LDFLAGS = @R_DYNAMIC_LDFLAG@ test_dbus_daemon_LDADD = $(top_builddir)/dbus/libdbus-1.la \ $(GLIB_LIBS) \ $(DBUS_GLIB_LIBS) +test_dbus_daemon_eavesdrop_SOURCES = dbus-daemon-eavesdrop.c +test_dbus_daemon_eavesdrop_CPPFLAGS = $(GLIB_CFLAGS) $(DBUS_GLIB_CFLAGS) +test_dbus_daemon_eavesdrop_LDFLAGS = @R_DYNAMIC_LDFLAG@ +test_dbus_daemon_eavesdrop_LDADD = $(top_builddir)/dbus/libdbus-1.la \ + $(GLIB_LIBS) \ + $(DBUS_GLIB_LIBS) + test_marshal_SOURCES = marshal.c -test_marshal_CPPFLAGS = $(GLIB_CFLAGS) $(DBUS_GLIB_CFLAGS) -test_marshal_LDFLAGS = @R_DYNAMIC_LDFLAG@ test_marshal_LDADD = $(top_builddir)/dbus/libdbus-1.la \ $(GLIB_LIBS) \ $(DBUS_GLIB_LIBS) @@ -668,40 +653,43 @@ clean-testexecPROGRAMS: rm -f $$list shell-test$(EXEEXT): $(shell_test_OBJECTS) $(shell_test_DEPENDENCIES) @rm -f shell-test$(EXEEXT) - $(AM_V_CCLD)$(shell_test_LINK) $(shell_test_OBJECTS) $(shell_test_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(shell_test_OBJECTS) $(shell_test_LDADD) $(LIBS) spawn-test$(EXEEXT): $(spawn_test_OBJECTS) $(spawn_test_DEPENDENCIES) @rm -f spawn-test$(EXEEXT) - $(AM_V_CCLD)$(spawn_test_LINK) $(spawn_test_OBJECTS) $(spawn_test_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(spawn_test_OBJECTS) $(spawn_test_LDADD) $(LIBS) test-corrupt$(EXEEXT): $(test_corrupt_OBJECTS) $(test_corrupt_DEPENDENCIES) @rm -f test-corrupt$(EXEEXT) - $(AM_V_CCLD)$(test_corrupt_LINK) $(test_corrupt_OBJECTS) $(test_corrupt_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_corrupt_OBJECTS) $(test_corrupt_LDADD) $(LIBS) test-dbus-daemon$(EXEEXT): $(test_dbus_daemon_OBJECTS) $(test_dbus_daemon_DEPENDENCIES) @rm -f test-dbus-daemon$(EXEEXT) - $(AM_V_CCLD)$(test_dbus_daemon_LINK) $(test_dbus_daemon_OBJECTS) $(test_dbus_daemon_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_dbus_daemon_OBJECTS) $(test_dbus_daemon_LDADD) $(LIBS) +test-dbus-daemon-eavesdrop$(EXEEXT): $(test_dbus_daemon_eavesdrop_OBJECTS) $(test_dbus_daemon_eavesdrop_DEPENDENCIES) + @rm -f test-dbus-daemon-eavesdrop$(EXEEXT) + $(AM_V_CCLD)$(test_dbus_daemon_eavesdrop_LINK) $(test_dbus_daemon_eavesdrop_OBJECTS) $(test_dbus_daemon_eavesdrop_LDADD) $(LIBS) test-exit$(EXEEXT): $(test_exit_OBJECTS) $(test_exit_DEPENDENCIES) @rm -f test-exit$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_exit_OBJECTS) $(test_exit_LDADD) $(LIBS) test-loopback$(EXEEXT): $(test_loopback_OBJECTS) $(test_loopback_DEPENDENCIES) @rm -f test-loopback$(EXEEXT) - $(AM_V_CCLD)$(test_loopback_LINK) $(test_loopback_OBJECTS) $(test_loopback_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_loopback_OBJECTS) $(test_loopback_LDADD) $(LIBS) test-marshal$(EXEEXT): $(test_marshal_OBJECTS) $(test_marshal_DEPENDENCIES) @rm -f test-marshal$(EXEEXT) - $(AM_V_CCLD)$(test_marshal_LINK) $(test_marshal_OBJECTS) $(test_marshal_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_marshal_OBJECTS) $(test_marshal_LDADD) $(LIBS) test-names$(EXEEXT): $(test_names_OBJECTS) $(test_names_DEPENDENCIES) @rm -f test-names$(EXEEXT) - $(AM_V_CCLD)$(test_names_LINK) $(test_names_OBJECTS) $(test_names_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_names_OBJECTS) $(test_names_LDADD) $(LIBS) test-relay$(EXEEXT): $(test_relay_OBJECTS) $(test_relay_DEPENDENCIES) @rm -f test-relay$(EXEEXT) - $(AM_V_CCLD)$(test_relay_LINK) $(test_relay_OBJECTS) $(test_relay_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_relay_OBJECTS) $(test_relay_LDADD) $(LIBS) test-segfault$(EXEEXT): $(test_segfault_OBJECTS) $(test_segfault_DEPENDENCIES) @rm -f test-segfault$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_segfault_OBJECTS) $(test_segfault_LDADD) $(LIBS) test-service$(EXEEXT): $(test_service_OBJECTS) $(test_service_DEPENDENCIES) @rm -f test-service$(EXEEXT) - $(AM_V_CCLD)$(test_service_LINK) $(test_service_OBJECTS) $(test_service_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_service_OBJECTS) $(test_service_LDADD) $(LIBS) test-shell-service$(EXEEXT): $(test_shell_service_OBJECTS) $(test_shell_service_DEPENDENCIES) @rm -f test-shell-service$(EXEEXT) - $(AM_V_CCLD)$(test_shell_service_LINK) $(test_shell_service_OBJECTS) $(test_shell_service_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_shell_service_OBJECTS) $(test_shell_service_LDADD) $(LIBS) test-sleep-forever$(EXEEXT): $(test_sleep_forever_OBJECTS) $(test_sleep_forever_DEPENDENCIES) @rm -f test-sleep-forever$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_sleep_forever_OBJECTS) $(test_sleep_forever_LDADD) $(LIBS) @@ -712,20 +700,21 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shell-test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spawn-test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/corrupt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus-daemon.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loopback.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/marshal.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/relay.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shell_test-shell-test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spawn_test-spawn-test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-exit.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-names.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-segfault.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-service.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-shell-service.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sleep-forever.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-utils.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_corrupt-corrupt.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_dbus_daemon-dbus-daemon.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_loopback-loopback.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_marshal-marshal.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_relay-relay.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_dbus_daemon_eavesdrop-dbus-daemon-eavesdrop.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_names-test-names.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_service-test-service.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_shell_service-test-shell-service.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -751,85 +740,101 @@ distclean-compile: @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< -test_corrupt-corrupt.o: corrupt.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_corrupt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_corrupt-corrupt.o -MD -MP -MF $(DEPDIR)/test_corrupt-corrupt.Tpo -c -o test_corrupt-corrupt.o `test -f 'corrupt.c' || echo '$(srcdir)/'`corrupt.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_corrupt-corrupt.Tpo $(DEPDIR)/test_corrupt-corrupt.Po +shell_test-shell-test.o: shell-test.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shell_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shell_test-shell-test.o -MD -MP -MF $(DEPDIR)/shell_test-shell-test.Tpo -c -o shell_test-shell-test.o `test -f 'shell-test.c' || echo '$(srcdir)/'`shell-test.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shell_test-shell-test.Tpo $(DEPDIR)/shell_test-shell-test.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='shell-test.c' object='shell_test-shell-test.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shell_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shell_test-shell-test.o `test -f 'shell-test.c' || echo '$(srcdir)/'`shell-test.c + +shell_test-shell-test.obj: shell-test.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shell_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shell_test-shell-test.obj -MD -MP -MF $(DEPDIR)/shell_test-shell-test.Tpo -c -o shell_test-shell-test.obj `if test -f 'shell-test.c'; then $(CYGPATH_W) 'shell-test.c'; else $(CYGPATH_W) '$(srcdir)/shell-test.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shell_test-shell-test.Tpo $(DEPDIR)/shell_test-shell-test.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='shell-test.c' object='shell_test-shell-test.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shell_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shell_test-shell-test.obj `if test -f 'shell-test.c'; then $(CYGPATH_W) 'shell-test.c'; else $(CYGPATH_W) '$(srcdir)/shell-test.c'; fi` + +spawn_test-spawn-test.o: spawn-test.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(spawn_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT spawn_test-spawn-test.o -MD -MP -MF $(DEPDIR)/spawn_test-spawn-test.Tpo -c -o spawn_test-spawn-test.o `test -f 'spawn-test.c' || echo '$(srcdir)/'`spawn-test.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/spawn_test-spawn-test.Tpo $(DEPDIR)/spawn_test-spawn-test.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='corrupt.c' object='test_corrupt-corrupt.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='spawn-test.c' object='spawn_test-spawn-test.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_corrupt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_corrupt-corrupt.o `test -f 'corrupt.c' || echo '$(srcdir)/'`corrupt.c +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(spawn_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o spawn_test-spawn-test.o `test -f 'spawn-test.c' || echo '$(srcdir)/'`spawn-test.c -test_corrupt-corrupt.obj: corrupt.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_corrupt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_corrupt-corrupt.obj -MD -MP -MF $(DEPDIR)/test_corrupt-corrupt.Tpo -c -o test_corrupt-corrupt.obj `if test -f 'corrupt.c'; then $(CYGPATH_W) 'corrupt.c'; else $(CYGPATH_W) '$(srcdir)/corrupt.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_corrupt-corrupt.Tpo $(DEPDIR)/test_corrupt-corrupt.Po +spawn_test-spawn-test.obj: spawn-test.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(spawn_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT spawn_test-spawn-test.obj -MD -MP -MF $(DEPDIR)/spawn_test-spawn-test.Tpo -c -o spawn_test-spawn-test.obj `if test -f 'spawn-test.c'; then $(CYGPATH_W) 'spawn-test.c'; else $(CYGPATH_W) '$(srcdir)/spawn-test.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/spawn_test-spawn-test.Tpo $(DEPDIR)/spawn_test-spawn-test.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='corrupt.c' object='test_corrupt-corrupt.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='spawn-test.c' object='spawn_test-spawn-test.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_corrupt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_corrupt-corrupt.obj `if test -f 'corrupt.c'; then $(CYGPATH_W) 'corrupt.c'; else $(CYGPATH_W) '$(srcdir)/corrupt.c'; fi` +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(spawn_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o spawn_test-spawn-test.obj `if test -f 'spawn-test.c'; then $(CYGPATH_W) 'spawn-test.c'; else $(CYGPATH_W) '$(srcdir)/spawn-test.c'; fi` -test_dbus_daemon-dbus-daemon.o: dbus-daemon.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_dbus_daemon-dbus-daemon.o -MD -MP -MF $(DEPDIR)/test_dbus_daemon-dbus-daemon.Tpo -c -o test_dbus_daemon-dbus-daemon.o `test -f 'dbus-daemon.c' || echo '$(srcdir)/'`dbus-daemon.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_dbus_daemon-dbus-daemon.Tpo $(DEPDIR)/test_dbus_daemon-dbus-daemon.Po +test_dbus_daemon_eavesdrop-dbus-daemon-eavesdrop.o: dbus-daemon-eavesdrop.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_dbus_daemon_eavesdrop_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_dbus_daemon_eavesdrop-dbus-daemon-eavesdrop.o -MD -MP -MF $(DEPDIR)/test_dbus_daemon_eavesdrop-dbus-daemon-eavesdrop.Tpo -c -o test_dbus_daemon_eavesdrop-dbus-daemon-eavesdrop.o `test -f 'dbus-daemon-eavesdrop.c' || echo '$(srcdir)/'`dbus-daemon-eavesdrop.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_dbus_daemon_eavesdrop-dbus-daemon-eavesdrop.Tpo $(DEPDIR)/test_dbus_daemon_eavesdrop-dbus-daemon-eavesdrop.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dbus-daemon.c' object='test_dbus_daemon-dbus-daemon.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dbus-daemon-eavesdrop.c' object='test_dbus_daemon_eavesdrop-dbus-daemon-eavesdrop.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_dbus_daemon-dbus-daemon.o `test -f 'dbus-daemon.c' || echo '$(srcdir)/'`dbus-daemon.c +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_dbus_daemon_eavesdrop_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_dbus_daemon_eavesdrop-dbus-daemon-eavesdrop.o `test -f 'dbus-daemon-eavesdrop.c' || echo '$(srcdir)/'`dbus-daemon-eavesdrop.c -test_dbus_daemon-dbus-daemon.obj: dbus-daemon.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_dbus_daemon-dbus-daemon.obj -MD -MP -MF $(DEPDIR)/test_dbus_daemon-dbus-daemon.Tpo -c -o test_dbus_daemon-dbus-daemon.obj `if test -f 'dbus-daemon.c'; then $(CYGPATH_W) 'dbus-daemon.c'; else $(CYGPATH_W) '$(srcdir)/dbus-daemon.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_dbus_daemon-dbus-daemon.Tpo $(DEPDIR)/test_dbus_daemon-dbus-daemon.Po +test_dbus_daemon_eavesdrop-dbus-daemon-eavesdrop.obj: dbus-daemon-eavesdrop.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_dbus_daemon_eavesdrop_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_dbus_daemon_eavesdrop-dbus-daemon-eavesdrop.obj -MD -MP -MF $(DEPDIR)/test_dbus_daemon_eavesdrop-dbus-daemon-eavesdrop.Tpo -c -o test_dbus_daemon_eavesdrop-dbus-daemon-eavesdrop.obj `if test -f 'dbus-daemon-eavesdrop.c'; then $(CYGPATH_W) 'dbus-daemon-eavesdrop.c'; else $(CYGPATH_W) '$(srcdir)/dbus-daemon-eavesdrop.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_dbus_daemon_eavesdrop-dbus-daemon-eavesdrop.Tpo $(DEPDIR)/test_dbus_daemon_eavesdrop-dbus-daemon-eavesdrop.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dbus-daemon.c' object='test_dbus_daemon-dbus-daemon.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dbus-daemon-eavesdrop.c' object='test_dbus_daemon_eavesdrop-dbus-daemon-eavesdrop.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_dbus_daemon_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_dbus_daemon-dbus-daemon.obj `if test -f 'dbus-daemon.c'; then $(CYGPATH_W) 'dbus-daemon.c'; else $(CYGPATH_W) '$(srcdir)/dbus-daemon.c'; fi` +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_dbus_daemon_eavesdrop_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_dbus_daemon_eavesdrop-dbus-daemon-eavesdrop.obj `if test -f 'dbus-daemon-eavesdrop.c'; then $(CYGPATH_W) 'dbus-daemon-eavesdrop.c'; else $(CYGPATH_W) '$(srcdir)/dbus-daemon-eavesdrop.c'; fi` -test_loopback-loopback.o: loopback.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_loopback_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_loopback-loopback.o -MD -MP -MF $(DEPDIR)/test_loopback-loopback.Tpo -c -o test_loopback-loopback.o `test -f 'loopback.c' || echo '$(srcdir)/'`loopback.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_loopback-loopback.Tpo $(DEPDIR)/test_loopback-loopback.Po +test_names-test-names.o: test-names.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_names_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_names-test-names.o -MD -MP -MF $(DEPDIR)/test_names-test-names.Tpo -c -o test_names-test-names.o `test -f 'test-names.c' || echo '$(srcdir)/'`test-names.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_names-test-names.Tpo $(DEPDIR)/test_names-test-names.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='loopback.c' object='test_loopback-loopback.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-names.c' object='test_names-test-names.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_loopback_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_loopback-loopback.o `test -f 'loopback.c' || echo '$(srcdir)/'`loopback.c +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_names_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_names-test-names.o `test -f 'test-names.c' || echo '$(srcdir)/'`test-names.c -test_loopback-loopback.obj: loopback.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_loopback_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_loopback-loopback.obj -MD -MP -MF $(DEPDIR)/test_loopback-loopback.Tpo -c -o test_loopback-loopback.obj `if test -f 'loopback.c'; then $(CYGPATH_W) 'loopback.c'; else $(CYGPATH_W) '$(srcdir)/loopback.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_loopback-loopback.Tpo $(DEPDIR)/test_loopback-loopback.Po +test_names-test-names.obj: test-names.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_names_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_names-test-names.obj -MD -MP -MF $(DEPDIR)/test_names-test-names.Tpo -c -o test_names-test-names.obj `if test -f 'test-names.c'; then $(CYGPATH_W) 'test-names.c'; else $(CYGPATH_W) '$(srcdir)/test-names.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_names-test-names.Tpo $(DEPDIR)/test_names-test-names.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='loopback.c' object='test_loopback-loopback.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-names.c' object='test_names-test-names.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_loopback_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_loopback-loopback.obj `if test -f 'loopback.c'; then $(CYGPATH_W) 'loopback.c'; else $(CYGPATH_W) '$(srcdir)/loopback.c'; fi` +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_names_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_names-test-names.obj `if test -f 'test-names.c'; then $(CYGPATH_W) 'test-names.c'; else $(CYGPATH_W) '$(srcdir)/test-names.c'; fi` -test_marshal-marshal.o: marshal.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_marshal_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_marshal-marshal.o -MD -MP -MF $(DEPDIR)/test_marshal-marshal.Tpo -c -o test_marshal-marshal.o `test -f 'marshal.c' || echo '$(srcdir)/'`marshal.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_marshal-marshal.Tpo $(DEPDIR)/test_marshal-marshal.Po +test_service-test-service.o: test-service.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_service_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_service-test-service.o -MD -MP -MF $(DEPDIR)/test_service-test-service.Tpo -c -o test_service-test-service.o `test -f 'test-service.c' || echo '$(srcdir)/'`test-service.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_service-test-service.Tpo $(DEPDIR)/test_service-test-service.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='marshal.c' object='test_marshal-marshal.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-service.c' object='test_service-test-service.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_marshal_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_marshal-marshal.o `test -f 'marshal.c' || echo '$(srcdir)/'`marshal.c +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_service_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_service-test-service.o `test -f 'test-service.c' || echo '$(srcdir)/'`test-service.c -test_marshal-marshal.obj: marshal.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_marshal_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_marshal-marshal.obj -MD -MP -MF $(DEPDIR)/test_marshal-marshal.Tpo -c -o test_marshal-marshal.obj `if test -f 'marshal.c'; then $(CYGPATH_W) 'marshal.c'; else $(CYGPATH_W) '$(srcdir)/marshal.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_marshal-marshal.Tpo $(DEPDIR)/test_marshal-marshal.Po +test_service-test-service.obj: test-service.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_service_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_service-test-service.obj -MD -MP -MF $(DEPDIR)/test_service-test-service.Tpo -c -o test_service-test-service.obj `if test -f 'test-service.c'; then $(CYGPATH_W) 'test-service.c'; else $(CYGPATH_W) '$(srcdir)/test-service.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_service-test-service.Tpo $(DEPDIR)/test_service-test-service.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='marshal.c' object='test_marshal-marshal.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-service.c' object='test_service-test-service.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_marshal_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_marshal-marshal.obj `if test -f 'marshal.c'; then $(CYGPATH_W) 'marshal.c'; else $(CYGPATH_W) '$(srcdir)/marshal.c'; fi` +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_service_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_service-test-service.obj `if test -f 'test-service.c'; then $(CYGPATH_W) 'test-service.c'; else $(CYGPATH_W) '$(srcdir)/test-service.c'; fi` -test_relay-relay.o: relay.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_relay_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_relay-relay.o -MD -MP -MF $(DEPDIR)/test_relay-relay.Tpo -c -o test_relay-relay.o `test -f 'relay.c' || echo '$(srcdir)/'`relay.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_relay-relay.Tpo $(DEPDIR)/test_relay-relay.Po +test_shell_service-test-shell-service.o: test-shell-service.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_shell_service_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_shell_service-test-shell-service.o -MD -MP -MF $(DEPDIR)/test_shell_service-test-shell-service.Tpo -c -o test_shell_service-test-shell-service.o `test -f 'test-shell-service.c' || echo '$(srcdir)/'`test-shell-service.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_shell_service-test-shell-service.Tpo $(DEPDIR)/test_shell_service-test-shell-service.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='relay.c' object='test_relay-relay.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-shell-service.c' object='test_shell_service-test-shell-service.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_relay_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_relay-relay.o `test -f 'relay.c' || echo '$(srcdir)/'`relay.c +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_shell_service_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_shell_service-test-shell-service.o `test -f 'test-shell-service.c' || echo '$(srcdir)/'`test-shell-service.c -test_relay-relay.obj: relay.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_relay_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_relay-relay.obj -MD -MP -MF $(DEPDIR)/test_relay-relay.Tpo -c -o test_relay-relay.obj `if test -f 'relay.c'; then $(CYGPATH_W) 'relay.c'; else $(CYGPATH_W) '$(srcdir)/relay.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_relay-relay.Tpo $(DEPDIR)/test_relay-relay.Po +test_shell_service-test-shell-service.obj: test-shell-service.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_shell_service_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_shell_service-test-shell-service.obj -MD -MP -MF $(DEPDIR)/test_shell_service-test-shell-service.Tpo -c -o test_shell_service-test-shell-service.obj `if test -f 'test-shell-service.c'; then $(CYGPATH_W) 'test-shell-service.c'; else $(CYGPATH_W) '$(srcdir)/test-shell-service.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_shell_service-test-shell-service.Tpo $(DEPDIR)/test_shell_service-test-shell-service.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='relay.c' object='test_relay-relay.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-shell-service.c' object='test_shell_service-test-shell-service.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_relay_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_relay-relay.obj `if test -f 'relay.c'; then $(CYGPATH_W) 'relay.c'; else $(CYGPATH_W) '$(srcdir)/relay.c'; fi` +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_shell_service_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_shell_service-test-shell-service.obj `if test -f 'test-shell-service.c'; then $(CYGPATH_W) 'test-shell-service.c'; else $(CYGPATH_W) '$(srcdir)/test-shell-service.c'; fi` mostlyclean-libtool: -rm -f *.lo diff --git a/test/data/valid-config-files/incoming-limit.conf b/test/data/valid-config-files/incoming-limit.conf new file mode 100644 index 00000000..abfab3f7 --- /dev/null +++ b/test/data/valid-config-files/incoming-limit.conf @@ -0,0 +1,18 @@ +<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN" + "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> +<busconfig> + <!-- Our well-known bus type, don't change this --> + <type>session</type> + <listen>unix:tmpdir=/tmp</listen> + + <policy context="default"> + <!-- Allow everything to be sent --> + <allow send_destination="*" eavesdrop="true"/> + <!-- Allow everything to be received --> + <allow eavesdrop="true"/> + <!-- Allow anyone to own anything --> + <allow own="*"/> + </policy> + + <limit name="max_incoming_bytes">1</limit> +</busconfig> diff --git a/test/data/valid-config-files/session.conf b/test/data/valid-config-files/session.conf new file mode 100644 index 00000000..dde5ef6b --- /dev/null +++ b/test/data/valid-config-files/session.conf @@ -0,0 +1,63 @@ +<!-- This configuration file controls the per-user-login-session message bus. + Add a session-local.conf and edit that rather than changing this + file directly. --> + +<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN" + "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> +<busconfig> + <!-- Our well-known bus type, don't change this --> + <type>session</type> + + <!-- If we fork, keep the user's original umask to avoid affecting + the behavior of child processes. --> + <keep_umask/> + + <listen>unix:tmpdir=/tmp</listen> + + <standard_session_servicedirs /> + + <policy context="default"> + <!-- Allow everything to be sent --> + <allow send_destination="*" eavesdrop="true"/> + <!-- Allow everything to be received --> + <allow eavesdrop="true"/> + <!-- Allow anyone to own anything --> + <allow own="*"/> + </policy> + + <!-- Config files are placed here that among other things, + further restrict the above policy for specific services. --> + <includedir>session.d</includedir> + + <!-- This is included last so local configuration can override what's + in this standard file --> + <include ignore_missing="yes">session-local.conf</include> + + <include if_selinux_enabled="yes" selinux_root_relative="yes">contexts/dbus_contexts</include> + + <!-- For the session bus, override the default relatively-low limits + with essentially infinite limits, since the bus is just running + as the user anyway, using up bus resources is not something we need + to worry about. In some cases, we do set the limits lower than + "all available memory" if exceeding the limit is almost certainly a bug, + having the bus enforce a limit is nicer than a huge memory leak. But the + intent is that these limits should never be hit. --> + + <!-- the memory limits are 1G instead of say 4G because they can't exceed 32-bit signed int max --> + <limit name="max_incoming_bytes">1000000000</limit> + <limit name="max_incoming_unix_fds">250000000</limit> + <limit name="max_outgoing_bytes">1000000000</limit> + <limit name="max_outgoing_unix_fds">250000000</limit> + <limit name="max_message_size">1000000000</limit> + <limit name="max_message_unix_fds">4096</limit> + <limit name="service_start_timeout">120000</limit> + <limit name="auth_timeout">240000</limit> + <limit name="max_completed_connections">100000</limit> + <limit name="max_incomplete_connections">10000</limit> + <limit name="max_connections_per_user">100000</limit> + <limit name="max_pending_service_starts">10000</limit> + <limit name="max_names_per_connection">50000</limit> + <limit name="max_match_rules_per_connection">50000</limit> + <limit name="max_replies_per_connection">50000</limit> + +</busconfig> diff --git a/test/data/valid-config-files/system.conf b/test/data/valid-config-files/system.conf new file mode 100644 index 00000000..828fd032 --- /dev/null +++ b/test/data/valid-config-files/system.conf @@ -0,0 +1,83 @@ +<!-- This configuration file controls the systemwide message bus. + Add a system-local.conf and edit that rather than changing this + file directly. --> + +<!-- Note that there are any number of ways you can hose yourself + security-wise by screwing up this file; in particular, you + probably don't want to listen on any more addresses, add any more + auth mechanisms, run as a different user, etc. --> + +<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN" + "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> +<busconfig> + + <!-- Our well-known bus type, do not change this --> + <type>system</type> + + <!-- Run as special user --> + <user>messagebus</user> + + <!-- Fork into daemon mode --> + <fork/> + + <!-- We use system service launching using a helper --> + <standard_system_servicedirs/> + + <!-- This is a setuid helper that is used to launch system services --> + <servicehelper>/usr/local/libexec/dbus-daemon-launch-helper</servicehelper> + + <!-- Write a pid file --> + <pidfile>/usr/local/var/run/dbus/pid</pidfile> + + <!-- Enable logging to syslog --> + <syslog/> + + <!-- Only allow socket-credentials-based authentication --> + <auth>EXTERNAL</auth> + + <!-- Only listen on a local socket. (abstract=/path/to/socket + means use abstract namespace, don't really create filesystem + file; only Linux supports this. Use path=/whatever on other + systems.) --> + <listen>unix:path=/usr/local/var/run/dbus/system_bus_socket</listen> + + <policy context="default"> + <!-- All users can connect to system bus --> + <allow user="*"/> + + <!-- Holes must be punched in service configuration files for + name ownership and sending method calls --> + <deny own="*"/> + <deny send_type="method_call"/> + + <!-- Signals and reply messages (method returns, errors) are allowed + by default --> + <allow send_type="signal"/> + <allow send_requested_reply="true" send_type="method_return"/> + <allow send_requested_reply="true" send_type="error"/> + + <!-- All messages may be received by default --> + <allow receive_type="method_call"/> + <allow receive_type="method_return"/> + <allow receive_type="error"/> + <allow receive_type="signal"/> + + <!-- Allow anyone to talk to the message bus --> + <allow send_destination="org.freedesktop.DBus"/> + <!-- But disallow some specific bus services --> + <deny send_destination="org.freedesktop.DBus" + send_interface="org.freedesktop.DBus" + send_member="UpdateActivationEnvironment"/> + </policy> + + <!-- Config files are placed here that among other things, punch + holes in the above policy for specific services. --> + <includedir>system.d</includedir> + + <!-- This is included last so local configuration can override what's + in this standard file --> + <include ignore_missing="yes">system-local.conf</include> + + <include if_selinux_enabled="yes" selinux_root_relative="yes">contexts/dbus_contexts</include> + +</busconfig> diff --git a/test/dbus-daemon-eavesdrop.c b/test/dbus-daemon-eavesdrop.c new file mode 100644 index 00000000..6819ec13 --- /dev/null +++ b/test/dbus-daemon-eavesdrop.c @@ -0,0 +1,558 @@ +/* Integration tests for the eavesdrop=true|false keyword in DBusMatchRule + * + * Author: Cosimo Alfarano <cosimo.alfarano@collabora.co.uk> + * Based on: tests/dbus-daemon.c by Simon McVittie + * Copyright © 2010-2011 Nokia Corporation + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include <config.h> + +#include <glib.h> + +#include <dbus/dbus.h> +#include <dbus/dbus-glib-lowlevel.h> + +#include <string.h> + +#ifdef DBUS_WIN +# include <windows.h> +#else +# include <signal.h> +# include <unistd.h> +#endif + +#define SENDER_NAME "test.eavesdrop.sender" +#define SENDER_PATH "/test/eavesdrop/sender" +#define SENDER_IFACE SENDER_NAME +#define SENDER_SIGNAL_NAME "Signal" +#define SENDER_STOPPER_NAME "Stopper" + +/* This rule is equivalent to the one added to a proxy connecting to + * SENDER_NAME+SENDER_IFACE, plus restricting on signal name. + * Being more restrictive, if the connection receives what we need, for sure + * the original proxy rule will match it */ +#define RECEIVER_RULE "sender='" SENDER_NAME "'," \ + "interface='" SENDER_IFACE "'," \ + "type='signal'," \ + "member='" SENDER_SIGNAL_NAME "'" +#define POLITELISTENER_RULE RECEIVER_RULE +#define EAVESDROPPER_RULE RECEIVER_RULE ",eavesdrop=true" + +#define STOPPER_RULE "sender='" SENDER_NAME \ + "',interface='" SENDER_IFACE "',type='signal',member='" SENDER_STOPPER_NAME "'" + +/* a connection received a signal to whom? */ +typedef enum { + NONE_YET = 0, + TO_ME, + TO_OTHER, + BROADCAST, +} SignalDst; + +typedef struct { + DBusError e; + GError *ge; + + gint daemon_pid; + + /* eavedrop keyword tests */ + DBusConnection *sender; + DBusConnection *receiver; + SignalDst receiver_dst; + dbus_bool_t receiver_got_stopper; + DBusConnection *eavesdropper; + SignalDst eavesdropper_dst; + dbus_bool_t eavesdropper_got_stopper; + DBusConnection *politelistener; + SignalDst politelistener_dst; + dbus_bool_t politelistener_got_stopper; +} Fixture; + +#define assert_no_error(e) _assert_no_error (e, __FILE__, __LINE__) +static void +_assert_no_error (const DBusError *e, + const char *file, + int line) +{ + if (G_UNLIKELY (dbus_error_is_set (e))) + g_error ("%s:%d: expected success but got error: %s: %s", + file, line, e->name, e->message); +} + +static gchar * +spawn_dbus_daemon (gchar *binary, + gchar *configuration, + gint *daemon_pid) +{ + GError *error = NULL; + GString *address; + gint address_fd; + gchar *argv[] = { + binary, + configuration, + "--nofork", + "--print-address=1", /* stdout */ + NULL + }; + + g_spawn_async_with_pipes (NULL, /* working directory */ + argv, + NULL, /* envp */ + G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH, + NULL, /* child_setup */ + NULL, /* user data */ + daemon_pid, + NULL, /* child's stdin = /dev/null */ + &address_fd, + NULL, /* child's stderr = our stderr */ + &error); + g_assert_no_error (error); + + address = g_string_new (NULL); + + /* polling until the dbus-daemon writes out its address is a bit stupid, + * but at least it's simple, unlike dbus-launch... in principle we could + * use select() here, but life's too short */ + while (1) + { + gssize bytes; + gchar buf[4096]; + gchar *newline; + + bytes = read (address_fd, buf, sizeof (buf)); + + if (bytes > 0) + g_string_append_len (address, buf, bytes); + + newline = strchr (address->str, '\n'); + + if (newline != NULL) + { + g_string_truncate (address, newline - address->str); + break; + } + + g_usleep (G_USEC_PER_SEC / 10); + } + + return g_string_free (address, FALSE); +} + +static DBusConnection * +connect_to_bus (const gchar *address) +{ + DBusConnection *conn; + DBusError error = DBUS_ERROR_INIT; + dbus_bool_t ok; + + conn = dbus_connection_open_private (address, &error); + assert_no_error (&error); + g_assert (conn != NULL); + + ok = dbus_bus_register (conn, &error); + assert_no_error (&error); + g_assert (ok); + g_assert (dbus_bus_get_unique_name (conn) != NULL); + + dbus_connection_setup_with_g_main (conn, NULL); + return conn; +} + +/* send a unicast signal to <self> to ensure that no other connection + * listening is the actual recipient for the signal */ +static DBusHandlerResult +sender_send_unicast_to_sender (Fixture *f) +{ + DBusError error = DBUS_ERROR_INIT; + DBusMessage *signal; + + signal = dbus_message_new_signal (SENDER_PATH, SENDER_IFACE, + SENDER_SIGNAL_NAME); + dbus_message_set_destination (signal, dbus_bus_get_unique_name (f->sender)); + + if (signal == NULL) + g_error ("OOM"); + + if (!dbus_connection_send (f->sender, signal, NULL)) + g_error ("OOM"); + + dbus_message_unref (signal); + + return DBUS_HANDLER_RESULT_HANDLED; +} + +/* send a unicast signal to <receiver>, making <politelistener> and + * <eavesdropper> not a actual recipient for it */ +static DBusHandlerResult +sender_send_unicast_to_receiver (Fixture *f) +{ + DBusError error = DBUS_ERROR_INIT; + DBusMessage *signal; + + signal = dbus_message_new_signal (SENDER_PATH, SENDER_IFACE, SENDER_SIGNAL_NAME); + dbus_message_set_destination (signal, dbus_bus_get_unique_name (f->receiver)); + + if (signal == NULL) + g_error ("OOM"); + + if (!dbus_connection_send (f->sender, signal, NULL)) + g_error ("OOM"); + + dbus_message_unref (signal); + + return DBUS_HANDLER_RESULT_HANDLED; +} + +static DBusHandlerResult +sender_send_broadcast (Fixture *f) +{ + DBusError error = DBUS_ERROR_INIT; + DBusMessage *signal; + + signal = dbus_message_new_signal (SENDER_PATH, SENDER_IFACE, SENDER_SIGNAL_NAME); + dbus_message_set_destination (signal, NULL); + + if (signal == NULL) + g_error ("OOM"); + + if (!dbus_connection_send (f->sender, signal, NULL)) + g_error ("OOM"); + + dbus_message_unref (signal); + + return DBUS_HANDLER_RESULT_HANDLED; +} + +/* Send special broadcast signal to indicate that the connections can "stop" + * listening and check their results. + * DBus does not re-order messages, so when the three connections have received + * this signal, we are sure that any message sent before it has also been + * dispatched. */ +static DBusHandlerResult +sender_send_stopper (Fixture *f) +{ + DBusError error = DBUS_ERROR_INIT; + DBusMessage *signal; + + signal = dbus_message_new_signal (SENDER_PATH, SENDER_IFACE, SENDER_STOPPER_NAME); + dbus_message_set_destination (signal, NULL); + + if (signal == NULL) + g_error ("OOM"); + + if (!dbus_connection_send (f->sender, signal, NULL)) + g_error ("OOM"); + + dbus_message_unref (signal); + + return DBUS_HANDLER_RESULT_HANDLED; +} + +/* Ignore NameAcquired, then depending on the signal received: + * - updates f-><conn>_dst based on the destination of the message + * - asserts that <conn> received the stop signal + */ +static DBusHandlerResult +signal_filter (DBusConnection *connection, + DBusMessage *message, + void *user_data) +{ + Fixture *f = user_data; + SignalDst *dst = NULL; + DBusConnection **conn; + dbus_bool_t *got_stopper; + + if (0 == strcmp (dbus_message_get_member (message), "NameAcquired")) + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; + + if (connection == f->receiver) + { + dst = &(f->receiver_dst); + conn = &(f->receiver); + got_stopper = &(f->receiver_got_stopper); + } + else if (connection == f->eavesdropper) + { + dst = &(f->eavesdropper_dst); + conn = &(f->eavesdropper); + got_stopper = &(f->eavesdropper_got_stopper); + } + else if (connection == f->politelistener) + { + dst = &(f->politelistener_dst); + conn = &(f->politelistener); + got_stopper = &(f->politelistener_got_stopper); + } + else + { + g_error ("connection not matching"); + } + + if (0 == strcmp (dbus_message_get_member (message), SENDER_SIGNAL_NAME)) + { + if (dbus_message_get_destination (message) == NULL) + *dst = BROADCAST; + else if (0 == strcmp (dbus_message_get_destination (message), dbus_bus_get_unique_name (*conn))) + *dst = TO_ME; + else /* if (dbus_message_get_destination (message) != NULL) */ + *dst = TO_OTHER; + } + else if (0 == strcmp (dbus_message_get_member (message), SENDER_STOPPER_NAME)) + { + *got_stopper = TRUE; + } + else + { + g_error ("got unknown member from message: %s", + dbus_message_get_member (message)); + } + + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; +} + +static void +add_receiver_filter (Fixture *f) +{ + DBusError e = DBUS_ERROR_INIT; + + dbus_bus_add_match (f->receiver, RECEIVER_RULE, &e); + assert_no_error (&e); + dbus_bus_add_match (f->receiver, STOPPER_RULE, &e); + assert_no_error (&e); + + if (!dbus_connection_add_filter (f->receiver, + signal_filter, f, NULL)) + g_error ("OOM"); +} + +static void +add_eavesdropper_filter (Fixture *f) +{ + DBusError e = DBUS_ERROR_INIT; + + dbus_bus_add_match (f->eavesdropper, EAVESDROPPER_RULE, &e); + assert_no_error (&e); + dbus_bus_add_match (f->eavesdropper, STOPPER_RULE, &e); + assert_no_error (&e); + + if (!dbus_connection_add_filter (f->eavesdropper, + signal_filter, f, NULL)) + g_error ("OOM"); +} + +static void +add_politelistener_filter (Fixture *f) +{ + DBusError e = DBUS_ERROR_INIT; + + dbus_bus_add_match (f->politelistener, POLITELISTENER_RULE, &e); + assert_no_error (&e); + dbus_bus_add_match (f->politelistener, STOPPER_RULE, &e); + assert_no_error (&e); + + if (!dbus_connection_add_filter (f->politelistener, + signal_filter, f, NULL)) + g_error ("OOM"); +} + +static void +setup (Fixture *f, + gconstpointer context G_GNUC_UNUSED) +{ + gchar *dbus_daemon; + gchar *config; + gchar *address; + + f->ge = NULL; + dbus_error_init (&f->e); + + dbus_daemon = g_strdup (g_getenv ("DBUS_TEST_DAEMON")); + + if (dbus_daemon == NULL) + dbus_daemon = g_strdup ("dbus-daemon"); + + if (g_getenv ("DBUS_TEST_SYSCONFDIR") != NULL) + { + config = g_strdup_printf ("--config-file=%s/dbus-1/session.conf", + g_getenv ("DBUS_TEST_SYSCONFDIR")); + } + else if (g_getenv ("DBUS_TEST_DATA") != NULL) + { + config = g_strdup_printf ( + "--config-file=%s/valid-config-files/session.conf", + g_getenv ("DBUS_TEST_DATA")); + } + else + { + config = g_strdup ("--session"); + } + + address = spawn_dbus_daemon (dbus_daemon, config, &f->daemon_pid); + + g_free (dbus_daemon); + g_free (config); + + f->sender = connect_to_bus (address); + dbus_bus_request_name (f->sender, SENDER_NAME, DBUS_NAME_FLAG_DO_NOT_QUEUE, + &(f->e)); + f->receiver = connect_to_bus (address); + f->eavesdropper = connect_to_bus (address); + f->politelistener = connect_to_bus (address); + add_receiver_filter (f); + add_politelistener_filter (f); + add_eavesdropper_filter (f); + + g_free (address); +} + +static void +test_eavesdrop_broadcast (Fixture *f, + gconstpointer context G_GNUC_UNUSED) +{ + sender_send_broadcast (f); + sender_send_stopper (f); + + while (!f->receiver_got_stopper || + !f->politelistener_got_stopper || + !f->eavesdropper_got_stopper) + g_main_context_iteration (NULL, TRUE); + + /* all the three connection can receive a broadcast */ + g_assert_cmpint (f->receiver_dst, ==, BROADCAST); + g_assert_cmpint (f->politelistener_dst, ==, BROADCAST); + g_assert_cmpint (f->eavesdropper_dst, ==, BROADCAST); +} + +/* a way to say that none of the listening connection are destination of the + * signal */ +static void +test_eavesdrop_unicast_to_sender (Fixture *f, + gconstpointer context G_GNUC_UNUSED) +{ + sender_send_unicast_to_sender (f); + sender_send_stopper (f); + + while (!f->receiver_got_stopper || + !f->politelistener_got_stopper || + !f->eavesdropper_got_stopper) + g_main_context_iteration (NULL, TRUE); + + /* not directed to it and not broadcasted, they cannot receive it */ + g_assert_cmpint (f->receiver_dst, ==, NONE_YET); + g_assert_cmpint (f->politelistener_dst, ==, NONE_YET); + /* eavesdrop=true, it will receive the signal even though it's not directed + * to it */ + g_assert_cmpint (f->eavesdropper_dst, ==, TO_OTHER); +} + +static void +test_eavesdrop_unicast_to_receiver (Fixture *f, + gconstpointer context G_GNUC_UNUSED) +{ + sender_send_unicast_to_receiver (f); + sender_send_stopper (f); + + while (!f->receiver_got_stopper || + !f->politelistener_got_stopper || + !f->eavesdropper_got_stopper) + g_main_context_iteration (NULL, TRUE); + + /* direct to him */ + g_assert_cmpint (f->receiver_dst, ==, TO_ME); + /* not directed to it and not broadcasted, it cannot receive it */ + g_assert_cmpint (f->politelistener_dst, ==, NONE_YET); + /* eavesdrop=true, it will receive the signal even though it's not directed + * to it */ + g_assert_cmpint (f->eavesdropper_dst, ==, TO_OTHER); +} + +static void +teardown (Fixture *f, + gconstpointer context G_GNUC_UNUSED) +{ + dbus_error_free (&f->e); + g_clear_error (&f->ge); + + if (f->sender != NULL) + { + dbus_connection_close (f->sender); + dbus_connection_unref (f->sender); + f->sender = NULL; + } + + if (f->receiver != NULL) + { + dbus_connection_remove_filter (f->receiver, + signal_filter, f); + + dbus_connection_close (f->receiver); + dbus_connection_unref (f->receiver); + f->receiver = NULL; + } + + if (f->politelistener != NULL) + { + dbus_connection_remove_filter (f->politelistener, + signal_filter, f); + + dbus_connection_close (f->politelistener); + dbus_connection_unref (f->politelistener); + f->politelistener = NULL; + } + + if (f->eavesdropper != NULL) + { + dbus_connection_remove_filter (f->eavesdropper, + signal_filter, f); + + dbus_connection_close (f->eavesdropper); + dbus_connection_unref (f->eavesdropper); + f->eavesdropper = NULL; + } + +#ifdef DBUS_WIN + TerminateProcess (f->daemon_pid, 1); +#else + kill (f->daemon_pid, SIGTERM); +#endif + + g_spawn_close_pid (f->daemon_pid); +} + +int +main (int argc, + char **argv) +{ + g_test_init (&argc, &argv, NULL); + g_test_bug_base ("https://bugs.freedesktop.org/show_bug.cgi?id="); + + g_test_add ("/eavedrop/match_keyword/broadcast", Fixture, NULL, + setup, test_eavesdrop_broadcast, teardown); + g_test_add ("/eavedrop/match_keyword/unicast_to_receiver", Fixture, NULL, + setup, test_eavesdrop_unicast_to_receiver, + teardown); + g_test_add ("/eavedrop/match_keyword/unicast_to_sender", Fixture, NULL, + setup, test_eavesdrop_unicast_to_sender, teardown); + + return g_test_run (); +} diff --git a/test/dbus-daemon.c b/test/dbus-daemon.c index ed10d098..c190cb43 100644 --- a/test/dbus-daemon.c +++ b/test/dbus-daemon.c @@ -41,6 +41,8 @@ #endif typedef struct { + gboolean skip; + DBusError e; GError *ge; @@ -167,42 +169,63 @@ echo_filter (DBusConnection *connection, return DBUS_HANDLER_RESULT_HANDLED; } +typedef struct { + const char *bug_ref; + guint min_messages; + const char *config_file; +} Config; + static void setup (Fixture *f, - gconstpointer context G_GNUC_UNUSED) + gconstpointer context) { + const Config *config = context; gchar *dbus_daemon; - gchar *config; + gchar *arg; gchar *address; f->ge = NULL; dbus_error_init (&f->e); - dbus_daemon = g_strdup (g_getenv ("DBUS_TEST_DAEMON")); - - if (dbus_daemon == NULL) - dbus_daemon = g_strdup ("dbus-daemon"); + if (config != NULL && config->config_file != NULL) + { + if (g_getenv ("DBUS_TEST_DATA") == NULL) + { + g_message ("SKIP: set DBUS_TEST_DATA to a directory containing %s", + config->config_file); + f->skip = TRUE; + return; + } - if (g_getenv ("DBUS_TEST_SYSCONFDIR") != NULL) + arg = g_strdup_printf ( + "--config-file=%s/%s", + g_getenv ("DBUS_TEST_DATA"), config->config_file); + } + else if (g_getenv ("DBUS_TEST_SYSCONFDIR") != NULL) { - config = g_strdup_printf ("--config-file=%s/dbus-1/session.conf", + arg = g_strdup_printf ("--config-file=%s/dbus-1/session.conf", g_getenv ("DBUS_TEST_SYSCONFDIR")); } else if (g_getenv ("DBUS_TEST_DATA") != NULL) { - config = g_strdup_printf ( + arg = g_strdup_printf ( "--config-file=%s/valid-config-files/session.conf", g_getenv ("DBUS_TEST_DATA")); } else { - config = g_strdup ("--session"); + arg = g_strdup ("--session"); } - address = spawn_dbus_daemon (dbus_daemon, config, &f->daemon_pid); + dbus_daemon = g_strdup (g_getenv ("DBUS_TEST_DAEMON")); + + if (dbus_daemon == NULL) + dbus_daemon = g_strdup ("dbus-daemon"); + + address = spawn_dbus_daemon (dbus_daemon, arg, &f->daemon_pid); g_free (dbus_daemon); - g_free (config); + g_free (arg); f->left_conn = connect_to_bus (address); f->right_conn = connect_to_bus (address); @@ -229,16 +252,26 @@ pc_count (DBusPendingCall *pc, static void test_echo (Fixture *f, - gconstpointer context G_GNUC_UNUSED) + gconstpointer context) { + const Config *config = context; guint count = 2000; guint sent; guint received = 0; double elapsed; + if (f->skip) + return; + + if (config != NULL && config->bug_ref != NULL) + g_test_bug (config->bug_ref); + if (g_test_perf ()) count = 100000; + if (config != NULL) + count = MAX (config->min_messages, count); + add_echo_filter (f); g_test_timer_start (); @@ -304,15 +337,23 @@ teardown (Fixture *f, f->right_conn = NULL; } + if (f->daemon_pid != 0) + { #ifdef DBUS_WIN - TerminateProcess (f->daemon_pid, 1); + TerminateProcess (f->daemon_pid, 1); #else - kill (f->daemon_pid, SIGTERM); + kill (f->daemon_pid, SIGTERM); #endif - g_spawn_close_pid (f->daemon_pid); + g_spawn_close_pid (f->daemon_pid); + f->daemon_pid = 0; + } } +static Config limited_config = { + "34393", 10000, "valid-config-files/incoming-limit.conf" +}; + int main (int argc, char **argv) @@ -321,6 +362,8 @@ main (int argc, g_test_bug_base ("https://bugs.freedesktop.org/show_bug.cgi?id="); g_test_add ("/echo/session", Fixture, NULL, setup, test_echo, teardown); + g_test_add ("/echo/limited", Fixture, &limited_config, + setup, test_echo, teardown); return g_test_run (); } diff --git a/test/name-test/Makefile.am b/test/name-test/Makefile.am index 5f11f0be..68fc33ec 100644 --- a/test/name-test/Makefile.am +++ b/test/name-test/Makefile.am @@ -1,4 +1,12 @@ -INCLUDES=-I$(top_srcdir) $(DBUS_CLIENT_CFLAGS) $(DBUS_GLIB_CFLAGS) $(DBUS_TEST_CFLAGS) -DDBUS_COMPILATION +# Everything in this directory is statically-linked to libdbus-internal +AM_CPPFLAGS = \ + -I$(top_srcdir) \ + -DDBUS_COMPILATION \ + -DDBUS_STATIC_BUILD \ + $(NULL) + +# if assertions are enabled, improve backtraces +AM_LDFLAGS = @R_DYNAMIC_LDFLAG@ ## note that TESTS has special meaning (stuff to use in make check) ## so if adding tests not to be run in make check, don't add them to @@ -18,57 +26,14 @@ if DBUS_BUILD_TESTS ## build even when not doing "make check" noinst_PROGRAMS=test-pending-call-dispatch test-pending-call-timeout test-threads-init test-ids test-shutdown test-privserver test-privserver-client test-autolaunch -AM_CPPFLAGS = -DDBUS_STATIC_BUILD -test_pending_call_dispatch_SOURCES = \ - test-pending-call-dispatch.c - -test_pending_call_dispatch_LDADD=$(top_builddir)/dbus/libdbus-internal.la $(DBUS_TEST_LIBS) -test_pending_call_dispatch_LDFLAGS=@R_DYNAMIC_LDFLAG@ - -test_pending_call_timeout_SOURCES = \ - test-pending-call-timeout.c - -test_pending_call_timeout_LDADD=$(top_builddir)/dbus/libdbus-internal.la $(DBUS_TEST_LIBS) -test_pending_call_timeout_LDFLAGS=@R_DYNAMIC_LDFLAG@ - -test_threads_init_SOURCES = \ - test-threads-init.c - -test_threads_init_LDADD=$(top_builddir)/dbus/libdbus-internal.la $(DBUS_TEST_LIBS) -test_threads_init_LDFLAGS=@R_DYNAMIC_LDFLAG@ - -test_ids_SOURCES = \ - test-ids.c - -test_ids_LDADD=$(top_builddir)/dbus/libdbus-internal.la $(DBUS_TEST_LIBS) -test_ids_LDFLAGS=@R_DYNAMIC_LDFLAG@ - -test_shutdown_SOURCES = \ - test-shutdown.c - -test_shutdown_CFLAGS= -test_shutdown_LDADD=$(top_builddir)/dbus/libdbus-internal.la ../libdbus-testutils.la $(DBUS_TEST_LIBS) -test_shutdown_LDFLAGS=@R_DYNAMIC_LDFLAG@ - -test_privserver_SOURCES = \ - test-privserver.c - -test_privserver_CFLAGS= -test_privserver_LDADD=$(top_builddir)/dbus/libdbus-internal.la ../libdbus-testutils.la $(DBUS_TEST_LIBS) -test_privserver_LDFLAGS=@R_DYNAMIC_LDFLAG@ - -test_privserver_client_SOURCES = \ - test-privserver-client.c - -test_privserver_client_CFLAGS= -test_privserver_client_LDADD=$(top_builddir)/dbus/libdbus-internal.la ../libdbus-testutils.la $(DBUS_TEST_LIBS) -test_privserver_client_LDFLAGS=@R_DYNAMIC_LDFLAG@ - -test_autolaunch_SOURCES = \ - test-autolaunch.c +test_pending_call_dispatch_LDADD=$(top_builddir)/dbus/libdbus-internal.la +test_pending_call_timeout_LDADD=$(top_builddir)/dbus/libdbus-internal.la +test_threads_init_LDADD=$(top_builddir)/dbus/libdbus-internal.la +test_ids_LDADD=$(top_builddir)/dbus/libdbus-internal.la -test_autolaunch_CFLAGS= -test_autolaunch_LDADD=$(top_builddir)/dbus/libdbus-internal.la ../libdbus-testutils.la $(DBUS_TEST_LIBS) -test_autolaunch_LDFLAGS=@R_DYNAMIC_LDFLAG@ +test_shutdown_LDADD=../libdbus-testutils.la +test_privserver_LDADD=../libdbus-testutils.la +test_privserver_client_LDADD=../libdbus-testutils.la +test_autolaunch_LDADD=../libdbus-testutils.la endif diff --git a/test/name-test/Makefile.in b/test/name-test/Makefile.in index ca488449..6544cc97 100644 --- a/test/name-test/Makefile.in +++ b/test/name-test/Makefile.in @@ -61,92 +61,39 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) -am__test_autolaunch_SOURCES_DIST = test-autolaunch.c -@DBUS_BUILD_TESTS_TRUE@am_test_autolaunch_OBJECTS = test_autolaunch-test-autolaunch.$(OBJEXT) -test_autolaunch_OBJECTS = $(am_test_autolaunch_OBJECTS) -am__DEPENDENCIES_1 = -@DBUS_BUILD_TESTS_TRUE@test_autolaunch_DEPENDENCIES = $(top_builddir)/dbus/libdbus-internal.la \ -@DBUS_BUILD_TESTS_TRUE@ ../libdbus-testutils.la \ -@DBUS_BUILD_TESTS_TRUE@ $(am__DEPENDENCIES_1) +test_autolaunch_SOURCES = test-autolaunch.c +test_autolaunch_OBJECTS = test-autolaunch.$(OBJEXT) +@DBUS_BUILD_TESTS_TRUE@test_autolaunch_DEPENDENCIES = \ +@DBUS_BUILD_TESTS_TRUE@ ../libdbus-testutils.la AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent -test_autolaunch_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(test_autolaunch_CFLAGS) $(CFLAGS) $(test_autolaunch_LDFLAGS) \ - $(LDFLAGS) -o $@ -am__test_ids_SOURCES_DIST = test-ids.c -@DBUS_BUILD_TESTS_TRUE@am_test_ids_OBJECTS = test-ids.$(OBJEXT) -test_ids_OBJECTS = $(am_test_ids_OBJECTS) -@DBUS_BUILD_TESTS_TRUE@test_ids_DEPENDENCIES = $(top_builddir)/dbus/libdbus-internal.la \ -@DBUS_BUILD_TESTS_TRUE@ $(am__DEPENDENCIES_1) -test_ids_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(test_ids_LDFLAGS) $(LDFLAGS) -o $@ -am__test_pending_call_dispatch_SOURCES_DIST = \ - test-pending-call-dispatch.c -@DBUS_BUILD_TESTS_TRUE@am_test_pending_call_dispatch_OBJECTS = \ -@DBUS_BUILD_TESTS_TRUE@ test-pending-call-dispatch.$(OBJEXT) +test_ids_SOURCES = test-ids.c +test_ids_OBJECTS = test-ids.$(OBJEXT) +@DBUS_BUILD_TESTS_TRUE@test_ids_DEPENDENCIES = $(top_builddir)/dbus/libdbus-internal.la +test_pending_call_dispatch_SOURCES = test-pending-call-dispatch.c test_pending_call_dispatch_OBJECTS = \ - $(am_test_pending_call_dispatch_OBJECTS) -@DBUS_BUILD_TESTS_TRUE@test_pending_call_dispatch_DEPENDENCIES = $(top_builddir)/dbus/libdbus-internal.la \ -@DBUS_BUILD_TESTS_TRUE@ $(am__DEPENDENCIES_1) -test_pending_call_dispatch_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(AM_CFLAGS) $(CFLAGS) $(test_pending_call_dispatch_LDFLAGS) \ - $(LDFLAGS) -o $@ -am__test_pending_call_timeout_SOURCES_DIST = \ - test-pending-call-timeout.c -@DBUS_BUILD_TESTS_TRUE@am_test_pending_call_timeout_OBJECTS = \ -@DBUS_BUILD_TESTS_TRUE@ test-pending-call-timeout.$(OBJEXT) + test-pending-call-dispatch.$(OBJEXT) +@DBUS_BUILD_TESTS_TRUE@test_pending_call_dispatch_DEPENDENCIES = $(top_builddir)/dbus/libdbus-internal.la +test_pending_call_timeout_SOURCES = test-pending-call-timeout.c test_pending_call_timeout_OBJECTS = \ - $(am_test_pending_call_timeout_OBJECTS) -@DBUS_BUILD_TESTS_TRUE@test_pending_call_timeout_DEPENDENCIES = $(top_builddir)/dbus/libdbus-internal.la \ -@DBUS_BUILD_TESTS_TRUE@ $(am__DEPENDENCIES_1) -test_pending_call_timeout_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(AM_CFLAGS) $(CFLAGS) $(test_pending_call_timeout_LDFLAGS) \ - $(LDFLAGS) -o $@ -am__test_privserver_SOURCES_DIST = test-privserver.c -@DBUS_BUILD_TESTS_TRUE@am_test_privserver_OBJECTS = test_privserver-test-privserver.$(OBJEXT) -test_privserver_OBJECTS = $(am_test_privserver_OBJECTS) -@DBUS_BUILD_TESTS_TRUE@test_privserver_DEPENDENCIES = $(top_builddir)/dbus/libdbus-internal.la \ -@DBUS_BUILD_TESTS_TRUE@ ../libdbus-testutils.la \ -@DBUS_BUILD_TESTS_TRUE@ $(am__DEPENDENCIES_1) -test_privserver_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(test_privserver_CFLAGS) $(CFLAGS) $(test_privserver_LDFLAGS) \ - $(LDFLAGS) -o $@ -am__test_privserver_client_SOURCES_DIST = test-privserver-client.c -@DBUS_BUILD_TESTS_TRUE@am_test_privserver_client_OBJECTS = test_privserver_client-test-privserver-client.$(OBJEXT) -test_privserver_client_OBJECTS = $(am_test_privserver_client_OBJECTS) -@DBUS_BUILD_TESTS_TRUE@test_privserver_client_DEPENDENCIES = $(top_builddir)/dbus/libdbus-internal.la \ -@DBUS_BUILD_TESTS_TRUE@ ../libdbus-testutils.la \ -@DBUS_BUILD_TESTS_TRUE@ $(am__DEPENDENCIES_1) -test_privserver_client_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(test_privserver_client_CFLAGS) $(CFLAGS) \ - $(test_privserver_client_LDFLAGS) $(LDFLAGS) -o $@ -am__test_shutdown_SOURCES_DIST = test-shutdown.c -@DBUS_BUILD_TESTS_TRUE@am_test_shutdown_OBJECTS = \ -@DBUS_BUILD_TESTS_TRUE@ test_shutdown-test-shutdown.$(OBJEXT) -test_shutdown_OBJECTS = $(am_test_shutdown_OBJECTS) -@DBUS_BUILD_TESTS_TRUE@test_shutdown_DEPENDENCIES = $(top_builddir)/dbus/libdbus-internal.la \ -@DBUS_BUILD_TESTS_TRUE@ ../libdbus-testutils.la \ -@DBUS_BUILD_TESTS_TRUE@ $(am__DEPENDENCIES_1) -test_shutdown_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_shutdown_CFLAGS) \ - $(CFLAGS) $(test_shutdown_LDFLAGS) $(LDFLAGS) -o $@ -am__test_threads_init_SOURCES_DIST = test-threads-init.c -@DBUS_BUILD_TESTS_TRUE@am_test_threads_init_OBJECTS = \ -@DBUS_BUILD_TESTS_TRUE@ test-threads-init.$(OBJEXT) -test_threads_init_OBJECTS = $(am_test_threads_init_OBJECTS) -@DBUS_BUILD_TESTS_TRUE@test_threads_init_DEPENDENCIES = $(top_builddir)/dbus/libdbus-internal.la \ -@DBUS_BUILD_TESTS_TRUE@ $(am__DEPENDENCIES_1) -test_threads_init_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(AM_CFLAGS) $(CFLAGS) $(test_threads_init_LDFLAGS) $(LDFLAGS) \ - -o $@ + test-pending-call-timeout.$(OBJEXT) +@DBUS_BUILD_TESTS_TRUE@test_pending_call_timeout_DEPENDENCIES = $(top_builddir)/dbus/libdbus-internal.la +test_privserver_SOURCES = test-privserver.c +test_privserver_OBJECTS = test-privserver.$(OBJEXT) +@DBUS_BUILD_TESTS_TRUE@test_privserver_DEPENDENCIES = \ +@DBUS_BUILD_TESTS_TRUE@ ../libdbus-testutils.la +test_privserver_client_SOURCES = test-privserver-client.c +test_privserver_client_OBJECTS = test-privserver-client.$(OBJEXT) +@DBUS_BUILD_TESTS_TRUE@test_privserver_client_DEPENDENCIES = \ +@DBUS_BUILD_TESTS_TRUE@ ../libdbus-testutils.la +test_shutdown_SOURCES = test-shutdown.c +test_shutdown_OBJECTS = test-shutdown.$(OBJEXT) +@DBUS_BUILD_TESTS_TRUE@test_shutdown_DEPENDENCIES = \ +@DBUS_BUILD_TESTS_TRUE@ ../libdbus-testutils.la +test_threads_init_SOURCES = test-threads-init.c +test_threads_init_OBJECTS = test-threads-init.$(OBJEXT) +@DBUS_BUILD_TESTS_TRUE@test_threads_init_DEPENDENCIES = $(top_builddir)/dbus/libdbus-internal.la DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -173,25 +120,20 @@ am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(test_autolaunch_SOURCES) $(test_ids_SOURCES) \ - $(test_pending_call_dispatch_SOURCES) \ - $(test_pending_call_timeout_SOURCES) \ - $(test_privserver_SOURCES) $(test_privserver_client_SOURCES) \ - $(test_shutdown_SOURCES) $(test_threads_init_SOURCES) -DIST_SOURCES = $(am__test_autolaunch_SOURCES_DIST) \ - $(am__test_ids_SOURCES_DIST) \ - $(am__test_pending_call_dispatch_SOURCES_DIST) \ - $(am__test_pending_call_timeout_SOURCES_DIST) \ - $(am__test_privserver_SOURCES_DIST) \ - $(am__test_privserver_client_SOURCES_DIST) \ - $(am__test_shutdown_SOURCES_DIST) \ - $(am__test_threads_init_SOURCES_DIST) +SOURCES = test-autolaunch.c test-ids.c test-pending-call-dispatch.c \ + test-pending-call-timeout.c test-privserver.c \ + test-privserver-client.c test-shutdown.c test-threads-init.c +DIST_SOURCES = test-autolaunch.c test-ids.c \ + test-pending-call-dispatch.c test-pending-call-timeout.c \ + test-privserver.c test-privserver-client.c test-shutdown.c \ + test-threads-init.c ETAGS = etags CTAGS = ctags am__tty_colors = \ red=; grn=; lgn=; blu=; std= DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ +ADT_LIBS = @ADT_LIBS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ @@ -212,10 +154,6 @@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DBUS_BINDIR = @DBUS_BINDIR@ -DBUS_BUS_CFLAGS = @DBUS_BUS_CFLAGS@ -DBUS_BUS_LIBS = @DBUS_BUS_LIBS@ -DBUS_CLIENT_CFLAGS = @DBUS_CLIENT_CFLAGS@ -DBUS_CLIENT_LIBS = @DBUS_CLIENT_LIBS@ DBUS_CONSOLE_AUTH_DIR = @DBUS_CONSOLE_AUTH_DIR@ DBUS_CONSOLE_OWNER_FILE = @DBUS_CONSOLE_OWNER_FILE@ DBUS_DAEMONDIR = @DBUS_DAEMONDIR@ @@ -227,8 +165,6 @@ DBUS_INT16_TYPE = @DBUS_INT16_TYPE@ DBUS_INT32_TYPE = @DBUS_INT32_TYPE@ DBUS_INT64_CONSTANT = @DBUS_INT64_CONSTANT@ DBUS_INT64_TYPE = @DBUS_INT64_TYPE@ -DBUS_LAUNCHER_CFLAGS = @DBUS_LAUNCHER_CFLAGS@ -DBUS_LAUNCHER_LIBS = @DBUS_LAUNCHER_LIBS@ DBUS_LIBEXECDIR = @DBUS_LIBEXECDIR@ DBUS_MAJOR_VERSION = @DBUS_MAJOR_VERSION@ DBUS_MICRO_VERSION = @DBUS_MICRO_VERSION@ @@ -240,8 +176,6 @@ DBUS_SESSION_SOCKET_DIR = @DBUS_SESSION_SOCKET_DIR@ DBUS_SYSTEM_BUS_DEFAULT_ADDRESS = @DBUS_SYSTEM_BUS_DEFAULT_ADDRESS@ DBUS_SYSTEM_PID_FILE = @DBUS_SYSTEM_PID_FILE@ DBUS_SYSTEM_SOCKET = @DBUS_SYSTEM_SOCKET@ -DBUS_TEST_CFLAGS = @DBUS_TEST_CFLAGS@ -DBUS_TEST_LIBS = @DBUS_TEST_LIBS@ DBUS_UINT64_CONSTANT = @DBUS_UINT64_CONSTANT@ DBUS_USER = @DBUS_USER@ DBUS_VERSION = @DBUS_VERSION@ @@ -279,6 +213,7 @@ LAUNCHCTL = @LAUNCHCTL@ LAUNCHD_AGENT_DIR = @LAUNCHD_AGENT_DIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBDBUS_LIBS = @LIBDBUS_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -295,6 +230,7 @@ MAKEINFO = @MAKEINFO@ MAN2HTML = @MAN2HTML@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +NETWORK_libs = @NETWORK_libs@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -314,6 +250,7 @@ RANLIB = @RANLIB@ RC = @RC@ R_DYNAMIC_LDFLAG = @R_DYNAMIC_LDFLAG@ SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -330,10 +267,13 @@ TEST_SLEEP_FOREVER_BINARY = @TEST_SLEEP_FOREVER_BINARY@ TEST_SOCKET_DIR = @TEST_SOCKET_DIR@ TEST_VALID_SERVICE_DIR = @TEST_VALID_SERVICE_DIR@ TEST_VALID_SERVICE_SYSTEM_DIR = @TEST_VALID_SERVICE_SYSTEM_DIR@ +THREAD_LIBS = @THREAD_LIBS@ VERSION = @VERSION@ WINDRES = @WINDRES@ XMKMF = @XMKMF@ XMLTO = @XMLTO@ +XML_CFLAGS = @XML_CFLAGS@ +XML_LIBS = @XML_LIBS@ XSLTPROC = @XSLTPROC@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ @@ -393,54 +333,27 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -INCLUDES = -I$(top_srcdir) $(DBUS_CLIENT_CFLAGS) $(DBUS_GLIB_CFLAGS) $(DBUS_TEST_CFLAGS) -DDBUS_COMPILATION + +# Everything in this directory is statically-linked to libdbus-internal +AM_CPPFLAGS = \ + -I$(top_srcdir) \ + -DDBUS_COMPILATION \ + -DDBUS_STATIC_BUILD \ + $(NULL) + + +# if assertions are enabled, improve backtraces +AM_LDFLAGS = @R_DYNAMIC_LDFLAG@ @DBUS_BUILD_TESTS_TRUE@TESTS_ENVIRONMENT = DBUS_TOP_BUILDDIR=@abs_top_builddir@ DBUS_TOP_SRCDIR=@abs_top_srcdir@ EXTRA_DIST = run-test.sh run-test-systemserver.sh test-wait-for-echo.py test-activation-forking.py -@DBUS_BUILD_TESTS_TRUE@AM_CPPFLAGS = -DDBUS_STATIC_BUILD -@DBUS_BUILD_TESTS_TRUE@test_pending_call_dispatch_SOURCES = \ -@DBUS_BUILD_TESTS_TRUE@ test-pending-call-dispatch.c - -@DBUS_BUILD_TESTS_TRUE@test_pending_call_dispatch_LDADD = $(top_builddir)/dbus/libdbus-internal.la $(DBUS_TEST_LIBS) -@DBUS_BUILD_TESTS_TRUE@test_pending_call_dispatch_LDFLAGS = @R_DYNAMIC_LDFLAG@ -@DBUS_BUILD_TESTS_TRUE@test_pending_call_timeout_SOURCES = \ -@DBUS_BUILD_TESTS_TRUE@ test-pending-call-timeout.c - -@DBUS_BUILD_TESTS_TRUE@test_pending_call_timeout_LDADD = $(top_builddir)/dbus/libdbus-internal.la $(DBUS_TEST_LIBS) -@DBUS_BUILD_TESTS_TRUE@test_pending_call_timeout_LDFLAGS = @R_DYNAMIC_LDFLAG@ -@DBUS_BUILD_TESTS_TRUE@test_threads_init_SOURCES = \ -@DBUS_BUILD_TESTS_TRUE@ test-threads-init.c - -@DBUS_BUILD_TESTS_TRUE@test_threads_init_LDADD = $(top_builddir)/dbus/libdbus-internal.la $(DBUS_TEST_LIBS) -@DBUS_BUILD_TESTS_TRUE@test_threads_init_LDFLAGS = @R_DYNAMIC_LDFLAG@ -@DBUS_BUILD_TESTS_TRUE@test_ids_SOURCES = \ -@DBUS_BUILD_TESTS_TRUE@ test-ids.c - -@DBUS_BUILD_TESTS_TRUE@test_ids_LDADD = $(top_builddir)/dbus/libdbus-internal.la $(DBUS_TEST_LIBS) -@DBUS_BUILD_TESTS_TRUE@test_ids_LDFLAGS = @R_DYNAMIC_LDFLAG@ -@DBUS_BUILD_TESTS_TRUE@test_shutdown_SOURCES = \ -@DBUS_BUILD_TESTS_TRUE@ test-shutdown.c - -@DBUS_BUILD_TESTS_TRUE@test_shutdown_CFLAGS = -@DBUS_BUILD_TESTS_TRUE@test_shutdown_LDADD = $(top_builddir)/dbus/libdbus-internal.la ../libdbus-testutils.la $(DBUS_TEST_LIBS) -@DBUS_BUILD_TESTS_TRUE@test_shutdown_LDFLAGS = @R_DYNAMIC_LDFLAG@ -@DBUS_BUILD_TESTS_TRUE@test_privserver_SOURCES = \ -@DBUS_BUILD_TESTS_TRUE@ test-privserver.c - -@DBUS_BUILD_TESTS_TRUE@test_privserver_CFLAGS = -@DBUS_BUILD_TESTS_TRUE@test_privserver_LDADD = $(top_builddir)/dbus/libdbus-internal.la ../libdbus-testutils.la $(DBUS_TEST_LIBS) -@DBUS_BUILD_TESTS_TRUE@test_privserver_LDFLAGS = @R_DYNAMIC_LDFLAG@ -@DBUS_BUILD_TESTS_TRUE@test_privserver_client_SOURCES = \ -@DBUS_BUILD_TESTS_TRUE@ test-privserver-client.c - -@DBUS_BUILD_TESTS_TRUE@test_privserver_client_CFLAGS = -@DBUS_BUILD_TESTS_TRUE@test_privserver_client_LDADD = $(top_builddir)/dbus/libdbus-internal.la ../libdbus-testutils.la $(DBUS_TEST_LIBS) -@DBUS_BUILD_TESTS_TRUE@test_privserver_client_LDFLAGS = @R_DYNAMIC_LDFLAG@ -@DBUS_BUILD_TESTS_TRUE@test_autolaunch_SOURCES = \ -@DBUS_BUILD_TESTS_TRUE@ test-autolaunch.c - -@DBUS_BUILD_TESTS_TRUE@test_autolaunch_CFLAGS = -@DBUS_BUILD_TESTS_TRUE@test_autolaunch_LDADD = $(top_builddir)/dbus/libdbus-internal.la ../libdbus-testutils.la $(DBUS_TEST_LIBS) -@DBUS_BUILD_TESTS_TRUE@test_autolaunch_LDFLAGS = @R_DYNAMIC_LDFLAG@ +@DBUS_BUILD_TESTS_TRUE@test_pending_call_dispatch_LDADD = $(top_builddir)/dbus/libdbus-internal.la +@DBUS_BUILD_TESTS_TRUE@test_pending_call_timeout_LDADD = $(top_builddir)/dbus/libdbus-internal.la +@DBUS_BUILD_TESTS_TRUE@test_threads_init_LDADD = $(top_builddir)/dbus/libdbus-internal.la +@DBUS_BUILD_TESTS_TRUE@test_ids_LDADD = $(top_builddir)/dbus/libdbus-internal.la +@DBUS_BUILD_TESTS_TRUE@test_shutdown_LDADD = ../libdbus-testutils.la +@DBUS_BUILD_TESTS_TRUE@test_privserver_LDADD = ../libdbus-testutils.la +@DBUS_BUILD_TESTS_TRUE@test_privserver_client_LDADD = ../libdbus-testutils.la +@DBUS_BUILD_TESTS_TRUE@test_autolaunch_LDADD = ../libdbus-testutils.la all: all-am .SUFFIXES: @@ -486,28 +399,28 @@ clean-noinstPROGRAMS: rm -f $$list test-autolaunch$(EXEEXT): $(test_autolaunch_OBJECTS) $(test_autolaunch_DEPENDENCIES) @rm -f test-autolaunch$(EXEEXT) - $(AM_V_CCLD)$(test_autolaunch_LINK) $(test_autolaunch_OBJECTS) $(test_autolaunch_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_autolaunch_OBJECTS) $(test_autolaunch_LDADD) $(LIBS) test-ids$(EXEEXT): $(test_ids_OBJECTS) $(test_ids_DEPENDENCIES) @rm -f test-ids$(EXEEXT) - $(AM_V_CCLD)$(test_ids_LINK) $(test_ids_OBJECTS) $(test_ids_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_ids_OBJECTS) $(test_ids_LDADD) $(LIBS) test-pending-call-dispatch$(EXEEXT): $(test_pending_call_dispatch_OBJECTS) $(test_pending_call_dispatch_DEPENDENCIES) @rm -f test-pending-call-dispatch$(EXEEXT) - $(AM_V_CCLD)$(test_pending_call_dispatch_LINK) $(test_pending_call_dispatch_OBJECTS) $(test_pending_call_dispatch_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_pending_call_dispatch_OBJECTS) $(test_pending_call_dispatch_LDADD) $(LIBS) test-pending-call-timeout$(EXEEXT): $(test_pending_call_timeout_OBJECTS) $(test_pending_call_timeout_DEPENDENCIES) @rm -f test-pending-call-timeout$(EXEEXT) - $(AM_V_CCLD)$(test_pending_call_timeout_LINK) $(test_pending_call_timeout_OBJECTS) $(test_pending_call_timeout_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_pending_call_timeout_OBJECTS) $(test_pending_call_timeout_LDADD) $(LIBS) test-privserver$(EXEEXT): $(test_privserver_OBJECTS) $(test_privserver_DEPENDENCIES) @rm -f test-privserver$(EXEEXT) - $(AM_V_CCLD)$(test_privserver_LINK) $(test_privserver_OBJECTS) $(test_privserver_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_privserver_OBJECTS) $(test_privserver_LDADD) $(LIBS) test-privserver-client$(EXEEXT): $(test_privserver_client_OBJECTS) $(test_privserver_client_DEPENDENCIES) @rm -f test-privserver-client$(EXEEXT) - $(AM_V_CCLD)$(test_privserver_client_LINK) $(test_privserver_client_OBJECTS) $(test_privserver_client_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_privserver_client_OBJECTS) $(test_privserver_client_LDADD) $(LIBS) test-shutdown$(EXEEXT): $(test_shutdown_OBJECTS) $(test_shutdown_DEPENDENCIES) @rm -f test-shutdown$(EXEEXT) - $(AM_V_CCLD)$(test_shutdown_LINK) $(test_shutdown_OBJECTS) $(test_shutdown_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_shutdown_OBJECTS) $(test_shutdown_LDADD) $(LIBS) test-threads-init$(EXEEXT): $(test_threads_init_OBJECTS) $(test_threads_init_DEPENDENCIES) @rm -f test-threads-init$(EXEEXT) - $(AM_V_CCLD)$(test_threads_init_LINK) $(test_threads_init_OBJECTS) $(test_threads_init_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(test_threads_init_OBJECTS) $(test_threads_init_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -515,14 +428,14 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-autolaunch.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ids.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-pending-call-dispatch.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-pending-call-timeout.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-privserver-client.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-privserver.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-shutdown.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-threads-init.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_autolaunch-test-autolaunch.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_privserver-test-privserver.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_privserver_client-test-privserver-client.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_shutdown-test-shutdown.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -548,70 +461,6 @@ distclean-compile: @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< -test_autolaunch-test-autolaunch.o: test-autolaunch.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_autolaunch_CFLAGS) $(CFLAGS) -MT test_autolaunch-test-autolaunch.o -MD -MP -MF $(DEPDIR)/test_autolaunch-test-autolaunch.Tpo -c -o test_autolaunch-test-autolaunch.o `test -f 'test-autolaunch.c' || echo '$(srcdir)/'`test-autolaunch.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_autolaunch-test-autolaunch.Tpo $(DEPDIR)/test_autolaunch-test-autolaunch.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-autolaunch.c' object='test_autolaunch-test-autolaunch.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_autolaunch_CFLAGS) $(CFLAGS) -c -o test_autolaunch-test-autolaunch.o `test -f 'test-autolaunch.c' || echo '$(srcdir)/'`test-autolaunch.c - -test_autolaunch-test-autolaunch.obj: test-autolaunch.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_autolaunch_CFLAGS) $(CFLAGS) -MT test_autolaunch-test-autolaunch.obj -MD -MP -MF $(DEPDIR)/test_autolaunch-test-autolaunch.Tpo -c -o test_autolaunch-test-autolaunch.obj `if test -f 'test-autolaunch.c'; then $(CYGPATH_W) 'test-autolaunch.c'; else $(CYGPATH_W) '$(srcdir)/test-autolaunch.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_autolaunch-test-autolaunch.Tpo $(DEPDIR)/test_autolaunch-test-autolaunch.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-autolaunch.c' object='test_autolaunch-test-autolaunch.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_autolaunch_CFLAGS) $(CFLAGS) -c -o test_autolaunch-test-autolaunch.obj `if test -f 'test-autolaunch.c'; then $(CYGPATH_W) 'test-autolaunch.c'; else $(CYGPATH_W) '$(srcdir)/test-autolaunch.c'; fi` - -test_privserver-test-privserver.o: test-privserver.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_privserver_CFLAGS) $(CFLAGS) -MT test_privserver-test-privserver.o -MD -MP -MF $(DEPDIR)/test_privserver-test-privserver.Tpo -c -o test_privserver-test-privserver.o `test -f 'test-privserver.c' || echo '$(srcdir)/'`test-privserver.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_privserver-test-privserver.Tpo $(DEPDIR)/test_privserver-test-privserver.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-privserver.c' object='test_privserver-test-privserver.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_privserver_CFLAGS) $(CFLAGS) -c -o test_privserver-test-privserver.o `test -f 'test-privserver.c' || echo '$(srcdir)/'`test-privserver.c - -test_privserver-test-privserver.obj: test-privserver.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_privserver_CFLAGS) $(CFLAGS) -MT test_privserver-test-privserver.obj -MD -MP -MF $(DEPDIR)/test_privserver-test-privserver.Tpo -c -o test_privserver-test-privserver.obj `if test -f 'test-privserver.c'; then $(CYGPATH_W) 'test-privserver.c'; else $(CYGPATH_W) '$(srcdir)/test-privserver.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_privserver-test-privserver.Tpo $(DEPDIR)/test_privserver-test-privserver.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-privserver.c' object='test_privserver-test-privserver.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_privserver_CFLAGS) $(CFLAGS) -c -o test_privserver-test-privserver.obj `if test -f 'test-privserver.c'; then $(CYGPATH_W) 'test-privserver.c'; else $(CYGPATH_W) '$(srcdir)/test-privserver.c'; fi` - -test_privserver_client-test-privserver-client.o: test-privserver-client.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_privserver_client_CFLAGS) $(CFLAGS) -MT test_privserver_client-test-privserver-client.o -MD -MP -MF $(DEPDIR)/test_privserver_client-test-privserver-client.Tpo -c -o test_privserver_client-test-privserver-client.o `test -f 'test-privserver-client.c' || echo '$(srcdir)/'`test-privserver-client.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_privserver_client-test-privserver-client.Tpo $(DEPDIR)/test_privserver_client-test-privserver-client.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-privserver-client.c' object='test_privserver_client-test-privserver-client.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_privserver_client_CFLAGS) $(CFLAGS) -c -o test_privserver_client-test-privserver-client.o `test -f 'test-privserver-client.c' || echo '$(srcdir)/'`test-privserver-client.c - -test_privserver_client-test-privserver-client.obj: test-privserver-client.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_privserver_client_CFLAGS) $(CFLAGS) -MT test_privserver_client-test-privserver-client.obj -MD -MP -MF $(DEPDIR)/test_privserver_client-test-privserver-client.Tpo -c -o test_privserver_client-test-privserver-client.obj `if test -f 'test-privserver-client.c'; then $(CYGPATH_W) 'test-privserver-client.c'; else $(CYGPATH_W) '$(srcdir)/test-privserver-client.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_privserver_client-test-privserver-client.Tpo $(DEPDIR)/test_privserver_client-test-privserver-client.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-privserver-client.c' object='test_privserver_client-test-privserver-client.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_privserver_client_CFLAGS) $(CFLAGS) -c -o test_privserver_client-test-privserver-client.obj `if test -f 'test-privserver-client.c'; then $(CYGPATH_W) 'test-privserver-client.c'; else $(CYGPATH_W) '$(srcdir)/test-privserver-client.c'; fi` - -test_shutdown-test-shutdown.o: test-shutdown.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_shutdown_CFLAGS) $(CFLAGS) -MT test_shutdown-test-shutdown.o -MD -MP -MF $(DEPDIR)/test_shutdown-test-shutdown.Tpo -c -o test_shutdown-test-shutdown.o `test -f 'test-shutdown.c' || echo '$(srcdir)/'`test-shutdown.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_shutdown-test-shutdown.Tpo $(DEPDIR)/test_shutdown-test-shutdown.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-shutdown.c' object='test_shutdown-test-shutdown.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_shutdown_CFLAGS) $(CFLAGS) -c -o test_shutdown-test-shutdown.o `test -f 'test-shutdown.c' || echo '$(srcdir)/'`test-shutdown.c - -test_shutdown-test-shutdown.obj: test-shutdown.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_shutdown_CFLAGS) $(CFLAGS) -MT test_shutdown-test-shutdown.obj -MD -MP -MF $(DEPDIR)/test_shutdown-test-shutdown.Tpo -c -o test_shutdown-test-shutdown.obj `if test -f 'test-shutdown.c'; then $(CYGPATH_W) 'test-shutdown.c'; else $(CYGPATH_W) '$(srcdir)/test-shutdown.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_shutdown-test-shutdown.Tpo $(DEPDIR)/test_shutdown-test-shutdown.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-shutdown.c' object='test_shutdown-test-shutdown.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_shutdown_CFLAGS) $(CFLAGS) -c -o test_shutdown-test-shutdown.obj `if test -f 'test-shutdown.c'; then $(CYGPATH_W) 'test-shutdown.c'; else $(CYGPATH_W) '$(srcdir)/test-shutdown.c'; fi` - mostlyclean-libtool: -rm -f *.lo diff --git a/test/test-utils.c b/test/test-utils.c index 05cd7535..4fd84fe8 100644 --- a/test/test-utils.c +++ b/test/test-utils.c @@ -9,23 +9,12 @@ typedef struct } CData; static dbus_bool_t -connection_watch_callback (DBusWatch *watch, - unsigned int condition, - void *data) -{ - return dbus_watch_handle (watch, condition); -} - -static dbus_bool_t add_watch (DBusWatch *watch, void *data) { CData *cd = data; - return _dbus_loop_add_watch (cd->loop, - watch, - connection_watch_callback, - cd, NULL); + return _dbus_loop_add_watch (cd->loop, watch); } static void @@ -34,16 +23,7 @@ remove_watch (DBusWatch *watch, { CData *cd = data; - _dbus_loop_remove_watch (cd->loop, - watch, connection_watch_callback, cd); -} - -static void -connection_timeout_callback (DBusTimeout *timeout, - void *data) -{ - /* Can return FALSE on OOM but we just let it fire again later */ - dbus_timeout_handle (timeout); + _dbus_loop_remove_watch (cd->loop, watch); } static dbus_bool_t @@ -52,8 +32,7 @@ add_timeout (DBusTimeout *timeout, { CData *cd = data; - return _dbus_loop_add_timeout (cd->loop, - timeout, connection_timeout_callback, cd, NULL); + return _dbus_loop_add_timeout (cd->loop, timeout); } static void @@ -62,8 +41,7 @@ remove_timeout (DBusTimeout *timeout, { CData *cd = data; - _dbus_loop_remove_timeout (cd->loop, - timeout, connection_timeout_callback, cd); + _dbus_loop_remove_timeout (cd->loop, timeout); } static void @@ -226,27 +204,12 @@ serverdata_new (DBusLoop *loop, } static dbus_bool_t -server_watch_callback (DBusWatch *watch, - unsigned int condition, - void *data) -{ - /* FIXME this can be done in dbus-mainloop.c - * if the code in activation.c for the babysitter - * watch handler is fixed. - */ - - return dbus_watch_handle (watch, condition); -} - -static dbus_bool_t add_server_watch (DBusWatch *watch, void *data) { ServerData *context = data; - return _dbus_loop_add_watch (context->loop, - watch, server_watch_callback, context, - NULL); + return _dbus_loop_add_watch (context->loop, watch); } static void @@ -255,16 +218,7 @@ remove_server_watch (DBusWatch *watch, { ServerData *context = data; - _dbus_loop_remove_watch (context->loop, - watch, server_watch_callback, context); -} - -static void -server_timeout_callback (DBusTimeout *timeout, - void *data) -{ - /* can return FALSE on OOM but we just let it fire again later */ - dbus_timeout_handle (timeout); + _dbus_loop_remove_watch (context->loop, watch); } static dbus_bool_t @@ -273,8 +227,7 @@ add_server_timeout (DBusTimeout *timeout, { ServerData *context = data; - return _dbus_loop_add_timeout (context->loop, - timeout, server_timeout_callback, context, NULL); + return _dbus_loop_add_timeout (context->loop, timeout); } static void @@ -283,8 +236,7 @@ remove_server_timeout (DBusTimeout *timeout, { ServerData *context = data; - _dbus_loop_remove_timeout (context->loop, - timeout, server_timeout_callback, context); + _dbus_loop_remove_timeout (context->loop, timeout); } dbus_bool_t diff --git a/tools/Makefile.am b/tools/Makefile.am index ce88c85f..08b90234 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -1,14 +1,28 @@ configdir=$(sysconfdir)/dbus-1 -INCLUDES=-I$(top_srcdir) $(DBUS_CLIENT_CFLAGS) $(DBUS_X_CFLAGS) -DDBUS_LOCALEDIR=\"@EXPANDED_DATADIR@/locale\" -DDBUS_COMPILATION -DDBUS_MACHINE_UUID_FILE=\""$(localstatedir)/lib/dbus/machine-id"\" +AM_CPPFLAGS = \ + -I$(top_srcdir) \ + $(DBUS_X_CFLAGS) \ + -DDBUS_COMPILATION \ + -DDBUS_MACHINE_UUID_FILE=\""$(localstatedir)/lib/dbus/machine-id"\" \ + $(NULL) + +# if assertions are enabled, improve backtraces +AM_LDFLAGS = @R_DYNAMIC_LDFLAG@ + +bin_PROGRAMS = \ + dbus-launch \ + dbus-monitor \ + dbus-send \ + $(NULL) -extra_bin_programs= if DBUS_UNIX -extra_bin_programs += dbus-cleanup-sockets dbus-uuidgen +bin_PROGRAMS += \ + dbus-cleanup-sockets \ + dbus-uuidgen \ + $(NULL) endif -bin_PROGRAMS=dbus-launch dbus-send dbus-monitor $(extra_bin_programs) - dbus_send_SOURCES= \ dbus-print-message.c \ dbus-print-message.h \ @@ -36,17 +50,22 @@ dbus_cleanup_sockets_SOURCES= \ dbus_uuidgen_SOURCES= \ dbus-uuidgen.c -dbus_send_LDADD= $(top_builddir)/dbus/libdbus-1.la $(DBUS_CLIENT_LIBS) -dbus_send_LDFLAGS=@R_DYNAMIC_LDFLAG@ +dbus_send_LDADD = \ + $(top_builddir)/dbus/libdbus-1.la \ + $(NULL) -dbus_monitor_LDADD= $(top_builddir)/dbus/libdbus-1.la $(DBUS_CLIENT_LIBS) -dbus_monitor_LDFLAGS=@R_DYNAMIC_LDFLAG@ +dbus_monitor_LDADD = \ + $(top_builddir)/dbus/libdbus-1.la \ + $(NETWORK_libs) \ + $(NULL) -dbus_uuidgen_LDADD= $(top_builddir)/dbus/libdbus-1.la $(DBUS_CLIENT_LIBS) -dbus_uuidgen_LDFLAGS=@R_DYNAMIC_LDFLAG@ +dbus_uuidgen_LDADD = \ + $(top_builddir)/dbus/libdbus-1.la \ + $(NULL) -dbus_launch_LDADD= $(DBUS_X_LIBS) $(DBUS_CLIENT_LIBS) -dbus_launch_LDFLAGS=@R_DYNAMIC_LDFLAG@ +dbus_launch_LDADD = \ + $(DBUS_X_LIBS) \ + $(NULL) EXTRA_DIST = run-with-tmp-session-bus.sh strtoll.c strtoull.c CLEANFILES = \ diff --git a/tools/Makefile.in b/tools/Makefile.in index 06b702cd..5326a260 100644 --- a/tools/Makefile.in +++ b/tools/Makefile.in @@ -35,9 +35,13 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -@DBUS_UNIX_TRUE@am__append_1 = dbus-cleanup-sockets dbus-uuidgen -bin_PROGRAMS = dbus-launch$(EXEEXT) dbus-send$(EXEEXT) \ - dbus-monitor$(EXEEXT) $(am__EXEEXT_2) +bin_PROGRAMS = dbus-launch$(EXEEXT) dbus-monitor$(EXEEXT) \ + dbus-send$(EXEEXT) $(am__EXEEXT_1) +@DBUS_UNIX_TRUE@am__append_1 = \ +@DBUS_UNIX_TRUE@ dbus-cleanup-sockets \ +@DBUS_UNIX_TRUE@ dbus-uuidgen \ +@DBUS_UNIX_TRUE@ $(NULL) + subdir = tools DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -56,7 +60,6 @@ CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = @DBUS_UNIX_TRUE@am__EXEEXT_1 = dbus-cleanup-sockets$(EXEEXT) \ @DBUS_UNIX_TRUE@ dbus-uuidgen$(EXEEXT) -am__EXEEXT_2 = $(am__EXEEXT_1) am__installdirs = "$(DESTDIR)$(bindir)" \ "$(DESTDIR)$(localstatelibdir)" PROGRAMS = $(bin_PROGRAMS) @@ -73,33 +76,19 @@ am__dbus_launch_SOURCES_DIST = dbus-launch.c dbus-launch-x11.c \ @DBUS_WIN_TRUE@am_dbus_launch_OBJECTS = dbus-launch-win.$(OBJEXT) dbus_launch_OBJECTS = $(am_dbus_launch_OBJECTS) am__DEPENDENCIES_1 = -dbus_launch_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -dbus_launch_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(dbus_launch_LDFLAGS) $(LDFLAGS) -o $@ +dbus_launch_DEPENDENCIES = $(am__DEPENDENCIES_1) am_dbus_monitor_OBJECTS = dbus-monitor.$(OBJEXT) \ dbus-print-message.$(OBJEXT) dbus_monitor_OBJECTS = $(am_dbus_monitor_OBJECTS) dbus_monitor_DEPENDENCIES = $(top_builddir)/dbus/libdbus-1.la \ $(am__DEPENDENCIES_1) -dbus_monitor_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(dbus_monitor_LDFLAGS) $(LDFLAGS) -o $@ am_dbus_send_OBJECTS = dbus-print-message.$(OBJEXT) \ dbus-send.$(OBJEXT) dbus_send_OBJECTS = $(am_dbus_send_OBJECTS) -dbus_send_DEPENDENCIES = $(top_builddir)/dbus/libdbus-1.la \ - $(am__DEPENDENCIES_1) -dbus_send_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(dbus_send_LDFLAGS) $(LDFLAGS) -o $@ +dbus_send_DEPENDENCIES = $(top_builddir)/dbus/libdbus-1.la am_dbus_uuidgen_OBJECTS = dbus-uuidgen.$(OBJEXT) dbus_uuidgen_OBJECTS = $(am_dbus_uuidgen_OBJECTS) -dbus_uuidgen_DEPENDENCIES = $(top_builddir)/dbus/libdbus-1.la \ - $(am__DEPENDENCIES_1) -dbus_uuidgen_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(dbus_uuidgen_LDFLAGS) $(LDFLAGS) -o $@ +dbus_uuidgen_DEPENDENCIES = $(top_builddir)/dbus/libdbus-1.la DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -158,6 +147,7 @@ ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ +ADT_LIBS = @ADT_LIBS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ @@ -178,10 +168,6 @@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DBUS_BINDIR = @DBUS_BINDIR@ -DBUS_BUS_CFLAGS = @DBUS_BUS_CFLAGS@ -DBUS_BUS_LIBS = @DBUS_BUS_LIBS@ -DBUS_CLIENT_CFLAGS = @DBUS_CLIENT_CFLAGS@ -DBUS_CLIENT_LIBS = @DBUS_CLIENT_LIBS@ DBUS_CONSOLE_AUTH_DIR = @DBUS_CONSOLE_AUTH_DIR@ DBUS_CONSOLE_OWNER_FILE = @DBUS_CONSOLE_OWNER_FILE@ DBUS_DAEMONDIR = @DBUS_DAEMONDIR@ @@ -193,8 +179,6 @@ DBUS_INT16_TYPE = @DBUS_INT16_TYPE@ DBUS_INT32_TYPE = @DBUS_INT32_TYPE@ DBUS_INT64_CONSTANT = @DBUS_INT64_CONSTANT@ DBUS_INT64_TYPE = @DBUS_INT64_TYPE@ -DBUS_LAUNCHER_CFLAGS = @DBUS_LAUNCHER_CFLAGS@ -DBUS_LAUNCHER_LIBS = @DBUS_LAUNCHER_LIBS@ DBUS_LIBEXECDIR = @DBUS_LIBEXECDIR@ DBUS_MAJOR_VERSION = @DBUS_MAJOR_VERSION@ DBUS_MICRO_VERSION = @DBUS_MICRO_VERSION@ @@ -206,8 +190,6 @@ DBUS_SESSION_SOCKET_DIR = @DBUS_SESSION_SOCKET_DIR@ DBUS_SYSTEM_BUS_DEFAULT_ADDRESS = @DBUS_SYSTEM_BUS_DEFAULT_ADDRESS@ DBUS_SYSTEM_PID_FILE = @DBUS_SYSTEM_PID_FILE@ DBUS_SYSTEM_SOCKET = @DBUS_SYSTEM_SOCKET@ -DBUS_TEST_CFLAGS = @DBUS_TEST_CFLAGS@ -DBUS_TEST_LIBS = @DBUS_TEST_LIBS@ DBUS_UINT64_CONSTANT = @DBUS_UINT64_CONSTANT@ DBUS_USER = @DBUS_USER@ DBUS_VERSION = @DBUS_VERSION@ @@ -245,6 +227,7 @@ LAUNCHCTL = @LAUNCHCTL@ LAUNCHD_AGENT_DIR = @LAUNCHD_AGENT_DIR@ LD = @LD@ LDFLAGS = @LDFLAGS@ +LIBDBUS_LIBS = @LIBDBUS_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -261,6 +244,7 @@ MAKEINFO = @MAKEINFO@ MAN2HTML = @MAN2HTML@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ +NETWORK_libs = @NETWORK_libs@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ @@ -280,6 +264,7 @@ RANLIB = @RANLIB@ RC = @RC@ R_DYNAMIC_LDFLAG = @R_DYNAMIC_LDFLAG@ SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -296,10 +281,13 @@ TEST_SLEEP_FOREVER_BINARY = @TEST_SLEEP_FOREVER_BINARY@ TEST_SOCKET_DIR = @TEST_SOCKET_DIR@ TEST_VALID_SERVICE_DIR = @TEST_VALID_SERVICE_DIR@ TEST_VALID_SERVICE_SYSTEM_DIR = @TEST_VALID_SERVICE_SYSTEM_DIR@ +THREAD_LIBS = @THREAD_LIBS@ VERSION = @VERSION@ WINDRES = @WINDRES@ XMKMF = @XMKMF@ XMLTO = @XMLTO@ +XML_CFLAGS = @XML_CFLAGS@ +XML_LIBS = @XML_LIBS@ XSLTPROC = @XSLTPROC@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ @@ -360,8 +348,16 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ configdir = $(sysconfdir)/dbus-1 -INCLUDES = -I$(top_srcdir) $(DBUS_CLIENT_CFLAGS) $(DBUS_X_CFLAGS) -DDBUS_LOCALEDIR=\"@EXPANDED_DATADIR@/locale\" -DDBUS_COMPILATION -DDBUS_MACHINE_UUID_FILE=\""$(localstatedir)/lib/dbus/machine-id"\" -extra_bin_programs = $(am__append_1) +AM_CPPFLAGS = \ + -I$(top_srcdir) \ + $(DBUS_X_CFLAGS) \ + -DDBUS_COMPILATION \ + -DDBUS_MACHINE_UUID_FILE=\""$(localstatedir)/lib/dbus/machine-id"\" \ + $(NULL) + + +# if assertions are enabled, improve backtraces +AM_LDFLAGS = @R_DYNAMIC_LDFLAG@ dbus_send_SOURCES = \ dbus-print-message.c \ dbus-print-message.h \ @@ -387,14 +383,23 @@ dbus_cleanup_sockets_SOURCES = \ dbus_uuidgen_SOURCES = \ dbus-uuidgen.c -dbus_send_LDADD = $(top_builddir)/dbus/libdbus-1.la $(DBUS_CLIENT_LIBS) -dbus_send_LDFLAGS = @R_DYNAMIC_LDFLAG@ -dbus_monitor_LDADD = $(top_builddir)/dbus/libdbus-1.la $(DBUS_CLIENT_LIBS) -dbus_monitor_LDFLAGS = @R_DYNAMIC_LDFLAG@ -dbus_uuidgen_LDADD = $(top_builddir)/dbus/libdbus-1.la $(DBUS_CLIENT_LIBS) -dbus_uuidgen_LDFLAGS = @R_DYNAMIC_LDFLAG@ -dbus_launch_LDADD = $(DBUS_X_LIBS) $(DBUS_CLIENT_LIBS) -dbus_launch_LDFLAGS = @R_DYNAMIC_LDFLAG@ +dbus_send_LDADD = \ + $(top_builddir)/dbus/libdbus-1.la \ + $(NULL) + +dbus_monitor_LDADD = \ + $(top_builddir)/dbus/libdbus-1.la \ + $(NETWORK_libs) \ + $(NULL) + +dbus_uuidgen_LDADD = \ + $(top_builddir)/dbus/libdbus-1.la \ + $(NULL) + +dbus_launch_LDADD = \ + $(DBUS_X_LIBS) \ + $(NULL) + EXTRA_DIST = run-with-tmp-session-bus.sh strtoll.c strtoull.c CLEANFILES = \ run-with-tmp-session-bus.conf @@ -485,16 +490,16 @@ dbus-cleanup-sockets$(EXEEXT): $(dbus_cleanup_sockets_OBJECTS) $(dbus_cleanup_so $(AM_V_CCLD)$(LINK) $(dbus_cleanup_sockets_OBJECTS) $(dbus_cleanup_sockets_LDADD) $(LIBS) dbus-launch$(EXEEXT): $(dbus_launch_OBJECTS) $(dbus_launch_DEPENDENCIES) @rm -f dbus-launch$(EXEEXT) - $(AM_V_CCLD)$(dbus_launch_LINK) $(dbus_launch_OBJECTS) $(dbus_launch_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(dbus_launch_OBJECTS) $(dbus_launch_LDADD) $(LIBS) dbus-monitor$(EXEEXT): $(dbus_monitor_OBJECTS) $(dbus_monitor_DEPENDENCIES) @rm -f dbus-monitor$(EXEEXT) - $(AM_V_CCLD)$(dbus_monitor_LINK) $(dbus_monitor_OBJECTS) $(dbus_monitor_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(dbus_monitor_OBJECTS) $(dbus_monitor_LDADD) $(LIBS) dbus-send$(EXEEXT): $(dbus_send_OBJECTS) $(dbus_send_DEPENDENCIES) @rm -f dbus-send$(EXEEXT) - $(AM_V_CCLD)$(dbus_send_LINK) $(dbus_send_OBJECTS) $(dbus_send_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(dbus_send_OBJECTS) $(dbus_send_LDADD) $(LIBS) dbus-uuidgen$(EXEEXT): $(dbus_uuidgen_OBJECTS) $(dbus_uuidgen_DEPENDENCIES) @rm -f dbus-uuidgen$(EXEEXT) - $(AM_V_CCLD)$(dbus_uuidgen_LINK) $(dbus_uuidgen_OBJECTS) $(dbus_uuidgen_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(dbus_uuidgen_OBJECTS) $(dbus_uuidgen_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) diff --git a/tools/dbus-launch-x11.c b/tools/dbus-launch-x11.c index 0f344abe..c7e33309 100644 --- a/tools/dbus-launch-x11.c +++ b/tools/dbus-launch-x11.c @@ -248,7 +248,7 @@ init_x_atoms (Display *display) user = getpwuid (getuid ()); if (user == NULL) { - verbose ("Could not determine the user informations; aborting X11 integration.\n"); + verbose ("Could not determine user information; aborting X11 integration.\n"); return FALSE; } user_name = xstrdup(user->pw_name); diff --git a/tools/dbus-monitor.c b/tools/dbus-monitor.c index 5edb5c0b..e187ee4d 100644 --- a/tools/dbus-monitor.c +++ b/tools/dbus-monitor.c @@ -35,6 +35,8 @@ #include "dbus-print-message.h" +#define EAVESDROPPING_RULE "eavesdrop=true" + #ifdef DBUS_WIN /* gettimeofday is not defined on windows */ @@ -76,6 +78,13 @@ gettimeofday (struct timeval *__p, } #endif +inline static void +oom (const char *doing) +{ + fprintf (stderr, "OOM while %s\n", doing); + exit (1); +} + static DBusHandlerResult monitor_filter_func (DBusConnection *connection, DBusMessage *message, @@ -299,11 +308,21 @@ main (int argc, char *argv[]) else if (arg[0] == '-') usage (argv[0], 1); else { - numFilters++; - filters = (char **)realloc(filters, numFilters * sizeof(char *)); - filters[j] = (char *)malloc((strlen(arg) + 1) * sizeof(char *)); - snprintf(filters[j], strlen(arg) + 1, "%s", arg); - j++; + unsigned int filter_len; + numFilters++; + /* Prepend a rule (and a comma) to enable the monitor to eavesdrop. + * Prepending allows the user to add eavesdrop=false at command line + * in order to disable eavesdropping when needed */ + filter_len = strlen (EAVESDROPPING_RULE) + 1 + strlen (arg) + 1; + + filters = (char **) realloc (filters, numFilters * sizeof (char *)); + if (filters == NULL) + oom ("adding a new filter slot"); + filters[j] = (char *) malloc (filter_len * sizeof (char *)); + if (filters[j] == NULL) + oom ("adding a new filter"); + snprintf (filters[j], filter_len, "%s,%s", EAVESDROPPING_RULE, arg); + j++; } } @@ -369,22 +388,22 @@ main (int argc, char *argv[]) else { dbus_bus_add_match (connection, - "type='signal'", + EAVESDROPPING_RULE ",type='signal'", &error); if (dbus_error_is_set (&error)) goto lose; dbus_bus_add_match (connection, - "type='method_call'", + EAVESDROPPING_RULE ",type='method_call'", &error); if (dbus_error_is_set (&error)) goto lose; dbus_bus_add_match (connection, - "type='method_return'", + EAVESDROPPING_RULE ",type='method_return'", &error); if (dbus_error_is_set (&error)) goto lose; dbus_bus_add_match (connection, - "type='error'", + EAVESDROPPING_RULE ",type='error'", &error); if (dbus_error_is_set (&error)) goto lose; |