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().