summaryrefslogtreecommitdiffstats
path: root/transfer
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2007-01-14 03:14:29 +0000
committerMarcel Holtmann <marcel@holtmann.org>2007-01-14 03:14:29 +0000
commit3878608eb72003883d2398e18f75354a9089e66c (patch)
tree3f5064efa7ed5f3d353ee684c85a34902daf8b19 /transfer
parent6807e26a08e866f2e958169b97e4279112830542 (diff)
Add D-Bus skeleton
Diffstat (limited to 'transfer')
-rw-r--r--transfer/Makefile.am8
-rw-r--r--transfer/bluetooth-transfer.conf8
-rw-r--r--transfer/main.c70
3 files changed, 86 insertions, 0 deletions
diff --git a/transfer/Makefile.am b/transfer/Makefile.am
index babe164e..8749fde2 100644
--- a/transfer/Makefile.am
+++ b/transfer/Makefile.am
@@ -1,5 +1,11 @@
if OBEX
+if CONFIGFILES
+dbusdir = $(sysconfdir)/dbus-1/system.d
+
+dbus_DATA = bluetooth-transfer.conf
+endif
+
noinst_PROGRAMS = transferd
transferd_SOURCES = main.c
@@ -12,4 +18,6 @@ AM_CFLAGS = @BLUEZ_CFLAGS@ @OPENOBEX_CFLAGS@ @DBUS_CFLAGS@
INCLUDES = -I$(top_srcdir)/common
+EXTRA_DIST = bluetooth-transfer.conf
+
MAINTAINERCLEANFILES = Makefile.in
diff --git a/transfer/bluetooth-transfer.conf b/transfer/bluetooth-transfer.conf
new file mode 100644
index 00000000..835f1557
--- /dev/null
+++ b/transfer/bluetooth-transfer.conf
@@ -0,0 +1,8 @@
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+
+<busconfig>
+ <policy context="mandatory">
+ <allow own="org.bluez.transfer"/>
+ </policy>
+</busconfig>
diff --git a/transfer/main.c b/transfer/main.c
index 5b2536ec..39bd9248 100644
--- a/transfer/main.c
+++ b/transfer/main.c
@@ -25,7 +25,77 @@
#include <config.h>
#endif
+#include <string.h>
+#include <signal.h>
+#include <sys/stat.h>
+
+#include <dbus/dbus.h>
+
+#include "glib-ectomy.h"
+
+#include "logging.h"
+#include "dbus.h"
+
+static GMainLoop *main_loop;
+
+static DBusConnection *system_bus;
+
+static void sig_term(int sig)
+{
+ g_main_loop_quit(main_loop);
+}
+
+static void sig_hup(int sig)
+{
+}
+
+static void sig_debug(int sig)
+{
+ toggle_debug();
+}
+
int main(int argc, char *argv[])
{
+ struct sigaction sa;
+
+ umask(0077);
+
+ start_logging("transfer", "Bluetooth transfer service ver %s", VERSION);
+
+ memset(&sa, 0, sizeof(sa));
+ sa.sa_flags = SA_NOCLDSTOP;
+ sa.sa_handler = sig_term;
+ sigaction(SIGTERM, &sa, NULL);
+ sigaction(SIGINT, &sa, NULL);
+ sa.sa_handler = sig_hup;
+ sigaction(SIGHUP, &sa, NULL);
+
+ sa.sa_handler = sig_debug;
+ sigaction(SIGUSR2, &sa, NULL);
+
+ sa.sa_handler = SIG_IGN;
+ sigaction(SIGCHLD, &sa, NULL);
+ sigaction(SIGPIPE, &sa, NULL);
+
+ enable_debug();
+
+ main_loop = g_main_loop_new(NULL, FALSE);
+
+ system_bus = init_dbus("org.bluez.transfer", NULL, NULL);
+ if (!system_bus) {
+ g_main_loop_unref(main_loop);
+ exit(1);
+ }
+
+ g_main_loop_run(main_loop);
+
+ dbus_connection_unref(system_bus);
+
+ g_main_loop_unref(main_loop);
+
+ info("Exit");
+
+ stop_logging();
+
return 0;
}