d4691e641b
non-i386, non-unix, and generatable files have been trimmed, but can easily be added in later if needed. gcc-2.7.2.1 will follow shortly, it's a very small delta to this and it's handy to have both available for reference for such little cost. The freebsd-specific changes will then be committed, and once the dust has settled, the bmakefiles will be committed to use this code.
110 lines
2.3 KiB
Bash
Executable File
110 lines
2.3 KiB
Bash
Executable File
#!/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}
|