ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/Unix/cpr.sh
Revision: 1.1
Committed: 2009-02-19T06:52:03Z (15 years, 8 months ago) by asvitkine
Content type: application/x-sh
Branch: MAIN
CVS Tags: HEAD
Log Message:
[patch from Mike Sliczniak]
Here is a patch that has a shell script cpr.sh to recursively copy directories but
discarding things that cause problems at least on 10.4 when making the .app bundles.

File Contents

# Content
1 #!/bin/sh
2 # A script to copy recursively ignoring detritus.
3 # I based this off of a script I had that copied over ssh.
4 # source can be a file or directory.
5 # Mike Sliczniak 2009
6
7 # Don't copy resource forks or extended attributes on Mac OS X 10.4.
8 COPY_EXTENDED_ATTRIBUTES_DISABLE=true; export COPY_EXTENDED_ATTRIBUTES_DISABLE
9
10 # Don't copy resource forks or extended attributes on Mac OS X 10.5.
11 COPYFILE_DISABLE=true; export COPYFILE_DISABLE
12
13 case $# in
14 2)
15 ;;
16 *)
17 echo "Usage: cpr source destdir" >&2
18 exit 2
19 ;;
20 esac
21
22 # dir and base names of the source
23 d=`dirname "$1"` || exit
24 b=`basename "$1"` || exit
25
26 # handle relative and absolute destination dirs
27 case "$2" in
28 /*)
29 p=$2
30 ;;
31 *)
32 p="$PWD"/"$2"
33 ;;
34 esac
35
36 # cd into the source dir
37 cd "$d" || exit
38
39 # This is only for Mac OS X, but some systems do not have gtar, find
40 # sometimes lacks -f, and other systems use test -a.
41
42 # List all interesting files for tar to copy:
43 # The first clause skips directories used for revision control.
44 # The second clause ignores detritus files from revision control and OSs.
45 # The third clause ignores ._ style files created by Mac OS X on file systems
46 # that do not have native resource forks or extended attributes. It checks to
47 # see that the file it is associated with exists.
48 find -f "$b" \( \! \( -type d \( \
49 -name CVS -o -name RCS -o -name SCCS -o -name .git -o -name .svn \
50 \) -prune \) \) \
51 \
52 \( \! \( -type f \( \
53 -name .DS_Store -o -name Thumbs.db -o -name .cvsignore -o -name .gitignore \
54 \) \) \) \
55 \
56 \( \! \( \
57 -type f -name '._*' -execdir /bin/sh -c \
58 'f=`echo "$1" | sed "s:^\._:./:"`; [ -e "$f" ]' /bin/sh '{}' \; \
59 \) \) -print0 | tar -c -f - --null -T - --no-recursion | tar -x -C "$p" -f -