| Index: src/tools/posix_over_imc/nacl_launcher.py
|
| diff --git a/src/tools/posix_over_imc/nacl_launcher.py b/src/tools/posix_over_imc/nacl_launcher.py
|
| deleted file mode 100644
|
| index 7393d3e04e9e024b52db417078f52f01e4a0e707..0000000000000000000000000000000000000000
|
| --- a/src/tools/posix_over_imc/nacl_launcher.py
|
| +++ /dev/null
|
| @@ -1,96 +0,0 @@
|
| -# Copyright (c) 2011 The Native Client Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -import os
|
| -import subprocess
|
| -import struct
|
| -import sys
|
| -
|
| -import naclimc
|
| -
|
| -
|
| -# Descriptor for a bound socket that the NaCl browser plugin sets up
|
| -NACL_PLUGIN_BOUND_SOCK = 3
|
| -
|
| -# Descriptors for connected sockets that the NaCl browser plugin sets up
|
| -NACL_PLUGIN_ASYNC_FROM_CHILD_FD = 6
|
| -NACL_PLUGIN_ASYNC_TO_CHILD_FD = 7
|
| -
|
| -
|
| -def PackStringList(strings):
|
| - return "".join(arg + "\0" for arg in strings)
|
| -
|
| -
|
| -def PackArgsMessage(argv, envv):
|
| - return (struct.pack("4sII", "ARGS", len(argv), len(envv))
|
| - + PackStringList(argv)
|
| - + PackStringList(envv))
|
| -
|
| -
|
| -def SpawnSelLdrWithSockets(args, fd_slots, **kwargs):
|
| - sockets = [(fd_slot, naclimc.os_socketpair())
|
| - for fd_slot in fd_slots]
|
| - extra_args = []
|
| - for fd_slot, (child_fd, parent_fd) in sockets:
|
| - extra_args.extend(["-i", "%i:%i" % (fd_slot, child_fd)])
|
| -
|
| - def PreExec():
|
| - for fd_slot, (child_fd, parent_fd) in sockets:
|
| - os.close(parent_fd)
|
| -
|
| - cmd = [os.environ["NACL_SEL_LDR"]] + extra_args + args
|
| - proc = subprocess.Popen(cmd, preexec_fn=PreExec, **kwargs)
|
| - for fd_slot, (child_fd, parent_fd) in sockets:
|
| - os.close(child_fd)
|
| - result_sockets = [naclimc.from_os_socket(parent_fd)
|
| - for fd_slot, (child_fd, parent_fd) in sockets]
|
| - return proc, result_sockets
|
| -
|
| -
|
| -def FileServer(recv_socket, send_socket):
|
| - while True:
|
| - try:
|
| - message, fds = recv_socket.imc_recvmsg(1024)
|
| - # TODO(mseaborn): When the Python bindings raise a specific
|
| - # exception type, we should test for that for EOF instead.
|
| - except Exception:
|
| - break
|
| - method_id = message[:4]
|
| - message_body = message[4:]
|
| - if method_id == "Open":
|
| - # TODO(mseaborn): When we handle more types of request, we can
|
| - # factor out the unmarshalling code.
|
| - format = "ii"
|
| - flags, mode = struct.unpack_from(format, message_body)
|
| - filename = message_body[struct.calcsize(format):]
|
| - try:
|
| - fd = os.open(filename, flags)
|
| - except OSError:
|
| - send_socket.imc_sendmsg("Fail", tuple([]))
|
| - else:
|
| - desc = naclimc.from_os_file_descriptor(fd)
|
| - send_socket.imc_sendmsg("Okay", tuple([desc]))
|
| -
|
| -
|
| -def Main(args):
|
| - lib_dir = os.environ["NACL_LIBRARY_DIR"]
|
| - sel_ldr_args = [
|
| - # TODO(mseaborn): Fix validation errors so that we do not need
|
| - # to use -s (stubout mode) with nacl-glibc.
|
| - "-s",
|
| - "--", os.path.join(lib_dir, "runnable-ld.so")]
|
| - proc, [fd1, recv_socket, send_socket] = SpawnSelLdrWithSockets(
|
| - sel_ldr_args,
|
| - [NACL_PLUGIN_BOUND_SOCK,
|
| - NACL_PLUGIN_ASYNC_FROM_CHILD_FD,
|
| - NACL_PLUGIN_ASYNC_TO_CHILD_FD])
|
| - argv = ["unused-argv0", "--library-path", lib_dir] + args
|
| - envv = ["NACL_FILE_RPC=1"]
|
| - send_socket.imc_sendmsg(PackArgsMessage(argv, envv), tuple([]))
|
| - FileServer(recv_socket, send_socket)
|
| - sys.exit(proc.wait())
|
| -
|
| -
|
| -if __name__ == "__main__":
|
| - Main(sys.argv[1:])
|
|
|