/
MudOS_0.9.19/bin/
MudOS_0.9.19/doc/concepts/
MudOS_0.9.19/doc/driver/
MudOS_0.9.19/doc/efuns/bitstrings/
MudOS_0.9.19/doc/efuns/buffers/
MudOS_0.9.19/doc/efuns/communication/
MudOS_0.9.19/doc/efuns/core/
MudOS_0.9.19/doc/efuns/mappings/
MudOS_0.9.19/doc/efuns/math/
MudOS_0.9.19/doc/efuns/security/
MudOS_0.9.19/doc/lpc/constructs/
MudOS_0.9.19/doc/lpc/types/
MudOS_0.9.19/doc/platforms/
MudOS_0.9.19/etc/
MudOS_0.9.19/mudlib/
MudOS_0.9.19/mudlib/lil/
MudOS_0.9.19/mudlib/lil/clone/
MudOS_0.9.19/mudlib/lil/command/
MudOS_0.9.19/mudlib/lil/data/
MudOS_0.9.19/mudlib/lil/etc/
MudOS_0.9.19/mudlib/lil/include/
MudOS_0.9.19/mudlib/lil/inherit/
MudOS_0.9.19/mudlib/lil/inherit/master/
MudOS_0.9.19/mudlib/lil/log/
MudOS_0.9.19/mudlib/lil/single/
MudOS_0.9.19/mudlib/lil/u/
MudOS_0.9.19/src/testsuite/
MudOS_0.9.19/src/testsuite/clone/
MudOS_0.9.19/src/testsuite/command/
MudOS_0.9.19/src/testsuite/data/
MudOS_0.9.19/src/testsuite/etc/
MudOS_0.9.19/src/testsuite/include/
MudOS_0.9.19/src/testsuite/inherit/
MudOS_0.9.19/src/testsuite/inherit/master/
MudOS_0.9.19/src/testsuite/log/
MudOS_0.9.19/src/testsuite/single/
MudOS_0.9.19/src/testsuite/single/efuns/
MudOS_0.9.19/src/testsuite/u/
Fri Jan 14 20:10:31 CST 1993 (ucs_brf@pip.shsu.edu (Blackthorn))
	* raised patchlevel to 0.9.19
	* fixed parse.c's check_for_destr() call to use the proper
          argument (tmp.u.vec, not &tmp)
	* defined FCHMOD_MISSING for AIX (there were problems w/ it)
	* fixed stralloc.c so REFS(b)++ is only done if REFS(b) < MAXSHORT

Sat Jan  8 03:23:07 CST 1993 (bobf@metronet.com)
	* raised patchlevel to 0.9.18.31
	* fixed F_ADD case in interpret.c so array = array + scalar is not
	  allowed (F_ADD_EQ already does not allow array += scalar)
	* added support for buffer type in DATAGRAM_BINARY mode
	  (should have been there before, must have been accidentally
	   omitted when DATAGRAM_BINARY was put in)
	* added in diffs (and some updated files in the amiga/ subdir)
	  from Wildcard - they were for "0.9.18" - not sure if 0.9.18.31
	  will work for Amiga without changes

Fri Jan  7 06:32:54 CST 1993 (bobf@metronet.com)
	* raised patchlevel to 0.9.18.30
	* mud_status() total still wasn't matching; the Interactives field
	  wasn't included in the total - fixed

