I've just released CircleMUD version 3.0, patchlevel 11, to the usual FTP sites (ftp.cs.jhu.edu and cambot.res.jhu.edu in pub/CircleMUD/3.x). A few notes: -- This will be one of the last beta patchlevels. Effective this patchlevel, *NO* new features will be added -- ONLY bug fixes. This means that a complete OLC will not be included until production version 3.01 or 3.02. (OLC will be done just as quickly as before; I have just changed the numbering scheme so that people who are waiting for the non-beta release of Circle can start developing their MUDs.) Once we get out of beta, hopefully we will have a very solid, stable, highly portable code base -- then, I'll be able to start adding new features again. -- Starting with pl11, CircleMUD now compiles under Windows 95 and NT! Please only attempt this if you know what you're doing - I am absolutely not going to offer any technical support for Windows 95 users who don't know how to use their compilers. :-) There are currently no binary distributions, although I will probably release a binary for Windows once the code gets out of beta. -- I've decided to stop distributing Circle in .tar.Z format because everyone uses gzip now. Also, I've started distributing Circle in .zip format to make it easier for Windows and OS/2 users to use. -- It was brought to my attention that the old patch files that used to be on the FTP site didn't work because I forgot to include the --new-file switch to diff. So, I've deleted the old patch files and recreated patch files to go from patchlevel 8, 9, and 10 directly to 11. I've pasted the ChangeLog entries for patchlevel 11 below. Enjoy! Regards, Jeremy jelson@jhu.edu ******** Patchlevel 11 *************************************************** -- Patches to make Circle compile under MSCV++ 4.0 under Windows 95: Created a 'conf.h.win' to act as Windows' conf.h. Created a new constant, CIRCLE_WINDOWS, to use for #ifdef's. Changed OS2's constant from OS2 to CIRCLE_OS2 for consistency. Changes to some of the types throughout the code (e.g. changing some int's to size_t's. Changed the type of all sockets from int to socket_t; sysdep.h typedef's int as being socket_t under UNIX and SOCKET to socket_t under Windows. Changes to some of the code in comm.c (with ifdef's) to account for some of the differences between WinSock and Berkeley Sockets. Wrote a "fake" gettimeofday() function which is an interface to the Win32 GetTickCount() and a WinSock-compatible nonblock(). Renamed 'act.obj.c' to 'act.item.c' to defeat an apparent bug in MSVC++ that refuses to properly object files that have the word "obj" in their name (i.e. act.obj.obj). Changed the boot-up procedure so that the max player calculation is done before socket initialization (this is done so that the max can be reduced from the MAX_PLAYERS value in comm.c if WSAStartup() tells us we have less than that number of max sockets available. Created a CLOSE_SOCKET macro: under UNIX, this is #defined as close(); under Windows, it's defined as closesocket. #defined log(x) as basic_mud_log(x) to prevent namespace collision with the mathematical log() function. -- Various fixes to the 'configure' script: The '-lsocket' library should hopefully be detected more reliably (by detecting -lnsl first; some systems need -lnsl before -lsocket will link successfully). The -cckr option is given to the compiler if we are not using gcc and it is determined that your system's cc can take the -cckr argument. -fno-strict-prototypes given if we're using gcc (this should hopefully alleviate the continuing headache of getting function prototypes to work). Include a prototype for random and srandom if it's determined that we're using Circle's random/srandom functions and not libc's. Check for the presence of arpa/telnet.h, and use our own local copy (telnet.h is now included with the Circle distribution) if it does not exist. Check for sys/types.h before including it. Configure recreated with GNU autoconf v2.9 (previously was 2.7). -- Made some fixes to the autorun script: most notably, it was not passing command-line parameters to the MUD, meaning that you had to change the port in config.c in order for it to be changed if you were using autorun. This means that port-number changing now works the way it was documented (autorun setting takes precedence over config.c). -- Made some changes to conf.h.os2 to reflect the new configure script and the changing of the constant from OS2 to CIRCLE_OS2. -- Moved heartbeat functions out of game_loop and into their own function which is called by game_loop (seems more logical this way to me). -- game_loop, comm.c: The code which controls the tick-timing was rewritten; the timer is now much more accurate (does not drift with time), and gracefully handles making up for lost ticks if the MUD is suspended for more than a single tick-length (e.g. if the scheduler keeps it waiting for a long time under heavy load). Added a 'timeadd' function to add two timevals for use with the calculations. -- Added a timeout to the "What is your name?" prompt; should prevent denial of service attacks whereby people use up all available descriptors by repeatedly telnetting into the game and staying idle. (Though I have not received reports of this happening, I'm sure someone has thought of it.) -- Fixed various typos in the code, help files, and libraries. -- do_advance, act.wizard.c: Does not allow someone to be advanced to the level they already are. -- invalid_name, ban.c: Changed the buffer size from MAX_NAME_LENGTH to MAX_INPUT_LENGTH; was causing crashes when very long names were given. -- Fixed look_in_obj, act.informative.c, to prevent crashes when looking into fountains or cups with invalid values. -- Changed the semantics of top_of_helpt so that it points to the top element, not the number of elements, in the help table (done to be consistent with the other top_of_xxx variables). Fixed do_help in act.informative.c to prevent crashes if "help zzzzzz" is typed. -- Reshuffled the position of alias freeing in free_char yet again (I think I've finally gotten this one right). -- handler.c, affect_from_char(): Changed the list traversal over to the classic method used when traversing a list and deleting items as we go (i.e. keeping around a temp variable with hjp->next). (This bug was found courtesy of Win95's completely unforgiving memory manager.. unlike most UNIX memory managers, it causes crashes if you try to use memory that was just freed.... Win95 is almost as good as Electric Fence! :-)) -- handler.c, extract_char(): Changed "if (ch->desc != NULL)" to "if (!freed && ch->desc != NULL)" because ch was potentially freed in the previous statement. (This bug was also found by Win 95...) -- limits.c, point_update(): gain_condition called first rather than last; causes crashes when gain_condition() is called on a character that has just bled to death (i.e. killed by point_update()). (This bug was also found by Win 95...) -- Some similar cases of structures being used after they were freed in shop.c fixed (found by Win95...) -- Fixed the pet shops so pets are no longer priced at 0 coins; pet prices are now 300 coins times the level of the pet. -- spell_parser.c, get_skillname(): If the skill is -1, return UNUSED instead of UNDEFINED (makes stat and scroll of identify output look better). -- Added more sanity checks to spell_parser.c (spell_level() and cast_spell()) to prevent crashes if scrolls are created with wild spell numbers. -- spell_parser.c, spello() and unused_spell(): Changed to use a loop instead of enumerating all classes; should make adding new classes easier. -- spells.h: Changed types of mana_{min,max,change} to int to correctly handle spells which take large mana requirements. -- handler.c, generic_find(): Silly bug introduced in pl10 fixed whereby you can't look in objects if you are equipped. -- mail.h: Changed a '1' to a 'sizeof(char)' in the MudMail system (caused assertion failures on architectures where sizeof(char) != 1) -- utils.c, sprinttype(): Cleaned up the code. Looked silly before. -- Fixes to autowiz.c: Added an fflush() at the end so that wizlists are correctly updated. Also removed some old bzero() calls that were still lurking from the old days (modern SYSV systems don't like bzero() at all.) Took out the SO_REUSEPORT socket option. -- Fixed wld2html.c: The parser code was quite old and could not handle the 3.0 world files with ASCII bitvectors. wld2html now works correctly. -- Changed "++col" to "col++" in Michael Buselli's pager code (patch sent by him). -- Brought in the new world files and 'messages' file from Furry (scrolls of identify and the 'harm' spell now work) and new help files from Chris Epler. -- Took out the very old bug, typo, and idea files from the standard distribution.
This archive was generated by hypermail 2b30 : 12/18/00 PST