42 lines
1.0 KiB
Diff
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
|
|
|