merged cont.
[opensuse:yast-rest-service.git] / webservice / test / dbus-launch-simple
1 #! /bin/sh
2 #--
3 # Webyast Webservice framework
4 #
5 # Copyright (C) 2010 Novell, Inc. 
6 #   This library is free software; you can redistribute it and/or modify
7 # it only under the terms of version 2.1 of the GNU Lesser General Public
8 # License as published by the Free Software Foundation. 
9 #
10 #   This library is distributed in the hope that it will be useful, but WITHOUT
11 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 
13 # details. 
14 #
15 #   You should have received a copy of the GNU Lesser General Public
16 # License along with this library; if not, write to the Free Software 
17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 #++
19 # A wrapper for DBus tests
20 # Reimplementing dbus-launch because it is in dbus-1-x11.rpm
21 # Sets up a private session bus and call the specified program
22 set -o errexit
23
24 # This launches the bus daemon,
25 # exports DBUS_SESSION_BUS_ADDRESS and sets DBUS_SESSION_BUS_PID
26 my_dbus_launch () {
27     # reimplementing dbus-launch because it is in dbus-1-x11.rpm
28     PF=`mktemp dbus.pid.XXXXXX` || exit
29     AF=`mktemp dbus.addr.XXXXXX` || exit
30     RM_FILES="$RM_FILES $PF $AF"
31
32     dbus-daemon --session --print-address=3 3>$AF --print-pid=4 4>$PF &
33     # wait for the daemon to print the info
34     TRIES=0
35     while [ ! -s $AF -o ! -s $PF ]; do
36         sleep 0.1
37         TRIES=`expr $TRIES + 1`
38         if [ $TRIES -gt 100 ]; then echo "dbus-daemon failed?"; exit 1; fi
39     done
40     DBUS_SESSION_BUS_PID=$(cat $PF)
41     export DBUS_SESSION_BUS_ADDRESS=$(cat $AF)
42     KILLS="$KILLS $DBUS_SESSION_BUS_PID"
43 #    dbus-monitor &
44 }
45
46 my_dbus_launch
47
48 # Clean up at exit.
49 trap "kill \$KILLS; rm -rf \$RM_FILES" EXIT TERM INT
50
51 # run the payload; the return value is passed on
52 "$@"