diff -uNr samba-3.0.0beta2.orig/source/Makefile.in samba-3.0.0beta2/source/Makefile.in
--- samba-3.0.0beta2.orig/source/Makefile.in	2003-07-02 23:26:46.000000000 -0500
+++ samba-3.0.0beta2/source/Makefile.in	2003-07-02 23:19:46.000000000 -0500
@@ -68,6 +68,7 @@
 CONFIGDIR = @configdir@
 VARDIR = @localstatedir@
 MANDIR = @mandir@
+DATADIR = @datadir@
 
 # The permissions to give the executables
 INSTALLPERMS = 0755
@@ -91,6 +92,13 @@
 # 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@
 # man pages language(s)
@@ -115,7 +123,7 @@
 PATH_FLAGS4 = $(PATH_FLAGS3) -DSWATDIR=\"$(SWATDIR)\"  -DLOCKDIR=\"$(LOCKDIR)\" -DPIDDIR=\"$(PIDDIR)\"
 PATH_FLAGS5 = $(PATH_FLAGS4) -DLIBDIR=\"$(LIBDIR)\" \
 	      -DLOGFILEBASE=\"$(LOGFILEBASE)\" -DSHLIBEXT=\"@SHLIBEXT@\"
-PATH_FLAGS6 = $(PATH_FLAGS5) -DCONFIGDIR=\"$(CONFIGDIR)\"
+PATH_FLAGS6 = $(PATH_FLAGS5) -DCONFIGDIR=\"$(CONFIGDIR)\" -DCODEPAGEDIR=\"$(CODEPAGEDIR)\" -DCACHEDIR=\"$(CACHEDIR)\" -DSTATEDIR=\"$(STATEDIR)\"
 PATH_FLAGS = $(PATH_FLAGS6) $(PASSWD_FLAGS)
 
 # Note that all executable programs now provide for an optional executable suffix.
@@ -1123,7 +1131,7 @@
 	@$(SHELL) $(srcdir)/script/installscripts.sh $(INSTALLPERMS) $(DESTDIR)$(BINDIR) $(SCRIPTS)
 
 installdat: installdirs
-	@$(SHELL) $(srcdir)/script/installdat.sh $(DESTDIR)$(LIBDIR) $(srcdir)
+	@$(SHELL) $(srcdir)/script/installdat.sh $(DESTDIR)$(CODEPAGEDIR) $(srcdir)
 
 installswat: installdirs
 	@$(SHELL) $(srcdir)/script/installswat.sh $(DESTDIR)$(SWATDIR) $(srcdir)
diff -uNr samba-3.0.0beta2.orig/source/configure.in samba-3.0.0beta2/source/configure.in
--- samba-3.0.0beta2.orig/source/configure.in	2003-07-02 23:26:47.000000000 -0500
+++ samba-3.0.0beta2/source/configure.in	2003-07-02 23:19:02.000000000 -0500
@@ -17,18 +17,25 @@
 AC_ARG_WITH(fhs, 
 [  --with-fhs              Use FHS-compliant paths (default=no)],
     configdir="${sysconfdir}/samba"
-    lockdir="\${VARDIR}/cache/samba"
+    lockdir="\${VARDIR}/run/samba"
     piddir="\${VARDIR}/run/samba"
     logfilebase="\${VARDIR}/log/samba"
     privatedir="\${CONFIGDIR}/private"
     libdir="\${prefix}/lib/samba"
-    swatdir="\${DATADIR}/samba/swat",
+    swatdir="\${DATADIR}/samba/swat"
+    codepagedir="\${DATADIR}/samba"
+    statedir="\${VARDIR}/lib/samba"
+    cachedir="\${VARDIR}/cache/samba"
+    AC_DEFINE(FHS_COMPATIBLE, 1, [Whether to use fully FHS-compatible paths]),
     configdir="\${LIBDIR}"
     logfilebase="\${VARDIR}"
     lockdir="\${VARDIR}/locks"
     piddir="\${VARDIR}/locks"
     privatedir="\${prefix}/private"
-    swatdir="\${prefix}/swat")
+    codepagedir="\${LIBDIR}"
+    swatdir="\${prefix}/swat"
+    statedir="\${LOCKDIR}"
+    cachedir="\${LOCKDIR}")
 
 #################################################
 # set private directory location
