# An arbitrary format archive lister, although really we are mainly supporting
# tar and zip currently, including compressed formats.
+source "$FEISTY_MEOW_SCRIPTS/core/launch_feisty_meow.sh"
+
archive_file="$1"; shift
if [ -z "$archive_file" ]; then
echo "This script takes one archive name (in .tar.gz, .zip, etc. formats) and"
fi
if [ -z "$PAGER" ]; then
- PAGER=$(which less)
+ PAGER=$(whichable less)
if [ -z "$PAGER" ]; then
- PAGER=$(which more)
+ PAGER=$(whichable more)
if [ -z "$PAGER" ]; then
PAGER="cat"
fi
fi
fi
+save_err=1
if [[ $archive_file =~ .*\.tar$ \
|| $archive_file =~ .*\.tar\.gz$ \
|| $archive_file =~ .*\.tar\.bz2$ \
|| $archive_file =~ .*\.snarf$ \
]]; then
tar -tf $archive_file | $PAGER
+ save_err=${PIPESTATUS[0]}
elif [[ $archive_file =~ .*\.zip$ \
|| $archive_file =~ .*\.epub$ \
|| $archive_file =~ .*\.odt$ \
|| $archive_file =~ .*\.war$ \
]]; then
unzip -v $archive_file | $PAGER
+ save_err=${PIPESTATUS[0]}
+elif [[ "$archive_file" =~ .*\.7z$ ]]; then
+ 7z l "$archive_file" | $PAGER
+ save_err=${PIPESTATUS[0]}
+elif [[ "$archive_file" =~ .*\.rar$ ]]; then
+ rar l "$archive_file" | $PAGER
+ save_err=${PIPESTATUS[0]}
fi
+
+if [ $save_err -ne 0 ]; then
+ echo "There was a failure reported while listing: $archive_file"
+ exit 1
+fi
+