From f4b417c62a4f272c4cf9a074d0f7a3a97201f9db Mon Sep 17 00:00:00 2001 From: Sebastian Schmidt Date: Tue, 17 Apr 2012 11:23:35 +0200 Subject: Update to upstream bash 4.2 This upgrades bash to from 4.1-rc to 4.2-release. See CWRU/changelog for changes. Change-Id: I926269c300cf44fa25964b5b375a148fcf11c4b7 --- examples/scripts/bash-hexdump.sh | 67 ++++++++++++++++++++++++++++++++ examples/scripts/timeout3 | 83 ++++++++++++++++++++-------------------- examples/startup-files/bashrc | 7 ++-- 3 files changed, 113 insertions(+), 44 deletions(-) create mode 100644 examples/scripts/bash-hexdump.sh (limited to 'examples') diff --git a/examples/scripts/bash-hexdump.sh b/examples/scripts/bash-hexdump.sh new file mode 100644 index 0000000..310e55c --- /dev/null +++ b/examples/scripts/bash-hexdump.sh @@ -0,0 +1,67 @@ +#From: "dennis" +#To: +#Subject: New example script: bash-hexdump +#Date: Mon, 4 Jan 2010 22:48:19 -0700 +#Message-ID: <6dbec42d$64fcdbd2$4a32cf2d$@com> + +#I've written a script that functions like "hexdump -C" or "hd". If you'd +#like to include it in a future distribution of example Bash scripts, I have +#included it here: + +#!/bin/bash +# bash-hexdump# pure Bash, no externals +# by Dennis Williamson - 2010-01-04 +# in response to +http://stackoverflow.com/questions/2003803/show-hexadecimal-numbers-of-a-file +# usage: bash-hexdump file +saveIFS="$IFS" +IFS="" # disables interpretation of \t, \n and space +saveLANG="$LANG" +LANG=C # allows characters > 0x7F +bytecount=0 +valcount=0 +printf "%08x " $bytecount +while read -d '' -r -n 1 char # -d '' allows newlines, -r allows \ +do + ((bytecount++)) + # for information about the apostrophe in this printf command, see + # http://www.opengroup.org/onlinepubs/009695399/utilities/printf.html + printf -v val "%02x" "'$char" + echo -n "$val " + ((valcount++)) + if [[ "$val" < 20 || "$val" > 7e ]] + then + string+="." # show unprintable characters as a dot + else + string+=$char + fi + if (( bytecount % 8 == 0 )) # add a space down the middle + then + echo -n " " + fi + if (( bytecount % 16 == 0 )) # print 16 values per line + then + echo "|$string|" + string='' + valcount=0 + printf "%08x " $bytecount + fi +done < "$1" + +if [[ "$string" != "" ]] # if the last line wasn't full, pad it out +then + length=${#string} + if (( length > 7 )) + then + ((length--)) + fi + (( length += (16 - valcount) * 3 + 4)) + printf "%${length}s\n" "|$string|" + printf "%08x " $bytecount +fi +echo + +LANG="$saveLANG"; +IFS="$saveIFS" + +exit 0 diff --git a/examples/scripts/timeout3 b/examples/scripts/timeout3 index 5c19d2e..de650be 100644 --- a/examples/scripts/timeout3 +++ b/examples/scripts/timeout3 @@ -1,56 +1,57 @@ #!/bin/bash # -# The Bash shell script executes a command with a time-out. -# Upon time-out expiration SIGTERM (15) is sent to the process. If the signal +# The Bash script executes a command with a time-out. +# Based on the Bash documentation example. +# +# Upon time-out expiration SIGTERM (15) is sent to the process. If the signal # is blocked, then the subsequent SIGKILL (9) terminates it. +# Dmitry V Golovashkin (E-mail: dvg@ieee.org) # -# Based on the Bash documentation example. +script_name="${0##*/}" -# Hello Chet, -# please find attached a "little easier" :-) to comprehend -# time-out example. If you find it suitable, feel free to include -# anywhere: the very same logic as in the original examples/scripts, a -# little more transparent implementation to my taste. -# -# Dmitry V Golovashkin +# Default values. +readonly param_timeout=5 +readonly param_interval=1 +readonly param_delay=1 -scriptName="${0##*/}" +declare -i timeout=param_timeout +declare -i interval=param_interval +declare -i delay=param_delay -declare -i DEFAULT_TIMEOUT=9 -declare -i DEFAULT_INTERVAL=1 -declare -i DEFAULT_DELAY=1 +blue="$(tput setaf 4)" +bold_red="$(tput bold; tput setaf 1)" +off="$(tput sgr0)" -# Timeout. -declare -i timeout=DEFAULT_TIMEOUT -# Interval between checks if the process is still alive. -declare -i interval=DEFAULT_INTERVAL -# Delay between posting the SIGTERM signal and destroying the process by SIGKILL. -declare -i delay=DEFAULT_DELAY +function print_usage() { +cat < /dev/null & exec "$@" + diff --git a/examples/startup-files/bashrc b/examples/startup-files/bashrc index 069e8be..2d8d37b 100644 --- a/examples/startup-files/bashrc +++ b/examples/startup-files/bashrc @@ -1,6 +1,7 @@ -if [ -z "$PS1" ]; then - return -fi +case $- in +*i*) ;; +*) return ;; +esac # bogus if [ -f /unix ] ; then -- cgit v1.1