engored@20: #!/bin/sh engored@20: engored@20: HGTMP="" engored@20: cleanup_exit() { engored@20: rm -rf "$HGTMP" engored@20: } engored@20: engored@20: # Remove temporary files even if we get interrupted engored@20: trap "cleanup_exit" 0 # normal exit engored@20: trap "exit 255" HUP INT QUIT ABRT TERM engored@20: av6@140: HGTMP=$(mktemp -d "${TMPDIR-/tmp}/hgeditor.XXXXXX") av6@140: if [ -z "$HGTMP" ] || ! [ -d "$HGTMP" ]; then av6@140: echo "Could not create temporary directory! Exiting." 1>&2 av6@140: exit 1 av6@140: fi engored@20: av6@141: LINE=$(fgrep 'HG: --- 8< ---' -nm1 "$1" | cut -d: -f1) av6@141: if [ -n "$LINE" ]; then av6@141: head -n "$(( LINE - 1 ))" "$1" > "$HGTMP/msg" av6@141: tail -n +"$(( LINE + 1 ))" "$1" | sed -e 's/^HG: //g' > "$HGTMP/diff" av6@141: else av6@141: cat "$1" > "$HGTMP/msg" av6@141: fi engored@20: engored@20: MD5=$(which md5sum 2>/dev/null) || \ engored@20: MD5=$(which md5 2>/dev/null) av6@140: [ -x "${MD5}" ] && CHECKSUM=$(${MD5} "$HGTMP/msg") engored@20: if [ -s "$HGTMP/diff" ]; then av6@120: vim -f "+e $HGTMP/diff" '+set buftype=help filetype=diff' "+vsplit $HGTMP/msg" '+setlocal spell' || exit $? engored@20: else av6@120: vim -f "$HGTMP/msg" '+setlocal spell' || exit $? engored@20: fi engored@20: [ -x "${MD5}" ] && (echo "$CHECKSUM" | ${MD5} -c >/dev/null 2>&1 && exit 13) engored@20: engored@20: mv "$HGTMP/msg" "$1" engored@20: engored@20: exit $?