ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/yiiyama/Toolset/scripts/filepatch
Revision: 1.1
Committed: Fri Apr 20 18:11:59 2012 UTC (13 years ago) by yiiyama
Branch: MAIN
CVS Tags: HEAD
Log Message:
renamed patch

File Contents

# User Rev Content
1 yiiyama 1.1 #!/bin/bash
2    
3     dodiff=0
4     force=0
5     single=0
6     while [ $# -gt 0 ]; do
7     case $1 in
8     -d)
9     dodiff=1
10     shift
11     ;;
12     -f)
13     force=1
14     shift
15     ;;
16     -s)
17     single=1
18     shift
19     ;;
20     *)
21     break
22     ;;
23     esac
24     done
25    
26     cpr(){
27     if [ $dodiff -eq 1 ]; then
28     if [ $single -eq 0 ]; then
29     for entry in $(ls $2); do
30     if [ $entry = "CVS" -o $(expr "$entry" : '[^~]*[~]') -ne 0 ]; then
31     continue
32     fi
33    
34     if [ -e $1/$entry ]; then
35     continue
36     fi
37    
38     if [ -d $2/$entry ]; then
39     echo "###Patch: Directory $1/$entry does not exist"
40     elif [ -f $2/$entry ]; then
41     echo "###Patch: File $1/$entry does not exist"
42     fi
43    
44     done
45     fi
46     fi
47    
48     for entry in $(ls $1); do
49     if [ $entry = "CVS" -o $(expr "$entry" : '[^~]*[~]') -ne 0 ]; then
50     continue
51     fi
52    
53     if [ -d $1/$entry -a ! -e $2/$entry ]; then
54     if [ $dodiff -eq 1 ]; then
55     echo "###Patch: Directory $2/$entry does not exist"
56     continue
57     else
58     echo "###Patch: mkdir $2/$entry"
59     mkdir $2/$entry
60     fi
61     fi
62    
63     if [ -d $1/$entry ]; then
64     cpr $1/$entry $2/$entry
65     else
66     if [ $dodiff -eq 1 ]; then
67     if [ -e $2/$entry ]; then
68     echo "###Patch: diff $1/$entry $2/$entry"
69     diff $1/$entry $2/$entry
70     echo ""
71     else
72     echo "###Patch: File $2/$entry does not exist"
73     fi
74     else
75     if [ ! -e $2/$entry -o -n "$(diff $1/$entry $2/$entry)" ]; then
76     copy=0
77     if [ -e $2/$entry -a $force -eq 0 ]; then
78     copy=-1
79     while [ $copy -lt 0 ]; do
80     echo "###Patch: Overwrite $2/$entry? (Y=yes|n=no|d=diff)"
81     read answer
82     case $answer in
83     'Y')
84     copy=1
85     ;;
86     'n')
87     copy=0
88     ;;
89     'd')
90     echo "###Patch: diff $1/$entry $2/$entry"
91     diff $1/$entry $2/$entry
92     ;;
93     *)
94     ;;
95     esac
96     done
97     else
98     copy=1
99     fi
100     if [ $copy -eq 1 ]; then
101     echo "###Patch: cp $1/$entry $2/"
102     cp $1/$entry $2/
103     fi
104     fi
105     fi
106     fi
107     done
108     }
109    
110     if [ ! -d "$1" -o ! -d "$2" ]; then
111     echo "Usage: patch DIR1 DIR2"
112     exit 1
113     fi
114    
115     cpr $1 $2
116    
117