.. efun:: string program_name() string program_name(object obj) Returns the name of the program of :arg:`obj`, resp. the name of the program of the current object if :arg:`obj` is omitted. The returned name is usually the name from which the blueprint of :arg:`obj` was compiled (the 'load name'), but changes if an object replaces its programs with the :efun:`replace_program`. As a special case, if :arg:`obj` is passed as 0, the function will return 0. The name always ends in '.c'. It starts with a '/' unless the driver is running in :macro:`__COMPAT_MODE__`. .. warning:: This efun swaps in the program if it is swapped out. .. usage:: :: object o; o = clone_object("/std/thing"); write(program_name(o)); // writes "/std/thing.c" in !compat mode // and "std/thing.c" in compat mode :history 3.2.6 introduced: :history 3.2.9 changed: allowed a 0 argument. .. seealso:: :efun:`clone_object`, :efun:`clonep`, :efun:`load_name`, :efun:`load_object`, :efun:`object_name`, :efun:`replace_program`