mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-07-14 08:27:34 +02:00
adding initial host system module
This commit is contained in:
parent
e9d6f1857a
commit
2534e81d5b
2 changed files with 49 additions and 0 deletions
15
lib/chibi/system.module
Normal file
15
lib/chibi/system.module
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
|
||||||
|
(define-module (chibi system)
|
||||||
|
(export user-information user-name user-password
|
||||||
|
user-id user-group-id user-gecos user-home user-shell
|
||||||
|
current-user-id current-group-id
|
||||||
|
current-effective-user-id current-effective-group-id
|
||||||
|
set-current-user-id! set-current-effective-user-id!
|
||||||
|
set-current-group-id! set-current-effective-group-id!
|
||||||
|
current-session-id create-session
|
||||||
|
set-root-directory!)
|
||||||
|
(import-immutable (scheme))
|
||||||
|
(include-shared "system")
|
||||||
|
;;(include "system.scm")
|
||||||
|
)
|
||||||
|
|
34
lib/chibi/system.stub
Normal file
34
lib/chibi/system.stub
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
|
||||||
|
(c-system-include "unistd.h")
|
||||||
|
(c-system-include "pwd.h")
|
||||||
|
(c-system-include "sys/types.h")
|
||||||
|
|
||||||
|
(define-c-struct passwd
|
||||||
|
predicate: user?
|
||||||
|
(string pw_name user-name)
|
||||||
|
(string pw_passwd user-password)
|
||||||
|
(uid_t pw_uid user-id)
|
||||||
|
(gid_t pw_gid user-group-id)
|
||||||
|
(string pw_gecos user-gecos)
|
||||||
|
(string pw_dir user-home)
|
||||||
|
(string pw_shell user-shell))
|
||||||
|
|
||||||
|
(define-c uid_t (current-user-id "getuid") ())
|
||||||
|
(define-c gid_t (current-group-id "getgid") ())
|
||||||
|
(define-c uid_t (current-effective-user-id "geteuid") ())
|
||||||
|
(define-c gid_t (current-effective-group-id "getegid") ())
|
||||||
|
|
||||||
|
(define-c errno (set-current-user-id! "setuid") (uid_t))
|
||||||
|
(define-c errno (set-current-effective-user-id! "seteuid") (uid_t))
|
||||||
|
(define-c errno (set-current-group-id! "setgid") (gid_t))
|
||||||
|
(define-c errno (set-current-effective-group-id! "setegid") (gid_t))
|
||||||
|
|
||||||
|
(define-c pid_t (current-session-id "getsid") ((default 0 pid_t)))
|
||||||
|
(define-c pid_t (create-session "setsid") ())
|
||||||
|
|
||||||
|
(define-c errno (set-root-directory! "chroot") (string))
|
||||||
|
|
||||||
|
;; (define-c errno getpwuid_r
|
||||||
|
;; (uid_t (result passwd) (result (array char arg3))
|
||||||
|
;; (value 256 int) (result pointer passwd)))
|
||||||
|
|
Loading…
Add table
Reference in a new issue