def ask_program(message):
    keep_going = True
    while keep_going:
        full_path = ask_string(message)
        if not full_path:
            break
        full_path = qisys.sh.to_native_path(full_path)
        if not os.path.exists(full_path):
            ui.error("%s does not exist" % full_path)
            keep_going = ask_yes_no("continue?")
            continue
        if not os.access(full_path, os.X_OK):
            ui.error("%s is not a valid executable!" % full_path)
            keep_going = ask_yes_no("continue?")
            continue
        return full_path
Returns all rows from a cursor as a dict
dataset/ETHPy150Open aldebaran/qibuild/python/qisys/interact.py/ask_program--crossover with--dataset/ETHPy150Open bartdag/recodoc2/recodoc2/apps/docutil/commands_util.py/dictfetchall