int netbsdwinbind_getgrnam(void *nsrv, void *nscb, va_list ap) { struct group **retval = va_arg(ap, struct group **); const char *name = va_arg(ap, const char *); int rv, rerrno; *retval = NULL; rv = _nss_winbind_getgrnam_r(name, &_winbind_group, _winbind_groupbuf, sizeof(_winbind_groupbuf), &rerrno); if (rv == NS_SUCCESS) *retval = &_winbind_group; return rv; }
static NSS_STATUS _nss_winbind_getgrnam_solwrap(nss_backend_t* be, void* args) { NSS_STATUS ret; struct group* result = (struct group*) NSS_ARGS(args)->buf.result; NSS_DEBUG("_nss_winbind_getgrnam_solwrap"); ret = _nss_winbind_getgrnam_r(NSS_ARGS(args)->key.name, result, NSS_ARGS(args)->buf.buffer, NSS_ARGS(args)->buf.buflen, &NSS_ARGS(args)->erange); if(ret == NSS_STATUS_SUCCESS) NSS_ARGS(args)->returnval = (void*) result; return ret; }
int netbsdwinbind_getgrnam_r(void *nsrv, void *nscb, va_list ap) { int *retval = va_arg(ap, int *); const char *name = va_arg(ap, const char *); struct group *grp = va_arg(ap, struct group *); char *buffer = va_arg(ap, char *); size_t buflen = va_arg(ap, size_t); struct group **result = va_arg(ap, struct group **); int rv, rerrno; *result = NULL; rerrno = 0; rv = _nss_winbind_getgrnam_r(name, grp, buffer, buflen, &rerrno); if (rv == NS_SUCCESS) *result = grp; else *retval = rerrno; return rv; }