From 3f3d1c0437fd3dfe1cb11fc622d317daa004ea2a Mon Sep 17 00:00:00 2001 From: Andrew Robbins Date: Mon, 18 Mar 2019 14:11:47 -0400 Subject: Rename and refactor diff_patch_file() The previous function, diff_patch_file, was more error-prone and fragile and did not take into consideration patching of more than one file at a time(!). --- libs/common | 19 ++++--------------- libs/git | 2 +- libs/project | 2 +- 3 files changed, 6 insertions(+), 17 deletions(-) (limited to 'libs') diff --git a/libs/common b/libs/common index a27ff785..06b411e1 100755 --- a/libs/common +++ b/libs/common @@ -110,22 +110,11 @@ download_wrapper() { fi } -diff_patch_file() { - local repository_path="$1" - local patch_file_path="$2" +diff_patch() { + local sources_path=$1 + local patch_path=$2 - # TODO: Improve handling of filenames to avoid gotchas w/ \n, \t, etc. - local filename_in_diff="$(sed -rne 's/^-{3}\s+([^ \r\n]*).*/\1/p' "$patch_file_path")" - - local source_file_path - - if ! ( grep -E '^-{3}.*/' "$patch_file_path" >/dev/null 2>&1 ); then - source_file_path="$repository_path/$filename_in_diff" - else - source_file_path="$repository_path/${filename_in_diff##*/}" - fi - - patch "$source_file_path" "$patch_file_path" + patch -fd "$sources_path" -r - < "$patch_path" } path_wildcard_expand() { diff --git a/libs/git b/libs/git index 16dd5411..998ceae7 100755 --- a/libs/git +++ b/libs/git @@ -249,7 +249,7 @@ git_project_patch_recursive() { if [[ ${patch##*.} == patch ]]; then git_patch "$repository_path" "$branch" "$patch" else - diff_patch_file "$repository_path" "$patch" + diff_patch "$repository_path" "$patch" fi done } diff --git a/libs/project b/libs/project index f90b368e..70a76d71 100755 --- a/libs/project +++ b/libs/project @@ -531,7 +531,7 @@ project_sources_prepare_patch() { local patches_path="$project_path/$PATCHES" for patch in "$patches_path"/[!.]*.@(patch|diff); do - diff_patch_file "$sources_path" "$patch" + diff_patch "$sources_path" "$patch" done } -- cgit v1.2.3-70-g09d2