util: Move packet trace file read to protolib
authorRadhika Jagtap <radhika.jagtap@ARM.com>
Sun, 10 Aug 2014 09:39:20 +0000 (05:39 -0400)
committerRadhika Jagtap <radhika.jagtap@ARM.com>
Sun, 10 Aug 2014 09:39:20 +0000 (05:39 -0400)
This patch moves the code for opening an input protobuf packet trace into
a function defined in the protobuf library. This is because the code is
commonly used in decode scripts and is independent of the src protobuf
message.

util/decode_packet_trace.py
util/protolib.py

index e6f36c295afa0cc562a37a098b2568bcd5131c9a..e9105753d756e07345919e12ecf61f572d285115 100755 (executable)
@@ -48,7 +48,6 @@
 # r,128,64,4000,0
 # w,232123,64,500000,0
 
-import gzip
 import protolib
 import sys
 
@@ -81,22 +80,8 @@ def main():
         print "Usage: ", sys.argv[0], " <protobuf input> <ASCII output>"
         exit(-1)
 
-    try:
-        # First see if this file is gzipped
-        try:
-            # Opening the file works even if it is not a gzip file
-            proto_in = gzip.open(sys.argv[1], 'rb')
-
-            # Force a check of the magic number by seeking in the
-            # file. If we do not do it here the error will occur when
-            # reading the first message.
-            proto_in.seek(1)
-            proto_in.seek(0)
-        except IOError:
-            proto_in = open(sys.argv[1], 'rb')
-    except IOError:
-        print "Failed to open ", sys.argv[1], " for reading"
-        exit(-1)
+    # Open the file in read mode
+    proto_in = protolib.openFileRd(sys.argv[1])
 
     try:
         ascii_out = open(sys.argv[2], 'w')
index e085a90f2bbc58c0f755ad6f936d468ea39b92cf..e0507cdd46280683f7cf57aea0ab67b3bc24d977 100644 (file)
 # with protobuf python messages. For eg, the decode scripts for different
 # types of proto objects can use the same function to decode a single message
 
+import gzip
 import struct
 
+def openFileRd(in_file):
+    """
+    This opens the file passed as argument for reading using an appropriate
+    function depending on if it is gzipped or not. It returns the file
+    handle.
+    """
+    try:
+        # First see if this file is gzipped
+        try:
+            # Opening the file works even if it is not a gzip file
+            proto_in = gzip.open(in_file, 'rb')
+
+            # Force a check of the magic number by seeking in the
+            # file. If we do not do it here the error will occur when
+            # reading the first message.
+            proto_in.seek(1)
+            proto_in.seek(0)
+        except IOError:
+            proto_in = open(in_file, 'rb')
+    except IOError:
+        print "Failed to open ", in_file, " for reading"
+        exit(-1)
+    return proto_in
+
 def DecodeVarint(in_file):
     """
     The decoding of the Varint32 is copied from