/[rdiff-backup]/rdiff-backup/rdiff_backup/regress.py
ViewVC logotype

Diff of /rdiff-backup/rdiff_backup/regress.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.6.2.4 by bescoto, Sun Sep 28 04:34:39 2003 UTC revision 1.6.2.5 by bescoto, Sun Sep 28 17:52:55 2003 UTC
# Line 114  def remove_rbdir_increments(): Line 114  def remove_rbdir_increments():
114  def iterate_raw_rfs(mirror_rp, inc_rp):  def iterate_raw_rfs(mirror_rp, inc_rp):
115          """Iterate all RegressFile objects in mirror/inc directory          """Iterate all RegressFile objects in mirror/inc directory
116    
117          Also changes permissions of unreadable files to allow access and          Also changes permissions of unreadable files.  We don't have to
118          then changes them back later.          change them back later because regress will do that for us.
119    
120          """          """
121          root_rf = RegressFile(mirror_rp, inc_rp, restore.get_inclist(inc_rp))          root_rf = RegressFile(mirror_rp, inc_rp, restore.get_inclist(inc_rp))
122          def helper(rf):          def helper(rf):
123                  mirror_rp = rf.mirror_rp                  mirror_rp = rf.mirror_rp
124                  if (Globals.process_uid != 0 and                  if Globals.process_uid != 0:
125                          ((mirror_rp.isreg() and not mirror_rp.readable()) or                          if mirror_rp.isreg() and not mirror_rp.readable():
126                           (mirror_rp.isdir() and not mirror_rp.hasfullperms()))):                                  mirror_rp.chmod(0400 | mirror_rp.getperms())
127                          unreadable, old_perms = 1, mirror_rp.getperms()                          elif mirror_rp.isdir() and not mirror_rp.hasfullperms():
128                          if mirror_rp.isreg(): mirror_rp.chmod(0400 | old_perms)                                  mirror_rp.chmod(0700 | mirror_rp.getperms())
                         else: mirror_rp.chmod(0700 | old_perms)  
                 else: unreadable = 0  
129                  yield rf                  yield rf
                 if unreadable and mirror_rp.isreg(): mirror_rp.chmod(old_perms)  
130                  if rf.mirror_rp.isdir() or rf.inc_rp.isdir():                  if rf.mirror_rp.isdir() or rf.inc_rp.isdir():
131                          for sub_rf in rf.yield_sub_rfs():                          for sub_rf in rf.yield_sub_rfs():
132                                  for sub_sub_rf in helper(sub_rf):                                  for sub_sub_rf in helper(sub_rf):
133                                          yield sub_sub_rf                                          yield sub_sub_rf
                 if unreadable and mirror_rp.isdir(): mirror_rp.chmod(old_perms)  
134          return helper(root_rf)          return helper(root_rf)
135    
136  def yield_metadata():  def yield_metadata():
# Line 249  class RegressITRB(rorpiter.ITRBranch): Line 245  class RegressITRB(rorpiter.ITRBranch):
245                  if rf.mirror_rp.isreg():                  if rf.mirror_rp.isreg():
246                          tf = TempFile.new(rf.mirror_rp)                          tf = TempFile.new(rf.mirror_rp)
247                          tf.write_from_fileobj(rf.get_restore_fp())                          tf.write_from_fileobj(rf.get_restore_fp())
                         rpath.copy_attribs(rf.metadata_rorp, tf)  
248                          tf.fsync_with_dir() # make sure tf fully written before move                          tf.fsync_with_dir() # make sure tf fully written before move
249                            rpath.copy_attribs(rf.metadata_rorp, tf)
250                          rpath.rename(tf, rf.mirror_rp) # move is atomic                          rpath.rename(tf, rf.mirror_rp) # move is atomic
251                  else:                  else:
252                          if rf.mirror_rp.lstat(): rf.mirror_rp.delete()                          if rf.mirror_rp.lstat(): rf.mirror_rp.delete()
253                          rf.mirror_rp.write_from_fileobj(rf.get_restore_fp())                          rf.mirror_rp.write_from_fileobj(rf.get_restore_fp())
254                          rpath.copy_attribs(rf.metadata_rorp, rf.mirror_rp)                          rpath.copy_attribs(rf.metadata_rorp, rf.mirror_rp)
255                  rf.mirror_rp.fsync_with_dir() # require move before inc delete                  rf.mirror_rp.get_parent_rp().fsync() # require move before inc delete
256    
257          def start_process(self, index, rf):          def start_process(self, index, rf):
258                  """Start processing directory"""                  """Start processing directory"""

Legend:
Removed from v.1.6.2.4  
changed lines
  Added in v.1.6.2.5

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26