aboutsummaryrefslogtreecommitdiff
path: root/gcc/fixcpp
diff options
context:
space:
mode:
authorRoland McGrath <roland@gcc.gnu.org>1992-05-07 06:35:33 +0000
committerRoland McGrath <roland@gcc.gnu.org>1992-05-07 06:35:33 +0000
commit73e2ea18f120d683cb0fe143704ada536a8546f6 (patch)
treebe4da3f759d7743796e5bfaa54b9355329d9fd89 /gcc/fixcpp
parentc2724863cc19200ed93e9943ac895c5843b243ee (diff)
downloadgcc-73e2ea18f120d683cb0fe143704ada536a8546f6.zip
gcc-73e2ea18f120d683cb0fe143704ada536a8546f6.tar.gz
gcc-73e2ea18f120d683cb0fe143704ada536a8546f6.tar.bz2
entered into RCS
From-SVN: r927
Diffstat (limited to 'gcc/fixcpp')
-rwxr-xr-xgcc/fixcpp109
1 files changed, 109 insertions, 0 deletions
diff --git a/gcc/fixcpp b/gcc/fixcpp
new file mode 100755
index 0000000..044353f
--- /dev/null
+++ b/gcc/fixcpp
@@ -0,0 +1,109 @@
+#!/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}