mutt stable branch with some hacks
at master 89 lines 1.5 kB view raw
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