1 |
# Copyright 2002 Ben Escoto |
# Copyright 2002 2005 Ben Escoto |
2 |
# |
# |
3 |
# This file is part of rdiff-backup. |
# This file is part of rdiff-backup. |
4 |
# |
# |
58 |
|
|
59 |
def add_rorp(rorp, dest_rorp = None): |
def add_rorp(rorp, dest_rorp = None): |
60 |
"""Process new rorp and update hard link dictionaries""" |
"""Process new rorp and update hard link dictionaries""" |
61 |
if not rorp.isreg() or rorp.getnumlinks() < 2: return |
if not rorp.isreg() or rorp.getnumlinks() < 2: return None |
62 |
rp_inode_key = get_inode_key(rorp) |
rp_inode_key = get_inode_key(rorp) |
63 |
if not _inode_index.has_key(rp_inode_key): |
if not _inode_index.has_key(rp_inode_key): |
64 |
if not dest_rorp: dest_key = None |
if not dest_rorp: dest_key = None |
65 |
elif dest_rorp.getnumlinks() == 1: dest_key = "NA" |
elif dest_rorp.getnumlinks() == 1: dest_key = "NA" |
66 |
else: dest_key = get_inode_key(dest_rorp) |
else: dest_key = get_inode_key(dest_rorp) |
67 |
_inode_index[rp_inode_key] = (rorp.index, rorp.getnumlinks(), dest_key) |
_inode_index[rp_inode_key] = (rorp.index, rorp.getnumlinks(), dest_key) |
68 |
|
return rp_inode_key |
69 |
|
|
70 |
def del_rorp(rorp): |
def del_rorp(rorp): |
71 |
"""Remove rorp information from dictionary if seen all links""" |
"""Remove rorp information from dictionary if seen all links""" |
74 |
val = _inode_index.get(rp_inode_key) |
val = _inode_index.get(rp_inode_key) |
75 |
if not val: return |
if not val: return |
76 |
index, remaining, dest_key = val |
index, remaining, dest_key = val |
77 |
if remaining == 1: del _inode_index[rp_inode_key] |
if remaining == 1: |
78 |
else: _inode_index[rp_inode_key] = (index, remaining-1, dest_key) |
del _inode_index[rp_inode_key] |
79 |
|
return 1 |
80 |
|
else: |
81 |
|
_inode_index[rp_inode_key] = (index, remaining-1, dest_key) |
82 |
|
return 0 |
83 |
|
|
84 |
def rorp_eq(src_rorp, dest_rorp): |
def rorp_eq(src_rorp, dest_rorp): |
85 |
"""Compare hardlinked for equality |
"""Compare hardlinked for equality |