7Changes from 1.75 to 1.80
***********************************************
Entries marked - are bug fixes.
Entries marked * are feature changes/additions.

SERVER SIDE
July 20, 2002:
- Fixed an init error due to invalid MUF prim counts in the .h files.

July 24, 2002:
- Removed a small memory leak dealing with loaded <garbage> objects.
    [FB6 fix]

July 27, 2002:
- Fixed a small non-growing memory leak from not freeing timenodes
    at shutdown. [FB6 fix]
* Added timestamps to RE-CLEAR() stderr reports in MUF. [FB6 idea]
- Fixed a small reference count leak in MUF progs that error out
    in the middle of a for loop. [FB6 fix]

Aug 7, 2002:
* Added ./configure --with-mysql for configuring in MySQL libs into
    the Makefile.
* Made FILE_PRIMS a compile time option. Defaults to #defined, but
    undefining it will keep all the file prims from being compiled
    in.

Aug 9, 2002:
* Removed the #ifdefs for STAFF_POWER. Checked the implementation
    and everything is correct on it, so there's no real reason to
    leave it as a compile time toggle.
* Removed #ifdefs for DUMP_PROPQUEUES and made the feature 
    @tuneable.
* Made MUF_SOCKETS a compile time option. Turning that off will
    remove all support for MUF level sockets in the code.

Aug 14, 2002:
* Made a p_muf.c file for the MUF editing perms and added a compile
    time option called MUF_EDIT_PRIMS that determines if they are
    compiled in or not.

Aug 30, 2002:
- Cleaned up the messy shovechars() function in interface.c. 
    Considering changing IDLE flag behavior, and needed to make
    sure the function was clean before trying to work with it.

Sept 17, 2002:
- Fixed a lot of instances of '#' and '*' into NUMBER_TOKEN and
    LOOKUP_TOKEN so they could be consistant with defaults.h. [FB6 fix]

Oct 11, 2002:
- Removed RWHO option from config.h. Will be removing all RWHO related
    code soon.
- Removed MPI option from config.h. No reason to not compile a MUCK 
    with MPI support. :P Even still, there is the do_mpi_parsing
    @tune if one really wanted to shut it off entirely for some
    reason.
- Removed GOD_PRIV from config.h. Pertinent #ifdefs were removed
    from the actual code a long time ago.

Oct 16, 2002:
- Moved prim_testlock() from p_misc.c to p_props.c. 
- Moved prim_lockedp()  from p_db.c to p_props.c.

Oct 28, 2002:
- Fixed the macro#<number># error messages that kept showing up in
    the protomuck.err file.

Oct 31, 2002:
- Removed all RWHO related legacy code. 

Dec 05, 2002:
* Added the necessary changes to allow Proto to compile cleanly on OS-X.
- Added compile-time checks to account for the malloc.h deprecation in
    BSD variants.
* Redid all the ANSI for in-server commands to use a set of SYS<COLOR>
    tags instead.  All in-server command ANSI can now be disabled by
    #defining NO_SYSCOLOR in config.h at compile time. 

Dec 12, 2002:
- Fixed a ton of intermittant crashers that were particularly common on
    BSD variants. 

Dec 13, 2002:
- Fixed a number of minor memory leaks spotted by FB6 using some
    diagnostics tools. Whew!
- Ran all the Proto source through GNU-indent to get rid of the tons 
    of completely ugly code in places. 
    All future ProtoMUCK code will follow the formatting defined above. 
    I'll write out a document detailing it sometime soon. 
- Redid the indenting with the correct switch statement indentation:
    indent -bad -bap -nsob -br -ce -cdw -ss -npcs -nbc -cli4 -cbi0 -T array_iter -T array_data -T array_tree -T stk_array -T dbref -T object_flag_type -T object_power_type -T boolexp_type -T vars -T hash_data -T hash_entry -T hash_tab -T timequeue -T voidptr -T connection_t -T McpVer -T McpArgPart -T McpArg -T McpMesg -T McpPkg -T McpFrame -T MFNDAT -T argv_typ -T PropPtr -T COMPSTATE -T A_Block -T Block -T A_Header -T Header -T socklen_t -T McpFrameList -T DlogValue -T DlogData -T muf_re -T word32 -T byte -brs -i4 -ci4 -lp -ip1 -lps -ts0 -l80 -bbo -hnl *.c

