--- a/src/filters/rcluncomp
+++ b/src/filters/rcluncomp
@@ -17,14 +17,25 @@
sinfile=`basename "$infile"`
#echo "rcluncomp: $sinfile" 1>&2
-# What we do depends on suffix existence.
case "$sinfile" in
-*.*)
- cp "$infile" "$outdir/$sinfile" || exit 1
- $uncomp "$outdir/$sinfile" || exit 1
- uncompressed=`echo $outdir/*`
- ;;
-*)
+
+ # File with a suffix: try to decompress in file mode so that the
+ # decompressor can transform the file name if it knows how. Try
+ # filter mode if this fails
+ *.*)
+ cp "$infile" "$outdir/$sinfile" || exit 1
+ # try uncompress
+ if $uncomp "$outdir/$sinfile" ; then
+ uncompressed=`echo $outdir/*`
+ else
+ rm -f "$outdir/sinfile"
+ $uncomp < "$infile" > "$outdir/$sinfile" || exit 1
+ uncompressed="$outdir/$sinfile"
+ fi
+ ;;
+
+ # Suffixless file names: use filter mode
+ *)
$uncomp < "$infile" > "$outdir/$sinfile" || exit 1
uncompressed="$outdir/$sinfile"
;;