#! /bin/sh -e if [ $# -eq 3 -a "$2" = '-d' ]; then pdir="-d $3" elif [ $# -ne 1 ]; then echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" exit 1 fi case "$1" in -patch) patch $pdir -f --no-backup-if-mismatch -p0 < $0;; -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p0 < $0;; *) echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" exit 1 esac exit 0 # DP: bash-3.2 upstream patch bash32-008 BASH PATCH REPORT ================= Bash-Release: 3.2 Patch-ID: bash32-008 Bug-Reported-by: Linda Walsh Bug-Reference-ID: <456041FD.8000605@tlinx.org> Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00040.html Bug-Description: When checking pathnames from the command hash table (e.g., when the `checkhash' shell option is enabled), a bug causes bash to delete and re-lookup each command. Patch: *** ../bash-3.2-patched/findcmd.c Wed Aug 17 16:49:54 2005 --- findcmd.c Fri Nov 24 10:48:37 2006 *************** *** 309,313 **** { st = file_status (hashed_file); ! if ((st ^ (FS_EXISTS | FS_EXECABLE)) != 0) { phash_remove (pathname); --- 309,313 ---- { st = file_status (hashed_file); ! if ((st & (FS_EXISTS|FS_EXECABLE)) != (FS_EXISTS|FS_EXECABLE)) { phash_remove (pathname); *** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 --- patchlevel.h Mon Oct 16 14:22:54 2006 *************** *** 26,30 **** looks for to find the patch level (for the sccs version string). */ ! #define PATCHLEVEL 7 #endif /* _PATCHLEVEL_H_ */ --- 26,30 ---- looks for to find the patch level (for the sccs version string). */ ! #define PATCHLEVEL 8 #endif /* _PATCHLEVEL_H_ */