mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-18 21:29:19 +02:00
parent
7885db95cf
commit
0bbb60060a
2 changed files with 32 additions and 11 deletions
|
@ -24,5 +24,5 @@
|
|||
(getpwuid_r user (make-string 1024)))))
|
||||
(define (group-information group)
|
||||
(safe-car (if (string? group)
|
||||
(getgrnam_r group (make-string 1024))
|
||||
(getgrgid_r group (make-string 1024)))))))))
|
||||
(getgrnam-safe group (make-string 1024))
|
||||
(getgrgid-safe group (make-string 1024)))))))))
|
||||
|
|
|
@ -83,15 +83,36 @@
|
|||
(cond-expand
|
||||
(emscripten)
|
||||
(else
|
||||
(define-c errno getgrgid_r
|
||||
(gid_t (result group)
|
||||
(c-declare "
|
||||
int getgrnam_safe(const char* name, struct group* grp,
|
||||
char* buf, size_t buflen,
|
||||
struct group** result) {
|
||||
int res = getgrnam_r(name, grp, buf, buflen, result);
|
||||
if (res == 0 && result == NULL) {
|
||||
res = errno ? errno : ENOENT;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
int getgrgid_safe(gid_t gid, struct group* grp,
|
||||
char* buf, size_t buflen,
|
||||
struct group** result) {
|
||||
int res = getgrgid_r(gid, grp, buf, buflen, result);
|
||||
if (res == 0 && result == NULL) {
|
||||
res = errno ? errno : ENOENT;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
")
|
||||
|
||||
(define-c errno getgrgid-safe
|
||||
(gid_t (result group)
|
||||
(link string)
|
||||
(value (string-size arg2) int)
|
||||
(result pointer group)))
|
||||
|
||||
(define-c errno getgrnam-safe
|
||||
(string (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)))))
|
||||
(result pointer group)))))
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue