// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "mojo/nacl/sfi/nacl_bindings/monacl_sel_main.h"

#include "mojo/nacl/sfi/nacl_bindings/mojo_syscall.h"
#include "native_client/src/public/chrome_main.h"
#include "native_client/src/public/nacl_app.h"

namespace mojo {

int LaunchNaCl(NaClDesc* nexe_desc,
               NaClDesc* irt_desc,
               int app_argc,
               char* app_argv[],
               MojoHandle handle) {
  NaClChromeMainInit();

  struct NaClChromeMainArgs* args = NaClChromeMainArgsCreate();
  args->nexe_desc = nexe_desc;
  args->irt_desc = irt_desc;

  args->argc = app_argc;
  args->argv = app_argv;

  struct NaClApp* nap = NaClAppCreate();
  InjectMojo(nap, handle);

  int exit_status = 1;
  NaClChromeMainStart(nap, args, &exit_status);
  return exit_status;
}

void NaClExit(int code) {
  ::NaClExit(code);
}

}  // namespace mojo