Dec 15, 2002:
- Fixed it so that the code compiles cleanly if HTTPD and HTTPDELAY are
    #undef'd in config.h.

Dec 16, 2002:
* Made it so that if the resolver gets killed while the MUCK is still running,
    it will be restarted. [By Foxsteve]

Feb 18, 2003:
* Added nan.h to the distro, since many platforms fail to include it.
    It is GPL code. [Alynna]

Feb 19, 2003:
* Removed VERBOSELOAD #define. Replaced by a '-verboseload' commandline
    option to the protomuck binary. [Alynna]

Feb 26, 2003:
- Made it so that the boolexp.c abort() calls now just Wall online wizzees
    rather than shutting down the MUCK. None of those are critical enough
    errors to justify a PANIC shutdown. [Foxsteve] 

March 25, 2003:
* Added a new 'make setup' feature to the install process. This upgrade is to
    aid new sites in getting started out of the box, but will not be added to
    already existing sites that use the Upgrade kit to move from an earlier
    version to 1.80. [Alynna] Notes:
        Activated by 'make setup'
        Generates copies of config and a restart script.
        Helps with the setup of databases from Glow and FB6 by configuring
            the default @tuneables to the optimal settings for these 
            conversions.

INTERNAL COMMANDS
July 20, 2002:
- Fixed the EXPANDED_WHO @power to actually work. 
* Changed it so that anyone with the LOGWALL flag on them will get
    logwalled. They no longer have to be W3. However, W3 is still
    the only level that can set the LOGWALL flag.

July 24, 2002:
- Changed the exit cost deduction later in the function to prevent
    a player from getting unfairly charged. [FB6 fix] Does anyone
    even USE in-server pennies for anything anymore? :P 

July 27, 2002:
- Fixed a crasher for letting object names get too close to 
    BUFFER_LEN. [FB6 fix]

July 29, 2002:
- Fixed a couple MCP related crashers and errors. [FB6 fixes]
* Added @mcpprogram. Like @mcpedit, except it will create
    the program if it doesn't exist. (Like @prog will) [FB idea]

Aug 6, 2002:
- Added MySQL related @tune options for logging in, and for 
    capping the number of SQL returns from a single query.
- Added @sql. Command line option for checking the MUCK's 
    connection, turning it on, and off as well.

Aug 7, 2002:
- Removed login @tune info for MySQL support.
- Removed the @sql connection, as support has been moved 100%
    to MUF.

Aug 8, 2002:
* Made it so that @sweep will report listening rooms even if
    the player does not control them.
- Made it so that @sweep is aware of the various 'alisten' 
    style listen props.

Aug 9, 2002:
* Added a dump_propqueues @tune option that defaults to off.

Aug 14, 2002:
- Made it so that the _alpha/ and _beta/ propdirs aren't 
    unconditionally cleared when a MUF program is compiled.
    Now they will only be affected if the $alpha or $beta
    directive is encountered.

Aug 20, 2002:
- Up'd MCP GUI's version to 1.1, in line with FB6. [FB6 change]
* Made for more accurate Telnet negotiation. [FB6 change]
- Made it so that empty KEEPALIVE packets won't reset idletimes.
    [FB change]

Aug 21, 2002:
* Made it so that Save Messages will parse Neon ANSI.
* Added @tune enable_sockqueue.

Aug 22, 2002:
* Removed the enable_sockqueue @tune. Changed this control to
    a SET_SOCKOPT prim.
- Fixed it so that one can never @force a wiz that's higher
    level than them. This was fixed way back in 1.00, but the
    change got lost somewhere along the way before we got to CVS.
