bug-gnulib
[Top][All Lists]
Advanced

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

Re: Error from coreutils CVS version


From: Jim Meyering
Subject: Re: Error from coreutils CVS version
Date: Fri, 18 May 2007 09:51:01 +0200

Alexander Kahl <address@hidden> wrote:
> gcc -std=gnu99  -I.      -march=pentium4 -O2 -pipe -fomit-frame-pointer -s 
> -fgnu89-inline -c utimecmp.c
> In file included from utimecmp.c:33:
> utimens.h:2: error: conflicting types for 'futimens'
> /tools/include/sys/stat.h:370: error: previous declaration of 'futimens' was 
> here
> make[2]: *** [utimecmp.o] Error 1
> make[2]: Leaving directory `/mnt/lfs/coreutils-build/coreutils/lib'
> make[1]: *** [all] Error 2
> make[1]: Leaving directory `/mnt/lfs/coreutils-build/coreutils/lib'
> make: *** [all-recursive] Error 1
>
> using newest glibc from cvs

Thanks for the reports.
The version of futimens used by coreutils (from gnulib)
takes both a file descriptor and a file name, for portability,
so that if your system doesn't support the FD-based functions
it can still do its job by falling back on the filename-based ones.

The first step is to rename the gnulib function (patch below), since
it is trying to do more than glibc's futimens.  Then, we can extend
the renamed gnulib function so that it uses glibc's futimens when possible.

For coreutils, the change is trivial:
  just s/futimens/gl_futimens/ in each of copy.c and touch.c.

I nearly changed it in gnulib, but since a few other projects (at least
gzip and tar) also use futimens, I'll wait for Paul to sign off.

2007-05-18  Jim Meyering  <address@hidden>

        * lib/utimens.c (gl_futimens): Rename from futimens,
        now that glibc-2.6 declares futimens.

Index: lib/utimens.c
===================================================================
RCS file: /cvsroot/gnulib/gnulib/lib/utimens.c,v
retrieving revision 1.14
diff -u -p -r1.14 utimens.c
--- lib/utimens.c       18 Jan 2007 08:33:34 -0000      1.14
+++ lib/utimens.c       18 May 2007 07:42:56 -0000
@@ -75,8 +75,8 @@ struct utimbuf
    Return 0 on success, -1 (setting errno) on failure.  */

 int
-futimens (int fd ATTRIBUTE_UNUSED,
-         char const *file, struct timespec const timespec[2])
+gl_futimens (int fd ATTRIBUTE_UNUSED,
+            char const *file, struct timespec const timespec[2])
 {
   /* Some Linux-based NFS clients are buggy, and mishandle time stamps
      of files in NFS file systems in some cases.  We have no
@@ -185,5 +185,5 @@ futimens (int fd ATTRIBUTE_UNUSED,
 int
 utimens (char const *file, struct timespec const timespec[2])
 {
-  return futimens (-1, file, timespec);
+  return gl_futimens (-1, file, timespec);
 }




reply via email to

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