summaryrefslogtreecommitdiffstats
path: root/usr.bin/compress
diff options
context:
space:
mode:
authortjr <tjr@FreeBSD.org>2002-05-17 01:42:43 +0000
committertjr <tjr@FreeBSD.org>2002-05-17 01:42:43 +0000
commitdc8454644141370b952eee38f3e9dc938f5f20fe (patch)
treeee68f9784a140792108645032629dab128805dc4 /usr.bin/compress
parent246870d42441b49b3f22fe2cd257a668d3b8c351 (diff)
downloadFreeBSD-src-dc8454644141370b952eee38f3e9dc938f5f20fe.zip
FreeBSD-src-dc8454644141370b952eee38f3e9dc938f5f20fe.tar.gz
As required by SUSv3, a file argument of "-" causes standard input
to be compressed/decompressed to standard output.
Diffstat (limited to 'usr.bin/compress')
-rw-r--r--usr.bin/compress/compress.17
-rw-r--r--usr.bin/compress/compress.c9
2 files changed, 13 insertions, 3 deletions
diff --git a/usr.bin/compress/compress.1 b/usr.bin/compress/compress.1
index cb69bcb..b8a12e5 100644
--- a/usr.bin/compress/compress.1
+++ b/usr.bin/compress/compress.1
@@ -79,8 +79,11 @@ output) for confirmation.
If prompting is not possible or confirmation is not received, the files
are not overwritten.
.Pp
-If no files are specified, the standard input is compressed or uncompressed
-to the standard output.
+If no files are specified or a
+.Ar file
+argument is a single dash
+.Pq Ql - ,
+the standard input is compressed or uncompressed to the standard output.
If either the input and output files are not regular files, the checks for
reduction in size and file overwriting are not performed, the input file is
not removed, and the attributes of the input file are not retained.
diff --git a/usr.bin/compress/compress.c b/usr.bin/compress/compress.c
index 866e187..f7d1373 100644
--- a/usr.bin/compress/compress.c
+++ b/usr.bin/compress/compress.c
@@ -140,7 +140,10 @@ main(argc, argv)
for (; *argv; ++argv)
switch(style) {
case COMPRESS:
- if (cat) {
+ if (strcmp(*argv, "-") == 0) {
+ compress("/dev/stdin", "/dev/stdout", bits);
+ break;
+ } else if (cat) {
compress(*argv, "/dev/stdout", bits);
break;
}
@@ -162,6 +165,10 @@ main(argc, argv)
compress(*argv, newname, bits);
break;
case DECOMPRESS:
+ if (strcmp(*argv, "-") == 0) {
+ decompress("/dev/stdin", "/dev/stdout", bits);
+ break;
+ }
len = strlen(*argv);
if ((p = rindex(*argv, '.')) == NULL ||
strcmp(p, ".Z")) {
OpenPOWER on IntegriCloud