Skip to content
Back to top

# Source code for xonsh.platforms.macutils

    """Provides some Mac / Darwin based utility functions for xonsh."""

    from ctypes import byref, c_uint, create_string_buffer

    from xonsh.platform import LIBC

    def sysctlbyname(name, return_str=True):
        """Gets a sysctl value by name. If return_str is true, this will return
        a string representation, else it will return the raw value.
        """
        # forked from https://gist.github.com/pudquick/581a71425439f2cf8f09
        size = c_uint(0)
        # Find out how big our buffer will be
        LIBC.sysctlbyname(name, None, byref(size), None, 0)
        # Make the buffer
        buf = create_string_buffer(size.value)
        # Re-run, but provide the buffer
        LIBC.sysctlbyname(name, buf, byref(size), None, 0)
        if return_str:
            return buf.value.decode()
        else:
            return buf.raw