summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2005-04-11 20:15:45 +0000
committerPaul Eggert <eggert@cs.ucla.edu>2005-04-11 20:15:45 +0000
commitd233b6b31ee8e3dd5b98fbccde45ba82cc3099af (patch)
tree5b987b0823fa2ea3c07edb044e6a6d3fe4f7e264
parent348dfa39872760945c0101ac83315423cf1e7141 (diff)
downloadcoreutils-d233b6b31ee8e3dd5b98fbccde45ba82cc3099af.tar.xz
Add bulletproofing for cases where stdin, stdout, or stderr are closed.
-rw-r--r--lib/fcntl-safer.h21
-rw-r--r--lib/open-safer.c75
-rw-r--r--m4/fcntl-safer.m418
3 files changed, 0 insertions, 114 deletions
diff --git a/lib/fcntl-safer.h b/lib/fcntl-safer.h
deleted file mode 100644
index 1c119f0e3..000000000
--- a/lib/fcntl-safer.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Invoke fcntl functions, but avoid some glitches.
-
- Copyright (C) 2004 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. */
-
-/* Written by Paul Eggert. */
-
-int open_safer (char const *, int, ...);
diff --git a/lib/open-safer.c b/lib/open-safer.c
deleted file mode 100644
index ff7f45d44..000000000
--- a/lib/open-safer.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Invoke open, but avoid some glitches.
-
- Copyright (C) 2004 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. */
-
-/* Written by Paul Eggert. */
-
-#if HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <fcntl-safer.h>
-
-#include <unistd-safer.h>
-
-#include <errno.h>
-#include <stdarg.h>
-
-#if HAVE_FCNTL_H
-# include <fcntl.h>
-#endif
-
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#ifndef STDERR_FILENO
-# define STDERR_FILENO 2
-#endif
-
-/* Like open, but do not return STDIN_FILENO, STDOUT_FILENO, or
- STDERR_FILENO. */
-
-int
-open_safer (char const *file, int oflag, ...)
-{
- int fd;
- mode_t mode = 0;
-
- if (oflag & O_CREAT)
- {
- va_list args;
- va_start (args, oflag);
- if (sizeof (int) <= sizeof (mode_t))
- mode = va_arg (args, mode_t);
- else
- mode = va_arg (args, int);
- va_end (args);
- }
-
- fd = open (file, oflag, mode);
-
- if (0 <= fd && fd <= STDERR_FILENO)
- {
- int f = dup_safer (fd);
- int e = errno;
- close (fd);
- errno = e;
- fd = f;
- }
-
- return fd;
-}
diff --git a/m4/fcntl-safer.m4 b/m4/fcntl-safer.m4
deleted file mode 100644
index f147bfefa..000000000
--- a/m4/fcntl-safer.m4
+++ /dev/null
@@ -1,18 +0,0 @@
-# fcntl-safer.m4 serial 3
-
-# Copyright (C) 2004 Free Software Foundation, Inc.
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# Written by Paul Eggert.
-
-AC_DEFUN([gl_FCNTL_SAFER],
-[
- gl_PREREQ_OPEN_SAFER
-])
-
-# Prerequisites of lib/open-safer.c.
-AC_DEFUN([gl_PREREQ_OPEN_SAFER], [
- AC_CHECK_HEADERS_ONCE(fcntl.h unistd.h)
-])