bitwiseworks / libc

LIBC Next (kLIBC fork)
9 stars 4 forks source link

Make readdir return DT_LNK for symlinks #9

Closed dmik closed 6 years ago

dmik commented 6 years ago

Currently it returns DT_REG. See https://github.com/bitwiseworks/qtbase-os2/issues/40 for a real life example.

dmik commented 6 years ago

Note that besides passing DT_LNK from Unix EAs to the readdir result I also implemented passing the inode number as well because there was a todo for that since long (by Knut, I suppose) and because it's the very same code anyway. Now the inode returned by readdir is consistent with what stat returns for the same file.

This inode extension, however, breaks ABI for some internal (but publicly available) structures and, consequently, functions using these structures in libc066.dll, namely:

It shouldn't be an issue because apps which are not part of kLIBC are forbidden to use these internal APIs. However, those who do, can be brought in-line by a simple recompile against the new headers. Also, if we find an app that depends on these APIs and can't be built (this is very unlikely), there is an option to disable the inode extension or provide a wrapper DLL that will fix it in-place.