#! /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: pushpatch [-afq] [npatches|patchname]" if [ x$1 = x-h ] then cat <&2 return 1 fi fi } options=`getopt -o fqah -- "$@"` if [ $? -ne 0 ] then usage fi eval set -- "$options" while true do case "$1" in -f) opt_force=1 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 [ -z "$opt_all" ] && number=1 fi [ -n "$opt_force" ] && apatch_options="$apatch_options -f" [ -n "$opt_quiet" ] && apatch_options="$apatch_options -q" if [ -n "$stop_at_patch" ] then if is_applied $stop_at_patch then echo "Patch $stop_at_patch is already applied." exit 1 fi fi if ! patches=$(list_patches) 2>&1 then exit 1 elif [ -z "$patches" ] then top=$(top_patch) if [ -z "$top" ] then echo "No patches applied" else echo "File series fully applied, ends at patch $top" fi exit 0 fi trap "interrupted=1" SIGINT for patch in $patches do if ! @LIB@/apatch $apatch_options $patch then exit 1 fi if [ -n "$interrupted" ] then echo "pushpatch interrupted by user" exit 1 fi [ -z "$opt_quiet" ] && echo done