View Issue Details

IDProjectCategoryView StatusLast Update
0000664LDMud 3.7Generalpublic2022-10-06 19:48
ReporterGnomi Assigned To 
PrioritynormalSeverityminorReproducibilityhave not tried
Status newResolutionopen 
Platformi686OSDebian GNU/LinuxOS Version4.0
Summary0000664: RfC: Remove compat mode
DescriptionThe efun transfer() might be emulated by a simul-efun. But the biggest problem is, that in compat mode all file and object names don't have a leading slash.
TagsNo tags attached.


child of 0000146 confirmed Filenames in master calls should always start with a leading '/' 



2009-06-18 05:23

administrator   ~0001223

Additionally there are the differences in initialisation I think: create/reset vs. reset(0)/reset(1).
AFAIR all the stuff concerning (E)UID was controlled by strict-uids, right?


2009-06-18 05:28

manager   ~0001224

Initialization is specified by the driver hooks (H_CREATE_*, H_RESET) and not dependent on the driver mode. And also - I think - uid handling is controlled by strict-uids, I haven't seen a dependency on the driver mode, but I might have overlooked something.


2009-06-18 05:32

administrator   ~0001225

Ah, right. The table in the manpage 'native' only describes traditional behaviour. I thought, the driver still sticks to these and doesn't offer the hooks in compat mode (never used compat mode here... *g*).


2009-10-06 15:38

administrator   ~0001500

Maybe we should make a list of things, which would get a leading slash?


We may have to check restore_structs(), because the program name is encoded in the struct identifier. So we have to take care, that we can restore savefiles without leading / and savefiles with them.


2009-10-06 18:33

reporter   ~0001503

You should also take get_dir() into account. I glimpsed over the entries of /doc/efun, but found nothing else, yet.


2009-10-07 05:06

reporter   ~0001509

We switched over to native mode a couple of years ago and it was not THAT complex. The native mode works perfectly well even without using euid/strict uids (even though we take advantage of them now). The main problem for us was the missing SLASH, so be previously introduced a define COMPAT_SLASH that resolved to an empty string when running in Native mode.

However, I must say, we I do not need it anymore, so lets get rid of it *grins*


2009-10-15 17:58

reporter   ~0001522

traceprefix() could be another candidate: The manpage says, that internally objects are stored without the leading slash. But when called in !compat mode, one should not rely on the underlying internal storage but write the arguments like other arguments: with leading slash.


2010-09-24 19:08

reporter   ~0001899

For all the above mentioned eight efuns the OUTPUT has to be checked.

The following efuns possibly accept a filename in the arguments. Their INPUT arguments have to be checked, if they have a leading '/' or not:

* attach_erq_demon()
* clone_object()
* clonep()
* environment()
* filter_indices()
* first_inventory()
* garbage_collection()
* load_name()
* load_object()
* map()
* map_indices()
* object_name()
* restore_object()
* save_object()
* sort_array()
* symbol_function()
* tell_object()
* walk_mapping()

The next list of efuns do already use a leading /, even in compat mode:
* ed()
* file_size()
* get_error_file()
* read_bytes()
* read_file()
* rm()
* tail() -- removed in 3.5 anyway
* write_bytes()
* write_file()

Issue History

Date Modified Username Field Change
2009-06-18 05:09 Gnomi New Issue
2009-06-18 05:23 zesstra Note Added: 0001223
2009-06-18 05:28 Gnomi Note Added: 0001224
2009-06-18 05:32 zesstra Note Added: 0001225
2009-09-30 16:12 zesstra Relationship added child of 0000146
2009-10-06 15:38 zesstra Note Added: 0001500
2009-10-06 18:33 Coogan Note Added: 0001503
2009-10-07 05:06 Bardioc Note Added: 0001509
2009-10-15 17:58 Coogan Note Added: 0001522
2010-03-27 06:22 zesstra Target Version => 3.5.0
2010-09-24 19:08 Coogan Note Added: 0001899
2017-10-04 21:36 zesstra Target Version 3.5.0 =>
2022-10-06 19:48 Gnomi Project LDMud 3.5 => LDMud 3.7
2022-10-06 19:48 Gnomi Category Runtime => General