diff --git a/patch-fbc.sh b/patch-fbc.sh index abf7c37..6c66118 100755 --- a/patch-fbc.sh +++ b/patch-fbc.sh @@ -381,6 +381,20 @@ patch_common () { } +ensure_bytes_are_valid () { + driver_file="$driver_dir/$object.$driver_version" + original_bytes=$(awk -F / '$2 { print $2 }' <<< "$patch") + patched_bytes=$(awk -F / '$3 { print $3 }' <<< "$patch") + if LC_ALL=C grep -qaP "$original_bytes" "$driver_file"; then + return 0 # file is ready to be patched + fi + if LC_ALL=C grep -qaP "$patched_bytes" "$driver_file"; then + return 0 # file is likely patched already + fi + echo "Error: Could not find bytes '$original_bytes' to patch in '$driver_file'." + exit 1 +} + rollback () { patch_common if [[ -f "$backup_path/$object.$driver_version$backup_suffix" ]]; then @@ -395,6 +409,7 @@ rollback () { patch () { patch_common + ensure_bytes_are_valid if [[ -f "$backup_path/$object.$driver_version$backup_suffix" ]]; then bkp_hash="$(sha1sum "$backup_path/$object.$driver_version$backup_suffix" | cut -f1 -d\ )" drv_hash="$(sha1sum "$driver_dir/$object.$driver_version" | cut -f1 -d\ )" diff --git a/patch.sh b/patch.sh index fe70eec..18527a3 100755 --- a/patch.sh +++ b/patch.sh @@ -457,6 +457,20 @@ patch_common () { } +ensure_bytes_are_valid () { + driver_file="$driver_dir/$object.$driver_version" + original_bytes=$(awk -F / '$2 { print $2 }' <<< "$patch") + patched_bytes=$(awk -F / '$3 { print $3 }' <<< "$patch") + if LC_ALL=C grep -qaP "$original_bytes" "$driver_file"; then + return 0 # file is ready to be patched + fi + if LC_ALL=C grep -qaP "$patched_bytes" "$driver_file"; then + return 0 # file is likely patched already + fi + echo "Error: Could not find bytes '$original_bytes' to patch in '$driver_file'." + exit 1 +} + rollback () { patch_common if [[ -f "$backup_path/$object.$driver_version$backup_suffix" ]]; then @@ -471,6 +485,7 @@ rollback () { patch () { patch_common + ensure_bytes_are_valid if [[ -f "$backup_path/$object.$driver_version$backup_suffix" ]]; then bkp_hash="$(sha1sum "$backup_path/$object.$driver_version$backup_suffix" | cut -f1 -d\ )" drv_hash="$(sha1sum "$driver_dir/$object.$driver_version" | cut -f1 -d\ )"