Don't read compressed data from a terminal or write it
authorLasse Collin <lasse.collin@tukaani.org>
Wed, 13 Jan 2010 17:10:25 +0000 (19:10 +0200)
committerLasse Collin <lasse.collin@tukaani.org>
Wed, 13 Jan 2010 17:10:25 +0000 (19:10 +0200)
to a terminal even if --force is specified.

It just seems more reasonable this way.

The new behavior matches bzip2. The old one matched gzip.

src/xz/main.c
src/xz/util.c

index b197ca4..7445e98 100644 (file)
@@ -168,8 +168,8 @@ main(int argc, char **argv)
                message_set_files(args.arg_count);
 
        // Refuse to write compressed data to standard output if it is
-       // a terminal and --force wasn't used.
-       if (opt_mode == MODE_COMPRESS && !opt_force) {
+       // a terminal.
+       if (opt_mode == MODE_COMPRESS) {
                if (opt_stdout || (args.arg_count == 1
                                && strcmp(args.arg_names[0], "-") == 0)) {
                        if (is_tty_stdout()) {
@@ -188,16 +188,14 @@ main(int argc, char **argv)
        // were given, parse_args() gave us a fake "-" filename.
        for (size_t i = 0; i < args.arg_count && !user_abort; ++i) {
                if (strcmp("-", args.arg_names[i]) == 0) {
-                       // Processing from stdin to stdout. Unless --force
-                       // was used, check that we aren't writing compressed
-                       // data to a terminal or reading it from terminal.
-                       if (!opt_force) {
-                               if (opt_mode == MODE_COMPRESS) {
-                                       if (is_tty_stdout())
-                                               continue;
-                               } else if (is_tty_stdin()) {
+                       // Processing from stdin to stdout. Check that we
+                       // aren't writing compressed data to a terminal or
+                       // reading it from a terminal.
+                       if (opt_mode == MODE_COMPRESS) {
+                               if (is_tty_stdout())
                                        continue;
-                               }
+                       } else if (is_tty_stdin()) {
+                               continue;
                        }
 
                        // It doesn't make sense to compress data from stdin
index 9f6bddd..c0ac538 100644 (file)
@@ -223,8 +223,8 @@ is_tty_stdin(void)
        const bool ret = isatty(STDIN_FILENO);
 
        if (ret)
-               message_error(_("Compressed data not read from a terminal "
-                               "unless `--force' is used."));
+               message_error(_("Compressed data cannot be read from "
+                               "a terminal"));
 
        return ret;
 }
@@ -236,8 +236,8 @@ is_tty_stdout(void)
        const bool ret = isatty(STDOUT_FILENO);
 
        if (ret)
-               message_error(_("Compressed data not written to a terminal "
-                               "unless `--force' is used."));
+               message_error(_("Compressed data cannot be written to "
+                               "a terminal"));
 
        return ret;
 }