/* * _pupdate.c * description: update a program * Author: Wayfarer * last modified : 2/13/92 */ #include <std.h> inherit DAEMON; private static int load (string str) { string res; res = catch (call_other(str,"???")); if (!res) return 1; write (res); return 1; } int cmd_pupdate (string str) { object ob, bag, thing, next_thing; int i; seteuid("TEMP"); if (!str) { ob = environment (previous_object()); if (ob && environment(ob)) { write("Not in a room.\n"); return 1; } str = "/" + file_name(ob); } str = absolute_path((string)this_player()->get_path(),str); if (!str) { notify_fail ("*Error in update\n"); return 0; } ob = find_object(str); if (!ob) { if (file_size(str+".c") < 0) { write("Invalid file or directory.\n"); return 1; } if (!load(str)) { write("No such object.\n"); } return 1; } /* save everything in the room first... */ bag = clone_object("/std/container"); thing = first_inventory(ob); while (thing) { next_thing = next_inventory(thing); thing->move(bag); thing = next_thing; } destruct(ob); file_size(str); load(str); bag->move(str); ob = find_object(str); thing = first_inventory(bag); while (thing) { next_thing = next_inventory(thing); if (ob) thing->move(ob); else { thing->move("/domains/standard/void"); tell_object(thing,"The room you are in dissolves into a mass of " + "twisted logic and confusion.\n" + "You suddenly find yourself somewhere else.\n"); } thing = next_thing; } destruct(bag); return 1; } int help() { write( @EndText Syntax: pupdate <string> Effect: ??? Anyone know how this differs from update? EndText ); return 1; }