+++ /dev/null
-DB=applied-patches
-
-#
-# Work out where the user's pc/, patch/ and txt/ directories live.
-#
-# If the user specified PATCHSCRIPTS in environment then use that (it's
-# probably a relative path)
-#
-# If there is a directory ./patch-scripts then use that
-#
-# Otherwise use "."
-#
-
-if [ x$PATCHSCRIPTS_LIBDIR != x ]
-then
- P=$PATCHSCRIPTS_LIBDIR
-elif [ -d ./patch-scripts ]
-then
- P=./patch-scripts
-elif [ -d ./patches ]
-then
- P=.
-else
- echo "could not locate your pc/ and patches/ directories"
- exit 1
-fi
-
-top_patch()
-{
- tail -1 $DB
-}
-
-die()
-{
- echo error: $*
- exit 1
-}
-
-is_numeric()
-{
- if echo $1 | egrep '^[0-9]*$' > /dev/null
- then
- return 0
- fi
- return 1
-}
-
-is_applied_last()
-{
- name="$(stripit $1)"
- top_patch >$DB.1
- if grep "^$name$" "$DB.1" > /dev/null 2>&1
- then
- rm $DB.1
- return 0
- else
- rm $DB.1
- return 1
- fi
-}
-
-is_applied()
-{
- name=$(stripit "$1")
- if grep "^$name$" "$DB" > /dev/null 2>&1
- then
- return 0
- else
- return 1
- fi
-}
-check_pc_match()
-{
- if [ -f /usr/bin/lsdiff ]; then
- tmpfile=$(mktemp /tmp/p_XXXXXX) || exit 1
- lsdiff --strip=1 $1 > $tmpfile
- diff $2 $tmpfile > /dev/null
- if [ $? != 0 ]; then
- echo " $1 do not match with $2 "
- echo " $2 will be changed to match $2"
- # cat $tmpfile > $P/pc/$PATCH_NAME.pc
- fi
- rm -rf $tmpfile
- fi
-}
-can_apply()
-{
- if patch -p1 --dry-run -i "$1" -f
- then
- return 0
- else
- return 1
- fi
-}
-
-can_remove()
-{
- if patch -R -p1 --dry-run -i $P/patches/"$1".patch -f
- then
- return 0
- else
- return 1
- fi
-}
-
-remove_from_db()
-{
- tmpfile=$(mktemp /tmp/p_XXXXXX)
- name="$1"
- sed -e "/^$name$/d" < "$DB" > $tmpfile
- mv $tmpfile "$DB"
-}
-
-stripit()
-{
- ret=$(basename $1)
- ret=$(echo $ret | sed -e 's/\.patch$//')
- ret=$(echo $ret | sed -e 's/\.pc$//')
- ret=$(echo $ret | sed -e 's/\.txt$//')
- echo $ret
-}
-
-top_is_current()
-{
- patch_name=$(top_patch)
- if [ x$patch_name == x ]
- then
- return 1
- else
- patch_file=$P/patches/"$patch_name".patch
- files=$(cat $P/pc/$patch_name.pc)
- for file in $files
- do
- if [ $file -nt $patch_file ]
- then
- echo $file newer than $patch_file
- return 0
- fi
- done
- fi
- return 1
-}
-
-need_top_current()
-{
- if top_is_current
- then
- echo "Error: Top patch is not up-to-date"
- exit 1
- fi
-}
-
-warn_top_current()
-{
- if top_is_current
- then
- echo "Warning: Top patch is not up-to-date"
- fi
-}
-
-file_in_patch()
-{
- file=$1
- patch=$2
-
- if [ -e $P/pc/$patch.pc ]
- then
- if grep "^"$file"$" $P/pc/$patch.pc > /dev/null
- then
- return 0
- fi
- fi
- return 1
-}
-
-# copy_file_to_bup filename patchname
-copy_file_to_bup()
-{
- file=$1
- patch=$2
- bup="$file"~"$patch"
- orig="$file"~"orig"
- src_dir=`pwd`
-
- if [ -e $bup ]
- then
- echo "Cannot install file $file in patch $patch: backup $bup exists"
- exit 1
- fi
- if [ -e $file ]
- then
- cp -p $file "$file"~"$patch"
- else
- echo "file $file appears to be newly added"
- fi
- if [ ! -L "$orig" ]; then
- ln -s "$src_dir/$bup" $orig
- fi
-}
-
-install_file_in_patch()
-{
- file=$1
- patch=$2
-
- copy_file_to_bup $file $patch
- echo $file >> $P/pc/$patch.pc
-# touch $P/txt/$patch.txt
-}
-
-need_file_there()
-{
- if [ ! -e $1 ]
- then
- echo "File $1 does not exist"
- exit 1
- fi
-}
-
-desc()
-{
- state=0
- while read x
- do
- if [ x"$x" = xDESC ]
- then
- state=1
- elif [ x"$x" = xEDESC ]
- then
- state=0
- elif [ $state = 1 ]
- then
- echo " $x"
- fi
- done
-}
-
-body()
-{
- file=$1
-
- did_stuff=0
- while read x
- do
- if [ x"$x" = xEDESC ]
- then
- cat
- did_stuff=1
- fi
- done < $file
-
- if [ $did_stuff = 0 ]
- then
- cat $file
- fi
-}