* Fixed it so that the <Wizards Only> mode message won't show to
    connections coming in on MUF ports. 
- Fixed it so that the Pueblo and Web logins get scanned by the
    in-server site-banning just like the normal telnet connections.
    MUF port connections are never scanned for sitebans.

Aug 27, 2002:
* Added socket_events @tune. Turns on the socket_events support.
    Defaults to on, but should be turned off if any problems
    are encountered while using socket prims.

Aug 29, 2002:
* Made it so that @newpassword can be used with the PLAYER_CREATE
    @power. The suggestion that @purge/@frob be combined into a
    seperate power has been made, still considering.

Sept 02, 2002:
* Made it so that the PLAYER_CREATE @power allows: @pcreate, 
    @newpassword, and the ability to @name other players.
* Added PLAYER_PURGE @power that grants access to @purge and
    @toad/@frob.

Sept 03, 2002:
* Added logwall_www @tune. When off, web access to the WWW port
    won't get logwalled. [User requested feature]
- Fixed a crasher related to freeing objects that were GARBAGE.

Sept 04, 2002:
* Added @tune compatible_muf_perms. Turning this on makes it so
    that newly created MUF programs have the QUELL and HARDUID
    and M3 flags on them, causing their MUF permissions levels 
    to function the same way as Glow and Fuzzball. Defaults off.

Sept 17, 2002:
- Made it so that @restrict indicates the current status when used
    with no arguments. [FB6 change]
- Added @chown_lock and @force_lock aliases to @chlock and @flock. 
    [FB6 change]
- Updated internal telnet negotiations. [FB6 change]
- Started adding some of the DB accessing/setting macros that FB6 uses. 
    [FB Change]

Sept 18, 2002:
* Made it so that @lock used with no argument will behave like @unlock.
    [FB6 change]
* Added @relink as an in-server command. [FB6 change]
* Added @tune max_wiz_preempt_count. If it isn't 0, then it indicates
    the maximum number of instructions that Wiz level PREEMPT programs
    can run as a way to prevent a w-bitted PREEMPT program infinite
    looping and locking up the MUCK. [FB6 idea]
* Added REGEXP and REGSUB prims. [FB6 prims]
- Fixed a memory leak from @toading players currently online. [FB6 fix]

Sept 19, 2002:
* Added a .debug/crashpid prop to the .debug/ directory. Indicates the
    last PID it was that actually errored out.

Sept 24, 2002:
- Fixed the 'occasional leading space' bug with descriptor user names.

Oct 10, 2002:
* Removed all set/remove restrictions for the LIGHT flag.
* Made it so that connections of type INBOUND are not logged/logwalled
    when disconnected. Since these are handled in MUF, it is assumed that
    the MUF code will handle any logging needed.
* Changed all FLOAT precision to DOUBLE instead. [FB6 change]

Oct 11, 2002:
- Fixed critical bugs with new 'doubles' support.

Oct 12, 2002:
- Fixed @relink to not crash on ambigious matches. 

Oct 21, 2002:
- Made it so that when a getparent() loop gets forced out after
    too many iterations, it returns #0 instead of the random
    dbref that it would have otherwise. 

Oct 25, 2002:
- Added a check to notify_nolisten() and notify_html_nolisten()
    to exit the functions early if the player dbref is less than
    #0. This prevents a couple rare, but potential crashes when
    working with login MUFs, MUF ports, etc.
* Made it so that @list with a '#' after the = sign will force
    line numbers to be displayed. '@' after the = sign will force
    line numbers to not be displayed. E.g., '@list <program>=@'
    will show no line numbers no matter what. [Feature request]

Oct 28, 2002:
- Fixed a bug with SecureCRT's NOP timeout sending an unexpected
    telnet control code.
