Lines Matching refs:gr

52 static struct group *grcopy(const struct group *gr, char *mem, const char *, int ndx);
164 gr_copy(int ffd, int tfd, const struct group *gr, struct group *old_gr) in gr_copy() argument
173 if (old_gr == NULL && gr == NULL) in gr_copy()
178 if (gr == NULL) { in gr_copy()
181 if ((line = gr_make(gr)) == NULL) in gr_copy()
187 sgr = gr; in gr_copy()
426 gr_make(const struct group *gr) in gr_make() argument
436 line_size = snprintf(NULL, 0, group_line_format, gr->gr_name, in gr_make()
437 gr->gr_passwd, (uintmax_t)gr->gr_gid) + 1; in gr_make()
438 if (gr->gr_mem != NULL) { in gr_make()
439 for (ndx = 0; gr->gr_mem[ndx] != NULL; ndx++) in gr_make()
440 line_size += strlen(gr->gr_mem[ndx]) + 1; in gr_make()
448 p += sprintf(p, group_line_format, gr->gr_name, gr->gr_passwd, in gr_make()
449 (uintmax_t)gr->gr_gid); in gr_make()
450 if (gr->gr_mem != NULL) { in gr_make()
452 for (ndx = 0; gr->gr_mem[ndx] != NULL; ndx++) { in gr_make()
454 p = stpcpy(p, gr->gr_mem[ndx]); in gr_make()
466 gr_dup(const struct group *gr) in gr_dup() argument
468 return (gr_add(gr, NULL)); in gr_dup()
474 gr_add(const struct group *gr, const char *newmember) in gr_add() argument
481 len = grmemlen(gr, newmember, &num_mem); in gr_add()
485 return (grcopy(gr, mem, newmember, num_mem)); in gr_add()
514 grcopy(const struct group *gr, char *dst, const char *name, int ndx) in grcopy() argument
526 if (gr->gr_name != NULL) { in grcopy()
528 dst = stpcpy(dst, gr->gr_name) + 1; in grcopy()
531 if (gr->gr_passwd != NULL) { in grcopy()
533 dst = stpcpy(dst, gr->gr_passwd) + 1; in grcopy()
536 newgr->gr_gid = gr->gr_gid; in grcopy()
539 if (gr->gr_mem != NULL) { in grcopy()
540 for (; gr->gr_mem[i] != NULL; i++) { in grcopy()
542 dst = stpcpy(dst, gr->gr_mem[i]) + 1; in grcopy()
561 grmemlen(const struct group *gr, const char *name, int *num_mem) in grmemlen() argument
566 if (gr == NULL) in grmemlen()
569 len = sizeof(*gr); in grmemlen()
570 if (gr->gr_name != NULL) in grmemlen()
571 len += strlen(gr->gr_name) + 1; in grmemlen()
572 if (gr->gr_passwd != NULL) in grmemlen()
573 len += strlen(gr->gr_passwd) + 1; in grmemlen()
575 if (gr->gr_mem != NULL) { in grmemlen()
576 for (; gr->gr_mem[i] != NULL; i++) { in grmemlen()
577 len += strlen(gr->gr_mem[i]) + 1; in grmemlen()
578 len += sizeof(*gr->gr_mem); in grmemlen()
584 len += sizeof(*gr->gr_mem); in grmemlen()
588 len += sizeof(*gr->gr_mem); in grmemlen()
597 __gr_scan(char *line, struct group *gr) in __gr_scan() argument
603 gr->gr_name = line; in __gr_scan()
607 gr->gr_passwd = loc + 1; in __gr_scan()
608 if (*gr->gr_passwd == ':') in __gr_scan()
609 *gr->gr_passwd = '\0'; in __gr_scan()
615 if (sscanf(loc + 1, "%u", &gr->gr_gid) != 1) in __gr_scan()
622 gr->gr_mem = NULL; in __gr_scan()
625 gr->gr_mem = reallocf(gr->gr_mem, sizeof(*gr->gr_mem) * in __gr_scan()
627 if (gr->gr_mem == NULL) in __gr_scan()
632 gr->gr_mem[ndx] = strsep(&line, ","); in __gr_scan()
633 } while (gr->gr_mem[ndx] != NULL && *gr->gr_mem[ndx] == '\0'); in __gr_scan()
634 } while (gr->gr_mem[ndx++] != NULL); in __gr_scan()
645 struct group gr; in gr_scan() local
651 if (!__gr_scan(line_copy, &gr)) { in gr_scan()
655 new_gr = gr_dup(&gr); in gr_scan()
657 if (gr.gr_mem != NULL) in gr_scan()
658 free(gr.gr_mem); in gr_scan()