foundationI_fluffos_v1/
foundationI_fluffos_v1/bin/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/ChangeLog.old/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/Win32/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/compat/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/compat/simuls/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/include/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/clone/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/command/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/data/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/etc/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/include/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/inherit/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/inherit/master/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/log/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/single/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/single/tests/compiler/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/single/tests/efuns/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/single/tests/operators/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/u/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/tmp/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/windows/
foundationI_fluffos_v1/lib/
foundationI_fluffos_v1/lib/cmds/ambassador/
foundationI_fluffos_v1/lib/cmds/database/
foundationI_fluffos_v1/lib/cmds/soul/
foundationI_fluffos_v1/lib/daemon/include/
foundationI_fluffos_v1/lib/daemon/save/
foundationI_fluffos_v1/lib/daemon/services/
foundationI_fluffos_v1/lib/daemon/soul/
foundationI_fluffos_v1/lib/doc/build/
foundationI_fluffos_v1/lib/doc/build/room/
foundationI_fluffos_v1/lib/doc/build/virtual/
foundationI_fluffos_v1/lib/doc/driver/
foundationI_fluffos_v1/lib/doc/efun/
foundationI_fluffos_v1/lib/doc/etc/
foundationI_fluffos_v1/lib/doc/help/creator/
foundationI_fluffos_v1/lib/doc/help/hm/
foundationI_fluffos_v1/lib/doc/help/user/
foundationI_fluffos_v1/lib/doc/lpc/basic/
foundationI_fluffos_v1/lib/doc/lpc/data_types/
foundationI_fluffos_v1/lib/doc/lpc/etc/
foundationI_fluffos_v1/lib/doc/lpc/intermediate/
foundationI_fluffos_v1/lib/doc/lpc/types/
foundationI_fluffos_v1/lib/doc/mudlib/
foundationI_fluffos_v1/lib/doc/mudlib/features/
foundationI_fluffos_v1/lib/domains/Examples/etc/
foundationI_fluffos_v1/lib/domains/Examples/room/
foundationI_fluffos_v1/lib/domains/Examples/virtual/
foundationI_fluffos_v1/lib/domains/Examples/virtual/exaA/
foundationI_fluffos_v1/lib/domains/Examples/virtual/exaB/
foundationI_fluffos_v1/lib/domains/Examples/weapon/
foundationI_fluffos_v1/lib/domains/Standard/
foundationI_fluffos_v1/lib/domains/Standard/pools/
foundationI_fluffos_v1/lib/domains/Standard/std/
foundationI_fluffos_v1/lib/domains/Standard/xtra/
foundationI_fluffos_v1/lib/include/
foundationI_fluffos_v1/lib/news/
foundationI_fluffos_v1/lib/secure/cfg/
foundationI_fluffos_v1/lib/secure/cmds/adm/
foundationI_fluffos_v1/lib/secure/cmds/ambassador/
foundationI_fluffos_v1/lib/secure/cmds/mortal/
foundationI_fluffos_v1/lib/secure/etc/
foundationI_fluffos_v1/lib/secure/etc/approval/
foundationI_fluffos_v1/lib/secure/etc/elections/
foundationI_fluffos_v1/lib/secure/etc/mudlib/
foundationI_fluffos_v1/lib/secure/etc/quests/
foundationI_fluffos_v1/lib/secure/save/daemon/
foundationI_fluffos_v1/lib/secure/save/postal/d/descartes/
foundationI_fluffos_v1/lib/secure/save/users/d/
foundationI_fluffos_v1/lib/secure/std/
foundationI_fluffos_v1/lib/std/obj/
foundationI_fluffos_v1/lib/std/room/
foundationI_fluffos_v1/lib/std/user/
foundationI_fluffos_v1/lib/std/virtual/
foundationI_fluffos_v1/old/
foundationI_fluffos_v1/win32/
//	_bug.c
//	original written by Sulam 030192
//	help added by Buddha 180192
//	logging for individual creators added by Descartes 201092
//      Edit, word wrap added by Manny 100893
 
#include <std.h>
#include <dirs.h>
 
inherit DAEMON;
 
int cmd_bug(string text);
int report(string *lines);
void end_text();
void abort();
string file;
 
 
int cmd_bug(string text) {
    string *lines;
    string str, new_text;
    object ob;

    if(!text || ob = present(text,this_player()) ||
      ob = present(text, environment(this_player()))) {
        rm(DIR_TMP+"/"+(string)this_player()->query_name()+".bug");
        file = file_name(ob ? ob : environment(previous_object()));
          previous_object()->edit(DIR_TMP+"/"+(string)this_player()->query_name()+".bug",
            (:"end_edit":), (:"abort":));
        return 1;
    }
    if(sscanf(text, "%s %s", str, new_text) == 2) {
        if(!(ob = present(str, this_player())) &&
          !(ob = present(str, environment(this_player()))))
            new_text = str+" "+new_text;
    }
    if(!ob) ob = environment(this_player());
	  file = file_name(ob);
          text = file + ": "+text;
          lines = explode(wrap(text), "\n");
          report(lines);
          return 1;
}
 
end_edit() {
  string *lines;
  string tmpfile;
    tmpfile = file+":\n"+read_file(DIR_TMP+"/"+(string)this_player()->query_name()+".bug");
    lines = explode(wrap(replace_string(tmpfile, "\n", " "), 77), "\n");
  rm("/tmp/"+this_player()->query_name()+".bug");
  report(lines);
}
 
report(string *lines) {
  string who, *elements;
  int x;
 
  elements = explode(file, "/");
  if(elements[0] == "realms") who = elements[1];
  else if(elements[0] == "domains") who = elements[1];
  else who = 0;
  
  log_file("bugs", "Bug reported by "+this_player()->query_cap_name()+
            " "+ctime(time())+":\n");
  if(who) log_file("reports/"+who, "Bug reported by "+
                    this_player()->query_cap_name()+": "+ctime(time())+"\n");
  x = -1;
  while(++x < sizeof(lines)) {
    log_file("bugs", lines[x]+"\n");
    if(who) log_file("reports/"+who, lines[x]+"\n");
  }
  write("Bug reported!  Thank you!\n");
  return 1;
}
 
void abort() {
  notify_fail("Bug report aborted.\n");
  rm("/tmp/"+this_player()->query_name()+".bug");
  return 0;
}