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