From ba01fa44feb6deb0f0359f381eafe866991c06c1 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Thu, 12 May 2011 13:46:33 +0200 Subject: app: Introduce some routines to help with application startup The plan is to collect structs and routines for application setup and remove many copies of the boilerplate code we have right now. This starts with routines to ignore certain signals and the stderr init code. Increment the age of the library because a new interface was added. --- include/osmocom/core/Makefile.am | 2 +- include/osmocom/core/application.h | 16 +++++++++++++ src/Makefile.am | 4 ++-- src/application.c | 49 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 include/osmocom/core/application.h create mode 100644 src/application.c diff --git a/include/osmocom/core/Makefile.am b/include/osmocom/core/Makefile.am index b21e0476..36988733 100644 --- a/include/osmocom/core/Makefile.am +++ b/include/osmocom/core/Makefile.am @@ -3,7 +3,7 @@ osmocore_HEADERS = signal.h linuxlist.h timer.h select.h msgb.h bits.h \ gsmtap.h write_queue.h \ logging.h rate_ctr.h gsmtap_util.h \ plugin.h crc16.h panic.h process.h msgfile.h \ - backtrace.h conv.h + backtrace.h conv.h application.h if ENABLE_TALLOC osmocore_HEADERS += talloc.h diff --git a/include/osmocom/core/application.h b/include/osmocom/core/application.h new file mode 100644 index 00000000..c1642ec4 --- /dev/null +++ b/include/osmocom/core/application.h @@ -0,0 +1,16 @@ +#ifndef OSMO_APPLICATION_H +#define OSMO_APPLICATION_H + +/** + * Routines for helping with the application setup. + */ + +struct log_info; +struct log_target; + +extern struct log_target *osmo_stderr_target; + +void osmo_init_ignore_signals(void); +int osmo_init_logging(const struct log_info *); + +#endif diff --git a/src/Makefile.am b/src/Makefile.am index 8383a95b..e58bc286 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -2,7 +2,7 @@ SUBDIRS=. vty codec gsm # This is _NOT_ the library release version, it's an API version. # Please read Chapter 6 "Library interface versions" of the libtool documentation before making any modification -LIBVERSION=1:0:0 +LIBVERSION=1:0:1 INCLUDES = $(all_includes) -I$(top_srcdir)/include AM_CFLAGS = -fPIC -Wall @@ -14,7 +14,7 @@ libosmocore_la_SOURCES = timer.c select.c signal.c msgb.c bits.c \ write_queue.c utils.c \ logging.c logging_syslog.c rate_ctr.c \ gsmtap_util.c crc16.c panic.c backtrace.c \ - process.c conv.c + process.c conv.c application.c if ENABLE_PLUGIN libosmocore_la_SOURCES += plugin.c diff --git a/src/application.c b/src/application.c new file mode 100644 index 00000000..96b4204e --- /dev/null +++ b/src/application.c @@ -0,0 +1,49 @@ +/* Utility functions to setup applications */ +/* + * (C) 2011 by Holger Hans Peter Freyther + * + * All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +#include +#include + +#include + +struct log_target *osmo_stderr_target; + +void osmo_init_ignore_signals(void) +{ + /* Signals that by default would terminate */ + signal(SIGPIPE, SIG_IGN); + signal(SIGALRM, SIG_IGN); + signal(SIGHUP, SIG_IGN); + signal(SIGIO, SIG_IGN); +} + +int osmo_init_logging(const struct log_info *log_info) +{ + log_init(log_info); + osmo_stderr_target = log_target_create_stderr(); + if (!osmo_stderr_target) + return -1; + + log_add_target(osmo_stderr_target); + log_set_all_filter(osmo_stderr_target, 1); + return 0; +} -- cgit v1.2.3