blob: ea1a8ed71b2da8f579bc6c727d8dee2fd83f7e77 [file] [log] [blame]
The Android Open Source Project88b60792009-03-03 19:28:42 -08001#!/bin/bash
2
3# $1: path to fs_get_stats program
4# $2: start dir
5# $3: subdir to tar up (from $2)
6# $4: target tar name
7# $5: target tarball name (usually $(3).bz2)
8
9if [ $# -ne 5 ]; then
10 echo "Error: wrong number of arguments in cmd: $0 $* "
11 exit 1
12fi
13
14fs_get_stats=`readlink -f $1`
15start_dir=`readlink -f $2`
16dir_to_tar=$3
17target_tar=`readlink -f $4`
18target_tarball=`readlink -f $5`
19
20cd $2
21
22#tar --no-recursion -cvf ${target_tar} ${dir_to_tar}
23rm ${target_tar} > /dev/null 2>&1
24
25# do dirs first
26subdirs=`find ${dir_to_tar} -type d -print`
27files=`find ${dir_to_tar} \! -type d -print`
28for f in ${subdirs} ${files} ; do
29 curr_perms=`stat -c 0%a $f`
30 [ -d "$f" ] && is_dir=1 || is_dir=0
31 new_info=`${fs_get_stats} ${curr_perms} ${is_dir} ${f}`
32 new_uid=`echo ${new_info} | awk '{print $1;}'`
33 new_gid=`echo ${new_info} | awk '{print $2;}'`
34 new_perms=`echo ${new_info} | awk '{print $3;}'`
35# echo "$f: dir: $is_dir curr: $curr_perms uid: $new_uid gid: $new_gid "\
36# "perms: $new_perms"
37 tar --no-recursion --numeric-owner --owner $new_uid \
38 --group $new_gid --mode $new_perms -p -rf ${target_tar} ${f}
39done
40
41if [ $? -eq 0 ] ; then
42 bzip2 -c ${target_tar} > ${target_tarball}
43 success=$?
44 [ $success -eq 0 ] || rm -f ${target_tarball}
45 rm -f ${target_tar}
46 exit $success
47fi
48
49rm -f ${target_tar}
50exit 1