VMM: Add our virtio_mmio_dev struct and specify its interface functions
[akaros.git] / scripts / git / mbox-to-patches.sh
1 #!/bin/bash
2 # Barret Rhoden (brho@cs.berkeley.edu)
3 # Copyright 2016 Google Inc
4 #
5 # Converts an mbox to a patch set.
6 #
7 # Mostly, it is just git mailsplit, but it also processes the patches to remove
8 # a lot of the email headers and to rewrite any From: headers that were mangled
9 # by the mail server.
10
11 PATCHDIR="${PATCHDIR:-../patches}"
12
13 usage()
14 {
15         echo "$0 <mbox>"
16         exit -1
17 }
18
19 if [ $# -ne 1 ]
20 then
21         usage
22 fi
23
24 MBOX=$1
25
26 ls $PATCHDIR/*.patch 2>/dev/null
27
28 if [ $? -eq 0 ]
29 then
30         echo "$PATCHDIR has patches, remove and try again"
31         exit -1
32 fi
33
34 git mailsplit -o$PATCHDIR $MBOX > /dev/null
35 cd $PATCHDIR
36 for i in `ls`
37 do
38         # Remove all the header crap above From:
39         FROMLINE=`grep -n "^From:" $i | cut -f 1 -d':' | head -1`
40         FROMLINESUB=$(( ${FROMLINE} - 1 ))
41         sed -i -e "1,${FROMLINESUB}d" $i
42
43         # Gmail sucks and rewrites some Froms.  We'll catch it and replace From
44         # with X-Original-From
45         ORIGFROM=`grep "^X-Original-From" $i`
46         if [ $? -eq 0 ]
47         then
48                 ORIGFROM=`echo $ORIGFROM | sed 's/^X-Original-From:/From:/g'`
49                 sed -i "/^From:.*/c$ORIGFROM" $i
50         fi
51
52         # Remove header crap before the first blank
53         # X- stuff
54         SPACELINE=`grep -n "^$" $i | cut -f 1 -d':' | head -1`
55         sed -i -e "1,${SPACELINE}{ /^X-.*/d }" $i
56
57         # List stuff
58         SPACELINE=`grep -n "^$" $i | cut -f 1 -d':' | head -1`
59         sed -i -e "1,${SPACELINE}{ /^List-.*/d }" $i
60
61         # space-indented stuff for the X and List headers
62         SPACELINE=`grep -n "^$" $i | cut -f 1 -d':' | head -1`
63         sed -i -e "1,${SPACELINE}{ /^ .*/d }" $i
64
65         # grep subject, remove [akaros], remove " [PATCH xxx] ", (matching anything
66         # other than a ], so we get only the first ]), then changes
67         # non-letters/nums to -
68         SUBJECT=`grep "^Subject:" $i | cut -f 2- -d':' | sed 's/\[akaros\]//' |
69                  sed 's/^ *\[[^]]*\] //' | sed 's/[^[:alnum:]]/-/g'`
70
71         mv $i $i-$SUBJECT.patch
72 done
73 cd - > /dev/null