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