SYNOPSIS
        int find_input_to(object player, string fun)
        int find_input_to(object player, closure fun)
        int find_input_to(object player, object fun)
        int find_input_to(object player, object ob, string fun)

BESCHREIBUNG
        Findet den zuletzt fuer <player> gestarteten input_to(), abhaengig vom
        Argument <fun>:
          - <fun> ist ein String: der Funktionsname des input_to() muss passen
          - <fun> ist ein Objekt: das Objekt, an welches die Funktion des
            input_to() gebunden ist, muss passen
          - <fun> ist eine Closure: die input_to() Closure muss passen
          - <ob> und <fun> sind angegeben: sowohl Objekt als auch
            Funktionsname muessen passen.

        Die Funktion liefert -1, wenn kein input_to() gefunden wurde, sonst
        die Position im input_to() Stack (wobei 0 den als letztes
        hinzugefuegten input_to() bezeichnet).

GESCHICHTE
        Eingefuehrt in LDMud 3.2.9.

SIEHE AUCH
        input_to(E), input_to_info(E), remove_input_to(E),
        query_input_pending(E)
