| #!/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} |