mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
os: add os.uname()
This commit is contained in:
parent
2ef0f15b34
commit
206e64d72c
@ -1358,3 +1358,12 @@ pub fn create(path string) ?File {
|
|||||||
opened: true
|
opened: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub struct Uname {
|
||||||
|
pub mut:
|
||||||
|
sysname string
|
||||||
|
nodename string
|
||||||
|
release string
|
||||||
|
version string
|
||||||
|
machine string
|
||||||
|
}
|
||||||
|
@ -5,6 +5,7 @@ import strings
|
|||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
#include <sys/utsname.h>
|
||||||
|
|
||||||
pub const (
|
pub const (
|
||||||
path_separator = '/'
|
path_separator = '/'
|
||||||
@ -17,8 +18,32 @@ const (
|
|||||||
stderr_value = 2
|
stderr_value = 2
|
||||||
)
|
)
|
||||||
|
|
||||||
|
struct C.utsname {
|
||||||
|
mut:
|
||||||
|
sysname charptr
|
||||||
|
nodename charptr
|
||||||
|
release charptr
|
||||||
|
version charptr
|
||||||
|
machine charptr
|
||||||
|
}
|
||||||
|
|
||||||
|
fn C.uname(name voidptr) int
|
||||||
fn C.symlink(charptr, charptr) int
|
fn C.symlink(charptr, charptr) int
|
||||||
|
|
||||||
|
pub fn uname() Uname {
|
||||||
|
mut u := Uname{}
|
||||||
|
d := &C.utsname( malloc(int(sizeof(C.utsname))) )
|
||||||
|
if C.uname(d) == 0 {
|
||||||
|
u.sysname = cstring_to_vstring(d.sysname)
|
||||||
|
u.nodename = cstring_to_vstring(d.nodename)
|
||||||
|
u.release = cstring_to_vstring(d.release)
|
||||||
|
u.version = cstring_to_vstring(d.version)
|
||||||
|
u.machine = cstring_to_vstring(d.machine)
|
||||||
|
}
|
||||||
|
free(d)
|
||||||
|
return u
|
||||||
|
}
|
||||||
|
|
||||||
fn init_os_args(argc int, argv &&byte) []string {
|
fn init_os_args(argc int, argv &&byte) []string {
|
||||||
mut args := []string{}
|
mut args := []string{}
|
||||||
//mut args := []string(make(0, argc, sizeof(string)))
|
//mut args := []string(make(0, argc, sizeof(string)))
|
||||||
|
@ -343,3 +343,12 @@ fn test_basedir() {
|
|||||||
}
|
}
|
||||||
assert os.base_dir('filename') == 'filename'
|
assert os.base_dir('filename') == 'filename'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn test_uname() {
|
||||||
|
u := os.uname()
|
||||||
|
assert u.sysname.len > 0
|
||||||
|
assert u.nodename.len > 0
|
||||||
|
assert u.release.len > 0
|
||||||
|
assert u.version.len > 0
|
||||||
|
assert u.machine.len > 0
|
||||||
|
}
|
||||||
|
@ -317,7 +317,7 @@ pub:
|
|||||||
// status_ constants
|
// status_ constants
|
||||||
code u32
|
code u32
|
||||||
flags u32
|
flags u32
|
||||||
|
|
||||||
record &ExceptionRecord
|
record &ExceptionRecord
|
||||||
address voidptr
|
address voidptr
|
||||||
param_count u32
|
param_count u32
|
||||||
@ -353,3 +353,15 @@ pub fn add_vectored_exception_handler(first bool, handler VectoredExceptionHandl
|
|||||||
pub fn debugger_present() bool {
|
pub fn debugger_present() bool {
|
||||||
return C.IsDebuggerPresent()
|
return C.IsDebuggerPresent()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn uname() Uname {
|
||||||
|
// TODO: implement `os.uname()` for windows
|
||||||
|
unknown := 'unknown'
|
||||||
|
return Uname{
|
||||||
|
sysname: unknown
|
||||||
|
nodename: unknown
|
||||||
|
release: unknown
|
||||||
|
version: unknown
|
||||||
|
machine: unknown
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user