summaryrefslogtreecommitdiff
blob: 3c5103c349f2aeb592f7d97ab3f44ca0a3ef4273 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
===================================================================
RCS file: /cvsroot/rdiff-backup/rdiff-backup/rdiff_backup/regress.py,v
retrieving revision 1.6.2.4
retrieving revision 1.6.2.5
diff -u -r1.6.2.4 -r1.6.2.5
--- rdiff-backup/rdiff-backup/rdiff_backup/regress.py	2003/09/28 04:34:39	1.6.2.4
+++ rdiff-backup/rdiff-backup/rdiff_backup/regress.py	2003/09/28 17:52:55	1.6.2.5
@@ -114,27 +114,23 @@
 def iterate_raw_rfs(mirror_rp, inc_rp):
 	"""Iterate all RegressFile objects in mirror/inc directory
 
-	Also changes permissions of unreadable files to allow access and
-	then changes them back later.
+	Also changes permissions of unreadable files.  We don't have to
+	change them back later because regress will do that for us.
 
 	"""
 	root_rf = RegressFile(mirror_rp, inc_rp, restore.get_inclist(inc_rp))
 	def helper(rf):
 		mirror_rp = rf.mirror_rp
-		if (Globals.process_uid != 0 and
-			((mirror_rp.isreg() and not mirror_rp.readable()) or
-			 (mirror_rp.isdir() and not mirror_rp.hasfullperms()))):
-			unreadable, old_perms = 1, mirror_rp.getperms()
-			if mirror_rp.isreg(): mirror_rp.chmod(0400 | old_perms)
-			else: mirror_rp.chmod(0700 | old_perms)
-		else: unreadable = 0
+		if Globals.process_uid != 0:
+			if mirror_rp.isreg() and not mirror_rp.readable():
+				mirror_rp.chmod(0400 | mirror_rp.getperms())
+			elif mirror_rp.isdir() and not mirror_rp.hasfullperms():
+				mirror_rp.chmod(0700 | mirror_rp.getperms())
 		yield rf
-		if unreadable and mirror_rp.isreg(): mirror_rp.chmod(old_perms)
 		if rf.mirror_rp.isdir() or rf.inc_rp.isdir():
 			for sub_rf in rf.yield_sub_rfs():
 				for sub_sub_rf in helper(sub_rf):
 					yield sub_sub_rf
-		if unreadable and mirror_rp.isdir(): mirror_rp.chmod(old_perms)
 	return helper(root_rf)
 
 def yield_metadata():
@@ -249,14 +245,14 @@
 		if rf.mirror_rp.isreg():
 			tf = TempFile.new(rf.mirror_rp)
 			tf.write_from_fileobj(rf.get_restore_fp())
-			rpath.copy_attribs(rf.metadata_rorp, tf)
 			tf.fsync_with_dir() # make sure tf fully written before move
+			rpath.copy_attribs(rf.metadata_rorp, tf)
 			rpath.rename(tf, rf.mirror_rp) # move is atomic
 		else:
 			if rf.mirror_rp.lstat(): rf.mirror_rp.delete()
 			rf.mirror_rp.write_from_fileobj(rf.get_restore_fp())
 			rpath.copy_attribs(rf.metadata_rorp, rf.mirror_rp)
-		rf.mirror_rp.fsync_with_dir() # require move before inc delete
+		rf.mirror_rp.get_parent_rp().fsync() # require move before inc delete
 
 	def start_process(self, index, rf):
 		"""Start processing directory"""