OSDN Git Service

lndir: set permission, owner, group of destination dir
[android-x86/bootable-newinstaller.git] / initrd / bin / lndir
1 #!/bin/sh
2
3 [ "$1" = "-v" ] && verbose=-v && shift
4
5 src=$1
6 dst=${2:-.}
7
8 usage()
9 {
10         echo "Usage: $(basename $0) SRC_DIR [DST_DIR]"
11         echo
12         exit 1
13 }
14
15 make_dir()
16 {
17         [ -d "$2" ] || mkdir -p "$2"
18         if [ "`id -u`" = "0" ]; then
19                 chmod `stat -c "%a" "$1"` "$2"
20                 chown `stat -c "%u.%g" "$1"` "$2"
21         fi
22 }
23
24 linkdir()
25 {
26         local odir="$PWD"
27         make_dir "$1" "$2"
28         [ -d "$2" ] || mkdir -p "$2"
29         cd "$2"
30         local d="$PWD"
31         cd "$odir" && cd "$1"
32         for f in * .*; do
33                 if [ "$f" != "." -a "$f" != ".." -a \( -e "$f" -o -L "$f" \) ]; then
34                         if [ -d "$f" -a ! -L "$f" ]; then
35                                 linkdir "$f" "$d/$f"
36                         else
37                                 ln $verbose "$f" "$d"
38                         fi
39                 fi
40         done
41         cd "$odir"
42 }
43
44 [ -d /system/bin ] && PATH=/system/bin:$PATH
45
46 [ -z "$src" ] && usage
47
48 [ ! -d "$src" ] && echo "$src is not a directory" && exit 2
49
50 echo "$src" | grep -q /$ || dst=$dst/$(basename "$src")
51
52 linkdir "$src" "$dst"