Initial import
[samba] / debian / patches / fhs.patch
diff --git a/debian/patches/fhs.patch b/debian/patches/fhs.patch
new file mode 100644 (file)
index 0000000..3277f5c
--- /dev/null
@@ -0,0 +1,660 @@
+Index: samba-3.0.21c/source/Makefile.in
+===================================================================
+--- samba-3.0.21c.orig/source/Makefile.in      2006-02-25 11:57:11.584360975 +0100
++++ samba-3.0.21c/source/Makefile.in   2006-02-25 11:58:15.760412374 +0100
+@@ -91,6 +91,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@
+@@ -120,7 +127,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.
+@@ -1432,7 +1439,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)
+ installmsg: installdirs
+       @$(SHELL) $(srcdir)/script/installmsg.sh $(DESTDIR)$(LIBDIR) $(srcdir)
+Index: samba-3.0.21c/source/configure.in
+===================================================================
+--- samba-3.0.21c.orig/source/configure.in     2006-02-25 11:57:11.585360773 +0100
++++ samba-3.0.21c/source/configure.in  2006-02-25 11:58:15.771410155 +0100
+@@ -35,7 +35,7 @@
+ [  --with-fhs              Use FHS-compliant paths (default=no)],
+ [ case "$withval" in
+   yes)
+-    lockdir="\${VARDIR}/lib/samba"
++    lockdir="\${VARDIR}/run/samba"
+     piddir="\${VARDIR}/run"
+     mandir="\${prefix}/share/man"
+     logfilebase="\${VARDIR}/log/samba"
+@@ -43,6 +43,10 @@
+     libdir="\${prefix}/lib/samba"
+     configdir="${sysconfdir}/samba"
+     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])
+     ;;
+   esac])
+@@ -201,6 +205,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)
+Index: samba-3.0.21c/source/dynconfig.c
+===================================================================
+--- samba-3.0.21c.orig/source/dynconfig.c      2006-02-25 11:57:11.586360572 +0100
++++ samba-3.0.21c/source/dynconfig.c   2006-02-25 11:58:15.772409953 +0100
+@@ -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
++}
+Index: samba-3.0.21c/source/groupdb/mapping.c
+===================================================================
+--- samba-3.0.21c.orig/source/groupdb/mapping.c        2006-02-25 11:57:11.587360370 +0100
++++ samba-3.0.21c/source/groupdb/mapping.c     2006-02-25 11:58:15.776409146 +0100
+@@ -129,7 +129,7 @@
+       
+       if (tdb)
+               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;
+Index: samba-3.0.21c/source/include/dynconfig.h
+===================================================================
+--- samba-3.0.21c.orig/source/include/dynconfig.h      2006-02-25 11:57:11.588360168 +0100
++++ samba-3.0.21c/source/include/dynconfig.h   2006-02-25 11:58:15.777408944 +0100
+@@ -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);
+Index: samba-3.0.21c/source/intl/lang_tdb.c
+===================================================================
+--- samba-3.0.21c.orig/source/intl/lang_tdb.c  2006-02-25 11:57:11.589359967 +0100
++++ samba-3.0.21c/source/intl/lang_tdb.c       2006-02-25 11:58:15.779408541 +0100
+@@ -128,7 +128,7 @@
+       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 */
+               DEBUG(10, ("lang_tdb_init: %s: %s\n", msg_path, 
+Index: samba-3.0.21c/source/lib/util.c
+===================================================================
+--- samba-3.0.21c.orig/source/lib/util.c       2006-02-25 11:57:11.590359765 +0100
++++ samba-3.0.21c/source/lib/util.c    2006-02-25 11:58:15.784407532 +0100
+@@ -2410,6 +2410,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.
+Index: samba-3.0.21c/source/lib/util_unistr.c
+===================================================================
+--- samba-3.0.21c.orig/source/lib/util_unistr.c        2006-02-25 11:57:11.591359563 +0100
++++ samba-3.0.21c/source/lib/util_unistr.c     2006-02-25 11:58:15.787406927 +0100
+@@ -58,8 +58,8 @@
+       }
+       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 */
+@@ -174,7 +174,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;
+Index: samba-3.0.21c/source/libsmb/samlogon_cache.c
+===================================================================
+--- samba-3.0.21c.orig/source/libsmb/samlogon_cache.c  2006-02-25 11:57:11.593359160 +0100
++++ samba-3.0.21c/source/libsmb/samlogon_cache.c       2006-02-25 11:58:15.788406725 +0100
+@@ -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"));
+Index: samba-3.0.21c/source/nmbd/nmbd_serverlistdb.c
+===================================================================
+--- samba-3.0.21c.orig/source/nmbd/nmbd_serverlistdb.c 2006-02-25 11:57:11.594358958 +0100
++++ samba-3.0.21c/source/nmbd/nmbd_serverlistdb.c      2006-02-25 11:58:15.790406322 +0100
+@@ -327,7 +327,7 @@
+       updatecount++;
+     
+-      pstrcpy(fname,lp_lockdir());
++      pstrcpy(fname,dyn_CACHEDIR());
+       trim_char(fname,'\0' ,'/');
+       pstrcat(fname,"/");
+       pstrcat(fname,SERVER_LIST);
+Index: samba-3.0.21c/source/nmbd/nmbd_winsserver.c
+===================================================================
+--- samba-3.0.21c.orig/source/nmbd/nmbd_winsserver.c   2006-02-25 11:57:11.603357143 +0100
++++ samba-3.0.21c/source/nmbd/nmbd_winsserver.c        2006-02-25 11:58:15.795405313 +0100
+@@ -244,7 +244,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) ));
+               return True;
+@@ -1838,7 +1838,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());
+Index: samba-3.0.21c/source/passdb/login_cache.c
+===================================================================
+--- samba-3.0.21c.orig/source/passdb/login_cache.c     2006-02-25 11:57:11.604356941 +0100
++++ samba-3.0.21c/source/passdb/login_cache.c  2006-02-25 11:58:15.797404910 +0100
+@@ -36,7 +36,7 @@
+       /* skip file open if it's already opened */
+       if (cache) return True;
+-      asprintf(&cache_fname, "%s/%s", lp_lockdir(), LOGIN_CACHE_FILE);
++      asprintf(&cache_fname, "%s/%s", dyn_CACHEDIR(), LOGIN_CACHE_FILE);
+       if (cache_fname)
+               DEBUG(5, ("Opening cache file at %s\n", cache_fname));
+       else {
+Index: samba-3.0.21c/source/nsswitch/winbindd_cache.c
+===================================================================
+--- samba-3.0.21c.orig/source/nsswitch/winbindd_cache.c        2006-02-25 11:57:11.606356537 +0100
++++ samba-3.0.21c/source/nsswitch/winbindd_cache.c     2006-02-25 11:58:15.800404304 +0100
+@@ -58,7 +58,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) {
+@@ -1472,7 +1472,7 @@
+       if (wcache->tdb != NULL)
+               return True;
+-      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 == NULL) {
+Index: samba-3.0.21c/source/nsswitch/winbindd_util.c
+===================================================================
+--- samba-3.0.21c.orig/source/nsswitch/winbindd_util.c 2006-02-25 11:57:11.607356336 +0100
++++ samba-3.0.21c/source/nsswitch/winbindd_util.c      2006-02-25 11:58:15.803403699 +0100
+@@ -1172,7 +1172,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 */
+Index: samba-3.0.21c/source/param/loadparm.c
+===================================================================
+--- samba-3.0.21c.orig/source/param/loadparm.c 2006-02-25 11:57:11.608356134 +0100
++++ samba-3.0.21c/source/param/loadparm.c      2006-02-25 11:58:15.994365168 +0100
+@@ -105,6 +105,9 @@
+       char *szAddPrinterCommand;
+       char *szDeletePrinterCommand;
+       char *szOs2DriverMap;
++#ifdef FHS_COMPATIBLE
++      char *szLockDirStub;
++#endif
+       char *szLockDir;
+       char *szPidDir;
+       char *szRootdir;
+@@ -1174,8 +1177,13 @@
+       {"config file", P_STRING, P_GLOBAL, &Globals.szConfigFile, NULL, NULL, FLAG_HIDE}, 
+       {"preload", P_STRING, P_GLOBAL, &Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED}, 
+       {"auto services", P_STRING, P_GLOBAL, &Globals.szAutoServices, NULL, NULL, FLAG_ADVANCED}, 
++#ifdef FHS_COMPATIBLE
++      {"lock directory", P_STRING, P_GLOBAL, &Globals.szLockDirStub, NULL, NULL, 0}, 
++      {"lock dir", P_STRING, P_GLOBAL, &Globals.szLockDirStub, NULL, NULL, 0},
++#else
+       {"lock directory", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, FLAG_ADVANCED}, 
+       {"lock dir", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, FLAG_HIDE}, 
++#endif
+       {"pid directory", P_STRING, P_GLOBAL, &Globals.szPidDir, NULL, NULL, FLAG_ADVANCED}, 
+ #ifdef WITH_UTMP
+       {"utmp directory", P_STRING, P_GLOBAL, &Globals.szUtmpDir, NULL, NULL, FLAG_ADVANCED}, 
+Index: samba-3.0.21c/source/passdb/pdb_tdb.c
+===================================================================
+--- samba-3.0.21c.orig/source/passdb/pdb_tdb.c 2006-02-25 11:57:11.605356739 +0100
++++ samba-3.0.21c/source/passdb/pdb_tdb.c      2006-02-25 11:58:15.997364563 +0100
+@@ -918,10 +918,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);
+       }
+Index: samba-3.0.21c/source/passdb/secrets.c
+===================================================================
+--- samba-3.0.21c.orig/source/passdb/secrets.c 2006-02-25 11:57:11.605356739 +0100
++++ samba-3.0.21c/source/passdb/secrets.c      2006-02-25 11:58:15.999364159 +0100
+@@ -58,8 +58,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);
+Index: samba-3.0.21c/source/printing/nt_printing.c
+===================================================================
+--- samba-3.0.21c.orig/source/printing/nt_printing.c   2006-02-25 11:57:11.609355932 +0100
++++ samba-3.0.21c/source/printing/nt_printing.c        2006-02-25 11:58:16.008362344 +0100
+@@ -530,28 +530,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;
+       }
+  
+@@ -2325,7 +2325,7 @@
+       close_all_print_db();
+       if (geteuid() == 0) {
+-              pstrcpy(printdb_path, lock_path("printing/"));
++              pstrcpy(printdb_path, cache_path("printing/"));
+               pstrcat(printdb_path, sharename);
+               pstrcat(printdb_path, ".tdb");
+Index: samba-3.0.21c/source/printing/printing.c
+===================================================================
+--- samba-3.0.21c.orig/source/printing/printing.c      2006-02-25 11:57:11.627352301 +0100
++++ samba-3.0.21c/source/printing/printing.c   2006-02-25 11:58:16.013361335 +0100
+@@ -183,8 +183,8 @@
+       int services = lp_numservices();
+       int snum;
+-      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);
+       /* handle a Samba upgrade */
+Index: samba-3.0.21c/source/printing/printing_db.c
+===================================================================
+--- samba-3.0.21c.orig/source/printing/printing_db.c   2006-02-25 11:57:11.628352100 +0100
++++ samba-3.0.21c/source/printing/printing_db.c        2006-02-25 11:58:16.015360931 +0100
+@@ -89,7 +89,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");
+Index: samba-3.0.21c/source/rpc_server/srv_srvsvc_nt.c
+===================================================================
+--- samba-3.0.21c.orig/source/rpc_server/srv_srvsvc_nt.c       2006-02-25 11:57:11.630351696 +0100
++++ samba-3.0.21c/source/rpc_server/srv_srvsvc_nt.c    2006-02-25 11:58:16.019360125 +0100
+@@ -158,10 +158,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;
+       }
+  
+Index: samba-3.0.21c/source/sam/idmap_tdb.c
+===================================================================
+--- samba-3.0.21c.orig/source/sam/idmap_tdb.c  2006-02-25 11:57:11.631351494 +0100
++++ samba-3.0.21c/source/sam/idmap_tdb.c       2006-02-25 11:58:16.022359519 +0100
+@@ -487,7 +487,7 @@
+       BOOL tdb_is_new = False;
+       /* use the old database if present */
+-      tdbfile = SMB_STRDUP(lock_path("winbindd_idmap.tdb"));
++      tdbfile = SMB_STRDUP(state_path("winbindd_idmap.tdb"));
+       if (!tdbfile) {
+               DEBUG(0, ("idmap_init: out of memory!\n"));
+               return NT_STATUS_NO_MEMORY;
+Index: samba-3.0.21c/source/smbd/lanman.c
+===================================================================
+--- samba-3.0.21c.orig/source/smbd/lanman.c    2006-02-25 11:57:11.633351091 +0100
++++ samba-3.0.21c/source/smbd/lanman.c 2006-02-25 11:58:16.028358309 +0100
+@@ -1040,9 +1040,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);
+   }
+Index: samba-3.0.21c/source/utils/net_idmap.c
+===================================================================
+--- samba-3.0.21c.orig/source/utils/net_idmap.c        2006-02-25 11:57:11.633351091 +0100
++++ samba-3.0.21c/source/utils/net_idmap.c     2006-02-25 11:58:16.071349634 +0100
+@@ -136,7 +136,7 @@
+               return NT_STATUS_UNSUCCESSFUL;
+       }
+-      tdbfile = SMB_STRDUP(lock_path("winbindd_idmap.tdb"));
++      tdbfile = SMB_STRDUP(state_path("winbindd_idmap.tdb"));
+       if (!tdbfile) {
+               DEBUG(0, ("idmap_init: out of memory!\n"));
+               return NT_STATUS_NO_MEMORY;
+Index: samba-3.0.21c/source/wrepld/process.c
+===================================================================
+--- samba-3.0.21c.orig/source/wrepld/process.c 2006-02-25 11:57:11.634350889 +0100
++++ samba-3.0.21c/source/wrepld/process.c      2006-02-25 11:58:16.073349231 +0100
+@@ -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;
+Index: samba-3.0.21c/source/registry/reg_db.c
+===================================================================
+--- samba-3.0.21c.orig/source/registry/reg_db.c        2006-02-25 11:57:11.635350688 +0100
++++ samba-3.0.21c/source/registry/reg_db.c     2006-02-25 11:58:16.076348626 +0100
+@@ -205,12 +205,12 @@
+       if ( tdb_reg )
+               return True;
+-      if ( !(tdb_reg = tdb_open_log(lock_path("registry.tdb"), 0, TDB_DEFAULT, O_RDWR, 0600)) )
++      if ( !(tdb_reg = tdb_open_log(state_path("registry.tdb"), 0, TDB_DEFAULT, O_RDWR, 0600)) )
+       {
+-              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,("regdb_init: Failed to open registry %s (%s)\n",
+-                              lock_path("registry.tdb"), strerror(errno) ));
++                              state_path("registry.tdb"), strerror(errno) ));
+                       return False;
+               }
+               
+@@ -252,11 +252,11 @@
+       
+       become_root();
+-      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 ) {
+               result = ntstatus_to_werror( map_nt_error_from_unix( errno ) );
+               DEBUG(0,("regdb_open: Failed to open %s! (%s)\n", 
+-                      lock_path("registry.tdb"), strerror(errno) ));
++                      state_path("registry.tdb"), strerror(errno) ));
+       }
+       unbecome_root();
+Index: samba-3.0.21c/source/lib/account_pol.c
+===================================================================
+--- samba-3.0.21c.orig/source/lib/account_pol.c        2006-02-25 11:57:11.592359361 +0100
++++ samba-3.0.21c/source/lib/account_pol.c     2006-02-25 11:58:16.078348222 +0100
+@@ -262,7 +262,7 @@
+               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;
+Index: samba-3.0.21c/source/registry/reg_perfcount.c
+===================================================================
+--- samba-3.0.21c.orig/source/registry/reg_perfcount.c 2006-02-25 11:57:11.636350486 +0100
++++ samba-3.0.21c/source/registry/reg_perfcount.c      2006-02-25 11:58:16.081347617 +0100
+@@ -44,7 +44,7 @@
+       
+       fstr_sprintf( path, "%s/%s", PERFCOUNTDIR, dbname );
+       
+-      pstrcpy( fname, lock_path( path ) );
++      pstrcpy( fname, state_path( path ) );
+       
+       return fname;
+ }
+@@ -54,7 +54,7 @@
+ void perfcount_init_keys( void )
+ {
+-      char *p = lock_path(PERFCOUNTDIR);
++      char *p = state_path(PERFCOUNTDIR);
+       /* no registry keys; just create the perfmon directory */
+       
+Index: samba-3.0.21c/source/rpc_server/srv_eventlog_lib.c
+===================================================================
+--- samba-3.0.21c.orig/source/rpc_server/srv_eventlog_lib.c    2006-02-25 11:57:11.630351696 +0100
++++ samba-3.0.21c/source/rpc_server/srv_eventlog_lib.c 2006-02-25 11:58:16.083347214 +0100
+@@ -67,7 +67,7 @@
+ {
+       fstring path;
+       char *tdb_fullpath;
+-      char *eventlogdir = lock_path( "eventlog" );
++      char *eventlogdir = state_path( "eventlog" );
+       
+       pstr_sprintf( path, "%s/%s.tdb", eventlogdir, name );
+       strlower_m( path );
+@@ -343,7 +343,7 @@
+       
+       /* make sure that the eventlog dir exists */
+       
+-      eventlogdir = lock_path( "eventlog" );
++      eventlogdir = state_path( "eventlog" );
+       if ( !directory_exist( eventlogdir, NULL ) )
+               mkdir( eventlogdir, 0755 );     
+