fclose: reduce dependencies
authorEric Blake <eblake@redhat.com>
Mon, 2 May 2011 17:41:12 +0000 (11:41 -0600)
committerEric Blake <eblake@redhat.com>
Mon, 2 May 2011 21:23:42 +0000 (15:23 -0600)
In an LGPLv2+ project, the last change to fclose dragged in
inappropriate modules.

* modules/fclose (Depends-on): Switch from fflush/fseeko to
simpler lseek.
* lib/fclose.c (rpl_fclose): Likewise.
Reported by Simon Josefsson.

Signed-off-by: Eric Blake <eblake@redhat.com>
ChangeLog
lib/fclose.c
modules/fclose

index d6ac179d9a75cd3928cff599e161491f16d4bb98..57288d83be0ede3e1119b9ef71fbcf2a08885c37 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2011-05-02  Eric Blake  <eblake@redhat.com>
 
+       fclose: reduced dependencies
+       * modules/fclose (Depends-on): Switch from fflush/fseeko to
+       simpler lseek.
+       * lib/fclose.c (rpl_fclose): Likewise.
+       Reported by Simon Josefsson.
+
        exit: drop remaining clients
        * modules/argmatch (Depends-on): Replace exit with stdlib.
        * modules/copy-file (Depends-on): Likewise.
index bce409c960bf313749fcf4b884b982ff85a5fd09..c8c2fd8e4c9ade15638a3947d0fb8f77ad5b603d 100644 (file)
@@ -33,8 +33,10 @@ rpl_fclose (FILE *fp)
   int saved_errno = 0;
 
   /* We only need to flush the file if it is not reading or if it is
-     seekable.  */
-  if ((!freading (fp) || fseeko (fp, 0, SEEK_CUR) == 0) && fflush (fp))
+     seekable.  This only guarantees the file position of input files
+     if the fflush module is also in use.  */
+  if ((!freading (fp) || lseek (fileno (fp), 0, SEEK_CUR) != -1)
+      && fflush (fp))
     saved_errno = errno;
 
   if (close (fileno (fp)) < 0 && saved_errno == 0)
index d8727c30751579fb4a9eec1451ae7aeeb9deabbc..434dd737dc189bc1345bd125a2604204eaae42ff 100644 (file)
@@ -8,9 +8,8 @@ m4/fclose.m4
 Depends-on:
 stdio
 close
-fflush
 freading
-fseeko
+lseek
 
 configure.ac:
 gl_FUNC_FCLOSE