From dedb07baaa165a7b25110ddc47658f02935eceb3 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 13 Dec 2020 16:56:10 -0800 Subject: [PATCH 3/5] 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. --- ChangeLog | 7 +++++++ lib/areadlink-with-size.c | 4 +--- lib/areadlinkat-with-size.c | 4 +--- lib/careadlinkat.c | 15 +++++---------- 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7162110c9..1c5fd762d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2020-12-13 Paul Eggert + 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 86ddd6089..4978b79bb 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 b41a5e0c4..b3092f2a3 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 79cc3b3a0..26fe84df5 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; -- 2.27.0