mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-18 21:29:19 +02:00
97 lines
2.7 KiB
Text
97 lines
2.7 KiB
Text
|
|
(c-system-include "unistd.h")
|
|
(c-system-include "pwd.h")
|
|
(c-system-include "grp.h")
|
|
(c-system-include "sys/types.h")
|
|
|
|
;;> Returns the standard hostname of the current processor.
|
|
|
|
(define-c errno (get-host-name "gethostname")
|
|
((result (array char (auto-expand arg1))) (value 256 int)))
|
|
|
|
;;> \section{\scheme{(user-information name-or-id)}}
|
|
|
|
;;> Returns the password entry for the given user. \var{name-or-id}
|
|
;;> should be a string indicating the user name, or an integer
|
|
;;> for the user id.
|
|
|
|
(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))
|
|
|
|
;;> Accessors for the password entry structure returned by
|
|
;;> \scheme{user-information}.
|
|
;;/
|
|
|
|
(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))
|
|
|
|
;;> Accessors for the current user credentials.
|
|
;;/
|
|
|
|
;;> Returns the session id of the specified process,
|
|
;;> defaulting to the current process.
|
|
|
|
(define-c pid_t (current-session-id "getsid") ((default 0 pid_t)))
|
|
|
|
;;> Creates a new session.
|
|
|
|
(define-c pid_t (create-session "setsid") ())
|
|
|
|
;;> Set \var{string} to be the new root directory, so that
|
|
;;> paths beginning with "/" are resolved relative to the
|
|
;;> new root.
|
|
|
|
(define-c errno (set-root-directory! "chroot") (string))
|
|
|
|
(cond-expand
|
|
(emscripten)
|
|
(else
|
|
(define-c errno getpwuid_r
|
|
(uid_t (result passwd)
|
|
(link string)
|
|
(value (string-size arg2) int)
|
|
(result pointer passwd)))
|
|
|
|
(define-c errno getpwnam_r
|
|
(string (result passwd)
|
|
(link string)
|
|
(value (string-size arg2) int)
|
|
(result pointer passwd)))))
|
|
|
|
(define-c-struct group
|
|
predicate: group?
|
|
(string gr_name group-name)
|
|
(string gr_passwd group-password)
|
|
(gid_t gr_gid group-id)
|
|
;;((array string) gr_mem group-members)
|
|
)
|
|
|
|
(cond-expand
|
|
(emscripten)
|
|
(else
|
|
(define-c errno getgrgid_r
|
|
(gid_t (result group)
|
|
(link string)
|
|
(value (string-size arg2) int)
|
|
(result pointer group)))
|
|
|
|
(define-c errno getgrnam_r
|
|
(string (result group)
|
|
(link string)
|
|
(value (string-size arg2) int)
|
|
(result pointer group)))))
|
|
|