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