+2017-02-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ xbinary-io: rename from xsetmode
+ This patch is taken from suggestions by Bruno Haible in:
+ http://lists.gnu.org/archive/html/bug-gnulib/2017-02/msg00060.html
+ http://lists.gnu.org/archive/html/bug-gnulib/2017-02/msg00061.html
+ * lib/binary-io.c (__gl_setmode_check): Set errno to EINVAL,
+ not ENOTTY, when it is an inappropriate device.
+ * lib/binary-io.h (SET_BINARY): Resurrect.
+ * lib/xbinary-io.c: Rename from lib/xsetmode.c.
+ (xset_binary_mode_error): Rename from xsetmode_error.
+ * lib/xbinary-io.h: Rename from lib/xsetmode.h.
+ (xset_binary_mode): Rename from xsetmode.
+ All uses changed.
+ * modules/xbinary-io: Rename from modules/xsetmode.
+ Update file names.
+ * tests/test-binary-io.sh (tmpfiles): Remove no-longer-used file name.
+ * NEWS: Update to match revised behavior.
+
2017-02-15 Paul Eggert <eggert@cs.ucla.edu>
tests: Adjust to recent SET_BINARY change
Date Modules Changes
-2017-02-15 binary-io On MS-DOS and OS/2, set_binary_mode now fails
- on ttys, and sets errno == ENOTTY. SET_BINARY
- has been removed; use set_binary_mode instead.
+2017-02-16 binary-io On MS-DOS and OS/2, set_binary_mode now fails
+ on ttys, and sets errno == EINVAL.
2017-01-20 parse-datetime The parse_datetime2 function now takes two
more arguments TZ and TZSTRING, for the
{
if (isatty (fd))
{
- errno = ENOTTY;
+ errno = EINVAL;
return -1;
}
else
}
#endif
-/* Set FD's mode to MODE. Return the old mode if successful, -1
- (setting errno) on failure. */
-
#if defined __DJGPP__ || defined __EMX__
extern int __gl_setmode_check (int);
#else
__gl_setmode_check (int fd) { return 0; }
#endif
+/* Set FD's mode to MODE, which should be either O_TEXT or O_BINARY.
+ Return the old mode if successful, -1 (setting errno) on failure.
+ Ordinarily this function would be called 'setmode', since that is
+ its name on MS-Windows, but it is called 'set_binary_mode' here
+ to avoid colliding with a BSD function of another name. */
+
BINARY_IO_INLINE int
set_binary_mode (int fd, int mode)
{
return r != 0 ? r : __gl_setmode (fd, mode);
}
+/* This macro is obsolescent. */
+#define SET_BINARY(fd) ((void) set_binary_mode (fd, O_BINARY))
+
_GL_INLINE_HEADER_END
#endif /* _BINARY_H */
#include <config.h>
#define XSETMODE_INLINE _GL_EXTERN_INLINE
-#include "xsetmode.h"
+#include "xbinary-io.h"
#include <errno.h>
#include <error.h>
#if O_BINARY
_Noreturn void
-xsetmode_error (void)
+xset_binary_mode_error (void)
{
error (exit_failure, errno,
_("failed to set file descriptor text/binary mode"));
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
-#ifndef _XSETMODE_H
-#define _XSETMODE_H
+#ifndef _XBINARY_IO_H
+#define _XBINARY_IO_H
#include "binary-io.h"
#error "Please include config.h first."
#endif
_GL_INLINE_HEADER_BEGIN
-#ifndef XSETMODE_INLINE
-# define XSETMODE_INLINE _GL_INLINE
+#ifndef XBINARY_IO_INLINE
+# define XBINARY_IO_INLINE _GL_INLINE
#endif
#if O_BINARY
-extern _Noreturn void xsetmode_error (void);
+extern _Noreturn void xset_binary_mode_error (void);
#else
-XSETMODE_INLINE void xsetmode_error (void) {}
+XBINARY_IO_INLINE void xset_binary_mode_error (void) {}
#endif
-XSETMODE_INLINE void
-xsetmode (int fd, int mode)
+/* Set the mode of FD to MODE, which should be either O_TEXT or O_BINARY.
+ Report an error and exit if this fails. */
+
+XBINARY_IO_INLINE void
+xset_binary_mode (int fd, int mode)
{
if (set_binary_mode (fd, mode) < 0)
- xsetmode_error ();
+ xset_binary_mode_error ();
}
_GL_INLINE_HEADER_END
-#endif /* _XSETMODE_H */
+#endif /* _XBINARY_IO_H */
Checked Binary mode I/O.
Files:
-lib/xsetmode.h
-lib/xsetmode.c
+lib/xbinary-io.h
+lib/xbinary-io.c
Depends-on:
binary-io
configure.ac:
Makefile.am:
-lib_SOURCES += xsetmode.h xsetmode.c
+lib_SOURCES += xbinary-io.h xbinary-io.c
Include:
-"xsetmode.h"
+"xbinary-io.h"
License:
-LGPLv2+
+LGPL
Maintainer:
all
tmpfiles=""
trap 'rm -fr $tmpfiles' 1 2 3 15
-tmpfiles="$tmpfiles t-bin-out0.tmp t-bin-out1.tmp t-bin-out2.tmp"
+tmpfiles="$tmpfiles t-bin-out0.tmp t-bin-out1.tmp"
./test-binary-io${EXEEXT} 1 > t-bin-out1.tmp || exit 1
cmp t-bin-out0.tmp t-bin-out1.tmp > /dev/null || exit 1