Added methods for retrieving the installation prefix and local state dir.

This commit is contained in:
Gunnar Beutner 2012-09-28 13:16:08 +02:00
parent 23cd92803b
commit 47fa56a805
6 changed files with 114 additions and 2 deletions

View File

@ -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

View File

@ -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) \

View File

@ -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 ")"

View File

@ -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;
}

View File

@ -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);

43
m4/as-ac-expand.m4 Normal file
View File

@ -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
])