[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: test du/trailing-slash fails for coreutils-6.5 under Solaris 9
From: |
Jim Meyering |
Subject: |
Re: test du/trailing-slash fails for coreutils-6.5 under Solaris 9 |
Date: |
Mon, 20 Nov 2006 16:54:43 +0100 |
Ralf Menzel <address@hidden> wrote:
> Jim Meyering <address@hidden> writes:
>> Please run these commands and send the resulting "full-log" file
>> to this list:
>>
>> (
>> cd /home/menzel/src/3.4/coreutils-6.5/src
>> ./rm -rf d slink && ./mkdir -p d/1/2 && ./ln -s d slink
>> truss -o log ./du slink/
>> cat log
>> rm -f log
>> ) | tee full-log
>
> I've attached the log file.
Thank you. This is the relevant part:
fstatat64(-3041965, "slink/", 0x00036B38, 0x00001000) = 0
ioctl(1, TCGETA, 0xFFBFC84C) Err#22 EINVAL
fstat64(1, 0xFFBFC8C0) = 0
brk(0x00037A50) = 0
brk(0x00039A50) = 0
fstat64(1, 0xFFBFC768) = 0
write(1, " 1\t s l i n k /\n", 9) = 9
close(1) = 0
close(2) = 0
_exit(0)
It's not quite what I thought.
Solaris 9 has kernel-level openat support, which includes fstatat, but
that fstatat implementation has the same bug that afflicts their lstat
function: it doesn't honor a trailing slash on the name of a symlink
that specifies a directory.
The solution is to write an fstatat module for gnulib. It will end
up being analogous to the existing lstat module. The new module will
include a configure-time test (in m4/fstatat.m4) to detect the bug, and
then define FSTATAT_FOLLOWS_SLASHED_SYMLINK accordingly. There will be
a replacement fstatat function in lib/fstatat.c, etc.
If no one else is interested in working on this, I'll get to it
eventually, but working around Solaris 9 bugs isn't a high priority for
me. Think of this bug as incentive for you to upgrade to Solaris 10 :-)