Initial revision

This commit is contained in:
Paul Eggert 2001-12-11 08:11:35 +00:00
parent 412c4f3436
commit d104e14d8e
4 changed files with 144 additions and 0 deletions

58
lib/setmode.c Normal file
View File

@ -0,0 +1,58 @@
/* Set a file descriptor's mode to binary or to text.
Copyright (C) 2001 Free Software Foundation, Inc.
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
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING.
If not, write to the Free Software Foundation,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by Paul Eggert <eggert@twinsun.com> */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#if HAVE_STDBOOL_H
# include <stdbool.h>
#else
typedef enum {false = 0, true = 1} bool;
#endif
#if HAVE_SETMODE_DOS
# include <io.h>
#endif
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
#include "setmode.h"
#undef set_binary_mode
/* Set the binary mode of FD to MODE, returning its previous mode.
MODE is 1 for binary and 0 for text. If setting the mode might
cause problems, ignore the request and return the current mode.
Always return 1 on POSIX platforms, which do not distinguish
between text and binary. */
bool
set_binary_mode (int fd, bool binary)
{
#if HAVE_SETMODE_DOS
return ! isatty (fd) && setmode (fd, binary ? O_BINARY : 0);
#else
return 1;
#endif
}

27
lib/setmode.h Normal file
View File

@ -0,0 +1,27 @@
/* Set a file descriptor's mode to binary or to text.
Copyright (C) 2001 Free Software Foundation, Inc.
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
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING.
If not, write to the Free Software Foundation,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by Paul Eggert <eggert@twinsun.com> */
#ifndef set_binary_mode
bool set_binary_mode (int, bool);
# if ! HAVE_SETMODE_DOS
# define set_binary_mode(fd, mode) 1
# endif
#endif

38
m4/setmode.m4 Normal file
View File

@ -0,0 +1,38 @@
# Check for setmode, DOS style.
# Copyright (C) 2001 Free Software Foundation, Inc.
# 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
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
AC_DEFUN([AC_FUNC_SETMODE_DOS],
[AC_CACHE_CHECK([for DOS-style setmode],
[ac_cv_func_setmode_dos],
[AC_CHECK_HEADERS(fcntl.h unistd.h)
AC_TRY_LINK(
[#include <io.h>
#if HAVE_FCNTL_H
# include <fcntl.h>
#endif
#if HAVE_UNISTD_H
# include <unistd.h>
#endif],
[int ret = setmode && setmode (1, O_BINARY);],
[ac_cv_func_setmode_dos=yes],
[ac_cv_func_setmode_dos=no])])
if test $ac_cv_func_setmode_dos = yes; then
AC_DEFINE(HAVE_SETMODE_DOS, 1,
[Define to 1 if you have the DOS-style `setmode' function.])
fi])

21
ms/Makefile.am Normal file
View File

@ -0,0 +1,21 @@
# Makefile for GNU diffutils sources used on Microsoft operating systems.
# Copyright (C) 2001 Free Software Foundation, Inc.
## 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
## the Free Software Foundation; either version 2, or (at your option)
## any later version.
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software Foundation,
## Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
AUTOMAKE_OPTIONS = gnits
EXTRA_DIST = config.bat config.sed config.site