# the directory where lock files go
LOCKDIR = @lockdir@
+# FHS directories; equal to LOCKDIR if not using --with-fhs
+CACHEDIR = @cachedir@
+STATEDIR = @statedir@
+
+# Where to look for (and install) codepage databases.
+CODEPAGEDIR = @codepagedir@
+
# the directory where pid files go
PIDDIR = @piddir@
-DLOGFILEBASE=\"$(LOGFILEBASE)\" \
-DSHLIBEXT=\"@SHLIBEXT@\" \
-DCTDBDIR=\"$(CTDBDIR)\" \
- -DCONFIGDIR=\"$(CONFIGDIR)\"
+ -DCONFIGDIR=\"$(CONFIGDIR)\" \
+ -DCODEPAGEDIR=\"$(CODEPAGEDIR)\" \
+ -DCACHEDIR=\"$(CACHEDIR)\" \
+ -DSTATEDIR=\"$(STATEDIR)\"
# Note that all executable programs now provide for an optional executable suffix.
@$(SHELL) $(srcdir)/script/installscripts.sh $(INSTALLPERMS_BIN) $(DESTDIR)$(BINDIR) $(SCRIPTS)
installdat: installdirs
- @$(SHELL) $(srcdir)/script/installdat.sh $(DESTDIR) $(LIBDIR) $(srcdir)
+ @$(SHELL) $(srcdir)/script/installdat.sh $(DESTDIR) $(CODEPAGEDIR) $(srcdir)
installmsg: installdirs
- @$(SHELL) $(srcdir)/script/installmsg.sh $(DESTDIR) $(LIBDIR) $(srcdir)
+ @$(SHELL) $(srcdir)/script/installmsg.sh $(DESTDIR) $(CODEPAGEDIR) $(srcdir)
installswat: installdirs installmsg
@$(SHELL) $(srcdir)/script/installswat.sh $(DESTDIR) $(SWATDIR) $(srcdir)
libdir="\${prefix}/lib/samba"
configdir="\${sysconfdir}/samba"
swatdir="\${DATADIR}/samba/swat"
+ codepagedir="\${prefix}/lib/samba"
+ statedir="\${VARDIR}/lib/samba"
+ cachedir="\${VARDIR}/lib/samba"
+ AC_DEFINE(FHS_COMPATIBLE, 1, [Whether to use fully FHS-compatible paths])
;;
esac])
AC_SUBST(swatdir)
AC_SUBST(bindir)
AC_SUBST(sbindir)
+AC_SUBST(codepagedir)
+AC_SUBST(statedir)
+AC_SUBST(cachedir)
AC_SUBST(rootsbindir)
AC_SUBST(pammodulesdir)
/** Statically configured LanMan hosts. **/
pstring dyn_LMHOSTSFILE = LMHOSTSFILE;
+/**
+ * @brief Samba data directory.
+ *
+ * @sa data_path() to get the path to a file inside the CODEPAGEDIR.
+ **/
+pstring dyn_CODEPAGEDIR = CODEPAGEDIR;
+
/**
* @brief Samba library directory.
*
pstring dyn_SMB_PASSWD_FILE = SMB_PASSWD_FILE;
pstring dyn_PRIVATE_DIR = PRIVATE_DIR;
+
+
+/* In non-FHS mode, these should be configurable using 'lock dir =';
+ but in FHS mode, they are their own directory. Implement as wrapper
+ functions so that everything can still be kept in dynconfig.c.
+ */
+
+char *dyn_STATEDIR(void)
+{
+#ifdef FHS_COMPATIBLE
+ return STATEDIR;
+#else
+ return lp_lockdir();
+#endif
+}
+
+char *dyn_CACHEDIR(void)
+{
+#ifdef FHS_COMPATIBLE
+ return CACHEDIR;
+#else
+ return lp_lockdir();
+#endif
+}
extern pstring dyn_CONFIGFILE;
extern pstring dyn_LOGFILEBASE, dyn_LMHOSTSFILE;
extern pstring dyn_LIBDIR;
+extern pstring dyn_CODEPAGEDIR;
extern fstring dyn_SHLIBEXT;
extern pstring dyn_LOCKDIR;
extern pstring dyn_PIDDIR;
extern pstring dyn_SMB_PASSWD_FILE;
extern pstring dyn_PRIVATE_DIR;
+
+char *dyn_STATEDIR(void);
+char *dyn_CACHEDIR(void);
return talloc_asprintf(talloc_tos(), "%s/%s", dyn_LIBDIR, name);
}
+/**
+ * @brief Returns an absolute path to a file in the Samba data directory.
+ *
+ * @param name File to find, relative to CODEPAGEDIR.
+ *
+ * @retval Pointer to a talloc'ed string containing the full path.
+ **/
+
+char *data_path(const char *name)
+{
+ return talloc_asprintf(talloc_tos(), "%s/%s", dyn_CODEPAGEDIR, name);
+}
+
+/*****************************************************************
+a useful function for returning a path in the Samba state directory
+ *****************************************************************/
+char *state_path(char *name)
+{
+ pstring fname;
+
+ pstrcpy(fname,dyn_STATEDIR());
+ trim_string(fname,"","/");
+
+ if (!directory_exist(fname,NULL)) {
+ mkdir(fname,0755);
+ }
+
+ pstrcat(fname,"/");
+ pstrcat(fname,name);
+
+ return talloc_strdup(talloc_tos(), fname);
+}
+
/**
* @brief Returns the platform specific shared library extension.
*