From: Gunnar Beutner Date: Fri, 28 Sep 2012 11:16:08 +0000 (+0200) Subject: Added methods for retrieving the installation prefix and local state dir. X-Git-Tag: v0.0.1~56^2~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=47fa56a80537fb4d95fb3ee95e2370dcba82bd32;p=icinga2 Added methods for retrieving the installation prefix and local state dir. --- diff --git a/configure.ac b/configure.ac index 79de2aa2b..e7c1eb55e 100644 --- a/configure.ac +++ b/configure.ac @@ -66,6 +66,12 @@ AC_CHECK_LIB(ws2_32, getsockname) AC_CHECK_LIB(shlwapi, PathRemoveFileSpecA) AC_CHECK_FUNCS([backtrace_symbols]) +AS_AC_EXPAND([ICINGA_PREFIX], $prefix) +AC_DEFINE_UNQUOTED([ICINGA_PREFIX], "$ICINGA_PREFIX", [The installation prefix.]) + +AS_AC_EXPAND([ICINGA_LOCALSTATEDIR], $localstatedir) +AC_DEFINE_UNQUOTED([ICINGA_LOCALSTATEDIR], "$ICINGA_LOCALSTATEDIR", [The local state dir.]) + AC_CONFIG_FILES([ Makefile components/Makefile diff --git a/icinga-app/Makefile.am b/icinga-app/Makefile.am index 8c7a64dfa..f59b98f26 100644 --- a/icinga-app/Makefile.am +++ b/icinga-app/Makefile.am @@ -17,8 +17,7 @@ icinga2_CPPFLAGS = \ -I${top_srcdir}/lib/config \ -I${top_srcdir}/lib/remoting \ -I${top_srcdir}/lib/icinga \ - -I${top_srcdir} \ - -DICINGA_LIBDIR="\"$(pkglibdir)\"" + -I${top_srcdir} icinga2_LDFLAGS = \ $(BOOST_LDFLAGS) \ diff --git a/icinga-app/icinga.cpp b/icinga-app/icinga.cpp index 3b9475f5a..8a7e1ad3a 100644 --- a/icinga-app/icinga.cpp +++ b/icinga-app/icinga.cpp @@ -113,6 +113,14 @@ int main(int argc, char **argv) * in the base library. */ Application::SetMainThread(); +#ifdef ICINGA_PREFIX + Application::SetPrefixDir(ICINGA_PREFIX); +#endif /* ICINGA_PREFIX */ + +#ifdef ICINGA_LOCALSTATEDIR + Application::SetLocalStateDir(ICINGA_LOCALSTATEDIR); +#endif /* ICINGA_LOCALSTATEDIR */ + Logger::Write(LogInformation, "icinga", "Icinga application loader" #ifndef _WIN32 " (version: " ICINGA_VERSION ")" diff --git a/lib/base/application.cpp b/lib/base/application.cpp index a445a1c20..0ebdd92ad 100644 --- a/lib/base/application.cpp +++ b/lib/base/application.cpp @@ -29,6 +29,8 @@ Application *Application::m_Instance = NULL; bool Application::m_ShuttingDown = false; bool Application::m_Debugging = false; boost::thread::id Application::m_MainThreadID; +String Application::m_PrefixDir; +String Application::m_LocalStateDir; /** * Constructor for the Application class. @@ -398,3 +400,49 @@ void Application::ClosePidFile(void) m_PidFile = NULL; } +/** + * Retrieves the path of the installation prefix. + * + * @returns The path. + */ +String Application::GetPrefixDir(void) +{ + if (m_PrefixDir.IsEmpty()) + return "./"; + else + return m_PrefixDir; +} + +/** + * Sets the path for the installation prefix. + * + * @param path The new path. + */ +void Application::SetPrefixDir(const String& path) +{ + m_PrefixDir = path; +} + +/** + * Retrieves the path for the local state dir. + * + * @returns The path. + */ +String Application::GetLocalStateDir(void) +{ + if (m_LocalStateDir.IsEmpty()) + return "./var/"; + else + return m_LocalStateDir; +} + +/** + * Sets the path for the local state dir. + * + * @param path The new path. + */ +void Application::SetLocalStateDir(const String& path) +{ + m_LocalStateDir = path; +} + diff --git a/lib/base/application.h b/lib/base/application.h index 3d9b644f6..390a7dc2f 100644 --- a/lib/base/application.h +++ b/lib/base/application.h @@ -62,6 +62,12 @@ public: static String GetExePath(const String& argv0); + static String GetPrefixDir(void); + static void SetPrefixDir(const String& path); + + static String GetLocalStateDir(void); + static void SetLocalStateDir(const String& path); + protected: void RunEventLoop(void); @@ -74,6 +80,8 @@ private: FILE *m_PidFile; /**< The PID file */ static bool m_Debugging; /**< Whether debugging is enabled. */ static boost::thread::id m_MainThreadID; /**< ID of the main thread. */ + static String m_PrefixDir; /**< The installation prefix. */ + static String m_LocalStateDir; /**< The local state dir. */ #ifndef _WIN32 static void SigIntHandler(int signum); diff --git a/m4/as-ac-expand.m4 b/m4/as-ac-expand.m4 new file mode 100644 index 000000000..d6c9e3306 --- /dev/null +++ b/m4/as-ac-expand.m4 @@ -0,0 +1,43 @@ +dnl as-ac-expand.m4 0.2.0 +dnl autostars m4 macro for expanding directories using configure's prefix +dnl thomas@apestaart.org + +dnl AS_AC_EXPAND(VAR, CONFIGURE_VAR) +dnl example +dnl AS_AC_EXPAND(SYSCONFDIR, $sysconfdir) +dnl will set SYSCONFDIR to /usr/local/etc if prefix=/usr/local + +AC_DEFUN([AS_AC_EXPAND], +[ + EXP_VAR=[$1] + FROM_VAR=[$2] + + dnl first expand prefix and exec_prefix if necessary + prefix_save=$prefix + exec_prefix_save=$exec_prefix + + dnl if no prefix given, then use /usr/local, the default prefix + if test "x$prefix" = "xNONE"; then + prefix="$ac_default_prefix" + fi + dnl if no exec_prefix given, then use prefix + if test "x$exec_prefix" = "xNONE"; then + exec_prefix=$prefix + fi + + full_var="$FROM_VAR" + dnl loop until it doesn't change anymore + while true; do + new_full_var="`eval echo $full_var`" + if test "x$new_full_var" = "x$full_var"; then break; fi + full_var=$new_full_var + done + + dnl clean up + full_var=$new_full_var + AC_SUBST([$1], "$full_var") + + dnl restore prefix and exec_prefix + prefix=$prefix_save + exec_prefix=$exec_prefix_save +])