def get_path(objID, version, searchFile, repositoryRoot):
    """a helper function.
    a replacement for DisplaySelection.get_path().
    called by get_file_path() below."""
    
    success,meta = searchFile.get_meta(objID, version)
    if not success or not meta:
        ryw.give_bad_news(
            'ReverseLists.get_path: get_path failed.', logging.critical)
        return (False, None)

    objroot = ryw_meta.get_objectstore_root(repositoryRoot, meta)
    paths = ryw_meta.get_paths(objroot, objID, version,
                               meta, RepositoryRoot)
    if not paths:
        ryw.give_bad_news('ReverseLists.get_path: failed to get paths.',
                          logging.critical)
        return (False, None)

    return (True, paths[0])
def get_all_paths(objID, version, skipLock = False, searchFile = None,
             allowNullSearchFile = False):
    #searchFile = ryw_meta.open_search_file(RepositoryRoot)
    #if not searchFile:
    #    return (False, None)

    #meta,objroot = ryw_meta.get_meta(searchFile, objID, version,
    #                                 RepositoryRoot)
    #searchFile.done()

    if searchFile == None and not allowNullSearchFile:
        ryw.give_bad_news('DisplaySelection.get_path: warning, no ' +
                          'searchFile. ok but should fix.',
                          logging.warning)

    if searchFile:
        success,meta = searchFile.get_meta(objID, version)
        if success and meta:
            objroot = ryw_meta.get_objectstore_root(RepositoryRoot, meta)
    else:
        success,meta,objroot = ryw_meta.get_meta2(
            RepositoryRoot, objID, version, skipLk = skipLock)
        logging.warning('DisplaySelection.get_path: get_meta2 called.')

    if not success or (not meta and not objroot):
        ryw.give_bad_news(
            'DisplaySelection: no meta, no objroot, giving up...',
            logging.critical)
        return (False, None, None)

    paths = ryw_meta.get_paths(objroot, objID, version, meta, RepositoryRoot)
    if not paths:
        ryw.give_bad_news('DisplaySelection: failed to get paths.',
                          logging.critical)
        return (False, None, None)

    return (True, paths, meta)