From 050539e2e300215c1a3be80e6b0221e6720ae733 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 11 May 2014 10:39:22 -0700 Subject: [PATCH] core: Add skeleton for main daemon --- .gitignore | 1 + Makefile.am | 5 +++++ src/main.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 src/main.c diff --git a/.gitignore b/.gitignore index f4ce6583..af585eeb 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ stamp-h1 build-aux autom4te.cache ell +src/iwd diff --git a/Makefile.am b/Makefile.am index 858cbd8a..e1b818e9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -27,6 +27,11 @@ ell_sources = ell/ell.h ell/private.h \ ell_libell_internal_la_SOURCES = $(ell_sources) +bin_PROGRAMS = src/iwd + +src_iwd_SOURCES = src/main.c +src_iwd_LDADD = ell/libell-internal.la + AM_CFLAGS = -fvisibility=hidden MAINTAINERCLEANFILES = Makefile.in configure config.h.in aclocal.m4 diff --git a/src/main.c b/src/main.c new file mode 100644 index 00000000..2157677b --- /dev/null +++ b/src/main.c @@ -0,0 +1,64 @@ +/* + * + * Wireless daemon for Linux + * + * Copyright (C) 2013-2014 Intel Corporation. All rights reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include + +static void signal_handler(struct l_signal *signal, uint32_t signo, + void *user_data) +{ + switch (signo) { + case SIGINT: + case SIGTERM: + l_info("Terminate"); + l_main_quit(); + break; + } +} + +int main(int argc, char *argv[]) +{ + struct l_signal *signal; + sigset_t mask; + + sigemptyset(&mask); + sigaddset(&mask, SIGINT); + sigaddset(&mask, SIGTERM); + + signal = l_signal_create(&mask, signal_handler, NULL, NULL); + + l_log_set_stderr(); + + l_info("Wireless daemon version %s", VERSION); + + l_debug_enable("*"); + + l_main_run(); + + l_signal_remove(signal); + + return EXIT_SUCCESS; +}