generator: Use python2/3 binary read/write method
authorKyle Manna <kyle@kylemanna.com>
Sat, 19 Sep 2015 21:30:21 +0000 (14:30 -0700)
committerKyle Manna <kyle@kylemanna.com>
Mon, 21 Sep 2015 01:48:06 +0000 (18:48 -0700)
* This works with python2 and python3

generator/nanopb_generator.py

index 17cb674..c2acb06 100755 (executable)
@@ -1440,14 +1440,15 @@ def main_cli():
 def main_plugin():
     '''Main function when invoked as a protoc plugin.'''
 
-    import sys
+    import io, sys
     if sys.platform == "win32":
         import os, msvcrt
         # Set stdin and stdout to binary mode
         msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY)
         msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
     
-    data = sys.stdin.read()
+    data = io.open(sys.stdin.fileno(), "rb").read()
+
     request = plugin_pb2.CodeGeneratorRequest.FromString(data)
     
     try:
@@ -1490,7 +1491,7 @@ def main_plugin():
                 f.name = results['sourcename']
                 f.content = results['sourcedata']    
     
-    sys.stdout.write(response.SerializeToString())
+    io.open(sys.stdout.fileno(), "wb").write(response.SerializeToString())
 
 if __name__ == '__main__':
     # Check if we are running as a plugin under protoc