From b506d8fcc09819266facbac85f3c4052aa837641 Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Sat, 24 Apr 2021 13:32:26 +0300 Subject: [PATCH] os: use C.getlogin for os.loginname, instead of C.getlogin_r (C.getlogin_r absent on Android) --- vlib/os/os_nix.c.v | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/vlib/os/os_nix.c.v b/vlib/os/os_nix.c.v index 303e3de2f3..9766779b6d 100644 --- a/vlib/os/os_nix.c.v +++ b/vlib/os/os_nix.c.v @@ -53,7 +53,8 @@ fn C.symlink(&char, &char) int fn C.gethostname(&char, int) int -fn C.getlogin_r(&char, int) int +// NB: not available on Android fn C.getlogin_r(&char, int) int +fn C.getlogin() &char pub fn uname() Uname { mut u := Uname{} @@ -86,13 +87,9 @@ pub fn hostname() string { } pub fn loginname() string { - mut lgnname := '' - size := 256 - mut buf := unsafe { &char(malloc(size)) } - if C.getlogin_r(buf, size) == 0 { - lgnname = unsafe { cstring_to_vstring(buf) } - unsafe { free(buf) } - return lgnname + x := C.getlogin() + if !isnil(x) { + return unsafe { cstring_to_vstring(x) } } return '' }