From 701ae345ecfe2179a70ca9056f1d9f2152ceead2 Mon Sep 17 00:00:00 2001
From: scjones <scjones@users.savannah.nongnu.org>
Date: Wed, 19 Nov 2008 23:10:35 +0000
Subject: [PATCH] Merge changes from cvs1-11-x-branch

---
 src/ChangeLog |  8 ++++++++
 src/entries.c | 20 ++++++--------------
 src/sanity.sh |  4 ++--
 3 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/src/ChangeLog b/src/ChangeLog
index 5ebb8df8c..72ce7c1be 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,11 @@
+2008-11-19  Larry Jones  <lawrence.jones@siemens.com>
+
+	* entries.c (WriteTag): Remove any exiting file and recreate
+	rather than trying to overwrite (to avoid permission problems).
+
+	* sanity.sh (keyword-25): Protect keywords against accidental
+	expansion in sanity.sh itself.
+
 2008-11-18  Larry Jones  <lawrence.jones@siemens.com>
 
 	* client.c (add_prune_candidate): Strip all trailing slashes.
diff --git a/src/entries.c b/src/entries.c
index 0791498a8..8994d4187 100644
--- a/src/entries.c
+++ b/src/entries.c
@@ -855,21 +855,16 @@ WriteTag (const char *dir, const char *tag, const char *date, int nonbranch,
 	tmp = xstrdup (CVSADM_TAG);
 
 
+    if (unlink_file (tmp) < 0 && ! existence_error (errno))
+	error (1, errno, "cannot remove %s", tmp);
+
     if (tag || date)
     {
-	fout = xfopen (tmp, "w+");
+	fout = xfopen (tmp, "w");
 	if (tag)
 	{
-	    if (nonbranch)
-	    {
-		if (fprintf (fout, "N%s\n", tag) < 0)
-		    error (1, errno, "write to %s failed", tmp);
-	    }
-	    else
-	    {
-		if (fprintf (fout, "T%s\n", tag) < 0)
-		    error (1, errno, "write to %s failed", tmp);
-	    }
+	    if (fprintf (fout, "%c%s\n", nonbranch ? 'N' : 'T', tag) < 0)
+		error (1, errno, "write to %s failed", tmp);
 	}
 	else
 	{
@@ -879,9 +874,6 @@ WriteTag (const char *dir, const char *tag, const char *date, int nonbranch,
 	if (fclose (fout) == EOF)
 	    error (1, errno, "cannot close %s", tmp);
     }
-    else
-	if (unlink_file (tmp) < 0 && ! existence_error (errno))
-	    error (1, errno, "cannot remove %s", tmp);
     free (tmp);
 #ifdef SERVER_SUPPORT
     if (server_active)
diff --git a/src/sanity.sh b/src/sanity.sh
index 0dee0dcba..196b75e63 100755
--- a/src/sanity.sh
+++ b/src/sanity.sh
@@ -26547,9 +26547,9 @@ change"
 	  dotest_fail keyword-25 "${testcvs} diff -kk file1" \
 "diff -r1\.3 file1
 1c1
-< \$Name\$
+< "'\$'"Name"'\$'"
 ---
-> \$Name:  $"
+> "'\$'"Name:  "'\$'
 	  dotest keyword-26 "${testcvs} diff -kkv file1" ""
 
 	  dokeep
-- 
GitLab