# Source code for fontTools.ttLib.macUtils

    """ttLib.macUtils.py -- Various Mac-specific stuff."""

    from io import BytesIO
    from fontTools.misc.macRes import ResourceReader, ResourceError

    def getSFNTResIndices(path):
        """Determine whether a file has a 'sfnt' resource fork or not."""
        try:
            reader = ResourceReader(path)
            indices = reader.getIndices("sfnt")
            reader.close()
            return indices
        except ResourceError:
            return []

    def openTTFonts(path):
        """Given a pathname, return a list of TTFont objects. In the case
        of a flat TTF/OTF file, the list will contain just one font object;
        but in the case of a Mac font suitcase it will contain as many
        font objects as there are sfnt resources in the file.
        """
        from fontTools import ttLib

        fonts = []
        sfnts = getSFNTResIndices(path)
        if not sfnts:
            fonts.append(ttLib.TTFont(path))
        else:
            for index in sfnts:
                fonts.append(ttLib.TTFont(path, index))
            if not fonts:
                raise ttLib.TTLibError("no fonts found in file '%s'" % path)
        return fonts

    class SFNTResourceReader(BytesIO):
        """Simple read-only file wrapper for 'sfnt' resources."""

        def __init__(self, path, res_name_or_index):
            from fontTools import ttLib

            reader = ResourceReader(path)
            if isinstance(res_name_or_index, str):
                rsrc = reader.getNamedResource("sfnt", res_name_or_index)
            else:
                rsrc = reader.getIndResource("sfnt", res_name_or_index)
            if rsrc is None:
                raise ttLib.TTLibError("sfnt resource not found: %s" % res_name_or_index)
            reader.close()
            self.rsrc = rsrc
            super(SFNTResourceReader, self).__init__(rsrc.data)
            self.name = path