#include <soul.h>
inherit COMMAND_BASE;
/** @ignore yes */
int cmd( string str ) {
string *filenames, err, fname, *loaded, *failed, *succ, ret, load_err;
object ob;
int size;
if( !str )
return notify_fail("Load what?\n");
if( !sizeof( filenames = TP->get_cfiles(str) ) )
return notify_fail("No such file.\n");
loaded = ({ });
succ = ({ });
failed = ({ });
load_err = "";
foreach( fname in filenames ) {
if( !file_exists(fname) && file_exists(fname)+".c") {
failed += ({ fname });
continue;
}
if( find_object( fname ) ) {
loaded += ({ fname });
continue;
}
if( sscanf( fname, SOUL_DIR+"%s", err ) == 1 ) {
if( err = catch( SOUL_COMPILER->compile_file("/"+err ) ) )
load_err += sprintf("Failed to load %s, error: %s",
fname, err );
else
succ += ({ fname+" (soul)"});
} else {
if( err = catch( ob = load_object( fname ) ) )
load_err += sprintf("Failed to load %s, error: %s",
fname, err );
else if( !ob )
failed += ({ fname });
else
succ += ({ fname });
}
}
ret = "";
if( size = sizeof(loaded) )
ret += query_multiple_short(loaded)+" "+( size == 1 ? "is" :
"are")+" already loaded.\n";
if( size = sizeof(failed) )
ret += "The file"+( size == 1 ? " " : "s ")+
query_multiple_short(failed)+" cannot be compiled.\n";
if( strlen(load_err) )
ret += load_err;
if( sizeof(succ) )
ret += sprintf("$I$5=$C$Loaded %s.\n", query_multiple_short(succ) );
TP->show_message("$P$Load$P$"+ret );
return 1;
} /* cmd() */