@@ -134,6 +141,9 @@
 AC_SUBST(swatdir)
 AC_SUBST(bindir)
 AC_SUBST(sbindir)
+AC_SUBST(codepagedir)
+AC_SUBST(statedir)
+AC_SUBST(cachedir)
 
 dnl Unique-to-Samba variables we'll be playing with.
 AC_SUBST(SHELL)
diff -uNr samba-3.0.0beta2.orig/source/dynconfig.c samba-3.0.0beta2/source/dynconfig.c
--- samba-3.0.0beta2.orig/source/dynconfig.c	2003-07-02 23:26:47.000000000 -0500
+++ samba-3.0.0beta2/source/dynconfig.c	2003-07-02 23:19:02.000000000 -0500
@@ -53,6 +53,13 @@
 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.
  *
  * @sa lib_path() to get the path to a file inside the LIBDIR.
@@ -70,3 +77,27 @@
 
 const pstring dyn_SMB_PASSWD_FILE = SMB_PASSWD_FILE;
 const 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
+}
diff -uNr samba-3.0.0beta2.orig/source/groupdb/mapping.c samba-3.0.0beta2/source/groupdb/mapping.c
--- samba-3.0.0beta2.orig/source/groupdb/mapping.c	2003-07-02 23:26:47.000000000 -0500
+++ samba-3.0.0beta2/source/groupdb/mapping.c	2003-07-02 23:19:02.000000000 -0500
@@ -134,7 +134,7 @@
 	
 	if (tdb && local_pid == sys_getpid())
 		return True;
