X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Ftar;a=blobdiff_plain;f=src%2Fbuffer.c;h=248dd8804ce69e976b2187ba34bbc04b354b1fa9;hp=95e8a26de1e42a5b2b922300c57dbd3e22db25f0;hb=b0902369e789c9aadf584799889a34637688d601;hpb=da546e69afb2120a4c8a61ecadb5a66bf56cfa5d diff --git a/src/buffer.c b/src/buffer.c index 95e8a26..248dd88 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -689,6 +689,16 @@ _open_archive (enum access_mode wanted_access) /* When updating the archive, we start with reading. */ access_mode = wanted_access == ACCESS_UPDATE ? ACCESS_READ : wanted_access; + /* Refuse to read archive from a tty. + Do not fail if the tar's output goes directly to tty because such + behavior would go against GNU Coding Standards: + http://lists.gnu.org/archive/html/bug-tar/2014-03/msg00042.html */ + if (strcmp (archive_name_array[0], "-") == 0 + && wanted_access == ACCESS_READ && isatty (STDIN_FILENO)) + FATAL_ERROR ((0, 0, + _("Refusing to read archive contents from terminal " + "(missing -f option?)"))); + read_full_records = read_full_records_option; records_read = 0; @@ -731,7 +741,6 @@ _open_archive (enum access_mode wanted_access) enum compress_type type; archive = STDIN_FILENO; - type = check_compressed_archive (&shortfile); if (type != ct_tar && type != ct_none) FATAL_ERROR ((0, 0,