version 1.1, 2012/02/21 22:57:48
|
version 1.1.1.2, 2012/05/29 09:29:43
|
Line 1
|
Line 1
|
/* Binary mode I/O. |
/* Binary mode I/O. |
Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. | Copyright (C) 2001, 2003, 2005, 2008-2011 Free Software Foundation, Inc. |
|
|
This program is free software: you can redistribute it and/or modify |
This program is free software: you can redistribute it and/or modify |
it under the terms of the GNU General Public License as published by |
it under the terms of the GNU General Public License as published by |
Line 18
|
Line 18
|
#define _BINARY_H |
#define _BINARY_H |
|
|
/* For systems that distinguish between text and binary I/O. |
/* For systems that distinguish between text and binary I/O. |
O_BINARY is usually declared in <fcntl.h>. */ | O_BINARY is guaranteed by the gnulib <fcntl.h>. */ |
#include <fcntl.h> |
#include <fcntl.h> |
|
|
/* The MSVC7 <stdio.h> doesn't like to be included after '#define fileno ...', |
/* The MSVC7 <stdio.h> doesn't like to be included after '#define fileno ...', |
so we include it here first. */ |
so we include it here first. */ |
#include <stdio.h> |
#include <stdio.h> |
|
|
#if !defined O_BINARY && defined _O_BINARY | /* SET_BINARY (fd); |
/* For MSC-compatible compilers. */ | changes the file descriptor fd to perform binary I/O. */ |
# define O_BINARY _O_BINARY | |
# define O_TEXT _O_TEXT | |
#endif | |
#if defined __BEOS__ || defined __HAIKU__ | |
/* BeOS 5 and Haiku have O_BINARY and O_TEXT, but they have no effect. */ | |
# undef O_BINARY | |
# undef O_TEXT | |
#endif | |
#if O_BINARY |
#if O_BINARY |
# if defined __EMX__ || defined __DJGPP__ || defined __CYGWIN__ |
# if defined __EMX__ || defined __DJGPP__ || defined __CYGWIN__ |
# include <io.h> /* declares setmode() */ |
# include <io.h> /* declares setmode() */ |
Line 45
|
Line 37
|
# endif |
# endif |
# ifdef __DJGPP__ |
# ifdef __DJGPP__ |
# include <unistd.h> /* declares isatty() */ |
# include <unistd.h> /* declares isatty() */ |
# /* Avoid putting stdin/stdout in binary mode if it is connected to the | /* Avoid putting stdin/stdout in binary mode if it is connected to |
# console, because that would make it impossible for the user to | the console, because that would make it impossible for the user |
# interrupt the program through Ctrl-C or Ctrl-Break. */ | to interrupt the program through Ctrl-C or Ctrl-Break. */ |
# define SET_BINARY(fd) (!isatty (fd) ? (setmode (fd, O_BINARY), 0) : 0) | # define SET_BINARY(fd) ((void) (!isatty (fd) ? (setmode (fd, O_BINARY), 0) : 0)) |
# else |
# else |
# define SET_BINARY(fd) setmode (fd, O_BINARY) | # define SET_BINARY(fd) ((void) setmode (fd, O_BINARY)) |
# endif |
# endif |
#else |
#else |
/* On reasonable systems, binary I/O is the default. */ |
/* On reasonable systems, binary I/O is the default. */ |
# undef O_BINARY | # define SET_BINARY(fd) /* do nothing */ ((void) 0) |
# define O_BINARY 0 | |
# define SET_BINARY(fd) /* nothing */ | |
#endif |
#endif |
|
|
#endif /* _BINARY_H */ |
#endif /* _BINARY_H */ |