/*
// This file is part of the TMI distribution mudlib.
// Please include this header if you use this code.
// Written by Pallando and Watcher (92-12-10)
*/
#include <config.h>
#include <mudlib.h>
inherit DAEMON;
#define SYNTAX "Syntax: renew <object>\n"
int cmd_renew( string a ) {
object ob, new_ob, env;
string name, file;
int clone_number;
seteuid( getuid( previous_object() ) );
if( !a ) { notify_fail( SYNTAX ); return 0; }
// First find your object
ob = get_object(a);
if(!ob) {
notify_fail("Renew: Could not locate " + a + "\n");
return 0; }
if( interactive(ob) ) {
notify_fail("Renew: You cannot renew an interactive object.\n");
return 0; }
env = environment( ob );
// Second decide if it has been loaded or cloned
name = file_name( ob );
if( 2 != sscanf( name , "%s#%d", file, clone_number ) ) file = name;
// Third update it
catch( this_player()-> force_me( "update " + file ) );
if( !(new_ob = find_object(file)) ) {
notify_fail("Renew: Couldn't update " + file + "\n");
return 0; }
// Fourth give it back, using move or clone
if( ob ) {
ob-> move( VOID );
ob-> remove();
}
if( clone_number ) new_ob = clone_object( file );
write("Renew: " + file_name( new_ob ) + " updated");
if( env ) {
new_ob-> move( env );
write( " to " + file_name( env ) );
}
write( "\n" );
return 1; }
int help() {
write( ""+
SYNTAX +
"\nThis command searches for an object [object] using the get_object\n" +
"efun and if a match is located, it will update the source code, then\n" +
"replace the old object with an updated (cloned or loaded) version.\n");
return 1; }