]> granicus.if.org Git - icinga2/commitdiff
Added methods for retrieving the installation prefix and local state dir.
authorGunnar Beutner <gunnar.beutner@netways.de>
Fri, 28 Sep 2012 11:16:08 +0000 (13:16 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Fri, 28 Sep 2012 11:16:08 +0000 (13:16 +0200)
configure.ac
icinga-app/Makefile.am
icinga-app/icinga.cpp
lib/base/application.cpp
lib/base/application.h
m4/as-ac-expand.m4 [new file with mode: 0644]

index 79de2aa2b8bf93323bd56b0941d30583c2066214..e7c1eb55e680c1e0b051a02e35f0fcea3e511228 100644 (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
index 8c7a64dfa5925d95721803b8f02cc05673aab3ce..f59b98f26280226be05597b750a2c6bab18b3cab 100644 (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) \
index 3b9475f5a71e48fe3bccc88b4df72059eb2d2707..8a7e1ad3a6031c4122f42bf4cb31c2fc1ebcd49b 100644 (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 ")"
index a445a1c207d5d9879c994d05a6172c787a3ba04e..0ebdd92adacc8eba00865e5d17d10ebeda0ba3d6 100644 (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;
+}
+
index 3d9b644f687525810bab258eb1f4456793c463cb..390a7dc2fdfedd65403b2064bccd3fef0eceb046 100644 (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);
diff --git a/m4/as-ac-expand.m4 b/m4/as-ac-expand.m4
new file mode 100644 (file)
index 0000000..d6c9e33
--- /dev/null
@@ -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
+])