From ae68ff085724dd35d60151bd153e80b8b0776873 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 27 May 1997 12:40:11 +0000 Subject: Initial revision --- doc/tools/update | 215 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 doc/tools/update (limited to 'doc/tools/update') diff --git a/doc/tools/update b/doc/tools/update new file mode 100644 index 0000000000..284bb3f2b2 --- /dev/null +++ b/doc/tools/update @@ -0,0 +1,215 @@ +#!/bin/ksh +# +# update,v 1.2 1995/05/31 17:20:58 joel Exp +# +# 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. + +# 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="${RTEMS_HOME}/update-tools/310_to_320_list" + +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 +# + +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 + ${RTEMS_HOME}/update-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: *** -- cgit v1.2.3