--- /dev/null
+#!/bin/sh
+
+# print out patch status. Usage: pstatus [ patchfile ... ]
+#
+# Stephen Cameron <steve.cameron@hp.com>
+#
+
+. patchfns >/dev/null || . /usr/lib/patch-scripts/patchfns >/dev/null || { \
+ echo "Impossible to find my library 'patchfns'."
+ echo "Check your install, or go to the right directory"
+ exit 1
+}
+
+if [ ! -f ./series ]
+then
+ echo "./series does not exist." 1>&2
+ exit 1
+fi
+
+if [ ! -d ./patches ]
+then
+ echo "Directory ./patches does not exist." 1>&2
+ exit 1
+fi
+
+
+PATCHLIST="$*"
+if [ "$PATCHLIST" = "" ]
+then
+ series_optimize=yes
+ PATCHLIST=`cat series | sed -e 's/[.]patch[ ]*$//'`
+ SORTSERIES=`mktemp /tmp/ser.XXXXXX` || exit 1
+ SORTPATCHES=`mktemp /tmp/pat.XXXXXX` || exit 1
+ sed -e 's/^[ ]//' -e 's/[.]patch[ ]*$//' < series | \
+ sort > $SORTSERIES
+ exists="`echo $P/patches/*.patch 2>/dev/null`"
+ if [ "$exists" != "$P/patches/*.patch" ]
+ then
+ ls -1 $P/patches/*.patch | sed -e 's/^.*\/patches\///' \
+ -e 's/[.]patch[ ]*$//' | sort > $SORTPATCHES
+ PATCHLIST="$PATCHLIST"" `comm -1 -3 $SORTSERIES $SORTPATCHES`"
+ fi
+ rm -f $SORTPATCHES $SORTSERIES
+else
+ series_optimize=no
+fi
+
+NSERIES=`wc -l series | awk '{ print $1; }'`
+series=1
+for PATCH_NAME in $PATCHLIST
+do
+ PATCH_NAME=$(stripit $PATCH_NAME)
+ # see if this patch even exists
+ if [ ! -f $P/patches/"$PATCH_NAME".patch ]
+ then
+ echo "$PATCH_NAME does not exist."
+ continue
+ fi
+ # see if this patch is applied
+ applied="-"
+ if [ -f applied-patches ]
+ then
+ grep '^'"$PATCH_NAME"'$' applied-patches > /dev/null
+ if [ "$?" = "0" ]
+ then
+ applied="a"
+ fi
+ fi
+
+ # figure the status of this patch, that is,
+ # if it needs changelog, pcpatch, refpatch
+
+ stat=""
+ if [ ! -f $P/txt/"$PATCH_NAME".txt ]
+ then
+ stat="changelog "
+ fi
+ if [ ! -f $P/pc/"$PATCH_NAME".pc ]
+ then
+ stat="$stat""pcpatch "
+ elif [ "$applied" != '-' ]
+ then
+ rpatch=n
+
+ # for each file this patch touches
+ for y in `cat $P/pc/"$PATCH_NAME".pc`
+ do
+ # is the patch adding the file?
+ if [ ! -e "$y"'~'"$PATCH_NAME" -a -f "$y" ]
+ then
+ # file is newer than the patch?
+ if [ "$y" -nt $P/patches/"$PATCH_NAME".patch ]
+ then
+ rpatch=y
+ stat="$stat""refpatch "
+ break
+ fi
+ else
+ # modified file is newer than the patch?
+ if [ "$y"'~'"$PATCH_NAME" -nt \
+ $P/patches/"$PATCH_NAME".patch ]
+ then
+ rpatch=y
+ stat="$stat""refpatch "
+ break
+ fi
+ if [ "`toppatch`" = "$PATCH_NAME" -a \
+ "$y" -nt $P/patches/"$PATCH_NAME".patch ]
+ then
+ # toppatch, so check if the file
+ # is newer than the patch?
+ rpatch=y
+ stat="$stat""refpatch "
+ break
+ fi
+ fi
+ done
+ fi
+ # check if they changed the changelog recently
+ if [ "$rpatch" = "n" -a -f $P/txt/"$PATCH_NAME".txt \
+ -a $P/txt/"$PATCH_NAME".txt -nt \
+ $P/patches/"$PATCH_NAME".patch ]
+ then
+ rpatch=y
+ stat="$stat""refpatch "
+ fi
+ if [ "$stat" != "" ]
+ then
+ stat="Needs ""$stat"
+ fi
+
+ if [ "$series_optimize" != "yes" ]
+ then
+ # have to find the series number the hard way.
+ series=`grep -n '^'"$PATCH_NAME"'\.patch$' series |\
+ awk -F: '{ printf "%d", $1}' `
+ if [ "$series" = "" ]
+ then
+ series="?"
+ fi
+ fi
+
+ echo "$series":"$applied":"$PATCH_NAME $stat"
+
+ if [ "$series_optimize" = "yes" ]
+ then
+ if [ "$series" != "?" ]
+ then
+ series=`expr $series + 1`
+ if [ $series -gt $NSERIES ]
+ then
+ series="?"
+ fi
+ fi
+ fi
+done