From cfc32794a7f35c09521628e98a102de56add2505 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Tue, 26 Dec 2023 18:04:37 -0600 Subject: [PATCH] os/user: add bare-bones implementation of the os/user package Signed-off-by: Elias Naur --- loader/goroot.go | 1 + src/os/user/user.go | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 src/os/user/user.go diff --git a/loader/goroot.go b/loader/goroot.go index 33e24aaa70..ea2f705dc9 100644 --- a/loader/goroot.go +++ b/loader/goroot.go @@ -244,6 +244,7 @@ func pathsToOverride(goMinor int, needsSyscallPackage bool) map[string]bool { "net/": true, "net/http/": false, "os/": true, + "os/user/": false, "reflect/": false, "runtime/": false, "sync/": true, diff --git a/src/os/user/user.go b/src/os/user/user.go new file mode 100644 index 0000000000..7939380fb9 --- /dev/null +++ b/src/os/user/user.go @@ -0,0 +1,41 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package user + +import "errors" + +// User represents a user account. +type User struct { + // Uid is the user ID. + // On POSIX systems, this is a decimal number representing the uid. + // On Windows, this is a security identifier (SID) in a string format. + // On Plan 9, this is the contents of /dev/user. + Uid string + // Gid is the primary group ID. + // On POSIX systems, this is a decimal number representing the gid. + // On Windows, this is a SID in a string format. + // On Plan 9, this is the contents of /dev/user. + Gid string + // Username is the login name. + Username string + // Name is the user's real or display name. + // It might be blank. + // On POSIX systems, this is the first (or only) entry in the GECOS field + // list. + // On Windows, this is the user's display name. + // On Plan 9, this is the contents of /dev/user. + Name string + // HomeDir is the path to the user's home directory (if they have one). + HomeDir string +} + +// Current returns the current user. +// +// The first call will cache the current user information. +// Subsequent calls will return the cached value and will not reflect +// changes to the current user. +func Current() (*User, error) { + return nil, errors.New("user: Current not implemented") +}