Sha256: b74e1bacccb5e1f22c6c9683aa4354192c4cbb4e70ffda242b5f690cf8f3c631

Contents?: true

Size: 1.51 KB

Versions: 9

Compression:

Stored size: 1.51 KB

Contents

#include <sys/utsname.h>
#include "ruby.h"

#if defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER)
	#pragma GCC optimize ("O3")
	#pragma GCC diagnostic warning "-Wall"
#elif defined(__clang__)
	#pragma clang optimize on
	#pragma clang diagnostic warning "-Wall"
#elif defined(__INTEL_COMPILER)
	#pragma intel optimization_level 3
#endif

static struct utsname buf ;

static char *sysname = "", *nodename = "" ;
static char *release = "", *version = "", *machine = "" ;

void init_buf() {
	char status = uname(&buf) ;

	if (status > -1) {
		sysname = buf.sysname ;
		nodename = buf.nodename ;
		release = buf.release ;
		version = buf.version ;
		machine = buf.machine ;
	}
}

static VALUE getSysname(VALUE obj) {
	return rb_str_new_cstr(sysname) ;
}

static VALUE getNodename(VALUE obj) {
	return rb_str_new_cstr(nodename) ;
}

static VALUE getRelease(VALUE obj) {
	return rb_str_new_cstr(release) ;
}

static VALUE getVersion(VALUE obj) {
	return rb_str_new_cstr(version) ;
}

static VALUE getMachine(VALUE obj) {
	return rb_str_new_cstr(machine) ;
}

void Init_utsname() {
	init_buf() ;

	VALUE _linux_stat = rb_define_module("LinuxStat") ;
	VALUE _uname = rb_define_module_under(_linux_stat, "Uname") ;

	rb_define_module_function(_uname, "sysname", getSysname, 0) ;
	rb_define_module_function(_uname, "nodename", getNodename, 0) ;
	rb_define_module_function(_uname, "release", getRelease, 0) ;
	rb_define_module_function(_uname, "version", getVersion, 0) ;
	rb_define_module_function(_uname, "machine", getMachine, 0) ;
}

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
linux_stat-2.2.3 ext/utsname/utsname.c
linux_stat-2.2.2 ext/utsname/utsname.c
linux_stat-2.2.1 ext/utsname/utsname.c
linux_stat-2.2.0 ext/utsname/utsname.c
linux_stat-2.1.2 ext/utsname/utsname.c
linux_stat-2.1.1 ext/utsname/utsname.c
linux_stat-2.1.0 ext/utsname/utsname.c
linux_stat-2.0.1 ext/utsname/utsname.c
linux_stat-1.6.0 ext/utsname/utsname.c