summaryrefslogtreecommitdiffstats
path: root/input/main.c
diff options
context:
space:
mode:
authorJohan Hedberg <johan.hedberg@nokia.com>2006-11-11 23:14:14 +0000
committerJohan Hedberg <johan.hedberg@nokia.com>2006-11-11 23:14:14 +0000
commit3eb0a5cd951b680c89f92bce6dddce2da2539af0 (patch)
treea57f71cb98c018b4fc09c6f0ff019c7b740e3605 /input/main.c
parentcd3839f1d911767db77d1383e2ac1b1df405bed2 (diff)
Initial service skeleton for bt.inputd
Diffstat (limited to 'input/main.c')
-rw-r--r--input/main.c69
1 files changed, 69 insertions, 0 deletions
diff --git a/input/main.c b/input/main.c
index c04bb251..df3b5160 100644
--- a/input/main.c
+++ b/input/main.c
@@ -26,9 +26,78 @@
#endif
#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
#include <errno.h>
+#include <signal.h>
+#include <getopt.h>
+#include <dbus/dbus.h>
+
+#include "dbus.h"
+#include "logging.h"
+#include "glib-ectomy.h"
+
+#include "input-service.h"
+
+static GMainLoop *main_loop;
+
+static void usage(void)
+{
+ printf("bt.inputd - Bluetooth Input daemon ver %s\n", VERSION);
+ printf("Usage: \n");
+ printf("\tbt.inputd [-n not_daemon]\n");
+}
+
+static void sig_term(int sig)
+{
+ g_main_quit(main_loop);
+}
int main(int argc, char *argv[])
{
+ struct sigaction sa;
+ int opt, daemonize = 1;
+
+ while ((opt = getopt(argc, argv, "n")) != EOF) {
+ switch (opt) {
+ case 'n':
+ daemonize = 0;
+ break;
+
+ default:
+ usage();
+ exit(1);
+ }
+ }
+
+ if (daemonize && daemon(0, 0)) {
+ error("Can't daemonize: %s (%d)", strerror(errno), errno);
+ exit(1);
+ }
+
+ start_logging("bt.inputd", "Bluetooth Input daemon");
+
+ 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_IGN;
+ sigaction(SIGCHLD, &sa, NULL);
+ sigaction(SIGPIPE, &sa, NULL);
+
+ enable_debug();
+
+ /* Create event loop */
+ main_loop = g_main_new(FALSE);
+
+ if (input_dbus_init() < 0) {
+ error("Unable to get on D-Bus");
+ exit(1);
+ }
+
+ g_main_run(main_loop);
+
return 0;
}