summaryrefslogtreecommitdiffstats
path: root/patchadd.in
diff options
context:
space:
mode:
authorMartin Quinson <mquinson@debian.org>2003-01-21 09:49:29 +0000
committerMartin Quinson <mquinson@debian.org>2003-01-21 09:49:29 +0000
commit02dc4a5f8c1979e9a23f7b6851f693d29b640c4d (patch)
tree2f397f5df89f4529b89fd0e7a021238d0f290007 /patchadd.in
parent4d11e99bfc25e0261111d202a3a2afdf97daea5c (diff)
downloadquilt-02dc4a5f8c1979e9a23f7b6851f693d29b640c4d.tar.gz
Version 0.11, from Andreas Gruenbacher
Diffstat (limited to 'patchadd.in')
-rwxr-xr-xpatchadd.in95
1 files changed, 95 insertions, 0 deletions
diff --git a/patchadd.in b/patchadd.in
new file mode 100755
index 0000000..95f32c6
--- /dev/null
+++ b/patchadd.in
@@ -0,0 +1,95 @@
+#!/bin/sh
+
+# Read in library functions
+if ! [ -r @LIB@/patchfns ]
+then
+ echo "Cannot read library @LIB@/patchfns" >&2
+ exit 1
+fi
+. @LIB@/patchfns
+
+usage()
+{
+ echo "Usage: patchadd [-p patchname] filename ..."
+ if [ x$1 = x-h ]
+ then
+ cat <<EOF
+
+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 on top of the specified
+patch cannot be added.
+
+-p patchname
+ Patch to add files to.
+
+EOF
+ exit 0
+ else
+ exit 1
+ fi
+}
+
+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
+
+patch=$(stripit $opt_patch)
+if [ -z "$patch" ]
+then
+ patch=$(top_patch)
+fi
+if [ -z "$patch" ]
+then
+ echo "No patches seem to be applied"
+fi
+
+if ! is_applied $patch
+then
+ echo "Patch $patch is not applied"
+ exit 1
+fi
+
+for file in $*
+do
+ if file_in_patch $file $patch
+ then
+ echo "File $file is already in patch $patch"
+ else
+ next_patch=$(next_patch_for_file $patch $file)
+ if [ -n "$next_patch" ]
+ then
+ echo "File $file shadowed by patch $next_patch"
+ exit 1
+ fi
+
+ if install_file_in_patch $file $patch
+ then
+ echo "File $file added to patch $patch"
+ fi
+ fi
+done