-	tdb = tdb_open_log(lock_path("group_mapping.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
+	tdb = tdb_open_log(state_path("group_mapping.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
 	if (!tdb) {
 		DEBUG(0,("Failed to open group mapping database\n"));
 		return False;
diff -uNr samba-3.0.0beta2.orig/source/include/dynconfig.h samba-3.0.0beta2/source/include/dynconfig.h
--- samba-3.0.0beta2.orig/source/include/dynconfig.h	2003-07-02 23:26:47.000000000 -0500
+++ samba-3.0.0beta2/source/include/dynconfig.h	2003-07-02 23:19:02.000000000 -0500
@@ -31,8 +31,12 @@
 extern pstring dyn_CONFIGFILE;
 extern pstring dyn_LOGFILEBASE, dyn_LMHOSTSFILE;
 extern pstring dyn_LIBDIR;
+extern pstring dyn_CODEPAGEDIR;
 extern const fstring dyn_SHLIBEXT;
 extern const pstring dyn_LOCKDIR; 
 extern const pstring dyn_PIDDIR;
 extern const pstring dyn_SMB_PASSWD_FILE;
 extern const pstring dyn_PRIVATE_DIR;
+
+char *dyn_STATEDIR(void);
+char *dyn_CACHEDIR(void);
diff -uNr samba-3.0.0beta2.orig/source/intl/lang_tdb.c samba-3.0.0beta2/source/intl/lang_tdb.c
--- samba-3.0.0beta2.orig/source/intl/lang_tdb.c	2003-07-02 23:26:47.000000000 -0500
+++ samba-3.0.0beta2/source/intl/lang_tdb.c	2003-07-02 23:19:02.000000000 -0500
@@ -123,7 +123,7 @@
 	/* if no lang then we don't translate */
 	if (!lang) return True;
 
-	asprintf(&msg_path, "%s.msg", lib_path((const char *)lang));
+	asprintf(&msg_path, "%s.msg", data_path((const char *)lang));
 	if (stat(msg_path, &st) != 0) {
 		/* the msg file isn't available */
 		free(msg_path);
@@ -131,7 +131,7 @@
 	}
 	
 
-	asprintf(&path, "%s%s.tdb", lock_path("lang_"), lang);
+	asprintf(&path, "%s%s.tdb", state_path("lang_"), lang);
 
 	tdb = tdb_open_log(path, 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0644);
 	if (!tdb) {
diff -uNr samba-3.0.0beta2.orig/source/lib/account_pol.c samba-3.0.0beta2/source/lib/account_pol.c
--- samba-3.0.0beta2.orig/source/lib/account_pol.c	2003-07-02 23:26:47.000000000 -0500
+++ samba-3.0.0beta2/source/lib/account_pol.c	2003-07-02 23:19:02.000000000 -0500
@@ -36,7 +36,7 @@
 
 	if (tdb && local_pid == sys_getpid())
 		return True;
-	tdb = tdb_open_log(lock_path("account_policy.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
+	tdb = tdb_open_log(state_path("account_policy.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
 	if (!tdb) {
 		DEBUG(0,("Failed to open account policy database\n"));
 		return False;
diff -uNr samba-3.0.0beta2.orig/source/lib/util.c samba-3.0.0beta2/source/lib/util.c
--- samba-3.0.0beta2.orig/source/lib/util.c	2003-07-02 23:26:47.000000000 -0500
+++ samba-3.0.0beta2/source/lib/util.c	2003-07-02 23:19:02.000000000 -0500
@@ -2252,6 +2252,61 @@
 }
 
 /**
+ * @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 static #pstring containing the full path.
+ **/
+
+char *data_path(const char *name)
+{
+	static pstring fname;
+	snprintf(fname, sizeof(fname), "%s/%s", dyn_CODEPAGEDIR, name);
+	return fname;
+}
+
+/*****************************************************************
+a useful function for returning a path in the Samba state directory
+ *****************************************************************/
+char *state_path(char *name)
+{
+	static pstring fname;
+
+	pstrcpy(fname,dyn_STATEDIR());
+	trim_string(fname,"","/");
+
+	if (!directory_exist(fname,NULL)) {
+		mkdir(fname,0755);
+	}
+
+	pstrcat(fname,"/");
+	pstrcat(fname,name);
+
+	return fname;
+}
+
+/*****************************************************************
+a useful function for returning a path in the Samba cache directory
+ *****************************************************************/
+char *cache_path(char *name)
+{
+	static pstring fname;
+
+	pstrcpy(fname,dyn_CACHEDIR());
+	trim_string(fname,"","/");
+
+	if (!directory_exist(fname,NULL)) {
+			mkdir(fname,0755);
+	}
+
+	pstrcat(fname,"/");
+	pstrcat(fname,name);
+
+	return fname;
+}
+
+/**
  * @brief Returns the platform specific shared library extension.
  *
  * @retval Pointer to a static #fstring containing the extension.
diff -uNr samba-3.0.0beta2.orig/source/lib/util_unistr.c samba-3.0.0beta2/source/lib/util_unistr.c
--- samba-3.0.0beta2.orig/source/lib/util_unistr.c	2003-07-02 23:26:47.000000000 -0500
+++ samba-3.0.0beta2/source/lib/util_unistr.c	2003-07-02 23:19:02.000000000 -0500
@@ -54,8 +54,8 @@
 	if (initialised) return;
 	initialised = 1;
 
-	upcase_table = map_file(lib_path("upcase.dat"), 0x20000);
-	lowcase_table = map_file(lib_path("lowcase.dat"), 0x20000);
+	upcase_table = map_file(data_path("upcase.dat"), 0x20000);
+	lowcase_table = map_file(data_path("lowcase.dat"), 0x20000);
 
 	/* we would like Samba to limp along even if these tables are
 	   not available */
@@ -161,7 +161,7 @@
 		return;
 	}
 
-	valid_file = map_file(lib_path("valid.dat"), 0x10000);
+	valid_file = map_file(data_path("valid.dat"), 0x10000);
 	if (valid_file) {
 		valid_table = valid_file;
 		mapped_file = 1;
diff -uNr samba-3.0.0beta2.orig/source/libsmb/samlogon_cache.c samba-3.0.0beta2/source/libsmb/samlogon_cache.c
--- samba-3.0.0beta2.orig/source/libsmb/samlogon_cache.c	2003-07-01 09:40:37.000000000 -0500
+++ samba-3.0.0beta2/source/libsmb/samlogon_cache.c	2003-07-02 23:19:02.000000000 -0500
@@ -34,7 +34,7 @@
 BOOL netsamlogon_cache_init(void)
 {
 	if (!netsamlogon_tdb) {
-		netsamlogon_tdb = tdb_open_log(lock_path(NETSAMLOGON_TDB), 0,
+		netsamlogon_tdb = tdb_open_log(cache_path(NETSAMLOGON_TDB), 0,
 						   TDB_DEFAULT, O_RDWR | O_CREAT, 0600);
 	}
 
@@ -67,7 +67,7 @@
            winbindd_cache.tdb open.  Open the tdb if a NULL is passed. */
 
 	if (!tdb) {
-		tdb = tdb_open_log(lock_path("winbindd_cache.tdb"), 5000,
+		tdb = tdb_open_log(cache_path("winbindd_cache.tdb"), 5000,
 				   TDB_DEFAULT, O_RDWR, 0600);
 		if (!tdb) {
 			DEBUG(5, ("netsamlogon_clear_cached_user: failed to open cache\n"));
diff -uNr samba-3.0.0beta2.orig/source/nmbd/nmbd_serverlistdb.c samba-3.0.0beta2/source/nmbd/nmbd_serverlistdb.c
--- samba-3.0.0beta2.orig/source/nmbd/nmbd_serverlistdb.c	2003-07-02 23:26:47.000000000 -0500
+++ samba-3.0.0beta2/source/nmbd/nmbd_serverlistdb.c	2003-07-02 23:19:02.000000000 -0500
@@ -343,7 +343,7 @@
 
   updatecount++;
     
-  pstrcpy(fname,lp_lockdir());
+  pstrcpy(fname,dyn_CACHEDIR());
   trim_string(fname,NULL,"/");
   pstrcat(fname,"/");
   pstrcat(fname,SERVER_LIST);
diff -uNr samba-3.0.0beta2.orig/source/nmbd/nmbd_winsserver.c samba-3.0.0beta2/source/nmbd/nmbd_winsserver.c
--- samba-3.0.0beta2.orig/source/nmbd/nmbd_winsserver.c	2003-07-02 23:26:47.000000000 -0500
+++ samba-3.0.0beta2/source/nmbd/nmbd_winsserver.c	2003-07-02 23:19:02.000000000 -0500
@@ -230,7 +230,7 @@
 
   add_samba_names_to_subnet(wins_server_subnet);
 
-  if((fp = x_fopen(lock_path(WINS_LIST),O_RDONLY,0)) == NULL)
+  if((fp = x_fopen(state_path(WINS_LIST),O_RDONLY,0)) == NULL)
   {
     DEBUG(2,("initialise_wins: Can't open wins database file %s. Error was %s\n",
            WINS_LIST, strerror(errno) ));
@@ -1836,7 +1836,7 @@
 	  }
   }
 
-  slprintf(fname,sizeof(fname)-1,"%s/%s", lp_lockdir(), WINS_LIST);
+  slprintf(fname,sizeof(fname)-1,"%s/%s", dyn_STATEDIR(), WINS_LIST);
   all_string_sub(fname,"//", "/", 0);
   slprintf(fnamenew,sizeof(fnamenew)-1,"%s.%u", fname, (unsigned int)sys_getpid());
 
diff -uNr samba-3.0.0beta2.orig/source/nsswitch/winbindd_cache.c samba-3.0.0beta2/source/nsswitch/winbindd_cache.c
--- samba-3.0.0beta2.orig/source/nsswitch/winbindd_cache.c	2003-07-02 23:26:47.000000000 -0500
+++ samba-3.0.0beta2/source/nsswitch/winbindd_cache.c	2003-07-02 23:19:02.000000000 -0500
@@ -56,7 +56,7 @@
 	if (opt_nocache)
 		return;
 
-	wcache->tdb = tdb_open_log(lock_path("winbindd_cache.tdb"), 5000, 
+	wcache->tdb = tdb_open_log(cache_path("winbindd_cache.tdb"), 5000, 
 				   TDB_CLEAR_IF_FIRST, O_RDWR|O_CREAT, 0600);
 
 	if (!wcache->tdb) {
diff -uNr samba-3.0.0beta2.orig/source/nsswitch/winbindd_util.c samba-3.0.0beta2/source/nsswitch/winbindd_util.c
--- samba-3.0.0beta2.orig/source/nsswitch/winbindd_util.c	2003-07-01 15:44:25.000000000 -0500
+++ samba-3.0.0beta2/source/nsswitch/winbindd_util.c	2003-07-02 23:19:02.000000000 -0500
@@ -747,7 +747,7 @@
 	SMB_STRUCT_STAT stbuf;
 	TDB_CONTEXT *idmap_tdb;
 
-	pstrcpy(idmap_name, lock_path("winbindd_idmap.tdb"));
+	pstrcpy(idmap_name, state_path("winbindd_idmap.tdb"));
 
 	if (!file_exist(idmap_name, &stbuf)) {
 		/* nothing to convert return */
diff -uNr samba-3.0.0beta2.orig/source/param/loadparm.c samba-3.0.0beta2/source/param/loadparm.c
--- samba-3.0.0beta2.orig/source/param/loadparm.c	2003-07-02 23:26:47.000000000 -0500
+++ samba-3.0.0beta2/source/param/loadparm.c	2003-07-02 23:19:02.000000000 -0500
@@ -104,6 +104,9 @@
 	char *szAddPrinterCommand;
 	char *szDeletePrinterCommand;
 	char *szOs2DriverMap;
+#ifdef FHS_COMPATIBLE
+	char *szLockDirStub;
+#endif
 	char *szLockDir;
 	char *szPidDir;
 	char *szRootdir;
@@ -1074,8 +1077,13 @@
 	{"config file", P_STRING, P_GLOBAL, &Globals.szConfigFile, NULL, NULL, FLAG_HIDE},
 	{"preload", P_STRING, P_GLOBAL, &Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
 	{"auto services", P_STRING, P_GLOBAL, &Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+#ifdef FHS_COMPATIBLE
+	{"lock dir", P_STRING, P_GLOBAL, &Globals.szLockDirStub, NULL, NULL, 0},
+	{"lock directory", P_STRING, P_GLOBAL, &Globals.szLockDirStub, NULL, NULL, 0},
+#else
 	{"lock dir", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, FLAG_HIDE}, 
 	{"lock directory", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+#endif
 	{"pid directory", P_STRING, P_GLOBAL, &Globals.szPidDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, 
 #ifdef WITH_UTMP
 	{"utmp directory", P_STRING, P_GLOBAL, &Globals.szUtmpDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
diff -uNr samba-3.0.0beta2.orig/source/passdb/pdb_tdb.c samba-3.0.0beta2/source/passdb/pdb_tdb.c
--- samba-3.0.0beta2.orig/source/passdb/pdb_tdb.c	2003-07-02 23:26:47.000000000 -0500
+++ samba-3.0.0beta2/source/passdb/pdb_tdb.c	2003-07-02 23:19:02.000000000 -0500
@@ -526,10 +526,7 @@
 	if (location) {
 		tdb_state->tdbsam_location = talloc_strdup(pdb_context->mem_ctx, location);
 	} else {
-		pstring tdbfile;
-		get_private_directory(tdbfile);
-		pstrcat(tdbfile, "/");
-		pstrcat(tdbfile, PASSDB_FILE_NAME);
+		char *tdbfile = state_path(PASSDB_FILE_NAME);
 		tdb_state->tdbsam_location = talloc_strdup(pdb_context->mem_ctx, tdbfile);
 	}
 
diff -uNr samba-3.0.0beta2.orig/source/passdb/privileges.c samba-3.0.0beta2/source/passdb/privileges.c
--- samba-3.0.0beta2.orig/source/passdb/privileges.c	2003-06-07 12:57:35.000000000 -0500
+++ samba-3.0.0beta2/source/passdb/privileges.c	2003-07-02 23:19:02.000000000 -0500
@@ -62,7 +62,7 @@
 /* initialise the privilege database */
 BOOL privilege_init(void)
 {
-	tdb = tdb_open_log(lock_path("privilege.tdb"), 0, TDB_DEFAULT, 
+	tdb = tdb_open_log(state_path("privilege.tdb"), 0, TDB_DEFAULT, 
 			   O_RDWR|O_CREAT, 0600);
 	if (!tdb) {
 		DEBUG(0,("Failed to open privilege database\n"));
diff -uNr samba-3.0.0beta2.orig/source/passdb/secrets.c samba-3.0.0beta2/source/passdb/secrets.c
--- samba-3.0.0beta2.orig/source/passdb/secrets.c	2003-07-02 23:26:47.000000000 -0500
+++ samba-3.0.0beta2/source/passdb/secrets.c	2003-07-02 23:19:02.000000000 -0500
@@ -37,8 +37,7 @@
 	if (tdb)
 		return True;
 
-	pstrcpy(fname, lp_private_dir());
-	pstrcat(fname,"/secrets.tdb");
+	pstrcpy(fname, state_path("secrets.tdb"));
 
 	tdb = tdb_open_log(fname, 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
 
diff -uNr samba-3.0.0beta2.orig/source/printing/nt_printing.c samba-3.0.0beta2/source/printing/nt_printing.c
--- samba-3.0.0beta2.orig/source/printing/nt_printing.c	2003-07-02 23:26:47.000000000 -0500
+++ samba-3.0.0beta2/source/printing/nt_printing.c	2003-07-02 23:19:02.000000000 -0500
@@ -287,28 +287,28 @@
  
 	if (tdb_drivers)
 		tdb_close(tdb_drivers);
-	tdb_drivers = tdb_open_log(lock_path("ntdrivers.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
+	tdb_drivers = tdb_open_log(state_path("ntdrivers.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
 	if (!tdb_drivers) {
 		DEBUG(0,("nt_printing_init: Failed to open nt drivers database %s (%s)\n",
-			lock_path("ntdrivers.tdb"), strerror(errno) ));
+			state_path("ntdrivers.tdb"), strerror(errno) ));
 		return False;
 	}
  
 	if (tdb_printers)
 		tdb_close(tdb_printers);
-	tdb_printers = tdb_open_log(lock_path("ntprinters.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
+	tdb_printers = tdb_open_log(state_path("ntprinters.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
 	if (!tdb_printers) {
 		DEBUG(0,("nt_printing_init: Failed to open nt printers database %s (%s)\n",
-			lock_path("ntprinters.tdb"), strerror(errno) ));
+			state_path("ntprinters.tdb"), strerror(errno) ));
 		return False;
 	}
  
 	if (tdb_forms)
 		tdb_close(tdb_forms);
-	tdb_forms = tdb_open_log(lock_path("ntforms.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
+	tdb_forms = tdb_open_log(state_path("ntforms.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
 	if (!tdb_forms) {
 		DEBUG(0,("nt_printing_init: Failed to open nt forms database %s (%s)\n",
-			lock_path("ntforms.tdb"), strerror(errno) ));
+			state_path("ntforms.tdb"), strerror(errno) ));
 		return False;
 	}
  
diff -uNr samba-3.0.0beta2.orig/source/printing/printing.c samba-3.0.0beta2/source/printing/printing.c
--- samba-3.0.0beta2.orig/source/printing/printing.c	2003-07-02 23:26:47.000000000 -0500
+++ samba-3.0.0beta2/source/printing/printing.c	2003-07-02 23:19:02.000000000 -0500
@@ -174,8 +174,8 @@
 	if (local_pid == sys_getpid())
 		return True;
 
-	unlink(lock_path("printing.tdb"));
-	pstrcpy(printing_path,lock_path("printing"));
+	unlink(cache_path("printing.tdb"));
+	pstrcpy(printing_path,cache_path("printing"));
 	mkdir(printing_path,0755);
 
 	local_pid = sys_getpid();
diff -uNr samba-3.0.0beta2.orig/source/printing/printing_db.c samba-3.0.0beta2/source/printing/printing_db.c
--- samba-3.0.0beta2.orig/source/printing/printing_db.c	2003-07-02 23:26:47.000000000 -0500
+++ samba-3.0.0beta2/source/printing/printing_db.c	2003-07-02 23:19:02.000000000 -0500
@@ -86,7 +86,7 @@
 		DLIST_ADD(print_db_head, p);
 	}
 
-	pstrcpy(printdb_path, lock_path("printing/"));
+	pstrcpy(printdb_path, cache_path("printing/"));
 	pstrcat(printdb_path, printername);
 	pstrcat(printdb_path, ".tdb");
 
diff -uNr samba-3.0.0beta2.orig/source/registry/reg_db.c samba-3.0.0beta2/source/registry/reg_db.c
--- samba-3.0.0beta2.orig/source/registry/reg_db.c	2003-07-02 23:26:47.000000000 -0500
+++ samba-3.0.0beta2/source/registry/reg_db.c	2003-07-02 23:19:02.000000000 -0500
@@ -131,13 +131,13 @@
 	 * if we need to init the data in the registry
 	 */
 	
-	tdb_reg = tdb_open_log(lock_path("registry.tdb"), 0, TDB_DEFAULT, O_RDWR, 0600);
+	tdb_reg = tdb_open_log(state_path("registry.tdb"), 0, TDB_DEFAULT, O_RDWR, 0600);
 	if ( !tdb_reg ) 
 	{
-		tdb_reg = tdb_open_log(lock_path("registry.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
+		tdb_reg = tdb_open_log(state_path("registry.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
 		if ( !tdb_reg ) {
 			DEBUG(0,("init_registry: Failed to open registry %s (%s)\n",
-				lock_path("registry.tdb"), strerror(errno) ));
+				state_path("registry.tdb"), strerror(errno) ));
 			return False;
 		}
 		
diff -uNr samba-3.0.0beta2.orig/source/rpc_server/srv_srvsvc_nt.c samba-3.0.0beta2/source/rpc_server/srv_srvsvc_nt.c
--- samba-3.0.0beta2.orig/source/rpc_server/srv_srvsvc_nt.c	2003-07-02 23:26:47.000000000 -0500
+++ samba-3.0.0beta2/source/rpc_server/srv_srvsvc_nt.c	2003-07-02 23:19:02.000000000 -0500
@@ -133,10 +133,10 @@
  
 	if (share_tdb && local_pid == sys_getpid())
 		return True;
-	share_tdb = tdb_open_log(lock_path("share_info.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
+	share_tdb = tdb_open_log(state_path("share_info.tdb"), 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
 	if (!share_tdb) {
 		DEBUG(0,("Failed to open share info database %s (%s)\n",
-			lock_path("share_info.tdb"), strerror(errno) ));
+			state_path("share_info.tdb"), strerror(errno) ));
 		return False;
 	}
  
diff -uNr samba-3.0.0beta2.orig/source/sam/idmap_tdb.c samba-3.0.0beta2/source/sam/idmap_tdb.c
--- samba-3.0.0beta2.orig/source/sam/idmap_tdb.c	2003-07-01 15:44:26.000000000 -0500
+++ samba-3.0.0beta2/source/sam/idmap_tdb.c	2003-07-02 23:19:02.000000000 -0500
@@ -495,7 +495,7 @@
 	BOOL tdb_is_new = False;
 
 	/* use the old database if present */
-	tdbfile = strdup(lock_path("winbindd_idmap.tdb"));
+	tdbfile = strdup(state_path("winbindd_idmap.tdb"));
 	if (!tdbfile) {
 		DEBUG(0, ("idmap_init: out of memory!\n"));
 		return NT_STATUS_NO_MEMORY;
diff -uNr samba-3.0.0beta2.orig/source/smbd/lanman.c samba-3.0.0beta2/source/smbd/lanman.c
--- samba-3.0.0beta2.orig/source/smbd/lanman.c	2003-07-02 23:26:47.000000000 -0500
+++ samba-3.0.0beta2/source/smbd/lanman.c	2003-07-02 23:19:02.000000000 -0500
@@ -966,9 +966,9 @@
   BOOL local_list_only;
   int i;
 
-  lines = file_lines_load(lock_path(SERVER_LIST), NULL);
+  lines = file_lines_load(cache_path(SERVER_LIST), NULL);
   if (!lines) {
-    DEBUG(4,("Can't open %s - %s\n",lock_path(SERVER_LIST),strerror(errno)));
+    DEBUG(4,("Can't open %s - %s\n",cache_path(SERVER_LIST),strerror(errno)));
     return(0);
   }
 
diff -uNr samba-3.0.0beta2.orig/source/wrepld/process.c samba-3.0.0beta2/source/wrepld/process.c
--- samba-3.0.0beta2.orig/source/wrepld/process.c	2003-07-02 23:26:47.000000000 -0500
+++ samba-3.0.0beta2/source/wrepld/process.c	2003-07-02 23:19:02.000000000 -0500
@@ -197,7 +197,7 @@
 {
 	TDB_CONTEXT *tdb;
 
-	tdb = tdb_open_log(lock_path(WINS_LIST), 0, TDB_DEFAULT, O_RDONLY, 0600);
+	tdb = tdb_open_log(state_path(WINS_LIST), 0, TDB_DEFAULT, O_RDONLY, 0600);
 	if (!tdb) {
 		DEBUG(2,("get_our_last_id: Can't open wins database file %s. Error was %s\n", WINS_LIST, strerror(errno) ));
 		return;
@@ -489,7 +489,7 @@
 		}
 
 
-	tdb = tdb_open_log(lock_path(WINS_LIST), 0, TDB_DEFAULT, O_RDONLY, 0600);
+	tdb = tdb_open_log(state_path(WINS_LIST), 0, TDB_DEFAULT, O_RDONLY, 0600);
 	if (!tdb) {
 		DEBUG(2,("send_entry_request: Can't open wins database file %s. Error was %s\n", WINS_LIST, strerror(errno) ));
 		return;
--- samba_3_0/source/nsswitch/winbindd_acct.c.orig	2003-07-15 13:03:59.000000000 -0400
+++ samba_3_0/source/nsswitch/winbindd_acct.c	2003-07-15 13:04:42.000000000 -0400
@@ -73,7 +73,7 @@
 		
 	/* Nope.  Try to open it */
 
-	if (!(account_tdb = tdb_open_log(lock_path("winbindd_idmap.tdb"), 0, 
+	if (!(account_tdb = tdb_open_log(state_path("winbindd_idmap.tdb"), 0, 
 		TDB_DEFAULT, O_RDWR | O_CREAT, 0600))) 
 	{
 		/* last chance -- maybe idmap has already opened it */
