Spaces:
Runtime error
Runtime error
from fontTools.misc.textTools import Tag, bytesjoin, strjoin | |
try: | |
import xattr | |
except ImportError: | |
xattr = None | |
def _reverseString(s): | |
s = list(s) | |
s.reverse() | |
return strjoin(s) | |
def getMacCreatorAndType(path): | |
"""Returns file creator and file type codes for a path. | |
Args: | |
path (str): A file path. | |
Returns: | |
A tuple of two :py:class:`fontTools.textTools.Tag` objects, the first | |
representing the file creator and the second representing the | |
file type. | |
""" | |
if xattr is not None: | |
try: | |
finderInfo = xattr.getxattr(path, "com.apple.FinderInfo") | |
except (KeyError, IOError): | |
pass | |
else: | |
fileType = Tag(finderInfo[:4]) | |
fileCreator = Tag(finderInfo[4:8]) | |
return fileCreator, fileType | |
return None, None | |
def setMacCreatorAndType(path, fileCreator, fileType): | |
"""Set file creator and file type codes for a path. | |
Note that if the ``xattr`` module is not installed, no action is | |
taken but no error is raised. | |
Args: | |
path (str): A file path. | |
fileCreator: A four-character file creator tag. | |
fileType: A four-character file type tag. | |
""" | |
if xattr is not None: | |
from fontTools.misc.textTools import pad | |
if not all(len(s) == 4 for s in (fileCreator, fileType)): | |
raise TypeError("arg must be string of 4 chars") | |
finderInfo = pad(bytesjoin([fileType, fileCreator]), 32) | |
xattr.setxattr(path, "com.apple.FinderInfo", finderInfo) | |