comparison hgmerge @ 831:232d0616a80a

Cleaned up trap handling: - Use numbers instead of signal names - No need to explicitly call "cleanup_exit RC" to exit with return code RC.
author Thomas Arendsen Hein <thomas@intevation.de>
date Thu, 04 Aug 2005 17:43:05 +0100
parents ca080d28d0af
children 1fe3b14c7044
comparison
equal deleted inserted replaced
830:ca080d28d0af 831:232d0616a80a
55 fi 55 fi
56 56
57 HGTMP="" 57 HGTMP=""
58 cleanup_exit() { 58 cleanup_exit() {
59 rm -rf "$HGTMP" 59 rm -rf "$HGTMP"
60 exit $1
61 } 60 }
62 61
63 # attempt to manually merge with diff and patch 62 # attempt to manually merge with diff and patch
64 if type diff > /dev/null 2>&1 && type patch > /dev/null 2>&1; then 63 if type diff > /dev/null 2>&1 && type patch > /dev/null 2>&1; then
65 # Remove temporary files even if we get interrupted 64 # Remove temporary files even if we get interrupted
66 trap "cleanup_exit 1" TERM KILL INT QUIT ABRT 65 trap "cleanup_exit" 0 # normal exit
66 trap "exit 1" 1 2 3 6 15 # HUP INT QUIT ABRT TERM
67 67
68 HGTMP="${TMPDIR-/tmp}/hgmerge.$RANDOM.$RANDOM.$RANDOM.$$" 68 HGTMP="${TMPDIR-/tmp}/hgmerge.$RANDOM.$RANDOM.$RANDOM.$$"
69 (umask 077 && mkdir "$HGTMP") || { 69 (umask 077 && mkdir "$HGTMP") || {
70 echo "Could not create temporary directory! Exiting." 1>&2 70 echo "Could not create temporary directory! Exiting." 1>&2
71 exit 1 71 exit 1
72 } 72 }
73 73
74 diff -u "$BASE" "$OTHER" > "$HGTMP/diff" 74 diff -u "$BASE" "$OTHER" > "$HGTMP/diff"
75 if patch "$LOCAL" < "$HGTMP/diff"; then 75 if patch "$LOCAL" < "$HGTMP/diff"; then
76 cleanup_exit 0 76 exit 0
77 else 77 else
78 # If rejects are empty after using the editor, merge was ok 78 # If rejects are empty after using the editor, merge was ok
79 $EDITOR "$LOCAL" "$LOCAL.rej" && test -s "$LOCAL.rej" || cleanup_exit 0 79 $EDITOR "$LOCAL" "$LOCAL.rej" && test -s "$LOCAL.rej" || exit 0
80 fi 80 fi
81 cleanup_exit 1 81 exit 1
82 fi 82 fi
83 83
84 echo "hgmerge: unable to find merge, tkdiff, kdiff3, or diff+patch!" 84 echo "hgmerge: unable to find merge, tkdiff, kdiff3, or diff+patch!"
85 exit 1 85 exit 1