Fri Jan  7 06:06:17 CST 1993 (bobf@metronet.com)
	* raised patchlevel to 0.9.18.29
	* put a newline on the end of the "Warning: redefinition of #define"
	  compile-time error
	* fixed mud_status() display so the numbers in the columns actually
	  match up with the total (Sentences weren't being added properly,
	  and the overhead of object structs wasn't reflected on the chart)
	* fixed compiler.y to not pass the name of the current include file
	  to valid_override() when processing an "efun::..." statement in 
	  an include file...rather, pass the name of the actual program being
	  compiled

Mon Jan  3 02:49:59 CST 1993 (bobf@metronet.com (Blackthorn))
	* raised patchlevel to 0.9.18.28
	* fixed the "Cannot #include ..." error msg to not have an 
	  extra newline at the end

Thu Dec 30 15:20:34 PST 1993 (Cygnus)
	* raised patchlevel to 0.9.18.27
	* Re-ported parse_command() (parse.c)
	* Re-ported process_string() (parse.c)
	* Re-Ported process_value() (parse.c)
	* Re-Ported break_string() (parse.c)
	* Added new efuns process_value() and break_string().
	* Removed the DYNIX/ptx close hack.  It appears to work but imposes
	  too much overhead.
	* Added some casts to make the compiler happy.

Sun Dec 19 04:59:03 CST 1993 (bobf@metronet.com)
	* raised patchlevel to 0.9.18.26
	* changed compiler.y so efun arg checking follows the
	  CAST_CALL_OTHERS define
	* added code from Cygnus (ptx_close.c) to work around a bug in 
	  Sequent DYNIX/ptx (close() sometimes blocks when it shouldn't),
	  changed comm.c, socket_efuns.c, addr_server.c to use it
	* fixed resolve() efun so its callback will be able to be called by
	  the driver even when static (as the socket efun callbacks were fixed
	  in 0.9.18.21)

Sat Dec 18 04:32:55 CST 1993 (bobf@metronet.com)
	* raised patchlevel to 0.9.18.25
	* put in a fixed version of read_buffer() efun (truilkan)

Wed Dec 15 21:34:06 CST 1993 (bobf@metronet.com)
	* raised patchlevel to 0.9.18.24
	* changed the "L_RETURN comma_expr" case in compiler.y to use
	  compatible_types() so  "string blah() { return ob->func(); } doesn't
	  give an error when CAST_CALL_OTHERS is undef'ed in options.h (fix
	  from djohnson@cs.ucsd.edu)
	* fixed write_buffer() bug when the first arg was a string (tru)

Mon Dec 13 17:44:34 CST 1993 (bobf@metronet.com)
	* raised patchlevel to 0.9.18.23
	* added a compiler.y fix from Beek for the "Incorrect number of
	  arguments" error
	* removed shortest_path() efun that was added in 0.9.18.21

Sun Dec 12 01:24:03 CST 1993 (bobf@metronet.com)
	* raised patchlevel to 0.9.18.22
	* removed the negative array indices patch, it caused array subtraction
	  to work improperly

Sat Dec 11 21:43:08 CST 1993 (bobf@metronet.com)
	* raised patchlevel to 0.9.18.21
	* added Beek's patches to make the infamous 'Wrong permissions for
	  opening file ... for append' error more informative
	* added Cygnus' shortest_path() efun, see comments in shortest_path.c
	* added the entry for the new "buffer" type into the type_name array
	  in get_type_name() of compiler.y (reported by sjpaavol@cc.helsinki.fi)
	* fixed rc.c to not require the 'maximum buffer size' line if 
	  DISALLOW_BUFFER_TYPE is defined in options.h
	* changed socket_accept() in socket_efuns.c to do a select() on the
	  newly accepted socket to decide whether or not to make it S_BLOCKED
	  (suggestion from truilkan)
	* added patches from Inspiral to fix ed's indenter (taken from LP 3.2)
	* added fix from pi@Dragon's Den for the problem of '!' being unusable
	  in single char (get_char()) mode
	* fixed memory leak introduced in 0.9.18.19 (interpret.c) (truilkan)
	* added hasse@solace.mh.se's patches so that arr[1..-1] functions the
	  same as arr[1..sizeof(arr)-1], etc (negative indices are counted from
	  the end)
	* increased size of name buffer in comm.c's query_host_name to fix
	  problem w/ sites who have names larger than 19 chars
	* changed socket_efuns.c so current_object is set before all applies,
	  so socket callbacks can be static
	* fixed comm.c so having a "%s" in your prompt string won't cause a 
	  crash 

Fri Nov 12 01:31:32 CST 1993 (John Garnett)
	* raised patchlevel to 0.9.18.20
	* upped the size of arg_types array in make_func.y
	* added #undef DISALLOW_BUFFER_TYPE to options.h so that the 'buffer'
	  type can be disabled by those who don't want it or don't want to bother
	  changing their mudlib code not use any identifiers named 'buffer'.
	  This define disables the buffer-related efuns as well.
	* changed functionp(f) so that it returns 2 instead of 1 in the case
	  where f = (: obj, ({ str, arg0, arg1, arg2 }) :).  functionp(f)
	  still returns 1 when f = (: obj, str :)
	* added a new field to the 'funp' struct so that geteuid() may be
	  used on function ptrs.  geteuid(f) where f is of type
	  'function' will return the EUID of the creator of f [that object
	  which contained the code: f = (: obj, str :)].  If the creating
	  object did not have an EUID at the time of creation of the func ptr,
	  then the UID of the creating object is saved instead.  This new
	  feature (hopefully) makes it easier to use function ptrs in a secure
	  fashion.
	* changed debug_info() efun so that it reports the O_VIRTUAL flag.
	* changed new_user_handler() for Linux so that each new user socket
	  is set nonblocking since at least some versions of Linux have
	  an accept() system call that doesn't properly inherit the nonblocking
	  property from the listening socket.  This may fix problems with
	  MudOS hangs that some people are seeing with Linux-based MudOS muds.
	* fixed GNUmakefile to generate the .h files like opcodes.h etc before
	  making the Dependencies list.

Mon Nov  8 20:32:24 PST 1993 (John Garnett)
	* raised patchlevel to 0.9.18.19
	* cleaned up the Makefile some (removed the separate list of .c files).
	* added strerror() to port.c for those machines not having it.
	* added a new LPC type named 'buffer' that is a cross between the
	  LPC array type and the LPC string type.  'buffer' is intended as
	  a way to conveniently manipulate binary data.  'buffer' is not
	  zero-terminated (that is, it has an associated length).  A 'buffer' is
	  an array of bytes that is implemented using one byte per element.
	  buf[i] = x and x = buf[i] are allowed and do work.  sizeof(buf) works.
	  bufferp(buf) is available.  buf[i..j] should work as well.
	  buff = read_buffer(file_name, ...) (same args as read_bytes).
	  also 'int write_buffer(string file, int start, mixed source)',
	  buf = buf1 + buf2; buf += buf1, buf = allocate_buffer(size).
	  The socket efuns have been modified to accept and return the
	  'buffer' type.  Here is the revised enum from socket_efuns.h:
	   enum socket_mode {MUD, STREAM, DATAGRAM, STREAM_BINARY, DATAGRAM_BINARY}
	* the runtime config file now must specify a "maximum buffer size"
	  which controls the size of the largest 'buffer' that may be created.
	* read_bytes() and write_bytes() also changed a little.  Its now
	  possible to use write_bytes to write past the end of the existing file.
	  read_bytes(filename) will now read the entire file (instead of
	  requiring read_bytes(filename, 0, length_of_file)).
	* added an 'int crc32(buffer b|string s) efun which computes a 32-bit
	  cyclic redundancy code for a given buffer or string.  This is the
	  same algorithm (and code) that Zmodem uses for doing its CRC calculations.
	  This efunction was added mainly for use in 'checksumming' UDP packets
	  so that corrupted packets can be detected; but feel free to use
	  it for whatever you like.  The code for it is in crc32.c and crctab.h.
	* overloaded to_int() to accept 'buffer'.  E.g. buffer b; int x;
	  b = read_buffer(file, 0, 4); x = to_int(b);  Note that to_int()
	  expects the integer embedded in the buffer to be in network-byte-order.
	* In addition to 'int write_buffer(string file, int start, mixed source)'
	  there is also 'int write_buffer(buffer target, int start, mixed source)'
	  Note that write_buffer(string file, int start, int x) will write 'x'
	  into the file (or buffer) in network-byte-order.
	* In addition to 'buffer read_buffer(string file, int start, int len)'
	  there is also 'string read_buffer(buffer b, int start, int len)' which
	  provides a way to extract part or all of a buffer into a string.
	* changed typechecking in compiler.y to allow the buffer type to be
	  indexed (i.e. b[i])

Mon Nov  8 03:44:19 CST 1993 (bobf@metronet.com)
	* raised patchlevel to 0.9.18.18
	* changed strerror() call in efuns_main.c to be perror() when on A/UX
	* added a patch from tholle16@usurp.calvin.edu to speedup
	  explode(x, y) when strlen(y) == 1 by as much as 50%
	* added getcwd() decl to get_current_dir() in port.c to avoid warnings

Wed Nov  3 03:18:31 CST 1993 (John Garnett)
	* raised patchlevel to 0.9.18.17
	* fixed port.h to define SunOS_5 when compiled under Solaris + CenterLine
	  clcc (previously online defined if using Solaris + GCC).
	* fixed numerous places in the code that were using strcpy(str, str + 1)
	  to shift a string one to the left (usually to get rid of the leading
	  / on a pathname).  This isn't portable code since strcpy() doesn't
	  guarantee correctness of overlapping copies.
	* fixed write( (: this_object(), "foo" :)[1] + "\n") to work as expected.
	* fixed replace_program.c to work even when NO_SHADOWS is defined.
	* added a testsuite directory that hopefully will get expanded over
	  time to test MudOS efuns, eopers, etc.  See the testsuite/README file
	  for more info.

Tue Nov  2 02:57:05 CST 1993 (John Garnett)
	* raised patchlevel to 0.9.18.16
	* added two malloc debugging efuns that provide an interface to the
	  malloc debugging system calls provided by the NeXTSTEP OS (malloc_debug()
	  and malloc_check()).  See NEXT_MALLOC_DEBUG in options.h for more
	  info.  These efuns aren't available on other OS's.

Sun Oct 31 23:36:21 CST 1993 (bobf@metronet.com)
	* raised patchlevel to 0.9.18.15
	* optimized bufcat() in object.c
	* made replace_program() set the virtual flag on objects that use it
	  (affects return of virtualp() and makes them clonable)

Sun Oct 31 19:51:27 CST 1993 (John Garnett (garnett@gestalt.austin.tx.us))
	* raised patchlevel to 0.9.18.14
	* moved the 0.9.17.* ChangeLog entries into ChangeLog.3
	* added a line to f_mud_status() to print out the current working
	  directory (getcwd) in verbose mode ("status tables" command on many
	  muds).  Uses get_current_dir() in port.c.  This may need #ifdef'd for
	  different OS's.
	* added code to f_mud_status() to open and close a test file, printing
	  a hopefully informative error message if the open call fails.
	* added the MAXMEM option for AIX in GNUmakefile (already in Makefile).
	* added Tim Hollebeek's patch that makes the expression
	  (: "string" :) equivalent to the somewhat more
	  lengthy (: this_object(), "string" :).
	* added (char *) typecast to the MALLOC in replace_program.c (for AIX).

Wed Oct 27 23:47:58 CDT 1993 (bobf@metronet.com)
	* raised patchlevel to 0.9.18.13
	* fixed a bug in the socket_accept() fix

Wed Oct 27 23:18:25 CDT 1993 (bobf@metronet.com)
	* raised patchlevel to 0.9.18.12
	* fixed bug in HAS_PROFILE_FUNCTIONS add_define() call
	* fixed typo in 0.9.18.11 ChangeLog

Wed Oct 27 17:41:57 CDT 1993 (bobf@metronet.com)
	* raised patchlevel to 0.9.18.11
	* fixed socket_accept() in socket_efuns.c to set S_BLOCKED on 
	  the returned socket so write_callback() is called (as the docs
	  say it will be)
	* added replace_program.c to GNUmakefile
	* fixed explode so that (for example) explode("", "\n") does not
	  return ({ 0 })
	* fixed replace_program.c to not use ansi function header
	* added a define of HAS_PROFILE_FUNCTIONS when the driver is compiled
	  with PROFILE_FUNCTIONS enabled
	* added OPTIMIZE line with -qMAXMEM in Makefile for AIX 3.2.4
	* fixed f_call_out() so call_out("::func", x); 
	  is not allowed (was a crasher)

Wed Oct 27 02:02:08 CDT 1993 (bobf@metronet.com)
	* raised patchlevel to 0.9.18.10
	* fixed crasher in stat() efun

Sat Oct 23 20:23:48 PDT 1993 (rickert@cco.caltech.edu (Kringled))
	* added replace_program() efun, modified from Amylaars 
	  3.2.  Consists of replace_program.c and replace_program.h,
	  and patches to backend.c, and of course the entry in
	  func_spec.c

Wed Oct 20 16:51:29 CDT 1993 (bobf@metronet.com)
	* raised patchlevel to 0.9.18.8
	* fixed bug in to_float() efun (F_STRING should have been
	  T_STRING) (dj)
	* fixed security bugs in the stat() efun
	* added some code to sigpipe_handler to prevent crashes on linux
	* added first_inventory() and next_inventory() efuns back in

Mon Oct 11 08:15:01 CDT 1993 (bobf@metronet.com (Blackthorn))
	* raised patchlevel to 0.9.18.7
	* fixed crasher in member_array() efun when 3rd arg was zero
	* fixed possible crasher in save_object() (tmp_name made static)
	* fixed a few (s)printf() error msgs to report current_prog instead of
	  current_object name when appropriate

Sat Sep 25 19:19:48 CDT 1993 (bobf@metronet.com (Blackthorn))
	* raised patchlevel to 0.9.18.6
	* changed an strcat() in rc.c to an strcpy() (jg)
	* removed 0.9.18.1 change in copy_chars(), caused problems for other
	  people (systems that send \r\n or \n\r) (double enters)

Wed Sep 22 20:45:13 CDT 1993 (bobf@metronet.com (Blackthorn))
	* raised patchlevel to 0.9.18.5
	* added extern decl for tot_alloc_sentence to f_memory_info()
	* added VAX Ultrix to Platforms list

Wed Sep 22 00:19:15 CDT 1993 (bobf@metronet.com (Blackthorn))
	* raised patchlevel to 0.9.18.4
	* removed access_check.c from GNUmakefile
	* string_print_formatted(): changed it to initialize saves to 0,
	  fixes a crasher on some system types
	* fixed mud_status() and memory_info() so sentence overhead is
	  included in totals

Tue Sep 21 20:01:55 CDT 1993 (bobf@metronet.com (Blackthorn))
	* raised patchlevel to 0.9.18.3
	* fixed another bug in the simul_efun reloading stuff
	* commented out a gets() in crash_MudOS() in main.c (boggle) - could
	  this have been causing hangs at crashes?

Sun Sep 19 00:22:45 CDT 1993 (bobf@metronet.com (Blackthorn))
        * raised patchlevel to 0.9.18.2
	* fixed 0.9.18.1 bug in new simul_efun updating stuff, didn't work
	  when the simul_efun object was loaded through a binary file
	* removed filtering of certain chars from read_file()
        * changed addr_server.c's select() call to avoid warnings on HP-UX
        * added optional argument to query_heart_beat(), object to query
          the heart_beat of (patch from hasse@solace.hsh.se)
	* changed set_eval_limit() so an argument of 0 resets the current
	  eval cost, rather than setting the eval limit to 0
        * added support to initialize local variables.  Any valid expression
          is allowed (int x = <exp>;), as with global initializations (dj)
	* optimized shout() efun (whee)
        * COMPAT BUSTERS galore:
        * removed cat() (read_file() can easily be used to make a simul_efun)
        * removed log_file() (simul_efun can be easily made
        * removed extract() (simul_efun can be easily made)
        * removed shadowp() (use query_shadowing() instead)
        * removed next_living()
        * removed first_inventory() and next_inventory()
        * removed add_worth()
        * removed add_verb() and add_xverb() (add_action(x, y, 2) is the
          equivalent of add_action(x); add_xverb(y))
	* made add_action() require a string as second argument
        * removed 'cost' and 'worth' fields from domain/author stats
        * removed all references to GMALLOC and GCMALLOC
        * removed PRINTF from options.h; removing printf() and sprintf() from
          func_spec.c will cause its code to not be compiled in (as with
          most efuns)
        * removed ED from options.h; see PRINTF above
        * removed SET_EVAL_LIMIT from options.h; see PRINTF above
        * removed OLD_HB_BEHAVIOR support in options.h
        * removed OLD_PRESENT define from options.h; always on now
        * moved the define of NULL_MSG to "0" to config.h
        * removed COMM_STAT from options.h; its "overhead" is almost zero;
          always on now
        * removed support for LOG_SHOUT (was a define in options.h)
        * removed all host restriction support (ACCESS_RESTRICTED define
          in options.h, ACCESS.DENY files, etc etc)
        * removed VALID_CLONE support (was an options.h define)
        * removed LPC_OPTIMIZE and LPC_OPTIMIZE_LOOPS from options.h since
          they are apparently bugfree now; they will always be on
        * removed support for a string as argument #1 of move_object()
        * cleaned up options.h more
        * removed from runtime config file: "access log file",
          "access allow file", "config directory", "allowed ed cmds"
        * updated Config.example
 
Fri Sep 17 23:51:15 CDT 1993 (bobf@metronet.com (Blackthorn))
        * raised patchlevel to 0.9.18.1
        * changed eval_instruction() so that the switch() isn't done if
          the instruction is an efun, since none of the efuns are inside
          the switch() anyway.  might help on some compilers
        * fixed save_object() so its filename is passed with a leading slash
          to valid_write() in the master object
        * optimized sizeof() efun a bit
        * updated GNUmakefile to contain all latest Makefile stuff
	* fixed shadow() so you can't shadow yourself (heh)
	* new simul_efuns can now be added without shutting down the driver
	* removed arg type checks from destruct(), query_ip_name(),
	  query_ip_number() - redundant
	* removed some unused functions from array.c: flatten_array(),
	  num_elems(), sum_array(), symmetric_difference_alist()
	* changed select() call in backend.c to avoid warnings on HP-UX
	* changed #if's in get_cpu_times() so two unused variables are not
	  declared when both RUSAGE and TIMES are defined
	* cleaned up options.h a bit
	* removed all socket shutdown() calls, since it doesn't seem any
	  are needed, and they appear to be causing hangs on some machine
	  types
	* added CPP define to Makefile to fix func_spec compiling problem
	  on NeXTSTEP 3.1
	* fixed a few memory leaks in binaries.c (save_binaries code)
	* changed copy_chars() in comm.c to accept a \r without a \n as
	  a newline
	* changed f_exec() and f_match_path() to use pop_n_elems()
	* changed the char *inherit_file definition in file.c to be extern,
	  since its already declared in simulate.c
	* added a check in flush_message() for the EINTR error (on linux
	  systems) - if it occurs, continue as normal instead of making the
	  user LD
	* optimized member_array() efun a bit, and added support for 'function'
	  type (compared the same as mappings, arrays, etc are)

Thu Sep  9 03:05:39 CDT 1993 (bobf@metronet.com (Blackthorn))
	* raised patchlevel to 0.9.18
	* added -lmalloc to the EXTRALIBS Makefile line for Sequent (Cygnus)
	* added some typecasts to binaries.c to avoid compiler warnings(?)
	  (from Cygnus)
	* added names for the F_BREAK_POINT, F_CALL_EXTRA, and 
	  F_AGGREGATE_ASSOC ops in lex.c (add_instr_name's)
	* added a (char *) typecast to lex.c and efuns_main.c (RS/6000 complaining)
	* moved clear_notify() so that notify_fail() will work from inside
	  process_input().