#!/bin/bash
# sanitize broken (i.e. that would decompress files in .) tar archives

# author Filippo Giunchedi <filippo@esaurito.net>
# released under public domain
i=$#
while [ $i -ge 0 ]; do
    arg=${BASH_ARGV[$i]}
    if [ $(echo "$arg" | grep -E "\.t(ar|gz|bz)") ]; then
        fname="$arg"
    fi
    let i--
done

IFS=$'\n'
for line in $(tar tf "$fname" ); do
    outdir=$( echo "${line/#.\//}" | cut -d/ -f1 )
    if [ -z "$_outdir" ]; then _outdir=$outdir; fi
    
    if [ "$outdir" != "$_outdir" ]; then
        broken=yes
        break
    fi
done

echo "broken? $broken"
exit 1

if [ $broken ]; then
    fname=$( basename "$fname" | cut -d. -f1 ) 
    mkdir $fname
    tar $@ -C $fname
else
    tar $@
fi
