32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
|
import os
|
||
|
|
||
|
AUFS_METADATA = u'.wh..wh.'
|
||
|
AUFS_WHITEOUT = u'.wh.'
|
||
|
AUFS_WHITEOUT_PREFIX_LENGTH = len(AUFS_WHITEOUT)
|
||
|
|
||
|
def is_aufs_metadata(absolute):
|
||
|
""" Returns whether the given absolute references an AUFS metadata file. """
|
||
|
filename = os.path.basename(absolute)
|
||
|
return filename.startswith(AUFS_METADATA) or absolute.startswith(AUFS_METADATA)
|
||
|
|
||
|
def get_deleted_filename(absolute):
|
||
|
""" Returns the name of the deleted file referenced by the AUFS whiteout file at
|
||
|
the given path or None if the file path does not reference a whiteout file.
|
||
|
"""
|
||
|
filename = os.path.basename(absolute)
|
||
|
if not filename.startswith(AUFS_WHITEOUT):
|
||
|
return None
|
||
|
|
||
|
return filename[AUFS_WHITEOUT_PREFIX_LENGTH:]
|
||
|
|
||
|
def get_deleted_prefix(absolute):
|
||
|
""" Returns the path prefix of the deleted file referenced by the AUFS whiteout file at
|
||
|
the given path or None if the file path does not reference a whiteout file.
|
||
|
"""
|
||
|
deleted_filename = get_deleted_filename(absolute)
|
||
|
if deleted_filename is None:
|
||
|
return None
|
||
|
|
||
|
dirname = os.path.dirname(absolute)
|
||
|
return os.path.join('/', dirname, deleted_filename)[1:]
|