* Added unidle_command and allow_unidle @tunes. The 'unidle_command' 
    is a word that players can type into the MUCK without actually
    unidling. For example, if unidle_command = "unidle", then players
    can type "unidle" into the MUCK and the command will not get processed
    and they'll be left unidle. This is to aid players who are stuck behind
    routers and firewalls. They can simply set up an idle trigger to send
    the unidle word every minute or so to keep their connections from 
    getting dropped. Setting allow_unidle to no turns off the support
    for this feature. It defaults to off. 

Dec 05, 2002:
- Fixed realms_wizards support. 

Jan 03, 2003:
- Fixed a bug where @tune scheduled autoarchives weren't
    being timestamped on #0 properly.

Feb 07, 2003:
- Fixed a memory leak resulting from loading the compression
    dictionary at the wrong time. [Hinoserm]

Feb 16, 2003:
* Added wizhidden_access_bit @tune. Controls what level of w-bit
    is required to access wizhidden props (@ props). Ranges from
    W1 to W5. [Alynna]

March 20, 2003:
* Made it so that Realm Wizzes don't pass 'controls' over players
    within their parent area.

MPI
Aug 8, 2002:
- Fixed a small bug with {ftime:} [FB6 fix]
- Fixed potential crasher buffer overrun with MPI variables. [FB6 fix]

Aug 20, 2002:
- Fixed a crasher in {commas:} with strings close to BUFFER_LEN in 
    size. [FB6 fix]

Sept 4, 2002:
* Added {parse_ansi:<type>, <string>} function that works exactly
    like the PARSE_ANSI MUF prim. 

Sept 18, 2002:
- Fixed a potential Buffer overrun in ABORT_MPI and RETURN MPI macros.
    [FB6 fix]

Oct 26, 2002:
- Fixed {commas:} function. [FB6 fix]

March 20, 2003:
* Many sections changed to allow normal players to have W1 level 
    permmissions whenever working objects that they own. [Alynna]
* {store:} changed to allow players to add/remove props on
    objects remotely, as long as they own them. [Alynna]

MUF
July 20, 2002:
- Removed the __muckname $def. Never actually worked, nor can it be
    easily fixed. Just set your own _defs/__muckname: prop on #0.
- Fixed power? to recognize CONTROL_ALL and ALL_MUF_PRIMS @powers.
- Changed power? to not abort on an invalid @power, but rather just
    return 0 in this case. This is in accordance with the flag? prim
    behavior.

July 23, 2002:
* Added a .debug/lastcrashtime prop to get written to programs when they
    crash. It's in a human readable time format rather than a systime. 
    [FB6 idea]
- Fixed memory leak in ARRAY_FMTSTRINGS. [FB6 bug]
- Fixed FMTSTRING to not accept negative dynamic precision strings. 
    [FB6 bug]
- Fixed an error with FMTSTRING accepting a dynamic field width of -1.
    [FB6 bug]
* Added Standard ANSI awareness to the FMTSTRING and ARRAY_FMTSTRINGS
    prims. [FB6 improvement]

July 24, 2002:
* Made it so that scoped variables will have their name shown in debug
    mode. [FB6 idea]
* Added ABS prim. [FB6 idea]
* Added SIGN prim. [FB6 idea. Kind of pointless. :P]
- Fixed a crasher when having nameless variables in function headers.
    [FB6 fix]
* Added DESCRBUFSIZE prim. [FB6 prim]
* Added }TELL in-server $define. [FB6 idea]
- Fixed potential crasher in ARRAY_FILTER_PROP. [FB6 fix]
- Fixed double-freeing in ARRAY_FMTSTRINGS. [FB6 fix]

July 28, 2002:
* Implemented first phase of MUF byte code optimizer. More work
    to be done still. [FB6 advancement]

July 29, 2002:
* Finished catching byte code optimizer up with FB6. [FB6 advancement]

Aug 6, 2002:
* Finished phase 1 of the MySQL support. Still a work in progress.
* Made it so that MUF programs set NO_COMMAND/NO_OPTIMIZE (N) won't get
    optimized via the byte code optimizer.

Aug 7, 2002:
* Completely redid MySQL support. Added SQLCONNECT, SQLQUERY, SQLPING,
    and SQLCLOSE. 
