summaryrefslogtreecommitdiff
path: root/hurd/porting
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2023-05-17 22:45:46 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-05-17 22:45:46 +0200
commit88e348d0b5f3b017d1a07341060592623e5b2a4e (patch)
treed694dd7155d40ae3c32e486e24e1815b386343b6 /hurd/porting
parentac408ec86834ec6859f06099707da99d1d760317 (diff)
Add another link about PATH_MAX
Diffstat (limited to 'hurd/porting')
-rw-r--r--hurd/porting/guidelines.mdwn2
1 files changed, 1 insertions, 1 deletions
diff --git a/hurd/porting/guidelines.mdwn b/hurd/porting/guidelines.mdwn
index 21c33488..624f7fd5 100644
--- a/hurd/porting/guidelines.mdwn
+++ b/hurd/porting/guidelines.mdwn
@@ -132,7 +132,7 @@ If you get Bad File Descriptor error when trying to read from a file (or accessi
<http://pubs.opengroup.org/onlinepubs/009695399/basedefs/limits.h.html>
-Also see <https://eklitzke.org/path-max-is-tricky>
+Also see <https://eklitzke.org/path-max-is-tricky> and <https://insanecoding.blogspot.com/2007/11/pathmax-simply-isnt.html>
Every unconditionalized use of `PATH_MAX`, `MAX_PATH` or `MAXPATHLEN` is a POSIX incompatibility. If there is no upper limit on the length of a path (as its the case for GNU), this symbol is not defined in any header file. Instead, you need to either use a different implementation that does not rely on the length of a string or use `sysconf()` to query the length at runtime. If `sysconf()` returns -1, you have to use `realloc()` to allocate the needed memory dynamically. Usually it is thus simpler to just use dynamic allocation. Sometimes the amount is actually known. Else, a geometrically growing loop can be used: for instance, see [Pulseaudio patch](http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=5;filename=patch-pulse;att=1;bug=522100). Note that in some cases there are GNU extensions that just work fine: when the `__GLIBC__` macro is defined, `getcwd()` calls can be just replaced by `get_current_dir_name()` calls.