+#define LOG(kind,...) GNUNET_log_from (kind, "util-os-installation", __VA_ARGS__)
+
+#define LOG_STRERROR_FILE(kind,syscall,filename) GNUNET_log_from_strerror_file (kind, "util-os-installation", syscall, filename)
+
+
+/**
+ * Default project data used for installation path detection
+ * for GNUnet (core).
+ */
+static const struct GNUNET_OS_ProjectData default_pd = {
+ .libname = "libgnunetutil",
+ .project_dirname = "gnunet",
+ .binary_name = "gnunet-arm",
+ .env_varname = "GNUNET_PREFIX",
+ .base_config_varname = "GNUNET_BASE_CONFIG",
+ .bug_email = "gnunet-developers@gnu.org",
+ .homepage = "http://www.gnu.org/s/gnunet/",
+ .config_file = "gnunet.conf",
+ .user_config_file = "~/.config/gnunet.conf",
+};
+
+/**
+ * Which project data do we currently use for installation
+ * path detection? Never NULL.
+ */
+static const struct GNUNET_OS_ProjectData *current_pd = &default_pd;
+
+/**
+ * Return default project data used by 'libgnunetutil' for GNUnet.
+ */
+const struct GNUNET_OS_ProjectData *
+GNUNET_OS_project_data_default (void)
+{
+ return &default_pd;
+}
+
+
+/**
+ * @return current project data.
+ */
+const struct GNUNET_OS_ProjectData *
+GNUNET_OS_project_data_get ()
+{
+ return current_pd;
+}
+
+
+/**
+ * Setup OS subsystem with project data.
+ *
+ * @param pd project data used to determine paths
+ */
+void
+GNUNET_OS_init (const struct GNUNET_OS_ProjectData *pd)
+{
+ GNUNET_assert (NULL != pd);
+ current_pd = pd;
+}