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.
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);
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);
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;