Changeset View
Changeset View
Standalone View
Standalone View
lib/libc/net/nss_compat.c
Show First 20 Lines • Show All 91 Lines • ▼ Show 20 Lines | |||||
int | int | ||||
__nss_compat_getgrnam_r(void *retval, void *mdata, va_list ap) | __nss_compat_getgrnam_r(void *retval, void *mdata, va_list ap) | ||||
{ | { | ||||
int (*fn)(const char *, struct group *, char *, size_t, int *); | int (*fn)(const char *, struct group *, char *, size_t, int *); | ||||
const char *name; | const char *name; | ||||
struct group *grp; | struct group *grp; | ||||
char *buffer; | char *buffer; | ||||
int *errnop; | int *errnop, ns_status; | ||||
size_t bufsize; | size_t bufsize; | ||||
enum nss_status status; | enum nss_status nss_status; | ||||
fn = mdata; | fn = mdata; | ||||
name = va_arg(ap, const char *); | name = va_arg(ap, const char *); | ||||
grp = va_arg(ap, struct group *); | grp = va_arg(ap, struct group *); | ||||
buffer = va_arg(ap, char *); | buffer = va_arg(ap, char *); | ||||
bufsize = va_arg(ap, size_t); | bufsize = va_arg(ap, size_t); | ||||
errnop = va_arg(ap, int *); | errnop = va_arg(ap, int *); | ||||
status = fn(name, grp, buffer, bufsize, errnop); | nss_status = fn(name, grp, buffer, bufsize, errnop); | ||||
status = __nss_compat_result(status, *errnop); | ns_status = __nss_compat_result(nss_status, *errnop); | ||||
if (status == NS_SUCCESS) | if (ns_status == NS_SUCCESS) | ||||
*(struct group **)retval = grp; | *(struct group **)retval = grp; | ||||
return (status); | return (ns_status); | ||||
} | } | ||||
int | int | ||||
__nss_compat_getgrgid_r(void *retval, void *mdata, va_list ap) | __nss_compat_getgrgid_r(void *retval, void *mdata, va_list ap) | ||||
{ | { | ||||
int (*fn)(gid_t, struct group *, char *, size_t, int *); | int (*fn)(gid_t, struct group *, char *, size_t, int *); | ||||
gid_t gid; | gid_t gid; | ||||
struct group *grp; | struct group *grp; | ||||
char *buffer; | char *buffer; | ||||
int *errnop; | int *errnop, ns_status; | ||||
size_t bufsize; | size_t bufsize; | ||||
enum nss_status status; | enum nss_status nss_status; | ||||
fn = mdata; | fn = mdata; | ||||
gid = va_arg(ap, gid_t); | gid = va_arg(ap, gid_t); | ||||
grp = va_arg(ap, struct group *); | grp = va_arg(ap, struct group *); | ||||
buffer = va_arg(ap, char *); | buffer = va_arg(ap, char *); | ||||
bufsize = va_arg(ap, size_t); | bufsize = va_arg(ap, size_t); | ||||
errnop = va_arg(ap, int *); | errnop = va_arg(ap, int *); | ||||
status = fn(gid, grp, buffer, bufsize, errnop); | nss_status = fn(gid, grp, buffer, bufsize, errnop); | ||||
status = __nss_compat_result(status, *errnop); | ns_status = __nss_compat_result(nss_status, *errnop); | ||||
if (status == NS_SUCCESS) | if (ns_status == NS_SUCCESS) | ||||
*(struct group **)retval = grp; | *(struct group **)retval = grp; | ||||
return (status); | return (ns_status); | ||||
} | } | ||||
int | int | ||||
__nss_compat_getgrent_r(void *retval, void *mdata, va_list ap) | __nss_compat_getgrent_r(void *retval, void *mdata, va_list ap) | ||||
{ | { | ||||
int (*fn)(struct group *, char *, size_t, int *); | int (*fn)(struct group *, char *, size_t, int *); | ||||
struct group *grp; | struct group *grp; | ||||
char *buffer; | char *buffer; | ||||
int *errnop; | int *errnop, ns_status; | ||||
size_t bufsize; | size_t bufsize; | ||||
enum nss_status status; | enum nss_status nss_status; | ||||
if (CHECK_TERMINATOR(group)) | if (CHECK_TERMINATOR(group)) | ||||
return (NS_NOTFOUND); | return (NS_NOTFOUND); | ||||
fn = mdata; | fn = mdata; | ||||
grp = va_arg(ap, struct group *); | grp = va_arg(ap, struct group *); | ||||
buffer = va_arg(ap, char *); | buffer = va_arg(ap, char *); | ||||
bufsize = va_arg(ap, size_t); | bufsize = va_arg(ap, size_t); | ||||
errnop = va_arg(ap, int *); | errnop = va_arg(ap, int *); | ||||
status = fn(grp, buffer, bufsize, errnop); | nss_status = fn(grp, buffer, bufsize, errnop); | ||||
status = __nss_compat_result(status, *errnop); | ns_status = __nss_compat_result(nss_status, *errnop); | ||||
if (status == NS_SUCCESS) | if (ns_status == NS_SUCCESS) | ||||
*(struct group **)retval = grp; | *(struct group **)retval = grp; | ||||
else if (status != NS_RETURN) | else if (ns_status != NS_RETURN) | ||||
SET_TERMINATOR(group, &terminator); | SET_TERMINATOR(group, &terminator); | ||||
return (status); | return (ns_status); | ||||
} | } | ||||
int | int | ||||
__nss_compat_setgrent(void *retval, void *mdata, va_list ap) | __nss_compat_setgrent(void *retval, void *mdata, va_list ap) | ||||
{ | { | ||||
SET_TERMINATOR(group, NULL); | SET_TERMINATOR(group, NULL); | ||||
Show All 18 Lines | |||||
int | int | ||||
__nss_compat_getpwnam_r(void *retval, void *mdata, va_list ap) | __nss_compat_getpwnam_r(void *retval, void *mdata, va_list ap) | ||||
{ | { | ||||
int (*fn)(const char *, struct passwd *, char *, size_t, int *); | int (*fn)(const char *, struct passwd *, char *, size_t, int *); | ||||
const char *name; | const char *name; | ||||
struct passwd *pwd; | struct passwd *pwd; | ||||
char *buffer; | char *buffer; | ||||
int *errnop; | int *errnop, ns_status; | ||||
size_t bufsize; | size_t bufsize; | ||||
enum nss_status status; | enum nss_status nss_status; | ||||
fn = mdata; | fn = mdata; | ||||
name = va_arg(ap, const char *); | name = va_arg(ap, const char *); | ||||
pwd = va_arg(ap, struct passwd *); | pwd = va_arg(ap, struct passwd *); | ||||
buffer = va_arg(ap, char *); | buffer = va_arg(ap, char *); | ||||
bufsize = va_arg(ap, size_t); | bufsize = va_arg(ap, size_t); | ||||
errnop = va_arg(ap, int *); | errnop = va_arg(ap, int *); | ||||
status = fn(name, pwd, buffer, bufsize, errnop); | nss_status = fn(name, pwd, buffer, bufsize, errnop); | ||||
status = __nss_compat_result(status, *errnop); | ns_status = __nss_compat_result(nss_status, *errnop); | ||||
if (status == NS_SUCCESS) | if (ns_status == NS_SUCCESS) | ||||
*(struct passwd **)retval = pwd; | *(struct passwd **)retval = pwd; | ||||
return (status); | return (ns_status); | ||||
} | } | ||||
int | int | ||||
__nss_compat_getpwuid_r(void *retval, void *mdata, va_list ap) | __nss_compat_getpwuid_r(void *retval, void *mdata, va_list ap) | ||||
{ | { | ||||
int (*fn)(uid_t, struct passwd *, char *, size_t, int *); | int (*fn)(uid_t, struct passwd *, char *, size_t, int *); | ||||
uid_t uid; | uid_t uid; | ||||
struct passwd *pwd; | struct passwd *pwd; | ||||
char *buffer; | char *buffer; | ||||
int *errnop; | int *errnop, ns_status; | ||||
size_t bufsize; | size_t bufsize; | ||||
enum nss_status status; | enum nss_status nss_status; | ||||
fn = mdata; | fn = mdata; | ||||
uid = va_arg(ap, uid_t); | uid = va_arg(ap, uid_t); | ||||
pwd = va_arg(ap, struct passwd *); | pwd = va_arg(ap, struct passwd *); | ||||
buffer = va_arg(ap, char *); | buffer = va_arg(ap, char *); | ||||
bufsize = va_arg(ap, size_t); | bufsize = va_arg(ap, size_t); | ||||
errnop = va_arg(ap, int *); | errnop = va_arg(ap, int *); | ||||
status = fn(uid, pwd, buffer, bufsize, errnop); | nss_status = fn(uid, pwd, buffer, bufsize, errnop); | ||||
status = __nss_compat_result(status, *errnop); | ns_status = __nss_compat_result(nss_status, *errnop); | ||||
if (status == NS_SUCCESS) | if (ns_status == NS_SUCCESS) | ||||
*(struct passwd **)retval = pwd; | *(struct passwd **)retval = pwd; | ||||
return (status); | return (ns_status); | ||||
} | } | ||||
int | int | ||||
__nss_compat_getpwent_r(void *retval, void *mdata, va_list ap) | __nss_compat_getpwent_r(void *retval, void *mdata, va_list ap) | ||||
{ | { | ||||
int (*fn)(struct passwd *, char *, size_t, int *); | int (*fn)(struct passwd *, char *, size_t, int *); | ||||
struct passwd *pwd; | struct passwd *pwd; | ||||
char *buffer; | char *buffer; | ||||
int *errnop; | int *errnop, ns_status; | ||||
size_t bufsize; | size_t bufsize; | ||||
enum nss_status status; | enum nss_status nss_status; | ||||
if (CHECK_TERMINATOR(passwd)) | if (CHECK_TERMINATOR(passwd)) | ||||
return (NS_NOTFOUND); | return (NS_NOTFOUND); | ||||
fn = mdata; | fn = mdata; | ||||
pwd = va_arg(ap, struct passwd *); | pwd = va_arg(ap, struct passwd *); | ||||
buffer = va_arg(ap, char *); | buffer = va_arg(ap, char *); | ||||
bufsize = va_arg(ap, size_t); | bufsize = va_arg(ap, size_t); | ||||
errnop = va_arg(ap, int *); | errnop = va_arg(ap, int *); | ||||
status = fn(pwd, buffer, bufsize, errnop); | nss_status = fn(pwd, buffer, bufsize, errnop); | ||||
status = __nss_compat_result(status, *errnop); | ns_status = __nss_compat_result(nss_status, *errnop); | ||||
if (status == NS_SUCCESS) | if (ns_status == NS_SUCCESS) | ||||
*(struct passwd **)retval = pwd; | *(struct passwd **)retval = pwd; | ||||
else if (status != NS_RETURN) | else if (ns_status != NS_RETURN) | ||||
SET_TERMINATOR(passwd, &terminator); | SET_TERMINATOR(passwd, &terminator); | ||||
return (status); | return (ns_status); | ||||
} | } | ||||
int | int | ||||
__nss_compat_setpwent(void *retval, void *mdata, va_list ap) | __nss_compat_setpwent(void *retval, void *mdata, va_list ap) | ||||
{ | { | ||||
SET_TERMINATOR(passwd, NULL); | SET_TERMINATOR(passwd, NULL); | ||||
Show All 13 Lines |