#! @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. usage() { printf $"Usage: quilt add [-P patch] {file} ...\n" if [ x$1 = x-h ] then printf $" Add one or more files to the topmost or named patch. Files must be added to the patch before being modified. Files that are modified by patches already applied on top of the specified patch cannot be added. -P patch Patch to add files to. " exit 0 else exit 1 fi } in_valid_dir() { local p=$1 path path=${p%/*} while [ "$p" != "$path" ] do if [ "$path" -ef "$QUILT_PATCHES" ] then printf $"File %s is located below %s\n" \ "$1" "$QUILT_PATCHES/" return 1 fi if [ "$path" -ef "$QUILT_PC" ] then printf $"File %s is located below %s\n" \ "$1" "$QUILT_PC/" return 1 fi p=$path path=${path%/*} done } options=`getopt -o P:h -- "$@"` if [ $? -ne 0 ] then usage fi eval set -- "$options" while true do case "$1" in -P) opt_patch="$2" shift 2 ;; -h) usage -h ;; --) shift break ;; esac done if [ $# -lt 1 ] then usage fi # Read in library functions if ! [ -r $QUILT_DIR/scripts/patchfns ] then echo "Cannot read library $QUILT_DIR/scripts/patchfns" >&2 exit 1 fi . $QUILT_DIR/scripts/patchfns patch=$(find_applied_patch "$opt_patch") || exit 1 status=0 for file in "$@" do if ! in_valid_dir "$SUBDIR$file" then status=1 continue fi if file_in_patch "$SUBDIR$file" $patch then printf $"File %s is already in patch %s\n" \ "$SUBDIR$file" "$(print_patch $patch)" >&2 [ $status -ne 1 ] && status=2 continue fi next_patch=$(next_patch_for_file $patch "$SUBDIR$file") if [ -n "$next_patch" ] then printf $"File %s modified by patch %s\n" \ "$SUBDIR$file" "$(print_patch $next_patch)" >&2 status=1 continue fi if [ -L "$SUBDIR$file" ] then printf $"Cannot add symbolic link %s\n" "$SUBDIR$file" >&2 status=1 continue fi if ! $QUILT_DIR/scripts/backup-files -b -s -L -B $QUILT_PC/$patch/ "$SUBDIR$file" then printf $"Failed to back up file %s\n" "$SUBDIR$file" >&2 status=1 continue fi if [ -e "$SUBDIR$file" ] then # The original tree may be read-only. chmod u+w "$SUBDIR$file" fi printf $"File %s added to patch %s\n" \ "$SUBDIR$file" "$(print_patch $patch)" done exit $status ### Local Variables: ### mode: shell-script ### End: # vim:filetype=sh