No empty .Rs/.Re
[netbsd-mini2440.git] / gnu / dist / diffutils / lib / setmode.c
blobc8ddc6b48a529bcc7b7d83080b1058af7ee716a7
1 /* $NetBSD$ */
3 /* Set a file descriptor's mode to binary or to text.
5 Copyright (C) 2001 Free Software Foundation, Inc.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2, or (at your option)
10 any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program; see the file COPYING.
19 If not, write to the Free Software Foundation,
20 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
22 /* Written by Paul Eggert <eggert@twinsun.com> */
24 #if HAVE_CONFIG_H
25 # include <config.h>
26 #endif
28 #if HAVE_STDBOOL_H
29 # include <stdbool.h>
30 #else
31 typedef enum {false = 0, true = 1} bool;
32 #endif
34 #if HAVE_SETMODE_DOS
35 # include <io.h>
36 # if HAVE_FCNTL_H
37 # include <fcntl.h>
38 # endif
39 # if HAVE_UNISTD_H
40 # include <unistd.h>
41 # endif
42 #endif
44 #include "setmode.h"
45 #undef set_binary_mode
48 /* Set the binary mode of FD to MODE, returning its previous mode.
49 MODE is 1 for binary and 0 for text. If setting the mode might
50 cause problems, ignore the request and return MODE. Always return
51 1 on POSIX platforms, which do not distinguish between text and
52 binary. */
54 bool
55 set_binary_mode (int fd, bool mode)
57 #if HAVE_SETMODE_DOS
58 if (isatty (fd))
59 return mode;
60 return setmode (fd, mode ? O_BINARY : O_TEXT) != O_TEXT;
61 #else
62 return 1;
63 #endif