forked from TinyMUSH/TinyMUSH
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathChangeLog.History
2145 lines (1796 loc) · 94.3 KB
/
ChangeLog.History
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
===========================================================================
ChangeLog, TinyMUX 1.0
===========================================================================
These are the changes to TinyMUX since TinyMUSH 2.0.10 patchlevel 6 (which
is documented in the file NOTES). Refer to the online help for more
information about new features or commands.
Bugs and patches should be sent to:
TinyMUX 1.0 patchlevel 4:
User level changes:
- New switches to commands:
@pemit: /list
@teleport: /quiet
@dump: /optimize
@wall: /admin
- New attributes:
@amail @atofail @mailsucc @otfail @signature @tofail
- New commands:
@cpattr @startslave think wiznews +help brief
- New functions:
alphamax() alphamin() andflags() ansi() art() beep() children() columns()
cwho() dec() decrypt() default() die() edefault() elements() encrypt()
eval() findable() foreach() grab() grep() grepi() hasattr() hasattrp()
haspower() hastype() ifelse() inc() inzone() isword() last() list() lit()
lparent() matchall() mix() munge() objeval() objmem() orflags() playmem()
pmatch() ports() scramble() shl() shr() shuffle() sortby() strcat()
strtrunc() udefault() ulocal() vadd() vdim() vmag() vmul() vsub() vunit()
visible() zwho()
- Side effect functions:
create() link() pemit() set() tel()
- New flags:
AUDITORIUM: Enables SpeechLock checking.
ROYALTY: Can see things like a wizard, but can't modify.
FIXED: Can't teleport or go home.
UNINSPECTED: A marker flag for things which haven't passed inspection.
NO_COMMAND: Objects with this flag aren't checked for $-commands.
HEAD: Marker flag for group heads.
NOBLEED: Prevents color bleeding on systems where ANSI_NORMAL does not
work.
TRANSPARENT: Displays exits in a room in a long format.
STAFF: Marker flag for staff (no powers come with the flag).
MONITOR: When set on a player, shows MUSHwide connects and disconnects.
ANSI: When set on a player, enables output of ANSI color codes.
- New config parameters
commac_database guest_nuker guest_prefix have_comsys have_ident
have_macros have_mailer have_zones have_plushelp ident_timeout
mail_database mail_expiration number_guests parent_recursion_limit
plushelp_file plushelp_index wiznews_file wiznews_index
zone_recursion_limit
- New search classes:
POWER ZONE
- @list powers added.
- @decompile now shows zones, and parents.
- ANSI color support has been introduced. Names of things, rooms, and exits
may include ANSI color, and in most cases name checks will be matched as
if the name did not have color.
- In addition to the ansi() function, the %c substitution may be used for
ANSI color. ANSI_NORMAL will be appended to any string that contains ANSI.
- A channel system/comsystem has been added.
- Comsystem commands:
@cboot @ccharge @ccheck @cchown @ccreate @cdestroy @cdiscover @cemit
@clist @coflags @cpflags @csec @cset @csweep @cundiscover @cusersec
@cwho addcom allcom comlist comtitle clearcom delcom tapcom
- A new mail system has been introduced.
- Mailer commands:
@mail @malias
- Mailer manages a linked list for each player, hashed table of player
dbrefs in use.
- Reviewing and retraction of mail sent to players added.
- Mail sending rewritten to be more like Brandy@CrystalMUSH's +mailer.
- A new macro system has been added.
- Macro commands:
.add .chmod .create .CLEAR .def .del .desc .edit .ex .gex .list .undef
.status
- Support for multiple guests characters added, similar to old system,
Guests are locked, set ANSI and NO_COMMAND, and inherit the zone,
parent, money, @desc, @aconnect and @disconnect of the prototype guest
character.
- Zones have been implemented. Control of a zone object gives a player
control of all objects zoned to that object. Commands set on a zone object
will be inherited by all objects in that zone. @aconnects and @disconnects
are also inherited. @chzone is the command to change zones.
- @aconnects and @adisconnects set on the master room are global.
- Powers have been introduced, granting certain aspects of wizard power to
individual characters using @power.
- Page command modified to take a list of players, in the format
page [<player-list>] = <message>
The last paged player or list of players can be paged with just
page <message>
- Wizards may now 'cd' at the login screen to connect DARK.
- Two new indexed files, for +help and wiznews. The file for +help may
include percent substitutions for color.
- BUILDER is no longer a flag, converted to a power.
- Wizards no longer obey any kind of lock.
- RWHO code has been removed.
- iter(), parse(), and @dolist now use #@ as a marker to show the position
within the list.
- @edit now hilites the changed text.
- Log now shows exact failed connect string.
- #1 can no longer @newpassword itself.
- Updated to read flat file databases up to PennMUSH 1.50 p13, will also
read DarkZone variant of PennMUSH database.
- Speechlocks are now implemented, depends on the AUDITORIUM flag.
- OUTPUT_BLOCK_SIZE defined in config.h, tune for your memory needs.
- The commands SESSION, DOING, WHO, QUIT, LOGOUT, OUTPUTPREFIX, and
OUTPUTSUFFIX are no longer case sensitive after login.
- The flags wizard, and hidden may now be @set on attributes.
- Mail expiration checking added. Mail is automatically deleted after a
certain number of days.
- Minor bug in setinter() fixed, ex: setinter(a a a b b b, a a b b)
Internal code changes:
- New functions nhash_firstentry and nhash_nextentry for numbered hashtables.
- search_nametab now returns -2 if permission is not given.
- Logged out commands no longer checked when player is connected, and have
been included in regular command table. SESSION, DOING, WHO, QUIT, LOGOUT,
OUTPUTPREFIX, and OUTPUTSUFFIX, when connected, affect all of the player's
logged in descriptors.
- Username and hostname lookups now done by a slave process, to prevent lag
when a nameserver or ident server is locked up. Ident processing is done
much more reliably, with a 5 minute timeout.
- functions.c split into functions.c and funceval.c. Most new functions are
in funceval.c.
- The GNU database manager is required for use.
- Attribute caching has been eliminated, object caching always used.
- Beta port concentrator code introduced, not recommended.
- When a switch is used, the permission for that command will no longer be
checked before the permission for the switch.
- MOTD message length extended to 4096 bytes.
- GOING objects are no longer saved, blank spaces are filled with GOING
objects when the database is loaded.
- A bug which permits overflow of certain buffers from the connect screen
has been fixed.
- @readcache memory leaks fixed, as well as possible buffer corruption in
decode_flags and flag_describe.
- @alias now checks to see if the alias is a valid player name.
- 'Three message' bug in @destroy, when two objects of the same name are
nearby, is fixed.
- Many notify()'s in @list changed to raw_notify().
TinyMUX 1.0 patchlevel 5:
- New config parameters
fixed_home_message fixed_tel_message wizard_pass_locks
- Code made clean to work with 64-bit systems.
- @cpattr bugs fixed.
- @aconnects and @adisconnects are now checked for every object in the
master room.
- zfun crash bug with no arguments fixed.
- Now loads parents from Penn systems correctly.
- Problems with locks on Penn 1.50 p13 and p14 fixed.
- Now able to load databases from TinyMUSH 2.2.1.
- strcpy, strncmp rewritten as StringCopy, and StringCopyTrunc and made
inline (tested for future version).
- Quota and RQuota attribute conversion from 2.2 done correctly now.
- @set object/attribute=hidden|wizard works correctly.
- New attribute flags displayed: M (mortal dark) W (wizard only)
- Problems with attribute names of exactly 32 characters fixed.
- Division by zero problem in COLUMNS() fixed.
TinyMUX 1.0 patchlevel 6:
- @cpattr modified to be more flexible.
- Database compression works.
- Events checking system added, only @daily implemented at the moment.
'eventchecking' parameter added to @enable/@disable.
- Config parameter signal_action altered. On a fatal signal, the MUX either
dumps a crash database, attempts to dump core, and reloads the last
checkpointed database, or attempts to dump core and exits.
- New attributes:
@daily
- New commands:
@program @quitprogram @restart
- New functions:
empty items peek pop push
- New powers:
prog
- New switches:
@mail - /cc
- New config parameters:
cache_trim events_daily_hour guests_channel public_channel site_chars
stack_limit
- Config parameters removed:
abort_on_bug cache_steal_dirty garbage_chunk gdbm_cache_size have_ident
have_plushelp ident_timeout recycling
- Logged out commands (WHO, QUIT, etc) now only work for the descriptor that
executes them.
- Both memory based and disk based (default) database handling are available
via options in the Makefile.
- Radix string compression is now available via options in the Makefile
(Andrew Molitor)
- @mail/fwd now allows you to edit a message before sending.
- @mail/read now includes a To: field which shows multiple recipients of a
message.
- You may now place quotes around a multiple word name when using @mail.
- You may now mix player names, mail aliases, and mail numbers to be replied
to in any @mail player list.
- Channel usage now costs a set amount of money, specifiable by the channel
owner or a wizard.
- @nuke of any object (players, exits, things, and rooms) sets an object
GOING, and destroys the object during the next database check. This is the
way rooms were destroyed in earlier patchlevels.
Internal code changes:
- Wildcard routines modified slightly for speed.
- Hashing is smart: often used keys are looked up faster.
- Bugs in @malias fixed, mortals can no longer delete global aliases.
- Attribute and evaluation locks are written out using attribute names
instead of numbers, to be friendlier to database filters. (Andrew Molitor)
- Attributes are looked up on an object using a binary search. (Andrew
Molitor)
- Database chunk code reworked to make the allocation strategy of large
continuously growing objects better. (Andrew Molitor)
- An empty third argument to fold() is treated as an empty base case.
- M_READ in mail.h changed to M_ISREAD for Solaris compatibility.
- Floating point exceptions under Linux fixed (Darrin Wilson)
- squish() no longer squishes newlines and tabs.
- Under Linux, optimized versions of string functions are used.
- ToUpper() and ToLower() are now simple macros.
- @mail/stats now works correctly.
- Comsys bug involving large numbers of players on a channel fixed.
- New style of management for mail messages prevents duplicated copies of
messages to multiple recipients.
- Channel owners may use cwho().
- Fixed memory leaks involving queue overflows.
- Improved malloc debugging, with makefile options.
- Garbage objects are now of type TYPE_GARBAGE, instead of TYPE_THING.
- Minor bug with zone control fixed.
- Fixed memory leaks in sortby, foreach, and zfun.
- Fixed memory leaks in sortby, foreach, and zfun.
TinyMUX 1.1 patchlevel 0:
- New config parameters:
use_http concentrator_port
- New flags:
VACATION - set only by wizards, reset when player connects. Helps mark
inactive players who will eventually return.
- WWW support, in conjunction with 'muxcgi' external CGI program.
(to be enabled in patchlevel 1)
- Concentrator integrated and made part of MUX distribution.
(to be enabled in patchlevel 1)
- Fixed bug in @mail/quick.
- Fixed bug with names and pennies of cloned objects disappearing.
- Parser changed for speed, and all functions modified to support the new
parser changes. (idea by T. Alexander Popiel)
- Guests are no longer set ANSI and NO_COMMAND by default, they follow
the player_flags parameter.
- Names in page and mail lists are now seperated by commas.
- When given a dbref number, pmatch() will evaluate identically to num().
- Fixed bad names bug which allowed multiple players of the same name.
- Fixed bug that corrupted database on disk-based databases when LBUF_SIZE
was changed. Buffer lengths may be freely changed.
- Buffer lengths doubled.
- WHO now shows the record number of players connected since startup, and
the maximum number of players allowed online.
- @mail bugs that caused random seg faults fixed.
- Fixed crash bug with push() used with no arguments.
- If an object or it's owner is set DESTROY_OK, it is destroyed with no
delay when @destroy'ed.
- Added a 3rd flag word.
- Problems loading some Penn 1.50.p15 databases fixed.
- @list process now shows number of descriptors available to the process.
- pemit() args are now only evaluated once.
TinyMUX 1.1 patchlevel 1:
- New functions:
setr
- New switches:
@function/preserve: Preserves registers across user defined functions.
- New exec() option: EV_NO_LOCATION, surpresses use of %l in an expression.
- The enactor for Idle, Away, and Reject messages is now the paging player.
Messages are not sent if they evaluate to nothing. %l surpressed.
- 'GARGAGE' type added to search classes.
- Problem with @daily attributes fixed.
- pemit() and @pemit/list check for permission.
- @decompile now works with obj/attr, and takes wildcards for the attr.
- Database strings are now encapsulated using quotation marks, ala PennMUSH.
- queue_write now uses MBUFs to store output, instead of malloc.
- Record number of players is now stored permanently in the database, using
tag of '-R<number>'.
- @malias/add and @malias/remove may now take dbrefs as arguments.
- MBUF_SIZE reduced to 200 bytes.
- Dark players leaving/joining a channel do not emit messages on the
channel.
- Fixed problem with name() on exits without aliases.
- @restart now works consistently along with database checkpointing, and is
more reliable.
- Database consistency checking introduced, using checksums. Checks are made
on strings in memory, as well as disk-based strings. When corruption is
found, <gamename>.db.CORRUPT is dumped and the process exits. This is
designed to detect unknown modification of strings in memory and on disk.
Note that it will not fix corruption, only keep it from going unnoticed.
Regular backups are the only way to ensure data integrity.
- A termination signal will cause the MUX to dump to the flatfile
<gamename>.db.KILLED instead of dumping normally.
- The 'Startmux' script will refuse to start if either <gamename>.db.KILLED
or <gamename>.db.CORRUPT are present, in case they are unnoticed.
TinyMUX 1.2 patchlevel 0:
- Changed LBUF allocs that preserve global registers around user define
functions to malloc()'s, to reduce the amount of buffers built up
by recursion.
- Eliminated obsolete next_timer(). (Mars@SolMUX)
- Fixed bug that causes output buffer overflows.
- Fixed bad malias errors.
- Fixed @mail to work properly with radix compression.
- Players with expanded_who can see dark wizards on channels.
- Configuration parameter 'wizard_pass_locks' removed, power 'pass_locks'
added.
- Appending and prepending mail text shows number of characters
written/maximum.
- Non-MUX specific db code is now only compiled into the dbconvert
executable. Removed support for old PernMUSH databases.
- Buffer pools are reset at database check time.
- A cache of names that have been stripped of ANSI codes is kept, if
cache_names is on, for faster matching.
- You can use mail alias numbers with @malias/delete.
- Fixed V_ATRMONEY database flag and reinstituted it as a database flag.
- @malias/delete now takes an alias prefixed with *.
- Fixed memory leaks in the @mail code.
- Fixed @program memory leaks.
- Swapped around some malloc/buffer pool allocations.
- @malloc/add and remove work with names again.
- Fixed a very, very obsure problem that crashes the MUX when you output
exactly 16,384 characters. (Mars@SolMUX)
- Fixed mail() to work with radix compression.
- Fixed @program crashes when a player who was logged in more than once and
in an @program disconnected.
- No longer goes into an infinite db saving loop when it detects corruption.
Simply exits.
- Objects may listen on channels.
- When a player who is already in an @program reconnects, the new connection
is dropped to the @program prompt.
- ports() works properly when a player is logged in more than once.
- Mail errors are sent correctly when using radix compression.
TinyMUX 1.3 patchlevel 0:
- New flags:
GAGGED
- New functions:
lstack()
- @wait command syntax modified to allow blocking on attributes other than
'Semaphore'.
- Vattr code rewritten to use standard hashing code, redundant code
optimized.
- Code REALLY made clean for 64-bit systems (IE, Alpha running Digital
UNIX :)
- Removed database consistency checking.
- New command @dbclean, removes stale attribute names from the database.
- Default cache size reduced to 20x10.
- Pueblo support integrated into the distribution, see "help pueblo".
- Fixed @clone/cost bug that allowed players to get arbitrary amounts of money.
- set() and create() now return #-1 PERMISSION DENIED.
- after() crash bug with invalid arguments fixed.
- idle_wiz_dark config parameter now applies to all players with the Idle
power.
- Zone bug when enterlock is using an attribute key fixed.
- Fixed builder power to enable a player to build when global building is
turned off... expected behavior, but never worked.
- .ex or .gex on a macro longer than 192 characters no longer crashes the
MUX.
- @decompiling an attribute on an exit now returns a string using the exit's
first alias.
- New switch for @decompile: /dbref, which uses an object dbref instead of
the object's name in the output.
- You may now specify @pemit/list/contents, or @remit/list.
- New command: @addcommand. See 'wizhelp @addcommand'. God only.
TinyMUX 1.3 patchlevel 1:
- Fixed wizhelp entry for @addcommand.
- Fixed grep() and grepi() behavior.
- Fixed slave.c for Solaris 2.5.
- Makes @addcommand god only.
TinyMUX 1.3 patchlevel 2:
- Fixed a bug with zone checking involving using an evaluation lock in the
EnterLock for a zone.
TinyMUX 1.3 patchlevel 3:
- Fixed a bug where the MUX would not save the mail or comsystem
databases when restarting, or dumping a crash/killed database. It also
enables the use of command switches for commands added by @addcommand to the
global built-in table.
TinyMUX 1.3 patchlevel 4:
- New command: @mail/safe
- DARK wizards are no longer visable on the @cwho
- Permissions for @cboot work correctly
- The boot message @cboot generates is now correct
- @wait/<number> no longer crashes the game
- columns() with a field argument >78 is no longer allowed
- lcon() no longer has a leading space
- before() now works properly
- Some log errors recognize type GARBAGE now
- 'go home' is now bound by the FIXED flag
- Lookups on an incomplete player name when the player is DARK fails...
it was possible to use this to see if a DARK player was connected
- You cannot restart while the game is dumping
- configuration for the radix library no longer looks for gawk, which is
broken
- A small memory leak in help fixed
- Numerous memory leaks in the disk based database code fixed
TinyMUX 1.4 patchlevel 0:
- New commands:
@delcommand @listcommands
- New config paramater 'indent_desc' will automatically put a space before
and after object, room, and exit descriptions when being looked at.
- The built-in macro system has been removed. You MUST change your config
file parameter 'commac_database' to 'comsys_database'!
- Fixed bugs causing problems with '#-1 PERMISSION DENIED' in function
return values.
- @decompile now includes ansi codes when printing names which have ansi
color imbedded.
- Fixed zone problem that would crash the MUX periodically when a object was
examined.
- You can no longer use objeval on #1.
- ifelse() only evaluates the necessary arguments.
- foreach() now takes two additional arguments: one to begin parsing, and
one to end parsing.
- strcat() now takes 1 to n arguments.
- Range checking in delete() fixed.
- New function: case() is like switch(), but does no wildcard matching.
- 'news' now understands ANSI substitutions much like '+help' does.
- Sets guest characters DARK when they disconnect, so they'll not emit
messages when a new guest connects.
- The new mail check now always occurs upon login.
- @addcommand now renames replaces built-in commands to '__<command name>'.
- @wait <n>=@restart will no longer crash the MUX.
- @oemit now works as described in the help, no longer only in the executing
player's location.
TinyMUX 1.4 patchlevel 1:
- This fixed a problem with the help for mail(), a crashing problem with
repeat(), and a compiling problem with patchlevel.h.
TinyMUX 1.4 patchlevel 2:
- This patch fixes a problem with patchlevel.h, as well as a problem with
@delcommand where restoring a built-in command was not functioning properly.
TinyMUX 1.4 patchlevel 3:
- Fixed problems with zone recursion, as well as a problem with examining a
zoned object and seeing all attributes as the same name.
- All semaphores are now cleared on objects when they are destroyed.
- @clone now creates object with the correct cost.
- Fixed problem with @oemit that crept in 1.4p0.
TinyMUX 1.4 patchlevel 4:
- Fixed problems with makefile
TinyMUX 1.4 patchlevel 5:
- Fixed player-only permission for @doing
- Fixed queue problem in cque.c
- Fixed zone recursion problem
- Control in zwho() and inzone() now handled properly
- Fixed buffer problems with columns(), center(), and @mail
TinyMUX 1.4 patchlevel 6:
- addcommand now properly evaluates input
- null pointer bug in queue code fixed (Myrrdin)
- name can no longer be just ansi characters (Marlek)
- length checking in do_attribute and atr_str fixed (Robby Griffin)
- permissions in zwho, inzone, and objeval fixed (Geoff Gerrietts, Marlek)
- @daily attribute now properly cleared (Peter Clements)
TinyMUX 1.4 patchlevel 7:
- Fixed more command queue problems
TinyMUX 1.4 patchlevel 8:
- Fixed a naming bug in @create.
TinyMUX 1.4 patchlevel 9:
- Fixed @addcommand problems
- A problem with halting an object with commands still in the queue
- A string trunction problem with mail alias names
- A problem when mudconf.createmin == mudconf.createmax
- hastype() no longer requires examinable
TinyMUX 1.4 patchlevel 10:
- Fixed more @addcommand problems
- Fixed problem with ifelse() involving a misplaced pointer and conditional
TinyMUX 1.4 patchlevel 11:
- Fixed segv bug in do_mvattr cause by lack of a pointer check
- A bind_and_queue call in walkdb.c was missing an argument
TinyMUX 1.4 patchlevel 12:
- Munged queue code
- Fixed 'restrict' variable which is a keyword in Linux 2.0.30
TinyMUX 1.4 patchlevel 13:
- Fixes single-letter leadin support for @addcommand
- Fixes buffer overflow problem with addcom
Reported by StormBringer <[email protected]>
TinyMUX 1.4 patchlevel 14:
- Fixed flag functions to not report dark and connected to non-wizards
(Soruk@AuroraMUSH)
- Fixed help for inc() and dec() (Jeff Gostin)
- Names of objects may not exceed MBUF_SIZE
- @program help fixed (Kevin@FiranMUX)
- trunc() and round() now behave correctly with floating point and negative
arguments (Robby Griffin)
- Many buffer overflows fixed (Robby Griffin)
- Only players can be added to mail aliases, and array overflow problem with
@malias fixed (Robby Griffin)
- Other minor bugfixes
TinyMUX 1.4 patchlevel 15:
- safe_tprintf_str now NULL terminates its output
TinyMUX 1.5 patchlevel 0:
- New functions:
regmatch() translate()
- Regular expressions may now be used in command patterns and listen patterns
with the addition of a 'regexp' attribute flag. See 'help REGEXPS'.
- Piping of command output has been implemented. See 'help piping'. This
may break some code... have to write conversion script.
- @addcommand now works with single letter commands (". :, ;, etc) however
the original commands may *not* be accessed by prefixing with __.
TinyMUX 1.5 patchlevel 1:
- Fixed new command queue problem introduced by piping, where a current
queue entry could be overwritten while executing. Reported by Robby Griffin.
TinyMUX 1.5 patchlevel 2:
- NOTE: This patch REQUIRES a reload from flatfile. Please backup your
database before you install this patch.
- Integrated 1.4p11 fixes
- Fixed 'help PIPING'
- Removed redundant queue checking code in cque.c
- Added set_prefix_cmds() declaration
- Added translate() and regmatch() declarations :)
- Removed old 'fix_ansi()' code
- Database chunk code reworked to store all object text directly in the
GDBM database, rather than the old method of storing an index in the GDBM
database that pointed into a 'chunk file'. The <gamename>.gdbm.db
'chunk file' is no longer needed.
TinyMUX 1.5 patchlevel 3:
- Fixed problem with dbconvert that prevented loading from flatfile
- Changed CHARBITS in regexp code to CHARMASK since some systems define
CHARBITS
- Integrated 1.4p12 fixes
- Change to @addcommand code to allow for ':' and ';' to be replaced
TinyMUX 1.5 patchlevel 4:
- Integrated 1.4p13 fixes
- Adds missing argument to fn_range_check in regmatch()
TinyMUX 1.5 patchlevel 5:
- Memory leaks in the database code fixed
- Integrated 1.4p14 fixes
TinyMUX 1.5 patchlevel 6:
- Integrated 1.4p15 fix
TinyMUX 1.5 patchlevel 7:
- Integrated 1.4p16 fixes
TinyMUX 1.6 patchlevel 0:
- Finally fixed remaining database memory leaks
- Fixed out of range error in mid() (Xidus@Empire2710)
- No embedded newlines in channel titles (Reported by Robby Griffin)
- @clone may not be used to create an object with an ANSI code as its name
(Reported by Robby Griffin)
- name() no longer causes problems on exit names which lack semicolons
(Reported by Robby Griffin)
- No spurious prompts from @program after a @quitprogram (Kurt Fitzner)
- lexits() no longer leaves a leading space (Kurt Fitzner)
- o-messages (@odrop, @osucc) will no longer generate any messages if the
attribute evaluates to a null string (Kurt Fitzner)
- @notify <object>/<attr> no longer incorrectly returns "Permission Denied"
on some platforms (Reported by Robby Griffin)
- Extending a number past the end of a buffer with certain floating point
functions no longer causes crashes (Reported by Robby Griffin)
- Fixed @cdestroy permissions (Reported by Robby Griffin)
- Fixed problem with stripping spaces after function names when
space_compress is turned on. (Robby Griffin)
===========================================================================
ChangeLog, TinyMUSH 2.2
===========================================================================
04/28/99: TinyMUSH 2.2.5
--- New Features ---
- New @eval command is like the @@ comment, but evaluates its argument.
(command.c, command.h, predicates.c)
- New @list type, 'cache', shows cache object chains. (command.c,
udb_ocache.c)
- New @timecheck command views "timechecking" -- a counter on how much
clock time is being used by objects. NO_TIMECHECKING compile-time define
turns this off. This is also a log option. (Makefile.in, bsd.c, command.c,
command.h, conf.c, cque.c, externs.h, log.c, game.c, interface.h,
mudconf.h, mushdb.h, object.c)
- '@list hash' now shows stats for @function hash table. (command.c)
--- New Functions ---
- New filterbool() function does a boolean truth-check rather than
looking for "1". (functions.c)
- New inc() and dec() functions increment/decrement a number by 1.
(functions.c)
- New link() function acts like @link. (functions.c)
- matchall() now takes an output delimiter. (functions.c)
- New pemit() and remit() side-effect functions, equivalent to @pemit
and @pemit/contents (@remit). (functions.c, speech.c, externs.h)
- New t() function returns 0 or 1 depending on boolean truth. (functions.c)
- New tel() function acts like @teleport. (functions.c)
- New toss() function pops item off stack and discards it. (functions.c)
- New wipe() side-effect function, equivalent to @wipe. (functions.c)
--- Function Bugfixes ---
- Fixed crash problem on bor(); it takes 2 args, not varargs. (functions.c)
- die() with a die of <=0 no longer causes crash [2.2.4 patch]. (functions.c)
- elock() now checks AF_IS_LOCK, not AF_LOCK. (functions.c)
- isdbref(#) returns 0, not 1. (functions.c)
- regmatch() coredump problem on writing to r()-registers on a failed
match fixed. Per Talek's PennMUSH patch. [2.2.4 patch] (functions.c)
- Null pointer dereference on empty stack with swap() fixed. [2.2.4 patch]
(functions.c)
--- Other Bugfixes ---
- @mvattr null pointer dereference fixed [2.2.4 patch]. (set.c)
- Parent chain check on objects with invalid locations no longer causes
crash [2.2.4 patch]. (command.c)
- Infinite loop problem in list_check() where Next(thing) == thing, fixed.
Per HavenMUSH. (game.c)
- Fixed null pointer dereference when setting attribute with number but
no name. Per Malcolm Campbell. (db.c)
- You can no longer @clone/cost exits in locations you do not control.
(create.c)
- @decompile prints attribute flags before locking the attribute, so
that the flags get set when the object is uploaded. (look.c)
- @edit and @wipe now respect the handling of listen attrs, calling
handle_ears(). (set.c)
- Call check_filter() for @infilter if MSG_INV_L (aka MSG_F_DOWN) is set
and listens are being passed; previously it was also called when MSG_INV
was set (which was most of the time). This caused '@infilter here=*',
even in a room without a @listen, to gag non-'say' output. (game.c)
- 'look' checks Has_exits(parent) when displaying Obvious Exits, avoiding
exit-list screwups when parent was an exit. (look.c)
- Fixed coredump problem when looking at a Transparent exit to a bad
destination. (look.c)
- Fixed parser issue with advancing pointer past end of buffer (thus
spewing garbage) when ansi_colors was off. [2.2.4 patch] (eval.c)
- SIGUSR1 calls do_restart(); the old way didn't use the currently-running
database. This is still not an ideal solution. [2.2.4 patch] (bsd.c)
--- General Cleanup ---
- Purify is supported in the Makefile. (Makefile.in)
- Added -ldl for Linux with Tcl, per Rick White. (Makefile.in)
- Conf: SVR4 has PAGESIZE, needed for getpagesize(). (autoconf.h.in)
- Conf: Linux wants getpagesize() to return size_t or int, depending on
version. Check for it being declared in unistd.h, and don't redeclare
it. (autoconf.h.in, configure.in)
- Conf: Linux has declaration conflicts with srandom(). Check for it in
stdlib.h and math.h, rather than checking on #ifdef __i386__.
(autoconf.h.in, configure.in)
- Conf: Check for random() declare in stdlib.h before declaring it.
(autoconf.h.in, configure.in)
- Fixed some odd dnl things, which were causing some messages not to
appear. (configure.in)
- Regenerated configure script using autoconf 2.12. (This plus the conf
changes above were released as a 2.2.4 patch.)
- Include autoconf.h and don't declare malloc() in regexp package. [U1]
(regexp.c)
- did_it() attrs are specified as 0 rather than NOTHING, for @conformat
and @exitformat. (look.c)
- Now testing for atr_buf as well as *atr_buf in @conformat/@exitformat-ing.
(look.c)
- Queue-halted entries are NOTHING rather than 0. (cque.c)
- Print of flag letters uses safe_sb_chr() rather than safe_chr(). [U1]
(flags.c)
- PUEBLO_SUPPORT placed correctly. [U1] (look.c)
- ansi_msg() now returns NULL if passed a null string. [U1] (netcommon.c)
- A_NULL is now used for the null (0) attribute. [U1] (attrs.h, create.c,
game.c, look.c, move.c, set.c)
- General lint of code:
Typecasts fixed. (db.c, db_rw.c, externs.h, functions.c, game.c, netcommon.c)
Unused variables removed. (create.c, db.c, db_rw.c, functions.c, game.c,
netcommon.c, predicates.c, quota.c)
Proper initialization of variables. (functions.c, regexp.c)
--- Documentation Changes ---
- 'help @adisconnect' now notes that %0 gives the disconnect reason.
- 'help Credits' now cites Throck for an extensive bugreporting effort,
and David Passmore (Lauren) for code from TinyMUX.
- Help for @switch/switch() now notes existing of #$ token.
- Removed semicolons at end of switch statements in 'help Tcl Control2',
when placing Tcl code in an attribute.
- Added back in the notice about no maintenance obligations on the parts
of the authors. (copyright.h)
===========================================================================
11/21/97: TinyMUSH 2.2.4
--- New Features ---
- Added the ability to match regular expressions in $-commands, ^-listens,
and through the regmatch() function. (Makefile.in, attrs.h, externs.h,
regexp.h, regexp.c, commands.c, functions.c, game.c, look.c)
- Added the @program construct, based on the TinyMUX 1.4p4 implementation.
(attrs.h, bsd.c, command.c, command.h, db.c, interface.h, netcommon.c,
predicates.c)
- Added the programmer() function, to get the dbref of the calling object
in a @program. (externs.h, functions.c, netcommon.c)
- Added the @restart command, to restart the game without dropping
connections. Based on the TinyMUX 1.4p4 implementation. (bsd.c,
command.c, command.h, db.c, interface.h, netcommon.c, predicates.c)
- Added restarts() function, which counts the number of times the game
has been restarted. (conf.c, db.c, functions.c, mudconf.h)
- Added restarttime() function, which gives the time of the last
restart. (conf.c, functions.c, game.c, mudconf.h)
- Added command piping, allowing output from one command to be passed
via the ;| semi-colon-like construct to another command as %|.
Fixed a small potential coredump bug in the process. Based on the
TinyMUX 1.5p1 implementation. (conf.c, cque.c, eval.c, game.c,
mudconf.h, netcommon.c)
- @conformat and @exitformat, with format_contents and format_exits conf
options, allow arbitrary formatting of Contents and Obvious Exits
lists. (attrs.h, command.c, conf.c, db.c, look.c, mudconf.h)
- Added optional ANSI sequences, based on TinyMUX/PennMUSH implementation.
Added ANSI and NOBLEED flags, ansi(), stripansi(), and translate()
functions, %x substitution, conf parameter ansi_colors (defaults to No).
(bsd.c, command.c, conf.c, db.c, eval.c, externs.h, flags.c, flags.h,
functions.c, interface.h, log.c, mudconf.h, netcommon.c, predicates.c,
stringutil.c, ansi.h, Makefile.in)
- Added experimental functionality for an embedded Tcl 7.6 or 8.0
interpreter, and the TICKLER flag, compile-time selection of
TCL_INTERP_SUPPORT. (command.c, command.h, flags.c, flags.h,
functions.c, mod_tcl.c, config.h, Makefile.in)
- iter() and @dolist replace the #@ token with the word position in the
list, ala TinyMUX/PennMUSH. (config.h, functions.c, walkdb.c)
- switch() and @switch replace the #$ token with the switch expression,
ala PennMUSH. (config.h, functions.c, predicates.c)
- @stats (with no args or switches) now shows the next object dbref to be
created. (walkdb.c)
- INFO command condenses MUSH vital statistics for MUDlist purposes, as
per functionality agreed to with Alan Schwartz, 7/6/95. (netcommon.c)
--- New Options ---
- Added safer_passwords configuration option, enforcing less-guessable
passwords. Modification of Moonchilde-provided code. Default #1 password
has been changed to p0trzebie. (externs.h, mudconf.h, conf.c, db.c,
netcommon.c, player.c, predicates.c, wiz.c)
- Site lists can now be specified in CIDR IP prefix notation.
@list site_information now lists things in this notation. (conf.c)
- Default parents can be specified by the conf parameters player_parent,
room_parent, exit_parent, and thing_parent. (mudconf.h, conf.c, object.c)
- New log parameter keyboard_commands will log "interactive" commands
(direct input). (log.c, netcommon.c, mudconf.h)
- New log parameter suspect_commands will log anything executed by a
Suspect player. (mudconf.h, command.c, log.c)
- Various modifications to make the new config parameters show up in
@list options. (command.c)
--- New Functions ---
- New functions dup(), empty(), items(), lstack(), peek(), pop(),
popn(), push(), and swap() implement object stacks, based on the
TinyMUX concept. (command.c, functions.c, game.c, mudconf.h)
- New andbool(), orbool(), notbool(), xorbool() functions do real
boolean truth checks. (functions.c)
- New band(), bnand(), bor(), shl(), shr() functions for manipulating
bitfields. (functions.c)
- New die() function "rolls dice", ala PennMUSH, but can take a zero
first arg. (functions.c)
- New ifelse() function does true/false boolean cases, ala TinyMUX
(note boolean casing, not empty-or-zero, though). (functions.c)
- New list() function dumps output of an iter()-style function directly
to the enactor, ala TinyMUX. (functions.c)
- New lit() function returns the literal value of a string. (functions.c)
- New sees() function checks to see if X would normally see Y in the
Contents list of Y's room. (functions.c)
- New side-effect set() function acts like @set, ala PennMUSH. (functions.c)
- New setr() function acts like setq() but returns the value of the
string set, ala PennMUSH. (functions.c)
- New vadd(), vsub(), vmul(), vdot(), vdim(), vmag(), vunit() vector
functions, based on TinyMUX/PennMUSH. (functions.c)
--- Changes to Functions ---
- Added output delimiter for elements(), filter(), iter(), map(), munge(),
setunion(), setinter(), setdiff(), shuffle(), sort(), sortby(), splice().
(functions.c)
- elock() now allows the checking of things other than DefaultLock
by non-privileged users. (functions.c)
- Added start and end token parsing in foreach(). Idea (but not
implementation) from TinyMUX. (functions.c)
- mix() can now take up to ten arguments total. (functions.c)
- parse() is now just an alias for iter(). (functions.c)
--- Function Bugfixes ---
- Removed unnecessary 'first' variable from filter(), iter(), mix(),
remove(), revwords(), splice(), setunion(), setinter(), setdiff().
(functions.c)
- ljust(), rjust(), center(), and repeat() now check for overflows and
null-terminate their buffers. (functions.c)
- andflags()/orflags() now prevent mortals from getting the Connected
flag on Dark wizards. (functions.c)
- Per Malcolm Campbell, set tm_isdst to -1 to indicate unknown status
of Daylight Savings Time for auxiliary to convtime(). (functions.c)
- delete() now acts sanely when passed a weird number of characters to
delete. (functions.c)
- Spurious extra leading space in filter() removed. (functions.c)
- Fixed a potential coredump bug in fun_lastcreate(), when encountering
unknown object type. (functions.c)
- Redundant clause in matchall() removed. (functions.c)
- repeat() now acts sanely when passed a zero-length string. (functions.c)
--- Other Bugfixes ---
- Fixed a memory leak in look_exits2() when Pueblo support was enabled.
Reported by Joel Baker. (look.c)
- Removed spurious spaces around exit names in Pueblo display. (look.c)
- Added period to "You see nothing special" in Pueblo display. (look.c)
- Per Moonchilde, do not raw_notify_html() non-HTML players. (netcommon.c)
- 'look here' (and other specific looks that check your current location)
now correctly returns the @idesc when appropriate. Reported by Throck.
(look.c)
- examine/parent no longer returns the locks of the parent, since they're
not inherited by the child. Reported by Throck. (look.c)
- @clone now explicitly states when a clone name has been rejected as
illegal. Reported by Throck. (create.c)
- Blank components are no longer allowed in exit names. Reported by
Throck. (object.c)
- @mvattr no longer clears the original attribute if no copies were
successfully made. A null-attribute coredump bug has also been
fixed. Reported by Throck. (set.c)
- @verb can no longer read attributes the player doesn't have permission
to see. Reported by Throck. (predicates.c)
- The @sweep command now shows BOUNCE objects (as "messages", just as
they would appear if they had a @listen set). The command also now
checks for the HAS_LISTEN invisible flag rather than scanning objects
for the @listen attribute. (look.c)
- The bug with attribute names of exactly 32 letters is now fixed for
real. (vattr.c)
- Fixed small bug confusing Audible and Connected in the has_flag()
utility function. (flags.c)
- When an object is destroyed, if it has a cached forwardlist in the
hashtable, that entry is cleared. (externs.h, db.c, object.c)
- start_room, start_home, default_home, and master_room are typed as
dbrefs, not ints. Made NOTHING rather than -1, in some cases.
(mudconf.h, conf.c)
- queue_string() is now declared as INLINE. (externs.h, netcommon.c)
- For conf stuff, 32, 128, and 1024 are now defined constants. (alloc.h,
mudconf.h, conf.c, wiz.c)
- All strings are properly null-terminated when strncpy() reaches the
buffer limit. (bsd.c, conf.c, game.c, wiz.c)
- Fixed potential buffer overflow problem with logging commands and
removed unnecessary allocation of an mbuf. (command.c)
- Variable 'restrict' in do_verb() is now 'should_restrict', to get
around Linux 2.0.30 defining 'restrict' as a keyword. (predicates.c)
- Fixed FPE coredump on kill_guarantee_cost being set to zero. (rob.c)
--- Documentation Changes ---
- @pemit now has aliases in alias.conf
- The help text for functions has been reorganized into categories.
- The wizhelp text for config parameters has been reorganized into
categories.
- Redundant info in 'wizhelp log' and 'wizhelp @list log' removed.
- The use of LINK_OK for @forwardlist/@drain/@notify is now documented.
- The player_name_spaces conf option is now documented.
- The help text for trim() has been fixed to show the correct parameter
order.
- Moved the material from the news.txt file into the help.txt file and
updated some of the pointers.