SYNOPSIS
        string program_name()
        string program_name(object obj)

BESCHREIBUNG
        Liefert den Name des Programms, aus dem <obj> kompiliert wurde.
        Wenn <obj> nicht angegeben wird, wird standardmaessig this_object()
        verwendet.

        Der Name ist fuer Clones der Name des Files, aus dem der Blueprint
        kompliert wurde. Der Name wechselt, wenn ein Objekt sein Programm
        durch replace_program() aendert.

        Fuer den Spezialfall, dass <obj> als 0 uebergeben wird, liefert
        program_name() 0 zurueck.

        Der Name endet immer mit '.c'. Er beginnt mit einem '/', wenn der
        Driver sich nicht im Compat Modus befindet.

BEISPIEL
        object o;
        o = clone_object("/std/dings");
        write(program_name(o));

        liefert:
        --> "/std/dings.c", wenn der Driver nicht im Compat Modus laeuft.
        --> "std/dings.c", wenn der Driver im Compat Modus laeuft.

AENDERUNGEN
        Eingefuehrt in LDMud 3.2.6.
        Seit 3.2.9 ist das Argument 0 erlaubt.

ANMERKUNG
        Die Efun swapt zum Programm, wenn dieses geswapt ist.

SIEHE AUCH
        clone_object(E), clonep(E), load_name(E), load_object(E),
        object_name(E), replace_program(E)
