View Issue Details

IDProjectCategoryView StatusLast Update
0000146LDMud 3.7Generalpublic2022-10-06 21:48
ReporterlarsAssigned To 
Status confirmedResolutionopen 
Summary0000146: Filenames in master calls should always start with a leading '/'
DescriptionThis might break backwards compatibility.
TagsNo tags attached.


parent of 0000664 new LDMud 3.7 RfC: Remove compat mode 
parent of 0000254 new LDMud 3.5 restore_/save_object(): pass full filename to valid_write/read 
Not all the children of this issue are yet resolved or closed.



2009-09-28 15:01

administrator   ~0001327

Ok, had a look into it:

- make_path_absolute(): obviously does not get an absolute path and should not. ;-)
- include_file/inherit_file(): they get the file to be inherit/included not as absolute, because they should make them absolute, if necessary. The file currently compiled is given with absolute paths if !compat.
- compile_object(): not absolute
- get_ed_buffer_save_file_name(): not absolute
- get_wiz_name(): not absolute
- preload(): absolute paths
- privilege_violation(): seems to get only objects, although its mixed according to the manpage.
- valid_exec(): program has no leading /
- valid_read()/valid_write(): absolute path.
- runtime_error(), heart_beat_error(): curobj and curprg are not absolute.
- runtime_warning(): curobj is made absolute if !compat, but curprg not.

I just think about: another possibility than to manipulate the paths each time prior to apply_master() is to always use absolute object names and program names, not only during master applies, because that would be more consistent (e.g. you get the program in runtime_error() absolute, but in debug_info() it is not). But on the other hand, in the case of paths for reading/writing files that makes it more complicated access files in the driver...
Also, in that case, we should first get rid of the compat mode.


2009-09-29 12:28

manager   ~0001334

We should get rid of compat mode anyway. :-)

And I'd support the idea of having a leading '/' an all absolute path names.
Most changes would affect the master only, so the compatibility is not that a problem (if we do it in 3.5). And I don't think it would complicate the driver side (you just have to use filename+1 to skip the leading '/').


2009-09-30 16:14

administrator   ~0001362

You are right. But one problem is to find all the places where we use such paths and not have to add some +1 to the pointers. I am not completely convinced that that will not be a pain in the ass. But maybe someone else has better knowledge. ;-)


2009-10-01 04:47

reporter   ~0001388

Getting rid of compat mode: I'm not the one who would go over 100MB area lib code and check for correct handling of absolute path names in our compat mode mudlib.
  inherit "basic/living";
is easy with gred/sed, things like
  if (object_name(previous_object())[0..9]!="obj/player")
not. Especially occurances where a filename is computed are almost only to find by the hard way.

Lars already tried that and came to the conclusion that he'll stuck with native and !native mode.


2009-10-01 04:58

manager   ~0001389

With a simul_efun object_name() that removes the slash there would only be the master and simul_efun to check and occurrences of efun::object_name.

Issue History

Date Modified Username Field Change
2004-11-26 20:15 lars New Issue
2009-09-26 19:15 zesstra Status new => assigned
2009-09-26 19:15 zesstra Assigned To => zesstra
2009-09-28 15:01 zesstra Note Added: 0001327
2009-09-29 12:28 Gnomi Note Added: 0001334
2009-09-30 16:12 zesstra Relationship added parent of 0000664
2009-09-30 16:13 zesstra Project LDMud => LDMud 3.5
2009-09-30 16:14 zesstra Note Added: 0001362
2009-09-30 17:02 zesstra Relationship added parent of 0000254
2009-10-01 04:47 Coogan Note Added: 0001388
2009-10-01 04:58 Gnomi Note Added: 0001389
2010-07-14 04:39 zesstra Target Version => 3.5.0
2017-10-04 21:39 zesstra Project LDMud 3.5 => LDMud 3.6
2017-10-04 21:39 zesstra Category Runtime => General
2021-04-09 14:20 zesstra Assigned To zesstra =>
2021-04-09 14:20 zesstra Status assigned => confirmed
2021-04-09 14:20 zesstra Target Version 3.5.0 =>
2022-10-06 21:48 Gnomi Project LDMud 3.6 => LDMud 3.7