forked from fluffos/fluffos
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog.alpha
5201 lines (4862 loc) · 243 KB
/
ChangeLog.alpha
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
-------------------------------------------------------------
(v22.2a37 promoted to v22.2b1)
Sat Jul 29 21:32:05 CDT 2000 ([email protected] (Marius))
* raised patchlevel to v22.2a37
* updated with respect to v22.1b32
* fixed miscellaneous typos and compile errors in a36
* moved most all add_action code into add_action.c
* corrected db_connect in PACKAGE_DB to take only four
arguments rather than five.
* strings in PACKAGE_DB are now malloced/counted rather
than shared [suggestion from Beek]
* fixed a memory overwrite crasher in handling prototypes
of inherited functions [reported by Zifnab, Loriel,
Mystic, and others. thanks to Javelin@VH for a test
case to reliable reproduce]
* Fix error messages generated when PACKAGE_UIDS is defined
and get_root_uid() or get_backbone_uid() either do not exist
in the master object or do not work. Error messages were
causing a crash [reported by Mystic]
Fri Jul 7 21:16:16 CDT 2000 ([email protected] (Marius))
* raised patchlevel to v22.2a36
* updated with respect to v22.1b31
* fixed process_input() so that the modified command is passed
on to parse_command() rather than the original unmodified
[reported by Beyond@LimaBean]
* added debug code for tracing object references and finding
destructed objects that never get freed.
* fix receive_snoop() to handle non-nul terminated buffers
passed -- use the len argument [reported by Passerby@IoT]
* prepend slashes to filenames for display in ed (f, w, x
commands) [reported by Avenger@AtP -- missed from v22.1b25]
* implemented rfc 1184 (telnet linemode option) to better
support running on port 23. the implementation is partial
at present, but sufficient to serve its purpose.
Tue Jul 4 19:45:03 CDT 2000 ([email protected] (Marius))
* raised patchlevel to v22.2a35
* updated with respect to v22.1b30
* fixed escape_command() so that ! command escaping
works again.
* if there's no master object present when attempting a
virtual object clone (shouldn't ever happen, but ...),
be sure to clean up the stack before returning failure
* removed recently added debug checks for destructed
objects pushed onto/assigned into the stack.
Sun Jul 2 19:00:55 CDT 2000 ([email protected] (Marius))
* raised patchlevel to v22.2a34
* updated with respect to v22.1b29
* fixed lower_case() and upper_case(), both broken in a32 by
locale changes
* updated PACKAGE_DB support to include MySQL support and
restructured to ease adding new database support [based on
patches from Andrew@Nanvaent]
* COMPAT BUSTER: When loading/cloning a virtual object, mudlib
stats, uid/euid and privs are now properly reset with the
newly assigned object name.
* compile_object() in master.c will now be passed a second
argument indicating whether the operation is a clone or not.
* If arguments are now passed to clone_object() for create() when
cloning a virtual object, the arguments will be aggregated and
passed on to compile_object() in master.c as the third arg.
The prototype for compile_object() is now as follows:
varargs
object compile_object(string filename, int cloning, mixed args...);
* Don't bail out of edit_source if PACKAGE_DB is defined and it
can't find msql.h, mysql.h, libmsql.a, or libmysql.a. If they
can't be found, you'll have to hack the source for now.
Sat Jul 1 13:18:19 CDT 2000 ([email protected] (Marius))
* raised patchlevel to v22.2a33
* don't save command_giver on the runtime stack. use a separate
stack instead.
* add missing add_ref in save_command_giver() to match the
free_object() in restore_command_giver()
Tue Jun 20 18:41:51 CDT 2000 ([email protected] (Marius))
* raised patchlevel to v22.2a32
* updated with respect to v22.1b28
* for the network_stats() contrib efun, return the external ports with
port number rather than index position in the internal port list
* restructured more code in comm.c for command handling. broke out
duplicated code into new functions and generally cleaned some stuff
up. This makes way for the next change:
* command_giver is now reference counted and properly restored on
error, etc. no more need for it to be reset to 0 in the backend.
* all objects now get the class definitions from the simul_efun object
if there are any, just as if they had inherited the simul_efun
object. This resolves problems with class related errors when the
simul_efun object is involved [reported by Pinkfish@Discworld]
Sat Jun 17 12:15:08 CDT 2000 ([email protected] (Marius))
* raised patchlevel to v22.2a31
* updated with respect to v22.1b27
* added extensive packet/volume statistic gathering to comm.c and
socket_efuns.c when the network_stats() contrib efun is compiled into
the driver [based on patches from Skullslayer@RoD]
* Patches from Turrican@Discworld:
. added an optional 3rd argument to socket_bind efun to specify the
address and port to bind to (in the same format as socket_connect)
. added an optional 2nd argument to socket_address efun to return the
socket's local address when specified as non-zero
Thu Jun 15 17:11:07 CDT 2000 ([email protected] (Marius))
* raised patchlevel to v22.2a30
* NUL terminate user input buffer before passing it to handle_snoop().
[reported by Passerby@IoT]
* correct handling of cr/lf when processing commands [reported by
Loriel@Lima Bean]
Mon Jun 12 09:06:09 CDT 2000 ([email protected] (Marius))
* raised patchlevel to v22.2a29
* updated with respect to v22.1b26
* handle backspace in user input because some clients send everything
and don't filter out local edits [reported by Requiem@SG]
* handle both \r and \n for command delimiters in user input
[reported by Requiem@SG]
* respect NO_IP_DEMON option and -N driver command line option in the
new address server reconnection code [reported by Skullslayer@RoD]
* expanded the array returned from the localtime() efun to include
LT_ISDST. This is supported on most platforms. For those that it is
not, the value will be -1.
* the third argument to tell_room() can now be an object (from Ideas)
* when COMPAT_32 is defined, closurep becomes an alias for functionp
[reported by Passerby@IoT]
* made PACKAGE_PARSER compile with NO_ENVIRONMENT again
* added an error handler to (s)printf to clean up its state when an
error occurs (usually only caused by the object_name master apply)
* edit_source will load options.h/local_options for -configure, but will
not yet check the validity of these files. this is done so that proper
configuration can be done for PACKAGE_DB
* when NO_ANSI and STRIP_BEFORE_PROCESS_INPUT are both defined, escape
characters are stripped as they're copied into the user buffer, saving
alot of unnecessary work stripping them out later.
* removed dead telnet_neg() function from comm.c
* check for tzset() and the need to prototype it in configure phase
Mon Jun 5 13:16:25 CDT 2000 ([email protected] (Marius))
* raised patchlevel to v22.2a28
* updated with respect to v22.1b25
* rewrote user command handling in comm.c:
. several buffer over-run fixes
. flush existing buffer before flushing a new OOB buffer
. ignore other than IAC IAC and IAC SE while in an IAC SB
. remove the space/backspace empty command hack
. some optimizations, less string scanning/copying than before
. fixed a memory leak when there are more than two lines to be
processed in PORT_ASCII and the object is destructed
. user input that exceeds the input buffer is now completely
thrown away.
* additional cleanups to parser package from [email protected]
* check the reference time of the object before calling reset to
determine if the object needs cleanup, the same way it's checked
for swapping.
* line number information is now stored as an int rather than a
short if USE_32BIT_ADDRESSES is defined.
* COMPAT_BUSTER: when COMPAT_32 is defined with PACKAGE_UIDS,
the uid assigned to a new object is the euid of the current
object rather than the uid of the current object.
* fixed #warn to be properly recognized [fix from Skullslayer@RoD]
* fix a parser crasher in interrogate_object() when the object has
both PI_SETUP and PI_REFRESH flags [reported by Dvarsk@Nightmare]
Wed May 24 12:01:34 CDT 2000 ([email protected] (Marius))
* raised patchlevel to v22.2a27
* updated with respect to v22.1b24
* fixed (s)printf() to be re-entrant. This allows for the removal
of the master()->object_name() restriction which would cause an
infinite loop and crash the driver anyway.
* contrib efun replaceable() does the checks that replace_program()
actually does now, and also adds a check for APPLY___INIT in
addition to APPLY_CREATE.
* added a query_replaced_program() contrib efun to return the name
of the program that was replaced by replace_program(). Returns 0
if replace_program() has not been called on the object.
* save_object() will save the name of the program that was replaced
by replace_program() if it has been replaced rather than the program
it was replaced with.
* fixed crasher when number of locals to pop in the compiler was 0.
* added GET_CHAR_IS_BUFFERED to options.h. Not defined by default,
but when it is defined, get_char() will be buffered. See the comment
in options.h for more information.
* an attempt will now be made once every 15 minutes to reconnect to the
address server if the connection has been lost (or not made at start-
up to begin with).
* if THIS_PLAYER_IN_CALL_OUT is defined, reclaim_objects() will only
zero the saved command_giver if that object has been destructed.
Thu Nov 12 12:53:35 EST 1998 ([email protected] (Beek))
* raised patchlevel to v22.2a26
* updated with respect to v22.1b22
* added Skullslayer@RoD's patch for #warn and #error
Wed Mar 4 04:57:16 EST 1998 ([email protected] (Beek))
* raised patchlevel to v22.2a25
* updated with respect to v22.1b21
* paranoid debugging check added in compiler.c
* fixed typo in string_copy() call in add_slash()
* Fixes from Belgarat:
. update patch_in() to take into account the v22.2a17 switch
changes
. remove obsolete code in DEBUG_MALLOC_EXTENSIONS (privs_file_fname
no longer used)
. fixed typo that caused parse_refresh() to be ignored
* SERVER_IP stuff moved to the runtime config file. SERVER_IP defines
in local_options files will still work. [change from Gorta]
* '&' is now a synonym for 'ref' when COMPAT_32 is defined
* fixed crasher when ref was used in function calls inside function
arguments, e.g. func(foo, bar(ref x), ref x)
Thu Feb 26 00:34:42 EST 1998 ([email protected] (Beek))
* raised patchlevel to v22.2a24
* more EOF fixes in lex.c [reported by Lathander]
* fixes from Turrican@DW
. call set_non_blocking() on all new accepted sockets since there
evidentally exists OSs that don't do this
. NUM_EXTERNAL_CMDS is now in options.h
. removed name field from lpc_socket_t (was unused, and the lookup
didn't use addr_server, ack)
. external_start can now take an array of string arguments as the
second arg
* call_stack(0) now correctly returns "<function>" and not
"/<function>"; actual fix is in add_slash() so this may fix other
instances of this behavior as well [reported by Donky]
Mon Nov 24 14:58:27 EST 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a23
* added leading / to filename in function return type warning
message [reported by Aragorn]
* fixed crasher in explode() when result exceeds the max array size
[reported by Aragorn]
* fixed EOF handling in lex.c
* Errors no longer turn off the heartbeat (and send the heartbeat
message) if MUDLIB_ERROR_HANDLER is enabled.
* program_info() now returns a mapping
Wed Nov 12 21:42:54 EST 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a22
* recompute runtime_index instead of storing it in the apply_low
cache
* fixed all uses of is*() functions on signed chars with the high
bit set
* fixed typo in apply_low() cache check
* reference programs in the apply_low() cache to avoid being confused
by dangled pointers. fixes crasher reported by Aragorn, Jihad.
See discussion in interpret.c for additional details.
Wed Nov 12 13:17:52 EST 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a21
* fixed BINARIES to work with the new switch() format
* updated loop generation for LPC->C
* fixed a typo in grammar.y.pre (patch was backwards last patchlevel)
* made the "Multiple access modifiers" error message a bit less
ambiguous
Tue Nov 11 18:34:44 EST 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a20
* three typo fixes from Aragorn (edit_source.c, grammar.y.pre,
packages/contrib.c)
* one from Symmetry (grammar.y.pre)
Fri Nov 7 12:35:42 EST 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a19
* updated with respect to v22.1b19
* reduced call_other cache overhead by a factor of two.
* fixed compilation with PRIVS on [reported by Jihad] and
PACKAGE_UIDS/PACKAGE_MUDLIB_STATS defines [reported by Leto]
* fixed the disassembler to know F_SWITCH addresses are relative now
* don't warn about m[-1] if m is type mapping
* fixed crasher in map_mapping()
* fixed non-existent master applies
* call pop_value() on the first_for_expr before parsing the body
of the loop, so any warnings generated have the correct line number
[reported by Aragorn]
* from Symmetry:
. fixed unused warnings for things like {int x = 1; } { int y; }
. fixed checks for multiple access modifiers
. fixed bug in switch ranges
Tue Nov 4 16:53:54 EST 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a18
* updated with respect to v22.1b17
* cp() now also errors (like mv()) if the src and dest files are
the same. Previously, it just truncated the file. [suggested
by Zod@Delirium]
* -> syntax now uses a call_other() sefun, if one exists. Type
checking for it was also improved somewhat.
* master applies are now cached the same way simul_efuns are.
applies.h is now autogenerated from 'applies'. Heartbeats also
use the same calling mechanism now.
* global 's/){/) {/' on the source code (sorry Sym :-))
* Removed strstr.c; OS's definition is undoubtably better in most
cases
* Correct line number info is now generated for initializers (this
is actually almost a side effect of one of Symmetry's changes)
* Changes from Symmetry:
. varargs int global = 2; is an error now
. More restrictive, but sensible type order:
<basic_type> <array|> <ref|> <*|>
Earlier one could also do basic_type ref array etc.
. ref cannot be used in global vars, casting (also an earlier
crasher), function declaration, local declarations
. Can have at most 64 classes now, earlier it was 32 but one
would also be able to crash it at 32 I believe
. Make sure that variables/functions have appropriate types after
inheriting classes
. Better error message if a previous func definition does not match
an about to be defined function
. Fixed some unused local var warnings which were erroneously
(not) generated e.g. in { int x; } { int y; write(y); }
Also fixed the order of such warnings in the case of { int x,y; }
. fixed a crasher/hanger in scratchpad for having a
scratch_copy_string when the scratchpad is completely filled
(reported by Curuntar@Lima Bean)
. Actually free the scratchpad immediately after
new(class foo, x:1, y:2) instead of waiting until
the end of compilation
. Give error message for new(class foo, x:1, x:2)
. Global modifiers now work a little differently.
There is the notion of access modifiers (private, public,
protected/static).
Other modifiers are (varargs, nomask, nosave/static).
The modifier now affects everything until the next such modifier:
private:
varargs int foo(mixed a, mixed b){
}
means that foo is private varargs. It is an error to have two
different access modifiers (such as public private) for any
function, global var or inheritance.
This is the case only if SENSIBLE_MODIFIERS is defined, since
old libs often use private static etc. Also fixed the
check of 'public private:'. Earlier it wasn't causing the
warning that would have been given.
. Significantly reduced program size, especially function tables.
A prototypical example of the savings for /std/race/human
on Lima, which normally has 533 functions, 526 of which is
inherited: The function table size is about 3k normally in
prev versions, 2k if COMPRESS_FUNCTION_TABLES is used, and
about 1k currently (even though one actually saves 601
functions currently, which amounts to 140 bytes extra, which
could be removed but at a cost in speed in local calls).
This example is typical of most mud programs which inherit
many functions but only add a few themselves.
The 1st call_other and local_calls should be better than
previously having defined COMP_FUNC_TABLES, but worse than
previously not defining it.
The program header has also been cut down 8 bytes.
If BINARIES is not defined, one saves an additional 4 bytes
per non-inherited function.
program_info(object ob|void) is a good way to find out about
program sizes.
. The order of name resolution for multiple inheritance is as
follows:
inherited prototypes < non-inherited prototypes <
inherited functions < non-inherited function (can only be one)
Within each class sequential order is used for resolution (later
inh prototypes win over earlier for e.g.).
The use of prototypes is dual:
(1) As an abstract method (see java). You can call prototypes
and only let inheriting programs define the actual functions.
(2) A typesetter. At this moment this is semi-strict. A warning
is produced for return type not being compatible. Argument types
are not checked however.
While it is not crucial in principle, programmers are encouraged
not to be too lax about types. In the future (possibly far), it
may be that meaningful compile-time types are the only way to
progress.
. If BINARIES is defined, only save string switch info if
PRAGMA_SAVE_BINARY is true
. LPC->C RUNTIME_LOADING support for alpha
Tue Oct 7 01:39:30 EDT 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a17
* updated with respect to v22.1b16
* Don't generate unused argument warnings for variables in prototypes
[reported by Jihad]
* Generate a warning for global variables with the same name as
another global variable (unfortunately, historically this hasn't
been illegal)
* improved RUNTIME_LOADING support on Linux from Alaron@RetroMUD
* fixed crasher/garbage error for replace_program(non_string)
* -Wmissing-declarations added to the develop compile options;
lots of local procedures declared static.
* compat/simuls/apply.c extended to have all the functionality of
3.2's apply().
* added a warning for declaring a global variable with the same
name as another global variable
* fixed the disassembler not to crash on out of range simul_efuns
and zero opcodes
* added USE_32BIT_ADDRESSING which allows up to 4GB of bytecode
as long as all branches are less than 64k. When LPC->C is
defined, this is always on.
* switch() offsets are now all relative
* deep_inventory() and living() default to this_object()
* added F_SHORT_INT opcode for two byte integer constants
* optimized map_mapping() to not copy ref 1 mappings
Sun Oct 5 12:26:39 EDT 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a16
* fixed crashes in attempting to use ::func() to call a private
function [reported by Random et al, fix from Cloud]
* if gcc is being used, try using __USE_FIXED_PROTOTYPES__ to have
the gcc header files define prototypes for functions that are
missing (hopefully this can get rid of more of lint.h especially
on SunOS. Anyone care to test on SunOS?)
* fixed typo in Makefiles ($(DRIVER) -> $(DRIVER_BIN))
* added reclaim_call_outs() prototype
* added debug() accounting code for COMPRESS_FUNCTION_TABLES;
uses "comp_func_tab" as a label
* added "LPC" and "LPC_line" debug() labels; the former uses line
number information to print out the file and line of code as it
executes. The latter pulls the line itself out of the source
file and prints it too.
* fixed crasher in safe_apply() due to args left on stack when an
error is caught. (This is the LIMA "crash when updating SECURE_D
or master object and getting a warning" bug)
* The starting debug_level can now be set from the command line;
use -d followed by the name of the flag that set_debug_level() uses.
e.g. "-dLPC -dLPC_line -dsockets"
Sat Oct 4 23:29:51 EDT 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a15
* updated with respect to v22.1b15
* added implementation for filter(string, ...)
Sat Oct 4 23:29:51 EDT 1997 ([email protected] (Beek))
* (v22.2a14 release bungled; number skipped)
Thu Sep 25 00:22:45 EDT 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a13
* updated with respect to v22.1b14
* improved warnings for code with no side effects
* changed optimizations for casted string constants to obey their
new type (just for consistency)
* resolve() can now take a function pointer as the second arg
Wed Sep 10 01:14:10 EDT 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a12
* added a Perl script compat/fixstatic that does a pretty good job
of converting static to nomask/protected
Fri Sep 5 01:01:54 EDT 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a11
* fixed ASCII external ports
* implemented MUD mode external ports (use "MUD" in the config file;
the mixed value gets passed to process_input)
* Parsing package changes:
. parse_sentence has an optional 3rd and 4th arg.
. The 3rd arg an array of objects to use in the parse instead of
the inventory of the environment of the user. Nested arrays
indicate containment, i.e. ({ ob1, ({ object inside ob1 }),
ob2, ob3, ({ first ob in ob3, second ob in ob3 }), ... })
. The 4th argument is a mapping of string -> object which can
be used to supply nicknames and similar things. For this parse,
the 'object' acts as if 'string' were returned by pc_id_list().
Entries that do not correspond to objects involved in the current
parse are ignored.
. fixed crashes in calling parse_refresh() from within a parser
callback. This is now the correct way to say "I'm returning this
answer, but ask again next time too"
Wed Sep 3 13:30:07 EDT 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a10
* updated with respect to v22.1b12
* added missing 'return ret' in dump_socket_status() compat simul
* added parser packages fixes from Belgarat:
. new error: ERR_MANY_PATHS
returned when the number of possibilities needed to figure out
the meaning of a sentence exceeds a certain number (i.e. figuring
out certain highly ambiguous sentences isn't worth the CPU)
. PARSE_DEBUG can be used to get parser debugging without compiling
with DEBUG on
. evil new :c modifier that means just choose the first one you
find, for MUDs that want to make a mistake they will regret for
the rest of their lives, and be hated by their players
[nah, the maintainer would _never_ insert personal opinions into
the ChangeLog]
. "finally, two-object rules are examined more thoroughly and some
strange parse errors are eliminated.
Changed semantic for applies:
direct_ and indirect_ applies can be called with 0s as the
object-type arguments. However it's now guaranteed that they
will be called with filled object arguments at least once during
the processing of a rule.
This allows objects to do explicit checks.
The direct_ and indirect_ applies should work as usual when they
receive 0 as object argument - they simply should return if the
object can or can not participate in the rule.
When the arguments are filled, the direct_/indirect_ applies can
perform thorough checks and return errors."
Sat Aug 30 19:23:35 EDT 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a9
* updated with respect to v22.1b11
* fixed typo in '\\' handling in #defines; also added overflow check
* removed unused local in interpret.c
* added a #breakpoint preprocessor directive which calls
lex_breakpoint(), which does nothing. Useful for setting debugger
breakpoints that stop at a particular point in LPC compilation
Wed Jul 23 18:30:27 EDT 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a8
* added lex.c fixes from Burty:
. Handle '\\' correctly in defines
. preserve whitespace when expanding defines
. added quote checks in expand_all_defines()
Thu May 15 14:14:42 EDT 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a7
* reformatted the trace information with MUDLIB_ERROR_HANDLER off;
should be a bit easier to read now.
Wed Apr 16 07:54:45 EDT 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a6
* updated with respect to v22.1b8
* object_present() now depends on #ifdef F_PRESENT instead of
NO_ENVIRONMENT so it disappears in the !NO_ENVIRONMENT && !F_PRESENT
case too. [idea from Jihad]
* name change: the file "Install" is now "INSTALL" to make it slightly
more visible
* fixed file.h to check file_incl.h for S_IS* first [fix from Leto]
* fixed the multiple class inherit code to work [fix from
Wodan@Discworld]
Sun Apr 13 23:59:02 EDT 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a5
* updated with respect to v22.1b7
* fixed compilation with DEBUGMALLOC off
* (: efun::foo :) is now a valid efun pointer (assuming
master()::valid_override() doesn't complain)
Sat Apr 12 15:06:30 EDT 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a4
* updated with respect to v22.1b6
* reclaim_objects() now cleans destructed this_player's and objects
out of the call_out() list
* commenting out input_to() or get_char() in func_spec.c now removes
all related code and variables
Sun Apr 6 18:00:43 EDT 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a3
* updated with respect to v22.1b5
* classes can now be inherited multiple times, as long as the
definitions are consistent.
* fixed macro expansion to expand all arguments to macros immediately.
in particular, the ANSI stringize hack:
#define S(x) #x
#define STRINGIZE(x) S(x)
now works. E.g. after #define FOO bar, STRINGIZE(FOO) gives "bar"
and not "FOO"
Wed Apr 2 15:11:10 EST 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a2
* updated with respect to v22.1b4
* specifying both left and center justification in sprintf() now
pushes odd-length strings to the left instead of the right, e.g.
sprintf("%|8s", "foo") == " foo "
sprintf("%|-8s", "foo") == " foo "
* fixed crasher in calling socket_status() for a socket owned by
a destructed object [reported by Jihad]
Tue Apr 1 13:59:43 EST 1997 ([email protected] (Beek))
* raised patchlevel to v22.2a1
* added a slightly improved version of Tim's socket_status() efun.
Usage:
socket_status(int fd) returns an array with:
. ret[0] = (int) fd
. ret[1] = (string) state
. ret[2] = (string) mode
. ret[3] = (string) local address
. ret[4] = (string) remote address
. ret[5] = (object) owner
socket_status() returns an array of arrays; one for each socket.
* COMPAT_BUSTER: dump_socket_status() is gone; see compat/simuls
for a replacement [written using socket_status]
* socket status information is now cleared when the socket is closed
* fixed a bug that caused the close callback not to be called for
sockets that went through the CLOSING state
----------------------------------------------------------------------------
(v22.1a17 promoted to v22.1b1)
Wed Jan 29 19:15:44 EST 1997 ([email protected] (Beek))
* raised patchlevel to v22.1a17
* updated with respect to v22b27
* fixed origin() to not return "call_out" for ORIGIN_INTERNAL
[reported by Jihad]
* added Marius' patch to make the parsing package work with
NO_ENVIRONMENT. Requires the following new master applies:
. parse_get_first_inventory(object ob)
{ must behave like first_inventory(ob) }
. parse_get_next_inventory(object parent, object current)
{ must behave like next_inventory(current);
parent == environment(current) in case you need it }
. parse_get_environment(object ob)
{ must behave like environment(ob) }
[I'm not in love with this interface, but it will do for now]
* fixed a number of warnings
Sat Jan 25 18:14:00 EST 1997 ([email protected] (Beek))
* raised patchlevel to v22.1a16
* wrapped debug.c in #ifdef DEBUG_MACRO
* fixed crasher in file operations very early in the boot process
(before the master object loads); evidentally some libs actually
do this [both reported by Aragorn]
Thu Jan 9 20:20:40 EST 1997 ([email protected] (Beek))
* raised patchlevel to v22.1a15
* updated with respect to v22b26
* added Raistlin@IE's patches to make the Win32 build procedure much
cleaner and not depend on so many GNU utilities; also did a wonderful
job of cleaning up the OS specific Win32 code. Fixes a number of
bugs, as well.
[ also, I can't test these, since I still don't have a Win32
compiler, so I'd appreciate it if someone would let me know
if I messed something up ]
* fixed crasher in explode("foofoo", "foo") with SANE_EXPLODE_STRING
on and REVERSIBLE_EXPLODE_STRING off
* enhanced DEBUG_MACRO a bit; things are now in terms of identifiers
instead of impossible to remember numbers. To add a new one,
add the define to debug.h and the entry near the top of debug.c
Then do:
debug(mylevel, (...))
new efuns:
. set_debug_level("mylevel")
. clear_debug_level("mylevel")
. debug_levels() [returns a mapping showing which messages are
enabled]
* A few changes to call_out:
. 0 delay call_outs are legal
. call_outs to the same time are in the order they are set up, not
in reverse order
. call_outs() from w/in call_outs() are relative to the time the
call_out was scheduled to go off, not the actual time; this is
because:
. the current time is slowly advanced as call_outs are executed
until the current time reaches the real time, instead of taking
a huge leap forward (in the event that the MUD is busy enough
that it is getting behind)
Mon Dec 30 04:08:08 EST 1996 ([email protected] (Beek))
* raised patchlevel to v22.1a14
* fixed compilation with UIDS enabled [reported by Leto]
* added support for:
. allocate(int n, mixed v):
allocates an array of n elements. The i-th element is set to
evaluate(v, i) [i is in the range 0..n-1]
. allocate_mapping(array keys, mixed v):
- if v is an array, the returned array has keys 'keys' and values
'v' (like 3.2.x's mkmapping)
- if it is a function, the the mapping has keys 'keys' and values
evaluate(v, key)
- otherwise, each key has the value 'v'
Mon Dec 9 13:27:42 EST 1996 ([email protected] (Beek))
* raised patchlevel to v22.1a13
* updated with respect to v22b25
* fixed a bug introduced recently which caused random() to always
return zero when drand48() was being used [reported by Leto]
* changed restore_object() to ignore ^M's at the end of lines in
save files
* added leading / to get_save_file_name() argument [reported by
Leto]
* fixed ARCH define for Linux/alpha
* fixed some implicitly defined functions which cause warnings on
the alpha
* fixed crasher/wild pointer write in code like:
foreach (string s, ref r in m) { map_delete(m, s); r = 0; }
Sun Dec 8 23:50:32 EST 1996 ([email protected] (Beek))
* raised patchlevel to v22.1a12
* fixed a bug that would cause implicitly defined functions (ones
with no prototype in scope allowed by strict types being off)
to become invisible when inherited [reported and tracked by
Aragorn; also reported to affect NM muds on alpha drivers]
Fri Nov 8 12:03:53 EST 1996 ([email protected] (Beek))
* raised patchlevel to v22.1a11
* updated with respect to v22b24
* changed function pointers whose owners are destructed to be
ignored by call_out_list() and to not error when they fire.
Changed so that "foo" and (: foo :) have the same/similar
behavior. This isn't strictly an equivalent case, since
(theoretically) the function could be owned by a different
object than the one that did the call_out(), but that is
probably restricted to code doing call_out()s on behalf of
other objects anyway, and the runtime error is more annoying
than useful. [Suggested by Mordred@RoD]
* to_int() now returns undefined if no valid characters were converted.
* leading slash added to in_edit() [reported by Mystic]
* call srand48() if using drand48() to make random numbers [fix
from Turrican@DW]
* fixed compilation with NO_ADD_ACTION off or OLD_ED on, or
NO_BUFFER_TYPE on
* fixed the order of .o files for RUNTIME_LOADING
* fixed switch() when two cases differ by more than 2^31
* better local_options error message
Sat Nov 2 18:00:04 EST 1996 ([email protected] (Beek))
* raised patchlevel to v22.1a10
* use -m486 for pentium too
* added /'s in non mudlib error_handler traces
* fixed compilation with SUPPRESS_ARGUMENT_WARNINGS off
* receive() can now take a buffer as its argument (useful for
PORT_BINARY connections)
* fixed PROFILE_FUNCTIONS not to miss calls which miss the apply_low
cache
* fixed the driver not to loop if more than one -D option is passed
on the command line
* the debug.log file is no longer opened and closed every time it
needs to be written to; it is held open instead
* made the DEBUGMALLOC hash a bit more efficient
* fixed a bug that caused terminal_colour() not to strip spaces of
the starts of all lines, instead of just continuations of wrapped
lines
* parser callbacks went back to being ORIGIN_DRIVER, since they
are restricted to the 'can_', 'do_' and 'indirect_' namespaces
* various fixes to compilation with uids enabled
* add to the errors field of mudlib stats, even if a mudlib error
handler exists
* added parser support for 'a', 'any', 'my'
Tue Oct 29 20:41:26 EST 1996 ([email protected] (Beek))
* raised patchlevel to v22.1a9
* updated with respect to v22b21
* fixed possible crashers in code like 'call_out(something, 1, ref x)'
* fixed wild pointer into stack in code like:
mixed global;
void foo(mixed args...) { global = args; }
void create() { int x; foo(ref x); }
void inc(int ref x) { x++; }
void increment_random_location_on_stack() { inc(global...); }
* fixed the 'multiple access modifiers' warning not to consider
nomask and nosave to be access modifiers
* disabled the multiple access modifier error message with
SENSIBLE_MODIFIERS off
* fix for compiling with COMPRESS_FUNCTION_TABLES off from Mystic
* fixed compilation with FD6 code disabled
* fixed various crashers in the unused locals warnings
* various changes to func_spec.c so that built in efuns can be
disabled or renamed (e.g. remove or rename clone_object(), etc)
[idea from Mystic]
* added support for foreach (ref x in array),
foreach (x, ref y in mapping)
* better error message for indexing an illegal type using a range
* enabled the 'public' keyword with SENSIBLE_MODIFIERS on; it was
accidentally disabled. Also fixed the options.h entry to be
clearer
* added a SUPPRESS_ARGUMENT_WARNINGS option, to cut down on the
number of warnings generated by code which existed before
omitting the argument name was legal
* fixed terminal_colour() to treat multiple spaces as one space
when wrapping [reported by Jihad]
* fix for errors writing to flushing sockets
Mon Oct 28 17:14:29 EST 1996 ([email protected] (Beek))
* raised patchlevel to v22.1a8
* COMPAT_BUSTER: ORIGIN_CALL_OUT is now ORIGIN_INTERNAL; in addition
most driver callbacks which do not use hard coded function names
also use ORIGIN_INTERNAL (add_action, socket callbacks, etc).
The practical fallout of this is that such routines may be static,
but *not* private.
* Use fd #6 instead of fd #3, since Solaris uses fd #3 while
starting the program [reported by Aragorn]
* fixed crasher in the parsing package generating the object list
[fix from Aragorn]
* It is now legal to use a class member of something of type mixed,
as long as it is unambigous (e.g. foo->x is ok as long as only
one class in scope has a member named 'x', or if 'x' is in the
same position in all classes in scope)
* Unused local variables now generate warnings
* function arguments no longer need to have names (and not naming
them inhibits 'unused' warnings)
* more than one access specifier (e.g. 'public private protected')
generates a warning
* If SENSIBLE_MODIFIERS is defined, then:
(1) 'static' no longer exists, and is replaced by 'nosave' and
'protected'
(2) 'public' no longer means what it used to; it now means the
default visibility
* COMPAT_BUSTER: modifiers from a '<modifier>:' declaration only
affect declarations which have no modifiers of their own. I.e.
'private: nomask x;' no longer declares x to be private
* if VIRTUAL_RESERVED_WORD is defined, then 'virtual' is a
reserved word. Doesn't do anything, though.
* if REF_RESERVED_WORD is defined, the 'ref' can be used to declare
arguments to functions to be by reference instead of by value.
example:
int foo(int ref i) {
i++;
}
void create() {
int y = 1; foo(ref y); write(y);
}
prints '2'. Note that ref is required both in the declaration
and the call.
* fixed a bug that would cause compile errors when indexing something
of type 'mixed'
* added an 'efun_defined' pseudo function to the preprocessor. It
works just like 'defined', except that it looks up efuns. Example:
#if !efun_defined(snoop)
write("snoop efun not available.\n");
#endif
Mon Oct 21 17:48:12 EDT 1996 ([email protected] (Beek))
* raised patchlevel to v22.1a7
* updated with respect to v22b20
* added Burty@Nanvaent's fixes for stringizing and macro
expansion
* added support for array &= and |= [idea from Avenger@CoreDump]
* added the object name to the "Saving successful match" parser
debugging message [idea from Aragorn]
* added Leto's SERVER_IP patch
* abort compilation after getting 5 errors, since we don't print
any more anyway, and the leaks this was supposed to prevent
were fixed years ago
* MudOS now checks if file descriptor #3 is a valid socket when
it starts up; if it is, it is used as a login port.
* added a 'portbind' program:
syntax: portbind [-p port#] [-d drivername] [-u uid] [-g gid] [args ...]
All it does it bind the specified port, then execv() the driver,
passing the bound port as file descriptor #3 (see above).
drivername defaults to ./driver, and port# defaults to 23.
if uid or gid is specified, setuid() and setgid() are called
before exec'ing the driver.
This means one can bind the telnet port by making portbind setuid,
and using:
portbind -u <mud uid> -g <mud gid> config.mud
to run the driver
Wed Oct 9 15:26:37 EDT 1996 ([email protected] (Beek))
* raised patchlevel to v22.1a6
* updated with respect to v22b19
* fixed compilation with NO_ADD_ACTION off, PRIVS on, or
PROFILE_FUNCTIONS on [re: the 'ob' global recently removed;
reported by Aragorn, Jihad, Avenger, etc]
* only do promotions (int)<->(float) on assignment, not op=; in
the second case the conversion will be done by the efun (if
legal) so there is no need.
Mon Oct 7 16:43:45 EDT 1996 ([email protected] (Beek))
* raised patchlevel to v22.1a5
* hidden checks are now compiled out if set_hide() is disabled in
func_spec.c [idea from Avenger@CD]
* buffer code is compiled out if NO_BUFFER_TYPE is defined; also
fixed a few old references to DISABLE_BUFFER_TYPE. [idea from
Avenger@CD] Also, a binary port in the config file will cause
a sensible error message, and attempting to create a binary
socket will return EEMODENOTSUPP.
* removed the 'ob' global in efuns_main.c and related hacks with
respect to object_visible(); also fixes a bug in the return
value of environment() when it is hidden (and probably other
bugs elsewhere too) [reported by Jihad]
* fixed crasher in using the name of a file that doesn't exist
as the object in an efun callback (e.g. filter(({}), "foo", "bar"))
* fixed a couple compile problems and a crasher in
PACKAGE_MUDLIB_STATS [reported by Avenger@CD]
Thu Oct 3 18:16:53 EDT 1996 ([email protected] (Beek))
* raised patchlevel to v22.1a4
* updated with respect to v22b17
* need to include "master.h" in the uid package now [fix from Leto],
mas well as md.c, and master.c needs comm.h when tracing is
enabled
* fixed Makefiles on non-GNUmake systems to include the two new
files introduced last pl
* fixed crasher in the handling of refreshing the master object;
also the literals are cached but are *not* affected by
parse_refresh(). The reasoning is that if they change, it
would cause all hell to break loose with existing rules.
So parse_refresh() only needs to be called when the return
value of parse_command_users() changes.
Tue Oct 1 19:14:42 EDT 1996 ([email protected] (Beek))
* raised patchlevel to v22.1a3
* updated with respect to v22b16
* fixed various crashers in the new snoop code [reported by Jihad]
* Many thanks to DrFeelgood for helping clean up header file
dependencies, and pointing out typos in options.h
* Warning for using both a 'port number : ' line and an
'external_port_1 : ' line
* moved master object and function pointer handling to their own
files
Mon Sep 30 18:56:54 EDT 1996 ([email protected] (Beek))
* raised patchlevel to v22.1a2
* updated with respect to v22b15
* #'foo is now the same as (: foo :) when COMPAT_32 is defined
[suggested by Bubbs]
* added NO_SNOOP option
* The requirement that a snooper must be interactive has been lifted
(though this isn't particularly useful unless RECIEVE_SNOOP is
also defined) [suggested by Larnen]
Tue Jun 4 00:57:30 EDT 1996 ([email protected] (Beek))
* raised patchlevel to v22.1a1
* COMPAT_BUSTER: #include <...> now no longer searches based on
relative paths; #include "..." still does.
* added Blackheart's diffs for using gdbm. See PACKAGE_GDBM for
details; probably this should be merged with Descartes'
PACKAGE_DB stuff ...
* added Avenger@CD's diffs for a union array operator (|)
(with trivial changes and a array stat fix)
Works analogously to &:
({ 1, 2, 3 }) & ({ 2, 4 }) = ({ 2 })
({ 1, 2, 3 }) | ({ 2, 4 }) = ({ 1, 2, 3, 4 })
* if ARRAY_RESERVED_WORD is defined, use "array" instead of "*"
in error messages [e.g. "Bad assignment ( mapping vs array )"]
* added Marius@Prilnari's fixes to lex.c: token pasting in
preprocessor macro expansion and adds token quoting
* added the -c option to the RUNTIME_LOADING compile flags since
it disappeared somehow
* Hidden object fixes for present() and environment()
* COMPAT_BUSTER: removed the tail() efun; a simul_efun is in the
compat dir
* added leading / to log_error() filenames
* cleaned up a bunch of duplicated code in array.c, and corrected
a few statistic bugs
* Parser package changes:
. added the object name to some parser debugging messages
. moved names of the applies to top of parser.c as #defines
. information from the master object is now cached
(parse_command_users, parse_command_prepos_list)
COMPAT_BUSTER: this means parse_refresh() must be called
if the information changes
. livings_are_remote() is now rechecked when a parse_refresh()
is done
----------------------------------------------------------------------------
(v22a41 promoted to v22b1)
Mon May 27 16:20:09 EDT 1996 ([email protected] (Beek))
* raised patchlevel to v22a41
* variable information is now stored only in the program in which
the variable is defined; estimated compression ratio is about
10:1. YMMV
* COMPAT_BUSTER: all inherits must now precede all global variable
definitions
* Added Ceda@IdeaExchange's fixes to the Windows '95 port
* fixed compilation error in c_prepare_catch()
* added a COMPRESS_FUNCTION_TABLES option, which compresses function
tables even further (estimated compression: 2-3x) at the cost of
slowing down function calls slightly (<5-10%)
* Fixed error() to correctly added a trailing \n to error messages
that are missing them
* Crasher fix in mapping composition (from Avenger@CoreDump)
Sun May 26 00:37:08 EDT 1996 ([email protected] (Beek))
* raised patchlevel to v22a40
* internal function aliases are handled a little smarter, anticipating
more function table memory optimizations later
* fixed some crashers/problems involving #pragma optimize and some
compiler errors
* fixed a crasher in passing a filename that wasn't a string constant
to dump_prog()
* program_info() can now take an object as a first arg
* fixed a problem that would cause functions that were prototyped
before inherited to call the first function defined in the
object instead.
Fri May 24 00:30:10 EDT 1996 ([email protected] (Beek))
* raised patchlevel to v22a39
* terminal_colour() now has two more optional args; the 3rd is the
width to wrap at, and the 4th is the indent for lines after the
first
* Fixed a crasher in some Too deep recursion errors
* Fixed crashers in constructs like while (...){ e = catch { break; } }
Jumping out of a catch block is now illegal.
* Fixed a crasher in program_info() when there are objects without
type information loaded
Thu May 23 15:46:10 EDT 1996 ([email protected] (Beek))
* raised patchlevel to v22a38
* YYTYPE's size changed from 10 to 8, which should make the compiler
slightly more efficient.
* Fixed a bug in the generation of information to pass to mudlib
error handlers, which would cause an "Illegal array size" error
to be flagged before the error handler was even called.
* A few changes to $() notation:
. $() now moves out one level, not all the way out. So, to use a
local variable in a function from inside a doubly nested function
pointer, one needs to use $($()), e.g.: