/* /adm/simul_efun/domains.c * from Nightmare IV * sefuns for managing domains * created by Descartes of Borg 931204 */ #include <dirs.h> object domain_master(mixed val) { if(!val) return 0; if(stringp(val)) { if(!domain_exists(val)) return 0; else return load_object(DOMAINS_DIRS+"/"+val+"/adm/master"); } else if(objectp(val)) { if(val = domain(val)) return load_object(DOMAINS_DIRS+"/"+val+"/adm/master"); else return 0; } error("Bad argument 1 to load_object().\n"); } int domain_exists(string dmn) { if(!stringp(dmn)) return 0; return (file_size(DOMAINS_DIRS+"/"+dmn+"/") == -2); } string domain(mixed val) { string nom, tmp; if(objectp(val) && domain_exists(tmp=(string)val->query_domain())) return tmp; else if(stringp(val) && val=load_object(val) && domain_exists(tmp=(string)val->query_domain())) return tmp; nom = (objectp(val) ? file_name(val) : (string)val); if(sscanf(nom, DOMAINS_DIRS+"/%s/%*s", tmp) == 1) return tmp; if(sscanf(nom, REALMS_DIRS+"/%*s/%s/%*s", tmp) == 1 && domain_exists(tmp)) return tmp; return 0; }