[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