|
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 */ |