Lines Matching refs:cbs
47 typedef struct cbs { struct
95 cbs_t cbs = { 0, 0, NULL }; in show_auths() local
112 (void) _enum_auths(username, add_auth, NULL, &cbs); in show_auths()
114 if (cbs.auth_cnt == 0) in show_auths()
121 simplify(&cbs); in show_auths()
127 for (i = 0; i < cbs.auth_cnt - 1; i++) in show_auths()
128 (void) printf("%s,", cbs.auths[i]); in show_auths()
131 (void) printf("%s\n", cbs.auths[cbs.auth_cnt - 1]); in show_auths()
134 free_auths(&cbs); in show_auths()
144 cbs_t *cbs = res; in add_auth() local
146 if (cbs->auth_cnt >= cbs->auth_max) { in add_auth()
147 cbs->auth_max += INCRAUTHS; in add_auth()
148 cbs->auths = realloc(cbs->auths, in add_auth()
149 cbs->auth_max * sizeof (char *)); in add_auth()
151 if (cbs->auths == NULL) { in add_auth()
158 cbs->auths[cbs->auth_cnt] = strdup(authname); in add_auth()
159 cbs->auth_cnt++; in add_auth()
165 free_auths(cbs_t *cbs) in free_auths() argument
169 for (i = 0; i < cbs->auth_cnt; i++) in free_auths()
170 free(cbs->auths[i]); in free_auths()
172 free(cbs->auths); in free_auths()
201 simplify(cbs_t *cbs) in simplify() argument
206 qsort(cbs->auths, cbs->auth_cnt, sizeof (cbs->auths[0]), mstrptr); in simplify()
214 for (i = 0, rem = 0; i < cbs->auth_cnt - rem - 1; ) { in simplify()
215 if (strcmp(cbs->auths[i], cbs->auths[i + rem + 1]) == 0 || in simplify()
216 strchr(cbs->auths[i], KV_WILDCHAR) != NULL && in simplify()
217 auth_match(cbs->auths[i], cbs->auths[i + rem + 1])) { in simplify()
218 free(cbs->auths[i + rem + 1]); in simplify()
223 cbs->auths[i] = cbs->auths[i + rem]; in simplify()
227 cbs->auth_cnt -= rem; in simplify()