mirror of
https://github.com/gechandesu/pwd.git
synced 2026-03-05 21:01:51 +03:00
all: rename module to pwdb
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
# Access to the UNIX Password Database
|
# Access to the UNIX Password Database
|
||||||
|
|
||||||
`pwd` module provides thread-safe access to the UNIX user account and password
|
`pwdb` module provides thread-safe access to the UNIX user account and password
|
||||||
database.
|
database.
|
||||||
|
|
||||||
See [passwd(5)](https://man7.org/linux/man-pages/man5/passwd.5.html),
|
See [passwd(5)](https://man7.org/linux/man-pages/man5/passwd.5.html),
|
||||||
|
|||||||
@@ -1,24 +1,24 @@
|
|||||||
@[has_globals]
|
@[has_globals]
|
||||||
module pwd
|
module pwdb
|
||||||
|
|
||||||
import sync
|
import sync
|
||||||
|
|
||||||
$if windows {
|
$if windows {
|
||||||
$compile_error('pwd: MS Windows is not supported')
|
$compile_error('pwdb: MS Windows is not supported')
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
|
|
||||||
__global pwd_mutex &sync.Mutex
|
__global pwdb_mutex &sync.Mutex
|
||||||
|
|
||||||
fn init() {
|
fn init() {
|
||||||
pwd_mutex = sync.new_mutex()
|
pwdb_mutex = sync.new_mutex()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cleanup() {
|
fn cleanup() {
|
||||||
pwd_mutex.destroy()
|
pwdb_mutex.destroy()
|
||||||
unsafe { free(pwd_mutex) }
|
unsafe { free(pwdb_mutex) }
|
||||||
}
|
}
|
||||||
|
|
||||||
struct C.passwd {
|
struct C.passwd {
|
||||||
@@ -77,9 +77,9 @@ fn make_error(name string, uid int) IError {
|
|||||||
// get_by_uid returns the passwd database entry by user ID.
|
// get_by_uid returns the passwd database entry by user ID.
|
||||||
// If the entry is not found, the EntryNotFoundError error will be returned.
|
// If the entry is not found, the EntryNotFoundError error will be returned.
|
||||||
pub fn get_by_uid(uid int) !Passwd {
|
pub fn get_by_uid(uid int) !Passwd {
|
||||||
pwd_mutex.lock()
|
pwdb_mutex.lock()
|
||||||
defer {
|
defer {
|
||||||
pwd_mutex.unlock()
|
pwdb_mutex.unlock()
|
||||||
}
|
}
|
||||||
pw := C.getpwuid(uid)
|
pw := C.getpwuid(uid)
|
||||||
if isnil(pw) {
|
if isnil(pw) {
|
||||||
@@ -91,9 +91,9 @@ pub fn get_by_uid(uid int) !Passwd {
|
|||||||
// get_by_uid returns the passwd database entry by user name.
|
// get_by_uid returns the passwd database entry by user name.
|
||||||
// If the entry is not found, the EntryNotFoundError error will be returned.
|
// If the entry is not found, the EntryNotFoundError error will be returned.
|
||||||
pub fn get_by_name(name string) !Passwd {
|
pub fn get_by_name(name string) !Passwd {
|
||||||
pwd_mutex.lock()
|
pwdb_mutex.lock()
|
||||||
defer {
|
defer {
|
||||||
pwd_mutex.unlock()
|
pwdb_mutex.unlock()
|
||||||
}
|
}
|
||||||
pw := C.getpwnam(&char(name.str))
|
pw := C.getpwnam(&char(name.str))
|
||||||
if isnil(pw) {
|
if isnil(pw) {
|
||||||
@@ -105,11 +105,11 @@ pub fn get_by_name(name string) !Passwd {
|
|||||||
// get_all returns all entries from passwd database in arbitrary order.
|
// get_all returns all entries from passwd database in arbitrary order.
|
||||||
pub fn get_all() []Passwd {
|
pub fn get_all() []Passwd {
|
||||||
mut pwds := []Passwd{}
|
mut pwds := []Passwd{}
|
||||||
pwd_mutex.lock()
|
pwdb_mutex.lock()
|
||||||
C.setpwent()
|
C.setpwent()
|
||||||
defer {
|
defer {
|
||||||
C.endpwent()
|
C.endpwent()
|
||||||
pwd_mutex.unlock()
|
pwdb_mutex.unlock()
|
||||||
}
|
}
|
||||||
for {
|
for {
|
||||||
pw := C.getpwent()
|
pw := C.getpwent()
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
// vtest build: !windows
|
// vtest build: !windows
|
||||||
import pwd
|
import pwdb
|
||||||
|
|
||||||
fn test_get_by_uid() {
|
fn test_get_by_uid() {
|
||||||
pw := pwd.get_by_uid(0)!
|
pw := pwdb.get_by_uid(0)!
|
||||||
assert pw.name == 'root'
|
assert pw.name == 'root'
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_get_by_name() {
|
fn test_get_by_name() {
|
||||||
pw := pwd.get_by_name('root')!
|
pw := pwdb.get_by_name('root')!
|
||||||
assert pw.uid == 0
|
assert pw.uid == 0
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_get_all() {
|
fn test_get_all() {
|
||||||
pws := pwd.get_all()
|
pws := pwdb.get_all()
|
||||||
assert pws.len > 0
|
assert pws.len > 0
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user