[Lldb-commits] [lldb] r131924 - in /lldb/trunk/utils: git-svn/ git-svn/convert.py test/lldb-disasm.py

Johnny Chen johnny.chen at apple.com
Mon May 23 14:50:12 PDT 2011


Author: johnny
Date: Mon May 23 16:50:12 2011
New Revision: 131924

URL: http://llvm.org/viewvc/llvm-project?rev=131924&view=rev
Log:
Add a Python utility to help convert the Mail.app saved 'Raw Message Source' .eml file to a git-am friendly file.

Added:
    lldb/trunk/utils/git-svn/
    lldb/trunk/utils/git-svn/convert.py   (with props)
Modified:
    lldb/trunk/utils/test/lldb-disasm.py

Added: lldb/trunk/utils/git-svn/convert.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/utils/git-svn/convert.py?rev=131924&view=auto
==============================================================================
--- lldb/trunk/utils/git-svn/convert.py (added)
+++ lldb/trunk/utils/git-svn/convert.py Mon May 23 16:50:12 2011
@@ -0,0 +1,65 @@
+#!/usr/bin/env python
+
+"""
+Convert the raw message sources from git patch emails to git-am friendly files.
+
+Usage:
+
+1. Mail.app -> Save As -> api.eml (Raw Message Source)
+2. .../convert.py api.eml
+3. git am --signoff < api.eml
+4. git commit -a
+"""
+
+import os, re, sys
+import StringIO
+
+def usage(problem_file=None):
+    if problem_file:
+        print "%s is not a file" % problem_file
+    print "Usage: convert.py raw-message-source [raw-message-source2 ...]"
+    sys.exit(0)
+
+def do_convert(file):
+    """Skip all preceding mail message headers until 'From: ' is encountered.
+    Then for each line ('From: ' header included), replace the dos style CRLF
+    end-of-line with unix style LF end-of-line.
+    """
+    print "converting %s ..." % file
+
+    with open(file, 'r') as f_in:
+        content = f_in.read()
+
+    # The new content to be written back to the same file.
+    new_content = StringIO.StringIO()
+
+    # Boolean flag controls whether to start printing lines.
+    from_header_seen = False
+
+    # By default, splitlines() don't include line breaks.  CRLF should be gone.
+    for line in content.splitlines():
+        # Wait till we scan the 'From: ' header before start printing the lines.
+        if not from_header_seen:
+            if not line.startswith('From: '):
+                continue
+            else:
+                from_header_seen = True
+
+        print >> new_content, line
+
+    with open(file, 'w') as f_out:
+        f_out.write(new_content.getvalue())
+
+    print "done"
+
+def main():
+    if len(sys.argv) == 1:
+        usage()
+    # Convert the raw message source one by one.
+    for file in sys.argv[1:]:
+        if not os.path.isfile(file):
+            usage(file)
+        do_convert(file)
+
+if __name__ == '__main__':
+    main()

Propchange: lldb/trunk/utils/git-svn/convert.py
------------------------------------------------------------------------------
    svn:executable = *

Modified: lldb/trunk/utils/test/lldb-disasm.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/utils/test/lldb-disasm.py?rev=131924&r1=131923&r2=131924&view=diff
==============================================================================
--- lldb/trunk/utils/test/lldb-disasm.py (original)
+++ lldb/trunk/utils/test/lldb-disasm.py Mon May 23 16:50:12 2011
@@ -137,11 +137,11 @@
                             count = count + 1
                             print "returning symbol:", s.GetName()
                         yield s.GetName()
-                    #print "start address:", s.GetStartAddress()
-                    #print "end address:", s.GetEndAddress()
-                    #s.GetDescription(stream)
-                    #print "symbol description:", stream.GetData()
-                    #stream.Clear()
+                    print "start address:", s.GetStartAddress()
+                    print "end address:", s.GetEndAddress()
+                    s.GetDescription(stream)
+                    print "symbol description:", stream.GetData()
+                    stream.Clear()
 
     # Disassembly time.
     for symbol in symbol_iter(num_symbols, symbols_to_disassemble, target):





More information about the lldb-commits mailing list