[-- Attachment #1.1: Type: text/plain, Size: 671 bytes --] Hi, I've seen than many programs workaround the fact that musl lacks canonicalize_file_name(3) (which is a glibc extension). Would you consider adding it to musl? It relies on a glibc extension to realpath(3), although it could be implemented in terms of a standard realpath(3) (by looping), or even as a completely separate function. We need it in a project, and will probably have to write our own version (unless we workaround it in a different way), since we can't rely on glibc. Maybe you're interested in picking that code when we have it or write your own? Thanks, Alex -- Alejandro Colomar <http://www.alejandro-colomar.es/> [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 833 bytes --]
On Thu, Aug 18, 2022 at 07:30:10PM +0200, Alejandro Colomar wrote: > It relies on a glibc extension to realpath(3) What extension are we talking about exactly? Because `man canonicalize_file_name` states the following: | The call canonicalize_file_name(path) is equivalent to the call: | realpath(path, NULL); Calling realpath with NULL as the 2nd parameter is well defined since POSIX-2008 [0], if that's what you were talking about. [0]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/realpath.html - NRK
On Fri, Aug 19, 2022 at 07:48:33PM +0600, NRK wrote:
> On Thu, Aug 18, 2022 at 07:30:10PM +0200, Alejandro Colomar wrote:
> > It relies on a glibc extension to realpath(3)
>
> What extension are we talking about exactly?
> Because `man canonicalize_file_name` states the following:
>
> | The call canonicalize_file_name(path) is equivalent to the call:
> | realpath(path, NULL);
>
> Calling realpath with NULL as the 2nd parameter is well defined since
> POSIX-2008 [0], if that's what you were talking about.
>
> [0]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/realpath.html
This. To further elaborate, we generally don't add nonstandard
functions when there is a fully portable (or even just "at least as
portable as the extension" i.e. "works everywhere the extension would
have worked") way to do exactly the same thing that takes no effort
for the affected software to fix and do right.
Rich