bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problem with fstatat on AIX 7.1


From: Paul Eggert
Subject: Re: Problem with fstatat on AIX 7.1
Date: Thu, 18 Aug 2011 18:52:06 -0700
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.18) Gecko/20110617 Thunderbird/3.1.11

[Adding address@hidden and retitling Subject: for these threads:
http://lists.gnu.org/archive/html/bug-tar/2011-08/msg00003.html
http://lists.gnu.org/archive/html/bug-tar/2011-08/msg00005.html
]

On 08/18/2011 05:06 PM, Kevin Brott wrote:
> So it looks like you're probably on the right track.

Thanks.  It appears that fstatat is broken on AIX 7.1.

Could you please try the test program at the end of this email, and
tell me what its exit status is on your system?  If it exits with
nonzero status, I can modify the gnulib fstatat module to
automatically reject AIX 7.1 fstatat, which should fix the problem
that GNU tar has on AIX 7.1.

Also, can you report the bug to the AIX maintainers?  You can send
them a copy of this test program, assuming it exits with nonzero
status.

Finally, I worry that the other new functions are broken in AIX too.
Can you please try configuring tar 1.26 with fstatat turned off, and
seeing whether it passes "make check"?  You should be able to do that
by taking a fresh copy of the tar 1.26 tarball and doing the following:

   ac_cv_func_fstatat=no ./configure
   (cd gnu && make sys/stat.h && (echo '#undef fstatat' && echo '#define 
fstatat rpl_fstatat' && echo 'int fstatat (int, char const *, struct stat *, 
int);') >>sys/stat.h)
   make
   make check

Thanks.


#include <fcntl.h>
#include <sys/stat.h>

int
main (void)
{
  struct stat a;
  struct stat b;
  if (fstatat (AT_FDCWD, "fstat-test.c", &a, AT_SYMLINK_NOFOLLOW) != 0)
    return 1;
  if (lstat ("fstat-test.c", &b) != 0)
    return 2;
  if (a.st_size != b.st_size) return 3;
  if (a.st_dev != b.st_dev) return 4;
  if (a.st_ino != b.st_ino) return 5;
  if (a.st_mode != b.st_mode) return 6;
  if (a.st_nlink != b.st_nlink) return 7;
  if (a.st_uid != b.st_uid) return 8;
  if (a.st_gid != b.st_gid) return 9;
  if (a.st_atime != b.st_atime) return 10;
  if (a.st_mtime != b.st_mtime) return 11;
  if (a.st_ctime != b.st_ctime) return 12;
  return 0;
}




reply via email to

[Prev in Thread] Current Thread [Next in Thread]