maint: ftruncate is always available, even without gnulib
authorJim Meyering <meyering@redhat.com>
Fri, 9 Apr 2010 08:49:38 +0000 (10:49 +0200)
committerJim Meyering <meyering@redhat.com>
Fri, 9 Apr 2010 08:50:43 +0000 (10:50 +0200)
Now that even MinGW provides ftruncate, we know that all
reasonable portability targets provide this function.
Remove the workaround code.  We nearly removed the gnulib
module three years ago:
  http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/9203
and it is now officially "obsolete".
* bootstrap.conf (gnulib_modules): Remove ftruncate.
* src/copy.c (copy_reg): Remove use of HAVE_FTRUNCATE and its
no-longer-used workaround code.
* src/truncate.c: Remove a comment about handling missing ftruncate.

bootstrap.conf
src/copy.c
src/truncate.c

index 9cdf984..ad7d6d5 100644 (file)
@@ -97,7 +97,6 @@ gnulib_modules="
   fsusage
   fsync
   ftello
-  ftruncate
   fts
   getdate
   getgroups
index 29f37c9..3c32fa3 100644 (file)
@@ -798,15 +798,9 @@ copy_reg (char const *src_name, char const *dst_name,
 
       if (last_write_made_hole)
         {
-          if (HAVE_FTRUNCATE
-              ? /* ftruncate sets the file size,
-                   so there is no need for a write.  */
-              ftruncate (dest_desc, n_read_total) < 0
-              : /* Seek backwards one character and write a null.  */
-              (lseek (dest_desc, (off_t) -1, SEEK_CUR) < 0L
-               || full_write (dest_desc, "", 1) != 1))
+          if (ftruncate (dest_desc, n_read_total) < 0)
             {
-              error (0, errno, _("writing %s"), quote (dst_name));
+              error (0, errno, _("truncating %s"), quote (dst_name));
               return_val = false;
               goto close_src_and_dst_desc;
             }
index 70573cc..ece52ee 100644 (file)
 
    This is backwards compatible with the FreeBSD utility, but is more
    flexible wrt the size specifications and the use of long options,
-   to better fit the "GNU" environment.
-
-   Note if !defined(HAVE_FTRUNCATE) then the --skip-ftruncate configure flag
-   was specified or we're in a mingw environment. In these cases gnulib
-   emulation will be used and GNULIB_FTRUNCATE is defined. Note if emulation
-   can't even be provided ftruncate() will return EIO.  */
+   to better fit the "GNU" environment.  */
 
 #include <config.h>             /* sets _FILE_OFFSET_BITS=64 etc. */
 #include <stdio.h>