client: add Unix-socket handling to .connect() and .disconnect().
[pyassuan.git] / bin / get-info.py
index a00b12746d6d415f7f5141b07e20600c374779ee..9f0f50f04479ee3df6d1fb788740a6027af6621a 100755 (executable)
 """Simple pinentry program for getting server info.
 """
 
-import socket as _socket
-
 from pyassuan import __version__
 from pyassuan import client as _client
 from pyassuan import common as _common
+from pyassuan import error as _error
 
 
 if __name__ == '__main__':
@@ -46,20 +45,20 @@ if __name__ == '__main__':
         client.logger.setLevel(max(
                 logging.DEBUG, client.logger.level - 10*args.verbose))
 
-    socket = _socket.socket(_socket.AF_UNIX, _socket.SOCK_STREAM)
-    socket.connect(args.filename)
-    client.input = socket.makefile('r')
-    client.output = socket.makefile('w')
-    client.connect()
+    client.connect(socket_path=args.filename)
     try:
         response = client.read_response()
         assert response.type == 'OK', response
         client.make_request(_common.Request('HELP'))
         client.make_request(_common.Request('HELP GETINFO'))
         for attribute in ['version', 'pid', 'socket_name', 'ssh_socket_name']:
-            client.make_request(_common.Request('GETINFO', attribute))
+            try:
+                client.make_request(_common.Request('GETINFO', attribute))
+            except _error.AssuanError as e:
+                if e.message.startswith('No data'):
+                    pass
+                else:
+                    raise
     finally:
         client.make_request(_common.Request('BYE'))
         client.disconnect()
-        socket.shutdown(_socket.SHUT_RDWR)
-        socket.close()