* lib/renameatu.c (renameatu): Use issymlinkat instead of readlinkat.
* modules/renameatu (Depends-on): Remove readlinkat. Add issymlinkat.
+2025-08-14 Bruno Haible <bruno@clisp.org>
+
+ renameatu: Use issymlinkat.
+ * lib/renameatu.c (renameatu): Use issymlinkat instead of readlinkat.
+ * modules/renameatu (Depends-on): Remove readlinkat. Add issymlinkat.
+
2025-08-14 Bruno Haible <bruno@clisp.org>
rename: Use issymlink.
goto out;
}
strip_trailing_slashes (src_temp);
- char linkbuf[1];
- if (readlinkat (fd1, src_temp, linkbuf, sizeof linkbuf) < 0)
+ int ret = issymlinkat (fd1, src_temp);
+ if (ret > 0)
+ goto out;
+ if (ret < 0)
{
- if (errno != EINVAL)
- {
- rename_errno = errno;
- goto out;
- }
+ rename_errno = errno;
+ goto out;
}
- else
- goto out;
}
if (dst_slash)
{
goto out;
}
strip_trailing_slashes (dst_temp);
- char linkbuf[1];
- if (readlinkat (fd2, dst_temp, linkbuf, sizeof linkbuf) < 0)
+ int ret = issymlinkat (fd2, dst_temp);
+ if (ret > 0)
+ goto out;
+ if (ret < 0 && errno != ENOENT)
{
- if (errno != ENOENT && errno != EINVAL)
- {
- rename_errno = errno;
- goto out;
- }
+ rename_errno = errno;
+ goto out;
}
- else
- goto out;
}
# endif /* RENAME_TRAILING_SLASH_SOURCE_BUG */
filenamecat-lgpl [test $HAVE_RENAMEAT = 0 || test $REPLACE_RENAMEAT = 1]
openat-h [test $HAVE_RENAMEAT = 0 || test $REPLACE_RENAMEAT = 1]
fstatat [test $REPLACE_RENAMEAT = 1]
-readlinkat [test $REPLACE_RENAMEAT = 1]
+issymlinkat [test $REPLACE_RENAMEAT = 1]
bool [test $REPLACE_RENAMEAT = 1]
at-internal [test $HAVE_RENAMEAT = 0]
filename [test $HAVE_RENAMEAT = 0]