less/backport-Do-not-assume-PATH_MAX-is-defined.patch
2024-05-10 10:41:25 +08:00

42 lines
1.0 KiB
Diff

From eea6fbc196872eeca6f02fcfba298f3e1bb62880 Mon Sep 17 00:00:00 2001
From: Guillem Jover <guillem@hadrons.org>
Date: Thu, 11 Jan 2024 02:18:07 +0100
Subject: [PATCH] Do not assume PATH_MAX is defined
---
filename.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/filename.c b/filename.c
index f910aa5..c6bc49e 100644
--- a/filename.c
+++ b/filename.c
@@ -812,9 +812,24 @@ public char * lrealpath(char *path)
if (!is_fake_pathname(path))
{
#if HAVE_REALPATH
+ /*
+ * Not all systems support the POSIX.1-2008 realpath() behavior
+ * of allocating when passing a NULL argument. And PATH_MAX is
+ * not required to be defined, or might contain an exceedingly
+ * big value. We assume that if it is not defined (such as on
+ * GNU/Hurd), then realpath() accepts NULL.
+ */
+#ifndef PATH_MAX
+ char *rpath;
+
+ rpath = realpath(path, NULL);
+ if (rpath != NULL)
+ return (rpath);
+#else
char rpath[PATH_MAX];
if (realpath(path, rpath) != NULL)
return (save(rpath));
+#endif
#endif
}
return (save(path));
--
2.27.0