/* -*- LPC -*- */ /* * $Locker: $ * $Id: loader.c,v 1.1 1998/01/06 04:03:45 ceres Exp $ * $Log: loader.c,v $ * Revision 1.1 1998/01/06 04:03:45 ceres * Initial revision * */ /* this is the file you use to preload things... * It will be added to the preload list on the maste object automaticly */ string *pre_load; void create() { int i; string domain; foreach(domain in "/secure/master"->query_domains()) { //seteuid((string)"/secure/master"->creator_file("/d/"+domain+"/loader")); unguarded((: restore_object, "/d/"+ domain + "/loader" :)); if (!pre_load) pre_load = ({ }); for (i=0;i<sizeof(pre_load);i++) { if(pre_load && explode(pre_load[i], "/")[1] != domain) printf("invalid " + domain + " preload: " + pre_load[i] + "\n"); else { printf(domain +" pre_loading "+pre_load[i]+".\n"); if (catch(call_other(pre_load[i], "??"))) call_out("do_load", 0, pre_load[i]); } } } } /* this is so the errors get done... ;) */ void do_load(string str) { call_other(str, "??"); } int add_pre_load(string domain, string str) { if(member_array(domain, "/secure/master"->query_domains()) == -1) return 0; unguarded((: restore_object, "/d/"+ domain + "/loader" :)); if (!pre_load) pre_load = ({ }); if (member_array(str, pre_load) == -1) pre_load += ({ str }); //seteuid((string)"/secure/master"->creator_file("/d/"+domain+"/loader")); save_object("/d/" + domain + "/loader"); return 1; } int remove_pre_load(string domain, string str) { int i; if(member_array(domain, "/secure/master"->query_domains()) == -1) return 0; unguarded((: restore_object, "/d/"+ domain + "/loader" :)); if (!pre_load) pre_load = ({ }); if ((i=member_array(str, pre_load)) == -1) return 0; pre_load = delete(pre_load, i, 1); //seteuid((string)"/secure/master"->creator_file("/d/"+domain+"/loader")); save_object("/d/" + domain + "/loader"); } string *query_pre_load(string domain) { if(member_array(domain, "/secure/master"->query_domains()) == -1) return ({ }); unguarded((: restore_object, "/d/"+ domain + "/loader" :)); if (!pre_load) pre_load = ({ }); return pre_load; }