Example #1
0
MVMObject * MVM_platform_uname(MVMThreadContext *tc) {
    int error;
    uv_utsname_t uname;
    MVMObject *result;

    if ((error = uv_os_uname(&uname)) != 0)
        MVM_exception_throw_adhoc(tc, "Unable to uname: %s", uv_strerror(error));

    MVMROOT(tc, result, {
        MVMString *sysname = MVM_string_utf8_decode(tc, tc->instance->VMString, uname.sysname, strlen((char *)uname.sysname));
        MVMString *release = MVM_string_utf8_decode(tc, tc->instance->VMString, uname.release, strlen((char *)uname.release));
        MVMString *version = MVM_string_utf8_decode(tc, tc->instance->VMString, uname.version, strlen((char *)uname.version));
        MVMString *machine = MVM_string_utf8_decode(tc, tc->instance->VMString, uname.machine, strlen((char *)uname.machine));
        result = MVM_repr_alloc_init(tc, tc->instance->boot_types.BOOTStrArray);
        MVM_repr_bind_pos_s(tc, result, 0, sysname);
        MVM_repr_bind_pos_s(tc, result, 1, release);
        MVM_repr_bind_pos_s(tc, result, 2, version);
        MVM_repr_bind_pos_s(tc, result, 3, machine);
    });
Example #2
0
File: misc.c Project: luvit/luv
static int luv_os_uname(lua_State* L) {
  uv_utsname_t uname;

  int ret = uv_os_uname(&uname);
  if (ret == 0) {
    lua_newtable(L);
    lua_pushstring(L, uname.sysname);
    lua_setfield(L, -2, "sysname");
    lua_pushstring(L, uname.release);
    lua_setfield(L, -2, "release");
    lua_pushstring(L, uname.version);
    lua_setfield(L, -2, "version");
    lua_pushstring(L, uname.machine);
    lua_setfield(L, -2, "machine");
    ret = 1;
  }
  else
    ret = luv_error(L, ret);
  return ret;
}