]> git.saurik.com Git - wxWidgets.git/blob - src/regex/splice.sh
should have been part of r74664: Avoid calling gtk_window_get_position() from "config...
[wxWidgets.git] / src / regex / splice.sh
1 #!/bin/sh
2 #############################################################################
3 # Name: splice
4 # Purpose: Splice a marked section of regcustom.h into regex.h
5 # Author: Mike Wetherell
6 # Copyright: (c) 2004 Mike Wetherell
7 # Licence: wxWindows licence
8 #############################################################################
9
10 #
11 # Works by greping for the marks then passing their line numbers to sed. Which
12 # is slighly the long way round, but allows some error checking.
13 #
14
15 SRC=regcustom.h
16 DST=regex.h
17 MARK1='^/\* --- begin --- \*/$'
18 MARK2='^/\* --- end --- \*/$'
19 PROG=`basename $0`
20 TMP=$DST.tmp
21
22 # findline(pattern, file)
23 # Prints the line number of the 1st line matching the pattern in the file
24 #
25 findline() {
26 if ! LINE=`grep -n -- "$1" "$2"`; then
27 echo "$PROG: marker '$1' not found in '$2'" >&2
28 return 1
29 fi
30 echo $LINE | sed -n '1s/[^0-9].*//p' # take just the line number
31 }
32
33 # findmarkers([out] line1, [out] line2, pattern1, pattern2, file)
34 # Returns (via the variables named in the 1st two parameters) the line
35 # numbers of the lines matching the patterns in file. Checks pattern1 comes
36 # before pattern2.
37 #
38 findmarkers() {
39 if ! LINE1=`findline "$3" "$5"` || ! LINE2=`findline "$4" "$5"`; then
40 return 1
41 fi
42 if [ $LINE1 -ge $LINE2 ]; then
43 echo "$PROG: marker '$3' not before '$4' in '$5'" >&2
44 return 1
45 fi
46 eval $1=$LINE1
47 eval $2=$LINE2
48 }
49
50 # find markers
51 #
52 if findmarkers SRCLINE1 SRCLINE2 "$MARK1" "$MARK2" $SRC &&
53 findmarkers DSTLINE1 DSTLINE2 "$MARK1" "$MARK2" $DST
54 then
55 # do splice
56 #
57 if (sed $DSTLINE1,\$d $DST &&
58 sed -n $SRCLINE1,${SRCLINE2}p $SRC &&
59 sed 1,${DSTLINE2}d $DST) > $TMP
60 then
61 mv $TMP $DST
62 exit 0
63 else
64 rm $TMP
65 fi
66 fi
67
68 exit 1