app: Introduce some routines to help with application startup
authorHolger Hans Peter Freyther <zecke@selfish.org>
Thu, 12 May 2011 11:46:33 +0000 (13:46 +0200)
committerHolger Hans Peter Freyther <zecke@selfish.org>
Thu, 12 May 2011 13:43:47 +0000 (15:43 +0200)
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
include/osmocom/core/application.h [new file with mode: 0644]
src/Makefile.am
src/application.c [new file with mode: 0644]

index b21e047..3698873 100644 (file)
@@ -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 (file)
index 0000000..c1642ec
--- /dev/null
@@ -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
index 8383a95..e58bc28 100644 (file)
@@ -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 (file)
index 0000000..96b4204
--- /dev/null
@@ -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 <osmocom/core/application.h>
+#include <osmocom/core/logging.h>
+
+#include <signal.h>
+
+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;
+}