#!/bin/bash

# $1: path to fs_get_stats program
# $2: start dir
# $3: subdir to tar up (from $2)
# $4: target tar name
# $5: target tarball name (usually $(3).bz2)
# $6: TARGET_OUT path to query device specific FS configs

if [ $# -ne 6 ]; then
    echo "Error: wrong number of arguments in cmd: $0 $* "
    exit 1
fi

fs_get_stats=`readlink -f $1`
start_dir=`readlink -f $2`
dir_to_tar=$3
target_tar=`readlink -f $4`
target_tarball=`readlink -f $5`
target_out=`readlink -f $6`

cd $2

#tar --no-recursion -cvf ${target_tar} ${dir_to_tar}
rm ${target_tar} > /dev/null 2>&1

# do dirs first
subdirs=`find ${dir_to_tar} -type d -print`
files=`find ${dir_to_tar} \! -type d -print`
for f in ${subdirs} ${files} ; do
    curr_perms=`stat -c 0%a $f`
    [ -d "$f" ] && is_dir=1 || is_dir=0
    new_info=`${fs_get_stats} ${curr_perms} ${is_dir} ${f} ${target_out}`
    new_uid=`echo ${new_info} | awk '{print $1;}'`
    new_gid=`echo ${new_info} | awk '{print $2;}'`
    new_perms=`echo ${new_info} | awk '{print $3;}'`
#    echo "$f: dir: $is_dir curr: $curr_perms uid: $new_uid gid: $new_gid "\
#         "perms: $new_perms"
    tar --no-recursion --numeric-owner --owner $new_uid \
        --group $new_gid --mode $new_perms -p -rf ${target_tar} ${f}
done

if [ $? -eq 0 ] ; then
    case "${target_tarball}" in
    *.bz2 )
        bzip2 -c ${target_tar} > ${target_tarball}
        ;;
    *.gz )
        gzip -c ${target_tar} > ${target_tarball}
        ;;
    esac
    success=$?
    [ $success -eq 0 ] || rm -f ${target_tarball}
    rm -f ${target_tar}
    exit $success
fi

rm -f ${target_tar}
exit 1
