Commit | Line | Data |
---|---|---|
01dacf6c WD |
1 | #!/bin/sh |
2 | ||
3 | [ -d patches ] && cd patches | |
4 | ||
5 | if [ ! -f verify-patches ]; then | |
6 | echo "Please run this script from the root of the rsync dir" | |
7 | echo "or from inside the patches subdir." | |
8 | exit 1 | |
9 | fi | |
10 | ||
11 | root=`cat ../CVS/Root` | |
d82d6744 | 12 | tmpdir=,tmp-for-patch-tests |
01dacf6c WD |
13 | |
14 | [ -d $tmpdir ] || mkdir $tmpdir | |
01dacf6c WD |
15 | cd $tmpdir || exit 1 |
16 | ||
34483bc7 WD |
17 | [ -d workdir ] || mkdir workdir |
18 | echo "Using CVS to update the $tmpdir/cvsdir copy of the source." | |
19 | cvs -d "$root" co -d cvsdir rsync | |
d82d6744 | 20 | |
34483bc7 | 21 | cd workdir || exit 1 |
d82d6744 | 22 | |
01dacf6c | 23 | if [ -z "$1" ]; then |
d82d6744 | 24 | set -- ../../*.diff |
01dacf6c WD |
25 | fi |
26 | ||
27 | for xx in "${@}"; do | |
28 | case "$xx" in | |
29 | *gzip-rsyncable.diff) continue ;; | |
d82d6744 | 30 | patches/*) xx=`echo $xx | sed 's:patches:../..:'` ;; |
01dacf6c | 31 | */*.diff) ;; |
d82d6744 | 32 | *.diff) xx=../../$xx ;; |
01dacf6c WD |
33 | *) continue ;; |
34 | esac | |
e507a30a | 35 | apply=y |
01dacf6c | 36 | while : ; do |
e507a30a WD |
37 | echo -e "\n----------- $xx ------------" |
38 | if [ $apply = y ]; then | |
34483bc7 | 39 | rsync -a --delete ../cvsdir/ . |
e507a30a WD |
40 | patch -p0 <$xx | tee ,patch.output |
41 | new='' | |
42 | for nn in `sed -n 's/^patching file //p' ,patch.output`; do | |
34483bc7 | 43 | [ -f ../cvsdir/$nn ] || new="$new $nn" |
e507a30a | 44 | done |
b68abdce WD |
45 | if grep "^Hunk #[0-9]* FAILED" ,patch.output >/dev/null; then |
46 | default=F | |
666412f3 | 47 | elif grep "^Hunk #[0-9]* succeeded" ,patch.output >/dev/null; then |
b68abdce WD |
48 | default=E |
49 | else | |
50 | default=N | |
51 | fi | |
e507a30a WD |
52 | apply=n |
53 | fi | |
54 | echo -e "\nFix rejects, Make proto, Edit both diffs, Update patch," | |
b68abdce | 55 | echo -n "Apply patch again, Next, Quit: [$default] " |
01dacf6c | 56 | read ans |
b68abdce | 57 | [ -z "$ans" ] && ans=$default |
01dacf6c | 58 | case "$ans" in |
01dacf6c WD |
59 | [Ee]*) |
60 | [ ! -z "$new" ] && cvs add $new | |
61 | new='' | |
62 | rm -f *.rej *.orig | |
e507a30a | 63 | sed '/^--- /,$ d' $xx >,new.patch |
01dacf6c WD |
64 | cvs diff -N | grep -v '^Index: ' | |
65 | grep -v '^=========' | | |
66 | grep -v '^diff -' | | |
67 | grep -v '^RCS file: ' | | |
e507a30a | 68 | grep -v '^retrieving revision ' >>,new.patch |
01dacf6c | 69 | vim -d $xx ,new.patch |
b68abdce | 70 | default=U |
01dacf6c WD |
71 | ;; |
72 | [Ff]*) | |
73 | vim *.rej | |
b68abdce | 74 | default=E |
01dacf6c WD |
75 | ;; |
76 | [Mm]*) | |
77 | cat *.c lib/compat.c | awk -f mkproto.awk >proto.h | |
78 | echo -e "\nRegenerated proto.h" | |
b68abdce | 79 | default=E |
01dacf6c WD |
80 | ;; |
81 | [Uu]*) | |
82 | if [ -f ,new.patch ]; then | |
83 | cp -p ,new.patch $xx | |
84 | echo -e "\nCopied ,new.patch to $xx" | |
b68abdce | 85 | default=A |
01dacf6c WD |
86 | else |
87 | echo -e "\n*** Edit the diffs first. ***" | |
b68abdce | 88 | default=E |
01dacf6c WD |
89 | fi |
90 | ;; | |
e507a30a WD |
91 | [Aa]*) |
92 | apply=y | |
93 | ;; | |
b68abdce | 94 | [Nn]*) |
d82d6744 WD |
95 | break |
96 | ;; | |
97 | [Qq]*) | |
98 | exit 0 | |
99 | ;; | |
01dacf6c WD |
100 | esac |
101 | done | |
102 | done |