#! /bin/sh# A little script I whipped up to make it easy to# patch source trees and have sane error handling# -Erik## (c) 2002 Erik Andersen <andersen@codepoet.org># Set directories from arguments, or use defaults.targetdir=${1-.}patchdir=${2-../kernel-patches}patchpattern=${3-*}if[ ! -d "${targetdir}"];thenecho"Aborting. '${targetdir}' is not a directory."exit1fiif[ ! -d "${patchdir}"];thenecho"Aborting. '${patchdir}' is not a directory."exit1fifor i in ${patchdir}/${patchpattern};docase"$i" in
*.gz)type="gzip";uncomp="gunzip -dc";;;
*.bz)type="bzip";uncomp="bunzip -dc";;;
*.bz2)type="bzip2";uncomp="bunzip2 -dc";;;
*.zip)type="zip";uncomp="unzip -d";;;
*.Z)type="compress";uncomp="uncompress -c";;;
*)type="plaintext";uncomp="cat";;;esac[ -d "${i}"]&&echo"Ignoring subdirectory ${i}"&&continueecho""echo"Applying ${i} using ${type}: "${uncomp}${i}| patch -p1 -E -d ${targetdir}if[$? !=0];thenecho"Patch failed! Please fix $i!"exit1fidone# Check for rejects...if["`find $targetdir/ '(' -name '*.rej' -o -name '.*.rej' ')' -print`"];thenecho"Aborting. Reject files found."exit1fi# Remove backup files
find $targetdir/ '(' -name '*.orig' -o -name '.*.orig'')' -exec rm -f {}\;