#!/bin/bash # vim: set fileencoding=UTF-8: # Copyright 2013 Red Hat, Inc. # Author: Jan Pokorný # Licensed under MIT license set -eu export LC=C HERE=$(dirname "$(readlink -f "${BASH_SOURCE}")") patch_figure_expr() { local line file hunk offset perfile_expr= final_expr= while read line; do #echo "${line}" case "${line}" in patching\ file\ *|@@EOF@@) if test -n "$perfile_expr"; then final_expr=${final_expr:+${final_expr}::} final_expr+="${file}:${perfile_expr}" fi file=${line#patching file } perfile_expr= ;; Hunk\ \#*\ succeeded\ at\ *\ \(offset\ *\ lines\).) hunk=${line#Hunk #} hunk=${hunk%% *} offset=${line#* (offset } offset=${offset% *} perfile_expr=${perfile_expr:+${perfile_expr}:} perfile_expr+="${hunk}/${offset}" ;; esac done < <(patch -o- "$@" 2>&1 >/dev/null; echo '@@EOF@@') echo "${final_expr}" } patches= args= cnt=1 i= while test ${cnt} -le $#; do i="${@:${cnt}:1}" echo "${i}" case "${i}" in -*|--*) args+=" ${i}";; *) patches+=" ${i}";; esac let cnt+=1 done #echo "${patches}" #echo "${args}" #cat ${patches} | patch_figure_expr ${args} "${HERE}"/fix-offsets --expr "$(cat ${patches} | patch_figure_expr ${args})" ${patches}