Annotation of GNUtools/cc/fixcpp, revision 1.1.1.1

1.1       root        1: #!/bin/sh
                      2: #
                      3: # NAME:
                      4: #      fixcpp - fix CPP errors
                      5: #
                      6: # SYNOPSIS:
                      7: #      fixcpp [-c][-p patch_file][-b bak_dir][-n new_dir] files(s)
                      8: #
                      9: # DESCRIPTION:
                     10: #      For each named file, use sed(1) to fixup any descriptive
                     11: #      text after #else or #endif or that is not properly
                     12: #      commented as this causes ANSI compilers to generate
                     13: #      unnecessary warnings.
                     14: #
                     15: #      Naturally this script is not guaranteed to be bullet
                     16: #      proof, use of -n or -b is advisable!
                     17: #
                     18: #      -c causes fixcpp to make sure that only files that
                     19: #      needed changing are affected by returning the original
                     20: #      file to its original location if no changes were needed.
                     21: #
                     22: #      -p causes fixcpp to append to a patch file the context
                     23: #      diffs of the changes wrought.
                     24: #
                     25: # SEE ALSO:
                     26: #      sed(1)
                     27: #
                     28: # AMENDED:
                     29: #      90/08/08 22:46:32 (sjg)
                     30: #
                     31: # RELEASED:
                     32: #      90/08/08 22:46:34 v1.4
                     33: #
                     34: # SCCSID:
                     35: #      @(#)fixcpp.sh 1.4 90/08/08 22:46:32 (sjg)
                     36: #
                     37: #      @(#)Copyright (c) 1990 Simon J. Gerraty
                     38: #
                     39: #       This is free software.  It comes with NO WARRANTY.
                     40: #       Everyone is granted permission to copy, modify and
                     41: #       redistribute this source code provided that all
                     42: #       recipients are given similar rights, and that the above
                     43: #       copyright notice and this notice are preserved in all
                     44: #       copies. 
                     45: 
                     46: TMPF=/tmp/fixcpp.$$
                     47: NEWDIR=
                     48: BAKDIR=
                     49: PATCHF=
                     50: CHECK=
                     51: 
                     52: set -- `getopt "cp:b:n:" $*`
                     53: if [ $? != 0 ]; then
                     54:        echo "$0 [-c][-p patch_file][-b bakup_dir][-n new_dir] file [file ...]" >&2
                     55:        exit 1
                     56: fi
                     57: for i in $*
                     58: do
                     59:        case $i in
                     60:        -c)     CHECK=yes; shift;;
                     61:        -p)     PATCHF=$2; shift 2;;
                     62:        -b)     BAKDIR=$2; shift 2;;
                     63:        -n)     NEWDIR=$2; shift 2;;
                     64:        --)     shift; break;;
                     65:        esac
                     66: done
                     67: NEWDIR=${NEWDIR:-.}
                     68: if [ $BAKDIR ]; then
                     69:        if [ ! -d $BAKDIR ]; then
                     70:                echo "$0: no such directory -- $BAKDIR" >&2
                     71:                exit 1
                     72:        fi
                     73: fi
                     74: 
                     75: 
                     76: 
                     77: for i in $*
                     78: do
                     79:        if [ $BAKDIR ]; then
                     80:                mv $i $BAKDIR
                     81:                infile=$BAKDIR/$i
                     82:        else
                     83:                if [ "$NEWDIR" = "." ]; then
                     84:                        mv $i ${TMPF}
                     85:                        infile=${TMPF}
                     86:                else
                     87:                        infile=$i
                     88:                fi
                     89:        fi      
                     90:        sed -e 's;^#\([         ]*e[nl][^       ]*[     ][      ]*\)\([^/       ][^\*].*\);#\1/* \2 */;' -e 's;^#\([    ]*e[nl][^       ]*[     ][      ]*\)\([^/       ]\)$;#\1/* \2 */;' $infile >${NEWDIR}/$i
                     91:        if [ "${CHECK}" = "yes" -o ${PATCHF} ]; then
                     92:                if cmp -s $infile ${NEWDIR}/$i ; then
                     93:                        if [ "${CHECK}" = "yes" ]; then
                     94:                                if [ $BAKDIR ]; then
                     95:                                        mv $infile ${NEWDIR}/$i
                     96:                                else
                     97:                                        rm ${NEWDIR}/$i
                     98:                                fi
                     99:                        fi
                    100:                else
                    101:                        if [ $PATCHF ]; then
                    102:                                diff -c $infile ${NEWDIR}/$i >> ${PATCHF}
                    103:                        fi
                    104:                fi
                    105:        fi
                    106: 
                    107: done
                    108: 
                    109: rm -f ${TMPF}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.