* Oh yeah, added MYSQL? :P Going to change it to just SQL? though.

Aug 9, 2002:
* Added SYSPARM_ARRAY prim. [FB6 prim]
- Fixed a long standing crasher with trying to kill events within
    the program that made them. [FB6 fix]
- Fixed the long standing GETPIDINFO bug when trying to get 
    the info on the currently running process.

Aug 14, 2002:
* Added KILL_MACRO, INSERT_MACRO, GET_MACROS_ARRAY, PROGRAM_LINECOUNT,
    PROGRAM_GETLINES, PROGRAM_DELETELINES, PROGRAM_INSERTLINES. 
    PROGRAM_GETLINES is the FB6 version. 
* Changed the way SQLQUERY works to make it more efficient. 
    (pre-allocating the field array).
* Made it so that flag? can detect the INTERNAL flag.
- Made minor corrections to SQLCLOSE and SQLPING.
- Updated the MUF manual.

Aug 20, 2002:
* Added the XOR prim (performs logical XOR). [FB6 prim]
- Made minor change to ARRAY_GET_PROPDIRS to match a change in FB6.
    I think our version already worked all along anyway. [FB6 fix]
* Made it so that TOKENSPLIT will allow a delimiter token to also
    be an escape char. [FB6 change]
* Made DESCR_SETUSER return 0 on incorrect passwords instead of
    just aborting.

Aug 21, 2002:
* Added a GET_SOCKINFO prim that gets information about a MUF
    SOCKET (connection time, number of commands, etc.)
* Fleshed out the MUF SOCKET structure to be more complete. 
    Now contains more information, such as the host of the
    other end, and the pointers needed for a raw input queue
    for handling Telnet connections correctly. 
* Added a recieve buffer for MUF sockets. Most of the time 
    it won't make a difference, unless someone is opening
    a connection to a listening MUF socket using raw 
    Windows Telnet or other simplistic telnet clients. 
    When enable_sockqueue is @tuned on, input in 
    NBSOCKRECV will be buffered until a newline is found, 
    just like how normal MUCK connections are handled. 
    However, this makes it so that non-printable characters
    are lost, and delete/backspace will remove characters
    from the buffered data. 
    When enable_sockqueue is @tuned to off (default), 
    NBSOCKRECV behaves as it always has before. This tends
    to suffice for all situations, except as mentioned, the
    off chance a connection is opened to listening sockets
    using cheap telnet clients. 
- Fixed TREAD to return the empty string and 0 to the stack
    when it times out like it was supposed to. Had been
    returning nothing.
* Phase 1 of connecting players via MUF sockets. Doesn't work
    too hot yet. Added a SOCKET_SETUSER prim, but it's not
    safe yet.

Aug 22, 2002:
* Finished the MUF SOCKET->player stuff. Seems to work good.
    SOCKET_SETUSER works just like DESCR_SETUSER, except the
    descr is replaced by a MUF socket. Tested extensively.
* Added SET_SOCKOPT prim for controling what queue mode
    NBSOCKRECV might use. This prim may be used in the future
    for other socket options, if I can think of any.
* Altered the NBSOCRECV queue support some. Took out the @tune
  that was for toggling it on or off. Now there's two modes:
    0 SET_SOCKOPT = Traditional behavior. No queueing, so telnet
                    input is recieved as it's being typed.
    1 SET_SOCKOPT = 'Dumb' queue. Simply queues all valid ASCII
                    until it hits an End of Line, or the buffer is
                    full.
    2 SET_SOCKOPT = 'Smart' queue. Works like a normal telnet
                    connection. Only printable ASCII is queued in
                    the buffer, non-printable ASCII is ignored, 
                    except for delete and backspace, which will
                    remove characters from the queue. 
    Changing the mode from 1 or 2 to 0 will cause any data in
    the buffer to be lost. 

Aug 27, 2002:
* First phase of MUF SOCKET events implemented. Working, not
    thoroughly tested yet.

