#! /bin/bash # This script is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation. # # See the COPYING and AUTHORS files for more details. # Read in library functions if ! [ -r @LIB@/patchfns ] then echo "Cannot read library @LIB@/patchfns" >&2 exit 1 fi . @LIB@/patchfns usage() { echo "Usage: poppatch [-afRq] [npatches|patchname]" if [ x$1 = x-h ] then cat <&2 return 1 fi fi } options=`getopt -o fRqah -- "$@"` if [ $? -ne 0 ] then usage fi eval set -- "$options" while true do case "$1" in -f) opt_force=1 unset opt_remove shift ;; -R) opt_remove=1 # remove with patch -R; no tricks unset opt_force shift ;; -q) opt_quiet=1 shift ;; -a) opt_all=1 shift ;; -h) usage -h ;; --) shift break ;; esac done if [ $# -gt 1 ] then usage fi if [ $# -eq 1 ] then if is_numeric $1 then number=$1 else stop_at_patch=$(stripit $1) fi else [ -n "$opt_all" ] || number=1 fi [ -n "$opt_force" ] && rpatch_options="$rpatch_options -f" [ -n "$opt_remove" ] && rpatch_options="$rpatch_options -R" [ -n "$opt_quiet" ] && rpatch_options="$rpatch_options -q" if [ -n "$stop_at_patch" ] then if ! is_applied $stop_at_patch then echo "Patch $stop_at_patch is not applied." exit 1 fi fi if ! patches=$(list_patches) 2>&1 then exit 1 elif [ -z "$patches" ] then echo "No patches removed" exit 0 fi trap "interrupted=1" SIGINT for patch in $patches do if ! @LIB@/rpatch $rpatch_options $patch then echo Still at patch $patch exit 1 fi if [ -n "$interrupted" ] then echo "poppatch interrupted by user" exit 1 fi [ -z "$opt_quiet" ] && echo done