/* -*- LPC -*- */
/*
* $Locker: $
* $Id: surf_save.c,v 1.2 2000/07/25 01:00:49 pinkfish Exp $
* $Log: surf_save.c,v $
* Revision 1.2 2000/07/25 01:00:49 pinkfish
* Fix up to work with an inherited auto_load.
*
* Revision 1.1 1998/01/06 04:58:17 ceres
* Initial revision
*
*/
inherit "/std/surface";
mapping details;
nosave string save_file;
void do_load() {
if ( save_file ) {
all_inventory( this_object() ) -> dest_me();
if ( file_size( save_file + ".o" ) > 0 ) {
unguarded((: restore_object, save_file :));
if ( sizeof( details ) ) init_dynamic_arg( details );
}
}
} /* do_load() */
void create() {
save_file = "";
details = ([ ]);
::create();
} /* create() */
int test_remove( object ob, int flag) {
if ( find_call_out( "do_save" ) == -1 )
call_out( "do_save", 0 );
return 1;
} /* test_remove() */
int test_add( object ob, int flag) {
if ( find_call_out( "do_save" ) == -1 )
call_out( "do_save", 0 );
return 1;
} /* test_add() */
void do_save() {
if ( save_file ) {
details = ([ ]);
details = query_dynamic_auto_load();
unguarded((: save_object, save_file :));
}
} /* do_save() */
void check_euid() {
if ( previous_object() )
seteuid( geteuid( previous_object() ) );
} /* check_euid() */
void set_save_file( string file ) {
save_file = file;
do_load();
} /* set_save_file() */