summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--lib/areadlink-with-size.c4
-rw-r--r--lib/areadlinkat-with-size.c4
-rw-r--r--lib/careadlinkat.c15
4 files changed, 14 insertions, 16 deletions
diff --git a/ChangeLog b/ChangeLog
index 7162110c9f..1c5fd762d4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2020-12-13 Paul Eggert <eggert@cs.ucla.edu>
+ Assume readlink/readlinkat ERANGE fix
+ * lib/areadlink-with-size.c (areadlink_with_size):
+ * lib/areadlinkat-with-size.c (areadlinkat_with_size):
+ * lib/careadlinkat.c (readlink_stk):
+ Do not worry about readlink or readlinkat failing with errno == ERANGE,
+ since the Gnulib readlink and readlinkat modules now fix that.
+
getcwd: port to AIX
* lib/getcwd.c [!_LIBC]: Undef stat64 before #defining it,
in case our sys/stat.h #defined a function macro with the same name.
diff --git a/lib/areadlink-with-size.c b/lib/areadlink-with-size.c
index 86ddd6089c..4978b79bb0 100644
--- a/lib/areadlink-with-size.c
+++ b/lib/areadlink-with-size.c
@@ -88,9 +88,7 @@ areadlink_with_size (char const *file, size_t size)
r = readlink (file, buf, buf_size);
link_length = r;
- /* On AIX 5L v5.3 and HP-UX 11i v2 04/09, readlink returns -1
- with errno == ERANGE if the buffer is too small. */
- if (r < 0 && errno != ERANGE)
+ if (r < 0)
{
int saved_errno = errno;
free (buffer);
diff --git a/lib/areadlinkat-with-size.c b/lib/areadlinkat-with-size.c
index b41a5e0c4b..b3092f2a35 100644
--- a/lib/areadlinkat-with-size.c
+++ b/lib/areadlinkat-with-size.c
@@ -92,9 +92,7 @@ areadlinkat_with_size (int fd, char const *file, size_t size)
r = readlinkat (fd, file, buf, buf_size);
link_length = r;
- /* On AIX 5L v5.3 and HP-UX 11i v2 04/09, readlink returns -1
- with errno == ERANGE if the buffer is too small. */
- if (r < 0 && errno != ERANGE)
+ if (r < 0)
{
int saved_errno = errno;
free (buffer);
diff --git a/lib/careadlinkat.c b/lib/careadlinkat.c
index 79cc3b3a0a..26fe84df55 100644
--- a/lib/careadlinkat.c
+++ b/lib/careadlinkat.c
@@ -90,18 +90,13 @@ readlink_stk (int fd, char const *filename,
size_t link_size;
if (link_length < 0)
{
- /* On AIX 5L v5.3 and HP-UX 11i v2 04/09, readlink returns -1
- with errno == ERANGE if the buffer is too small. */
- int readlinkat_errno = errno;
- if (readlinkat_errno != ERANGE)
+ if (buf != buffer)
{
- if (buf != buffer)
- {
- alloc->free (buf);
- errno = readlinkat_errno;
- }
- return NULL;
+ int readlinkat_errno = errno;
+ alloc->free (buf);
+ errno = readlinkat_errno;
}
+ return NULL;
}
link_size = link_length;