home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- #
- # NAME:
- # fixcpp - fix CPP errors
- #
- # SYNOPSIS:
- # fixcpp [-c][-p patch_file][-b bak_dir][-n new_dir] files(s)
- #
- # DESCRIPTION:
- # For each named file, use sed(1) to fixup any descriptive
- # text after #else or #endif or that is not properly
- # commented as this causes ANSI compilers to generate
- # unnecessary warnings.
- #
- # Naturally this script is not guaranteed to be bullet
- # proof, use of -n or -b is advisable!
- #
- # -c causes fixcpp to make sure that only files that
- # needed changing are affected by returning the original
- # file to its original location if no changes were needed.
- #
- # -p causes fixcpp to append to a patch file the context
- # diffs of the changes wrought.
- #
- # SEE ALSO:
- # sed(1)
- #
- # AMENDED:
- # 90/08/08 22:46:32 (sjg)
- #
- # RELEASED:
- # 90/08/08 22:46:34 v1.4
- #
- # SCCSID:
- # @(#)fixcpp.sh 1.4 90/08/08 22:46:32 (sjg)
- #
- # @(#)Copyright (c) 1990 Simon J. Gerraty
- #
- # This is free software. It comes with NO WARRANTY.
- # Everyone is granted permission to copy, modify and
- # redistribute this source code provided that all
- # recipients are given similar rights, and that the above
- # copyright notice and this notice are preserved in all
- # copies.
-
- TMPF=/tmp/fixcpp.$$
- NEWDIR=
- BAKDIR=
- PATCHF=
- CHECK=
-
- set -- `getopt "cp:b:n:" $*`
- if [ $? != 0 ]; then
- echo "$0 [-c][-p patch_file][-b bakup_dir][-n new_dir] file [file ...]" >&2
- exit 1
- fi
- for i in $*
- do
- case $i in
- -c) CHECK=yes; shift;;
- -p) PATCHF=$2; shift 2;;
- -b) BAKDIR=$2; shift 2;;
- -n) NEWDIR=$2; shift 2;;
- --) shift; break;;
- esac
- done
- NEWDIR=${NEWDIR:-.}
- if [ $BAKDIR ]; then
- if [ ! -d $BAKDIR ]; then
- echo "$0: no such directory -- $BAKDIR" >&2
- exit 1
- fi
- fi
-
-
-
- for i in $*
- do
- if [ $BAKDIR ]; then
- mv $i $BAKDIR
- infile=$BAKDIR/$i
- else
- if [ "$NEWDIR" = "." ]; then
- mv $i ${TMPF}
- infile=${TMPF}
- else
- infile=$i
- fi
- fi
- sed -e 's;^#\([ ]*e[nl][^ ]*[ ][ ]*\)\([^/ ][^\*].*\);#\1/* \2 */;' -e 's;^#\([ ]*e[nl][^ ]*[ ][ ]*\)\([^/ ]\)$;#\1/* \2 */;' $infile >${NEWDIR}/$i
- if [ "${CHECK}" = "yes" -o ${PATCHF} ]; then
- if cmp -s $infile ${NEWDIR}/$i ; then
- if [ "${CHECK}" = "yes" ]; then
- if [ $BAKDIR ]; then
- mv $infile ${NEWDIR}/$i
- else
- rm ${NEWDIR}/$i
- fi
- fi
- else
- if [ $PATCHF ]; then
- diff -c $infile ${NEWDIR}/$i >> ${PATCHF}
- fi
- fi
- fi
-
- done
-
- rm -f ${TMPF}
-