home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2J (Developer) / os42jdev.iso / NextDeveloper / Source / GNU / gcc / fixcpp < prev    next >
Text File  |  1993-09-21  |  2KB  |  110 lines

  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}
  110.