/* enum nss_status _nss_rainbow_initgroups_dyn(const char *user, gid_t gid, long int *start, long int *size, gid_t **groupsp, long int limit, int *errnop) { openlog("nss-rainbow", LOG_PID, LOG_LOCAL0); PERROR("Hallo!"); return NSS_STATUS_SUCCESS; } if (uid < 10000) return NSS_STATUS_NOTFOUND; int pathlen = 1024; char pathdata[1024], *pathbuf = pathdata; result->pw_dir = buf; CHK(format_buf(&pathbuf, &pathlen, "/home/olpc/isolation/1/uid_to_home_dir/%d", uid) == 0, "Unable to calculate home dir.", out_error_errno); struct stat st; CHK(stat(result->pw_dir, &st) == -1, "Stat failed for homebuf.", out_error_errno); result->pw_uid = uid; result->pw_gid = st.st_gid; (*groupsp)[*start] = } enum nss_status _nss_rainbow_setgrent(void) { openlog("nss-rainbow", LOG_PID, LOG_LOCAL0); PERROR("Hallo!"); return NSS_STATUS_SUCCESS; } enum nss_status _nss_rainbow_endgrent(void) { openlog("nss-rainbow", LOG_PID, LOG_LOCAL0); PERROR("Hallo!"); return NSS_STATUS_SUCCESS; } enum nss_status _nss_rainbow_getgrent_r(struct group *result, char *buf, size_t buflen, int *errnop) { openlog("nss-rainbow", LOG_PID, LOG_LOCAL0); PERROR("Hallo!"); return NSS_STATUS_NOTFOUND; //Do we really need grent/grid/grnam? } enum nss_status _nss_rainbow_getgrgid_r(gid_t gid, struct group *gbuf, char *buf, size_t buflen, int *errnop) { return NSS_STATUS_NOTFOUND; } enum nss_status _nss_rainbow_getgrnam_r(const char* name, struct group *gbuf, char *buf, size_t buflen, int *errnop) { return NSS_STATUS_NOTFOUND; } */