Aug 29, 2002:
- Fixed an initialization error with NBSOCKRECV. This change
    MAY result in breaking some MUF programs using this prim
    to determine disconnects. The 'result' value wasn't getting
    initialized to 0, so often times a large number was pushed
    onto the stack when it should've been zero. NBSOCKRECV can't
    determine disconnects reliably anyway, so the practice of 
    checking its return for lost connection is now considered a 'bug'. 
- Fixed some stack overflow errors in a couple of the socket prims.
- Finished implementing MUF Socket events. Will be testing further.
- Fixed some Re-CLEAR() errors in the NOTIFY prim.
- Stack overflow crasher in FOREACH fixed. [by foxsteve]

Sept 4, 2002:
* Made it so that when a MUF Socket event happens on a listening
    socket, the Event ID is "SOCKET.LISTEN" instead of "SOCKET.READ".
* Made it so that the SOCKET? prim will return 1 for normal sockets
    and -1 for listening sockets, and 0 for non-socket data. 
- Removed the internal definition for staff? Too many programs use
    'staff?' as a function name, and this in-server $def will override
    program-specific 'staff?' functions. 
* Added in-server $defines for use with SET_SOCKOPT:
    NOQUEUE(0), SIMPLEQUEUE(1), TELNETQUEUE(2), HOMEINSTANCE(5).
* Added a HOMEINSTANCE option to SET_SOCKOPT. When used, it will 
    assign the socket to that instance, making it so that that is
    the instance that gets notifed of SOCKET events on that socket.
    By default, Socket Events are only notifed to the program instance
    where the MUF Socket was created. Using the HOMEINSTANCE argument
    for SET_SOCKOPT, the socket is reassigned to that particular
    instance. 

Sept 9, 2002:
- Fixed it so that MUF socket events aren't stalled by the select()
    call in interface.c.
* Added SOCKTODESCR prim. This prim pushes a MUF socket into the
    in-server descriptor list as an Inbound descriptor. It will 
    show up on WHO ! as [Inbound]. The following should be kept in mind:
    The [Inbound] descriptor will never be idled off by the
        inserver idle routines.
    While the [Inbound] descriptor can be written to via
        the various descriptor notification routines,
        it cannot be read from at all. The original MUF
        socket must be used with NBSOCKRECV to read in anything
        on that connection.
    The descriptor will be unconditionally closed once the MUF
        socket it was made from no longer exists. 
    The purpose of this prim was to allow me to write a MUF
        only webserver that maintained backwards compatability
        with already existing web-mufs. Most people will probably
        never find much use for this. 
- Fixed GETPIDS to catch programs in EVENT_WAITFOR states as well. [FB6 fix]

Sept 10, 2002:
- Fixed the listening MUF sockets to be non-blocking.
- Fixed a really hard to find memory leak with scoped variables and the
    FORK prim. Scoped variables will now pass correctly to child processes
    as well. Passing the fix on to FB6.
- Fixed a bug that allowed socket events to get to a frame that is already
    cleared.
- Fixed a infinite looping bug when trying to queue more than 2 socket events.
- Fixed a bad malloc() call relating to MUF events.

Sept 11, 2002:
- Fixed QUEUE to return the correct PID instead of always being 1 shy.
    This may break some programs that were already correcting for the
    error in the MUF. In such cases, adding:
    $def queue /queue 1 -
    to the top should fix it.
* Made it so that SOCKCLOSE won't work on a socket once
    SOCKTODESCR has been used. Have to use 'descrboot' or 'conboot'
    to kill the connection early, otherwise it will close when the socket
    instance is gone.

Sept 13, 2002:
- Made it so that the event returned from WATCHPID will have '-1' as the 
    data value instead of the PID if that particular PID aborted early
    rather than ended normally.

Sept 17, 2002:
* Made $pubdef abort rather than mess with @ or ~ props. [FB6 change]
* Added $libdef function-name. Adds the definition needed to call that
    function to the _defs/ directory. Similiar to the $pubdef directive,
    except that it just takes the function name as an argument and does
    the rest. $pubdef is still needed for definitions that require any
    special handling other than the standard _defs/ call. [FB6 idea]
