diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2021-01-08 18:48:17 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2021-01-08 18:50:57 +0200 |
commit | 0b43ea2906432873416576cb90608f72b6fbf18a (patch) | |
tree | 88539a648795ff17e6208dd6ed95493dc2468469 /lib | |
parent | e4d1edadefdeefcca3b72ec32744c52020fe4642 (diff) | |
download | tar-0b43ea2906432873416576cb90608f72b6fbf18a.tar.gz |
Use stdopen from gnulib
* gnulib.modules: Request stdopen
* lib/Makefile.am: Remove stdopen.c and stdopen.h
* lib/stdopen.c: Remove.
* lib/stdopen.h: Remove.
* src/tar.c: stdopen returns 0 on success.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Makefile.am | 2 | ||||
-rw-r--r-- | lib/stdopen.c | 83 | ||||
-rw-r--r-- | lib/stdopen.h | 16 |
3 files changed, 0 insertions, 101 deletions
diff --git a/lib/Makefile.am b/lib/Makefile.am index e6bcb245..8fbe1c37 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -32,7 +32,6 @@ AM_CFLAGS = $(GNULIB_WARN_CFLAGS) $(WERROR_CFLAGS) noinst_HEADERS = \ paxlib.h\ rmt.h\ - stdopen.h\ system.h\ system-ioctl.h\ wordsplit.h\ @@ -42,7 +41,6 @@ libtar_a_SOURCES = \ paxerror.c paxexit-status.c paxlib.h paxnames.c \ rtapelib.c \ rmt.h \ - stdopen.c stdopen.h \ system.h system-ioctl.h \ wordsplit.c\ xattr-at.c diff --git a/lib/stdopen.c b/lib/stdopen.c deleted file mode 100644 index 8c891168..00000000 --- a/lib/stdopen.c +++ /dev/null @@ -1,83 +0,0 @@ -/* stdopen.c - ensure that the three standard file descriptors are in use - - Copyright 2005-2021 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 3, 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, see <http://www.gnu.org/licenses/>. */ - -/* Written by Paul Eggert and Jim Meyering. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "stdopen.h" - -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <unistd.h> -#include <errno.h> - -/* Try to ensure that all of the standard file numbers (0, 1, 2) - are in use. Without this, each application would have to guard - every call to open, dup, fopen, etc. with tests to ensure they - don't use one of the special file numbers when opening a file. - Return false if at least one of the file descriptors is initially - closed and an attempt to reopen it fails. Otherwise, return true. */ -bool -stdopen (void) -{ - int fd; - bool ok = true; - - for (fd = 0; fd <= 2; fd++) - { - if (fcntl (fd, F_GETFD) < 0) - { - if (errno != EBADF) - ok = false; - else - { - static const int contrary_mode[] - = { O_WRONLY, O_RDONLY, O_RDONLY }; - int mode = contrary_mode[fd]; - int new_fd = -1; - /* Open /dev/null with the contrary mode so that the typical - read (stdin) or write (stdout, stderr) operation will fail. - With descriptor 0, we can do even better on systems that - have /dev/full, by opening that write-only instead of - /dev/null. The only drawback is that a write-provoked - failure comes with a misleading errno value, ENOSPC. */ - if (mode == O_WRONLY) - { - if ((new_fd = open ("/dev/full", mode)) != fd) - { - close (new_fd); - new_fd = -1; - } - } - if (new_fd == -1) - new_fd = open ("/dev/null", mode); - if (new_fd != fd) - { - if (0 <= new_fd) - close (new_fd); - ok = false; - } - } - } - } - - return ok; -} diff --git a/lib/stdopen.h b/lib/stdopen.h deleted file mode 100644 index d54e5f13..00000000 --- a/lib/stdopen.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef STDOPEN_H -# define STDOPEN_H 1 - -# include <stdbool.h> - -# ifdef __cplusplus -extern "C" { -# endif - -bool stdopen (void); - -# ifdef __cplusplus -} -# endif - -#endif |