+ char cacheFilename[1024];
+ FILE *file;
+
+ sprintf (cacheFilename, "%scache", commit_lockDir ? commit_lockDir : "");
+ file = fopen (cacheFilename, flags);
+ return file;
+}
+
+static void unlink_cache (void)
+{
+ char cacheFilename[1024];
+
+ sprintf (cacheFilename, "%scache", commit_lockDir ? commit_lockDir : "");
+ unlink (cacheFilename);
+}
+
+void bf_lockDir (const char *lockDir)
+{
+ size_t len;
+
+ xfree (commit_lockDir);
+
+ if (lockDir == NULL)
+ lockDir = "";
+ len = strlen(lockDir);
+ commit_lockDir = xmalloc (len+2);
+ strcpy (commit_lockDir, lockDir);
+
+ if (len > 0 && commit_lockDir[len-1] != '/')
+ strcpy (commit_lockDir + len, "/");
+}
+
+void bf_cache (int enableFlag)
+{
+ if (enableFlag)
+ {
+ if (!commit_area)
+ if (res_get (common_resource, "shadow"))
+ {
+ commit_area = mf_init ("shadow");
+ }
+ else
+ {
+ logf (LOG_FATAL, "Shadow area must be defined if commit"
+ "is to be enabled");
+ exit (1);
+ }
+ }
+ else
+ commit_area = NULL;