#include "log.h"
void smart_log(string type, string text) {
  string where, temp1, temp2, junk, *j, person;
  where = file_name(environment(this_player()));
  text = where + "\n" + ctime(time()) + " " + text;
  log_file(type, text);
  if (where[0] == '/')
    where = where[1..10000];
  switch (where[0..1]) {
    case "w/" :
      sscanf(where, "w/%s/%s", temp1, temp2);
      if (file_size("/w/"+temp1) == -2) {
        person = temp1;
      } else
        person = "ducky";
      break;
    case "d/" :
      sscanf(where, "d/%s/%s", temp1, temp2);
      person = (string)("/d/"+temp1+"/master")->log_who(where);
      break;
  }
  if (where[0..4] == "room/")
    person = "ducky";
  j = explode(where, "/");
  write_file((temp1 = (implode(j[0..sizeof(j)-2], "/") + "/" + ERROR_LOG)),
              type+" : "+text);
  temp1 = read_file("/w/"+person+"/"+PLAYER_ERROR_LOG);
  if (!temp1)
    temp1 = "";
  j = explode(temp1, "\n");
  if (!j)
    j = ({ });
  if (member_array(where, j) == -1)
    j += ({ where });
  temp1 = implode(j, "\n")+ "\n";
  "/secure/master"->do_log(person, temp1);
}