diff --git a/obexd/client/main.c b/obexd/client/main.c
index b3b9c1d..5c5bae1 100644
--- a/obexd/client/main.c
+++ b/obexd/client/main.c
#include <config.h>
#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <signal.h>
+
+#include <glib.h>
+#include <gdbus.h>
+
+#define CLIENT_SERVICE "org.openobex.client"
+
+#define CLIENT_INTERFACE "org.openobex.Client"
+#define CLIENT_PATH "/"
+
+static DBusMessage *push_file(DBusConnection *connection,
+ DBusMessage *message, void *user_data)
+{
+ DBusMessage *reply;
+
+ reply = dbus_message_new_method_return(message);
+ if (!reply)
+ return NULL;
+
+ return reply;
+}
+
+static GDBusMethodTable client_methods[] = {
+ { "PushFile", "s", "", push_file },
+ { }
+};
+
+static GMainLoop *event_loop = NULL;
+
+static void sig_term(int sig)
+{
+ g_main_loop_quit(event_loop);
+}
+
int main(int argc, char *argv[])
{
+ struct sigaction sa;
+ DBusConnection *conn;
+ DBusError err;
+
+ dbus_error_init(&err);
+
+ conn = g_dbus_setup_bus(DBUS_BUS_SESSION, CLIENT_SERVICE, &err);
+ if (conn == NULL) {
+ if (dbus_error_is_set(&err) == TRUE) {
+ fprintf(stderr, "%s\n", err.message);
+ dbus_error_free(&err);
+ } else
+ fprintf(stderr, "Can't register with session bus\n");
+ exit(EXIT_FAILURE);
+ }
+
+ if (g_dbus_register_interface(conn, CLIENT_PATH, CLIENT_INTERFACE,
+ client_methods, NULL, NULL,
+ NULL, NULL) == FALSE) {
+ fprintf(stderr, "Can't register client interface\n");
+ dbus_connection_unref(conn);
+ exit(EXIT_FAILURE);
+ }
+
+ event_loop = g_main_loop_new(NULL, FALSE);
+
+ memset(&sa, 0, sizeof(sa));
+ sa.sa_handler = sig_term;
+ sigaction(SIGINT, &sa, NULL);
+ sigaction(SIGTERM, &sa, NULL);
+
+ g_main_loop_run(event_loop);
+
+ g_dbus_unregister_interface(conn, CLIENT_PATH, CLIENT_INTERFACE);
+
+ dbus_connection_unref(conn);
+
+ g_main_loop_unref(event_loop);
+
return 0;
}