[dm-devel] device-mapper ./WHATS_NEW lib/.exported_symbol ...
meyering at sourceware.org
meyering at sourceware.org
Tue Jul 24 14:15:46 UTC 2007
CVSROOT: /cvs/dm
Module name: device-mapper
Changes by: meyering at sourceware.org 2007-07-24 14:15:45
Modified files:
. : WHATS_NEW
lib : .exported_symbols libdevmapper.h libdm-file.c
Log message:
dm_fclose: new function
* lib/libdevmapper.h: Declare it.
* lib/libdm-file.c (dm_fclose): Define it.
* lib/.exported_symbols: Add dm_fclose.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/device-mapper/WHATS_NEW.diff?cvsroot=dm&r1=1.191&r2=1.192
http://sourceware.org/cgi-bin/cvsweb.cgi/device-mapper/lib/.exported_symbols.diff?cvsroot=dm&r1=1.29&r2=1.30
http://sourceware.org/cgi-bin/cvsweb.cgi/device-mapper/lib/libdevmapper.h.diff?cvsroot=dm&r1=1.70&r2=1.71
http://sourceware.org/cgi-bin/cvsweb.cgi/device-mapper/lib/libdm-file.c.diff?cvsroot=dm&r1=1.4&r2=1.5
--- device-mapper/WHATS_NEW 2007/07/13 16:10:24 1.191
+++ device-mapper/WHATS_NEW 2007/07/24 14:15:45 1.192
@@ -1,5 +1,6 @@
Version 1.02.22 -
================================
+ dm_fclose: new function
Version 1.02.21 - 13th July 2007
================================
--- device-mapper/lib/.exported_symbols 2007/04/27 18:40:23 1.29
+++ device-mapper/lib/.exported_symbols 2007/07/24 14:15:45 1.30
@@ -1,6 +1,7 @@
dm_lib_release
dm_lib_exit
dm_driver_version
+dm_fclose
dm_get_library_version
dm_log
dm_log_init
--- device-mapper/lib/libdevmapper.h 2007/04/27 18:40:23 1.70
+++ device-mapper/lib/libdevmapper.h 2007/07/24 14:15:45 1.71
@@ -27,6 +27,7 @@
#include <limits.h>
#include <string.h>
#include <stdlib.h>
+#include <stdio.h>
/*****************************************************************
* The first section of this file provides direct access to the
@@ -623,6 +624,21 @@
*/
char *dm_basename(const char *path);
+/**************************
+ * file/stream manipulation
+ **************************/
+
+/*
+ * Close a stream, with nicer error checking than fclose's.
+ * Derived from gnulib's close-stream.c.
+ *
+ * Close "stream". Return 0 if successful, and EOF (setting errno)
+ * otherwise. Upon failure, set errno to 0 if the error number
+ * cannot be determined. Useful mainly for writable streams.
+ */
+int dm_fclose(FILE *stream);
+
+
/*
* Returns size of a buffer which is allocated with dm_malloc.
* Pointer to the buffer is stored in *buf.
--- device-mapper/lib/libdm-file.c 2006/05/10 16:23:41 1.4
+++ device-mapper/lib/libdm-file.c 2007/07/24 14:15:45 1.5
@@ -72,3 +72,16 @@
return 0;
}
+int dm_fclose(FILE *stream)
+{
+ int prev_fail = ferror(stream);
+ int fclose_fail = fclose(stream);
+
+ /* If there was a previous failure, but fclose succeeded,
+ clear errno, since ferror does not set it, and its value
+ may be unrelated to the ferror-reported failure. */
+ if (prev_fail && !fclose_fail)
+ errno = 0;
+
+ return prev_fail || fclose_fail ? EOF : 0;
+}
More information about the dm-devel
mailing list