Skip to content

Don't rely on path_max #2091

@yelninei

Description

@yelninei

Hi,

Following up to my comment in #1895 (comment) on PATH_MAX.

I would like to get rid of the -DPATH_MAX=4096 hack for hurd.

I had a look where PATH_MAX is used and it is used only for realpath(3) and readlink(2) to allocate a buffer that will be "big enough".

For realpath glibc will allocate a buffer for us with the result when the output is NULL. (this case is not specified by posix). I don't think this is something that other libcs implement though.

The man page for readlink also suggests to not rely on PATH_MAX and suggests to use stat.st_size from lstat and malloc a buffer manually.

The problem with this approach is that while lstat on /proc returns sensible values on hurd e.g. on linux the size is 0 so the PATH_MAX approach is still needed.

Also there are currently at least 2 static inline realpath aliases for windows.

terminalshell_linux has a FF_EXE_PATH_LEN instead.

Before I start to make this work would it make sense to consolidate this into new helpers to not litter #ifdef PATH_MAX everywhere?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions