use omit_members sometimes
This commit is contained in:
@@ -160,8 +160,12 @@ export fn _nss_turbo_getgrgid_r(
|
||||
buflen: usize,
|
||||
errnop: *c_int,
|
||||
) c.enum_nss_status {
|
||||
const db = getDBErrno(errnop) orelse return c.NSS_STATUS_UNAVAIL;
|
||||
var cgroup = db.getgrgid(gid, buffer[0..buflen]) catch |err| switch (err) {
|
||||
const state = getStateErrno(errnop) orelse return c.NSS_STATUS_UNAVAIL;
|
||||
const db = state.file.db;
|
||||
const omit_members = state.omit_members;
|
||||
|
||||
var buf = buffer[0..buflen];
|
||||
var cgroup = db.getgrgid(gid, buf, omit_members) catch |err| switch (err) {
|
||||
error.BufferTooSmall => {
|
||||
errnop.* = @enumToInt(os.E.RANGE);
|
||||
return c.NSS_STATUS_TRYAGAIN;
|
||||
@@ -184,10 +188,13 @@ export fn _nss_turbo_getgrnam_r(
|
||||
buflen: usize,
|
||||
errnop: *c_int,
|
||||
) c.enum_nss_status {
|
||||
const db = getDBErrno(errnop) orelse return c.NSS_STATUS_UNAVAIL;
|
||||
const state = getStateErrno(errnop) orelse return c.NSS_STATUS_UNAVAIL;
|
||||
const db = state.file.db;
|
||||
const omit_members = state.omit_members;
|
||||
|
||||
const nameSlice = mem.sliceTo(name, 0);
|
||||
var buf = buffer[0..buflen];
|
||||
var cgroup = db.getgrnam(nameSlice, buf) catch |err| switch (err) {
|
||||
var cgroup = db.getgrnam(nameSlice, buf, omit_members) catch |err| switch (err) {
|
||||
error.BufferTooSmall => {
|
||||
errnop.* = @enumToInt(os.E.RANGE);
|
||||
return c.NSS_STATUS_TRYAGAIN;
|
||||
@@ -267,16 +274,20 @@ export fn _nss_turbo_getgrent_r(
|
||||
return c.NSS_STATUS_NOTFOUND;
|
||||
};
|
||||
|
||||
const buf = buffer[0..buflen];
|
||||
const cgroup = state.file.db.packCGroup(group, buf) catch |err| switch (err) {
|
||||
const cgroup1 = if (state.omit_members)
|
||||
DB.packCGroupNoMembers(group, buffer[0..buflen])
|
||||
else
|
||||
state.file.db.packCGroup(group, buffer[0..buflen]);
|
||||
|
||||
if (cgroup1) |cgroup| {
|
||||
result.* = cgroup;
|
||||
return c.NSS_STATUS_SUCCESS;
|
||||
} else |err| switch (err) {
|
||||
error.BufferTooSmall => {
|
||||
errnop.* = @enumToInt(os.E.RANGE);
|
||||
return c.NSS_STATUS_TRYAGAIN;
|
||||
},
|
||||
};
|
||||
|
||||
result.* = cgroup;
|
||||
return c.NSS_STATUS_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
export fn _nss_turbo_getpwent_r(
|
||||
|
||||
Reference in New Issue
Block a user