- Fixed a bug with players not being unblocked when a MUF in event_waitfor
    was dequeued.
- Add an invalid name check to the copyobj prim. [FB6 Change]
* Added logging to the PROG_INSERTLINES prim. [FB6 idea]

Sept 18, 2002:
* Made it so that REMOVE_PROP doesn't abort when props end with the '/' mark.
    [FB6 change]
* Added PARSEPROPEX. [FB6 prim]
- Fixed a bug where programs made via NEWPROGRAM were considered 
    in-use. [FB6 fix]
- Fixed a bug with GETDIR corrupting strings if there were subdirectories.

Sept 19, 2002:
* Added the following in-server $defs to indicate various MUF related compile
    time options:
    HAVE_SQL            - If $ifdef'd, means SQL support was compiled in.
    HAVE_FILE_PRIMS     - If $ifdef'd, means File prims are compiled in.
    HAVE_SOCKET_PRIMS   - If $ifdef'd, means Socket prims are compiled in.
    HAVE_MUF_EDIT_PRIMS - If $ifdef'd, means the MUF editing prims are compiled.

Sept 20, 2002:
* Fixed up a lot of things wrong with the GETDIR prim. Also made it so that 
    it now returns 0 if the file exists but is not a directory. (Instead of 
    returning an empty array like it did before.)

Sept 21, 2002:
* Made it so that array_delitem no longer aborts if the index is out of range.
    The array is simply returned to the stack unchanged.
* Added a "OUTPUTQUEUE" field to the GETDESCRINFO array. Indicates the number
    of lines waiting to be sent in that descriptor's output queue.

Sept 23, 2002:
* Added a COPYPROPS prim. [By Foxsteve]

Sept 25, 2002:
- Fixed a bug introduced in beta2 with all of the *NOTIFY_EXLUDE prims.

Oct 1, 2002:
* Made it so that things set VEHICLE will be treated just the same as
    a player when moving them via MOVETO. Things set ZOMBIE already were
    handled this way. This basically affects triggering _depart and
    _arrive propqueues.

Oct 5, 2002:
- Attempted a fix to the NBSOCKRECV bool being more accurate on whether
    the connection was killed or not. Might work better now, will test
    it for awhile. 
* Made it so that socket events send an ID of "SOCKET.READ.#" where # 
    is the socket number. Now that I know that event_waitfor uses
    smatch routines to match event IDs.

Oct 10, 2002:
* Made it so that the 'Program not compilable' message reports the dbref.
* Made it so that the notify_descriptor* prims don't abort when trying to
    notify to an invalid descriptor. They simply don't do anything in 
    such a case.
* Added MUF EVENT pid info to GETPIDINFO prim. [FB6 change]
* Changed all FLOAT precision to DOUBLE instead. [FB6 change]

Oct 16, 2002:
- Fixed a null string crasher in the notify_exclude* prims. Mistake left
    over from work a couple of weeks ago.
* Added CHECKLOCK prim. Works like ISLOCKED? except it will also call 
    MUF programs contained in the @lock. This prim is ideal for when 
    the lock is actually being tried, such as using an action, as 
    opposed to just tested (such as displaying locked exits in a room, 
    in which case, ISLOCKED? is probably more ideal. ) 
    [User Requested Feature]

Oct 21, 2002:
* Added DEBUG_ON, DEBUG_OFF, DEBUG_LINE prims. [FB6 prims]

Oct 24, 2002:
* The INF prim has been removed and floating number support has been
    majorly beefed up. +inf, -inf now recognized, as well as normal INF,
    without being prims anymore. NAN recognized as well. INF and NAN can
    be saved to props and retrieved from props. [Work by Alynna]
- Fixed FRAND and POW. [Alynna fix]
- Fixed a bug with SETPROP float accuracy. [Alynna fix]

Oct 25, 2002:
- Fixed a crasher with array_notify and array_ansi_notify when the 
    dbref array had any invalid dbrefs in it. (above dbtop or below #0).

Oct 28, 2002:
- Fixed a bug with program editing getting screwed up when trying to 
    edit a program that had events falling due while the process owner
    was in the MUF editor.

Oct 29, 2002:
* Made it so that in order for the FORCE prim to work on #1, the program
    MUST be owned by #1, and MUST be set W4. 
* Made it so that the SET prim can set the MEEPER (M) bit. It can also
    remove it. If the object it is trying to set on is already a higher
    bit than M, then it will abort with a permissions denied error.

Oct 31, 2002:
* Added a percentage indicator to the Optimization report during MUF
    compiling.

Nov 09, 2002:
* Added SYSTIME_PRECISE primitive. Returns the systime with millisecond
    accuracy. [FB6 prim]

Nov 11, 2002:
* Made it so that the TRIG program -always- returns the original
    trigger. Used to be that if the program was called, TRIG
    would return the dbref of the program that called it. But
    if one needs that dbref, the CALLER prim will provide it.

Dec 11, 2002:
* Added DEBUGGER_BREAKPOINT. Forces the user into the MUF debugger
    at that point in the code. [FB6 prim]

Jan 7, 2003:
- Fixed a long standing rare crasher when dealing with descriptor
    based programs (login MUFs, MUF ports, etc.)

Jan 8, 2003:
* Added a MKDIR prim. Simply makes an empty directory with the 
    given name. Uses the same file shortcut tokens as the rest
    of the file prims. 

Jan 9, 2003:
- Re-enabled using \n in MUF for newlines. However, any \n marks
    written to properties will be lost when the MUCK restarts. They
    are coverted to the literal characters of '/' and 'n'. Use \r
    when wanting to store in-muck newlines to strings.

Jan 12, 2003:
* Added SOCKSHUTDOWN. Like SOCKCLOSE, except you can specify how
    much of the connection you want to close. (1 direction, or
    both directions). This is another one of those 'necessary
    for the MUF webserver, but otherwise probably not too
    useful for most people' prims. :P

Jan 15, 2003:
* HTOI, ITOH, UNESCAPE_URL, ESCAPE_URL added, as well as any required
    changes to cgi.c to accomidate these changes. [By Foxsteve]

Jan 22, 2003:
- Fixed a crasher when the MUF optimizer tried to optimize divide by
    zero situations. [Alynna]

Jan 30, 2003:
- Fixed INTOSTR to not return garbage from -2147483648. 
    [Bug report: #677073]

Feb 7, 2003:
- Fixed bugs with COMPILE and UNCOMPILE prims. [Hinoserm]
- Fixed memory leaks in the socket prims. [Hinoserm]

Feb 15, 2003:
* Added a alt_infinity_handler @tune. Makes it so that all the math 
    prims follow IEEE standard to the letter, as opposed to the 
    conventions that currently exist in the prims. [Alynna]
- Fixed a bug with proplist_int_counter set to 'yes' causing garbage 
    to be written to the props. [Alynna]
* Added DEG2RAD and RAD2DEG as in-server defines for converting 
    from degrees to radials and radials to degrees. Helps with the
    trig prims. [Alynna]

Feb 16, 2003:
* Added ARRAY_INTERPRET. [Alynna]
* The compatible_muf_prims @tune has been changed in what it does.
    When set to 'no', MUF program permissions are just like they were
    in Neon and all early versions of ProtoMUCK. When changed to 'yes',
    the following permissions apply:
    Programs run at the Bit set on the program by defalt.
    Programs set SETUID run at the level of the owner of the program.
    Programs set HARDUID run at the level of the owner of the trigger
        used.
    Programs set QUELL run at the level of the triggering player.
    [Alynna]

March 20, 2003:
- Changed all float precision to 15 digits. This removes some strange
    roundoff errors that were present in the 16 digit precision. [Alynna]

