mutt stable branch with some hacks
1#!/bin/sh
2
3BASEVERSION=2
4
5cleanstruct () {
6 echo "$1" | sed -e 's/} *//' -e 's/;$//'
7}
8
9cleanbody () {
10 echo "$1" | sed -e 's/{ *//'
11}
12
13getstruct () {
14 STRUCT=""
15 BODY=''
16 inbody=0
17 case "$1" in
18 *'{') inbody=1 ;;
19 *';') return ;;
20 esac
21
22 while read line
23 do
24 if test $inbody -eq 0
25 then
26 case "$line" in
27 '{'*) inbody=1 ;;
28 *';') return ;;
29 esac
30 fi
31
32 case "$line" in
33 '} '*)
34 STRUCT=`cleanstruct "$line"`
35 break
36 ;;
37 '}')
38 read line
39 STRUCT=`cleanstruct "$line"`
40 break
41 ;;
42 '#'*) continue ;;
43 *)
44 if test $inbody -ne 0
45 then
46 BODY="$BODY $line"
47 fi
48 ;;
49 esac
50 done
51
52 case $STRUCT in
53 ADDRESS|LIST|BUFFER|PARAMETER|BODY|ENVELOPE|HEADER)
54 BODY=`cleanbody "$BODY"`
55 echo "$STRUCT: $BODY"
56 ;;
57 esac
58 return
59}
60
61DEST="$1"
62TMPD="$DEST.tmp"
63
64TEXT="$BASEVERSION"
65
66echo "/* base version: $BASEVERSION" > $TMPD
67while read line
68do
69 case "$line" in
70 'typedef struct'*)
71 STRUCT=`getstruct "$line"`
72 if test -n "$STRUCT"
73 then
74 NAME=`echo $STRUCT | cut -d: -f1`
75 BODY=`echo $STRUCT | cut -d' ' -f2-`
76 echo " * $NAME:" $BODY >> $TMPD
77 TEXT="$TEXT $NAME {$BODY}"
78 fi
79 ;;
80 esac
81done
82echo " */" >> $TMPD
83
84MD5TEXT=`echo "$TEXT" | ./mutt_md5`
85echo "#define HCACHEVER 0x"`echo $MD5TEXT | cut -c-8` >> $TMPD
86
87# TODO: validate we have all structs
88
89mv $TMPD $DEST