forked from Imagelibrary/rtems
222 lines
4.2 KiB
Bash
222 lines
4.2 KiB
Bash
#!/bin/ksh
|
|
#
|
|
# Either bash or ksh will be ok for this; requires 'test -ot'
|
|
# (-p above just says to not parse $ENV file; makes it faster for
|
|
# those of us who set $ENV)
|
|
#
|
|
#
|
|
# NOTE
|
|
#
|
|
# This is potentially a very dangerous program.
|
|
#
|
|
# $Id$
|
|
#
|
|
|
|
# progname=`basename $0`
|
|
progname=${0##*/} # fast basename hack for ksh, bash
|
|
|
|
USAGE=\
|
|
"
|
|
usage: $progname [ -vs ] [ -b base_directory ] [-p file] [-f] [files...]
|
|
-v -- verbose
|
|
-p -- file with replacement instructions
|
|
-s -- skip prompt for backup verification
|
|
-f -- do files at end of line
|
|
|
|
base_directory is the root directory of the source code to update. It
|
|
defaults to the current directory.
|
|
|
|
This program updates C, H, and .inl files.
|
|
"
|
|
|
|
fatal() {
|
|
if [ "$1" ]
|
|
then
|
|
echo >&2
|
|
echo $* >&2
|
|
echo >&2
|
|
fi
|
|
echo "$USAGE" 1>&2
|
|
exit 1
|
|
}
|
|
|
|
#
|
|
# KLUDGE to figure out at runtime how to echo a line without a
|
|
# newline.
|
|
#
|
|
count=`echo "\\c" | wc -c`
|
|
if [ ${count} -ne 0 ] ; then
|
|
EARG="-n"
|
|
EOL=""
|
|
else
|
|
EARG=""
|
|
EOL="\\c"
|
|
fi
|
|
|
|
#
|
|
# Function to make sure they do a backup
|
|
#
|
|
|
|
WARNING=\
|
|
"
|
|
|
|
*******************************************************************************
|
|
*******************************************************************************
|
|
*******************************************************************************
|
|
**** ****
|
|
**** WARNING!!! WARNING!!! WARNING!!! ****
|
|
**** ****
|
|
**** ALL SOURCE CODE SHOULD BE BACKED UP BEFORE RUNNING THIS PROGRAM!! ****
|
|
**** ****
|
|
**** WARNING!!! WARNING!!! WARNING!!! ****
|
|
**** ****
|
|
*******************************************************************************
|
|
*******************************************************************************
|
|
*******************************************************************************
|
|
|
|
"
|
|
|
|
verify_backup()
|
|
{
|
|
echo "$WARNING"
|
|
continue="yes"
|
|
while [ $continue = "yes" ]
|
|
do
|
|
echo ${EARG} "Do you wish to update the source tree at this time [y|n]? " ${EOL}
|
|
read answer
|
|
case $answer in
|
|
[yY]*)
|
|
continue="no"
|
|
;;
|
|
[nN]*)
|
|
echo
|
|
echo "Exitting at user request"
|
|
echo
|
|
exit 0
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
#
|
|
# Default tools to use...
|
|
#
|
|
# NOTE: The GNU versions of both of these are faster.
|
|
#
|
|
find_prog=find
|
|
xargs_prog=xargs
|
|
|
|
#
|
|
# process the options
|
|
#
|
|
|
|
verbose=""
|
|
suffix=""
|
|
mode=""
|
|
base_directory=.
|
|
do_files="no"
|
|
do_prompt="yes"
|
|
replacement_file=""
|
|
|
|
while getopts sfp:b:v OPT
|
|
do
|
|
case "$OPT" in
|
|
v)
|
|
verbose="yes";;
|
|
s)
|
|
do_prompt="no";;
|
|
b)
|
|
base_directory=${OPTARG};;
|
|
p)
|
|
replacement_file=${OPTARG};;
|
|
f)
|
|
do_files="yes";;
|
|
*)
|
|
fatal
|
|
esac
|
|
done
|
|
|
|
let $((shiftcount = $OPTIND - 1))
|
|
shift $shiftcount
|
|
|
|
args=$*
|
|
|
|
#
|
|
# Make sure they have done a backup
|
|
#
|
|
|
|
if [ ${do_prompt} = "yes" ]
|
|
then
|
|
verify_backup
|
|
fi
|
|
|
|
#
|
|
# Validate the base directory
|
|
#
|
|
|
|
if [ ! -d $base_directory ]
|
|
then
|
|
fatal "${base_directory} does not exist"
|
|
fi
|
|
|
|
#
|
|
# Validate the replacement file
|
|
#
|
|
|
|
if [ ! -r $replacement_file ]
|
|
then
|
|
fatal "${replacement_file} does not exist or is not readable"
|
|
fi
|
|
|
|
|
|
#
|
|
# Verify enough of the RTEMS environment variables are set
|
|
#
|
|
|
|
RTEMS_HOME=/usr1/rtems/rtemsdoc-work
|
|
if [ ! -d "${RTEMS_HOME}" ]
|
|
then
|
|
fatal "RTEMS_HOME environment variable is not initialized"
|
|
fi
|
|
|
|
#
|
|
# Update the files
|
|
#
|
|
|
|
generate_list()
|
|
{
|
|
if [ ${do_files} = "yes" ]
|
|
then
|
|
for i in $args
|
|
do
|
|
echo $i
|
|
done
|
|
else
|
|
${find_prog} ${base_directory} \( -name "*.[ch]" -o -name "*.inl" \) -print
|
|
fi
|
|
}
|
|
|
|
generate_list | ${xargs_prog} |
|
|
while read line
|
|
do
|
|
|
|
if [ ${verbose} = yes ] ; then
|
|
echo ${RTEMS_HOME}/tools/word-replace -p ${replacement_file} ${line}
|
|
fi
|
|
${RTEMS_HOME}/tools/word-replace -p ${replacement_file} ${line}
|
|
if [ $? -ne 0 ]
|
|
then
|
|
exit 1
|
|
fi
|
|
for file in ${line}
|
|
do
|
|
mv ${file}.fixed ${file}
|
|
done
|
|
done
|
|
|
|
exit 0
|
|
|
|
# Local Variables: ***
|
|
# mode:ksh ***
|
|
# End: ***
|