'return a path object found by looking at the systems
underlying PATH specification. If the checker is not None
it will be invoked to filter matching paths.  If a binary
cannot be found, None is returned
Note: This is probably not working on plain win32 systems
but may work on cygwin.'

def sysfind(cls, name, checker=None, paths=None):

    if isabs(name):
        p = py.path.local(name)
        if p.check(file=1):
            return p
    else:
        if (paths is None):
            if iswin32:
                paths = py.std.os.environ['Path'].split(';')
                if (('' not in paths) and ('.' not in paths)):
                    paths.append('.')
                try:
                    systemroot = os.environ['SYSTEMROOT']
                except KeyError:
                    pass
                else:
                    paths = [re.sub('%SystemRoot%', systemroot, path) for path in paths]
            else:
                paths = py.std.os.environ['PATH'].split(':')
        tryadd = []
        if iswin32:
            tryadd += os.environ['PATHEXT'].split(os.pathsep)
        tryadd.append('')
        for x in paths:
            for addext in tryadd:
                p = (py.path.local(x).join(name, abs=True) + addext)
                try:
                    if p.check(file=1):
                        if checker:
                            if (not checker(p)):
                                continue
                        return p
                except py.error.EACCES:
                    pass
    return None
