Lines Matching refs:be

187 netgr_in(compat_backend_ptr_t be, const char *group, const char *user)  in netgr_in()  argument
189 if (be->yp_domain == 0) { in netgr_in()
190 if (yp_get_default_domain((char **)&be->yp_domain) != 0) { in netgr_in()
194 return (innetgr(group, 0, user, be->yp_domain)); in netgr_in()
198 netgr_set(be, netgroup) in netgr_set() argument
199 compat_backend_ptr_t be; in netgr_set()
206 if (be->getnetgrent_backend != 0 &&
207 NSS_INVOKE_DBOP(be->getnetgrent_backend,
210 NSS_INVOKE_DBOP(be->getnetgrent_backend, NSS_DBOP_DESTRUCTOR,
212 be->getnetgrent_backend = 0;
214 if (be->getnetgrent_backend == 0) {
221 be->getnetgrent_backend = args.iterator;
226 netgr_next_u(be, up) in netgr_next_u() argument
227 compat_backend_ptr_t be; in netgr_next_u()
230 if (be->netgr_buffer == 0 &&
231 (be->netgr_buffer = malloc(NSS_BUFLEN_NETGROUP)) == 0) {
239 args.buffer = be->netgr_buffer;
243 if (be->getnetgrent_backend != 0) {
244 NSS_INVOKE_DBOP(be->getnetgrent_backend,
258 netgr_end(be) in netgr_end() argument
259 compat_backend_ptr_t be; in netgr_end()
261 if (be->getnetgrent_backend != 0) {
262 NSS_INVOKE_DBOP(be->getnetgrent_backend,
264 be->getnetgrent_backend = 0;
266 if (be->netgr_buffer != 0) {
267 free(be->netgr_buffer);
268 be->netgr_buffer = 0;
276 do_merge(be, args, instr, linelen) in do_merge() argument
277 compat_backend_ptr_t be; in do_merge()
326 if (be->return_string_data != 1) {
335 if (overrides > 1 || be->return_string_data == 1) {
340 switch ((*be->mergef)(be, args, (const char **)fields)) {
342 if (be->return_string_data != 1)
378 _nss_compat_setent(be, dummy) in _nss_compat_setent() argument
379 compat_backend_ptr_t be; in _nss_compat_setent()
382 if (be->f == 0) {
383 if (be->filename == 0) {
387 if ((be->f = fopen(be->filename, "rF")) == 0) {
391 rewind(be->f);
393 strset_free(&be->minuses);
396 if ((strcmp(be->filename, USERATTR_FILENAME) == 0) ||
397 (strcmp(be->filename, AUDITUSER_FILENAME) == 0))
398 be->state = GETENT_ATTRDB;
400 be->state = GETENT_FILE;
402 be->return_string_data = 0;
410 _nss_compat_endent(be, dummy) in _nss_compat_endent() argument
411 compat_backend_ptr_t be; in _nss_compat_endent()
414 if (be->f != 0) {
415 (void) fclose(be->f);
416 be->f = 0;
418 if (be->buf != 0) {
419 free(be->buf);
420 be->buf = 0;
422 nss_endent(be->db_rootp, be->db_initf, &be->db_context);
424 be->state = GETENT_FILE; /* Probably superfluous but comforting */
425 strset_free(&be->minuses);
426 netgr_end(be);
438 _nss_compat_destr(be, dummy) in _nss_compat_destr() argument
439 compat_backend_ptr_t be; in _nss_compat_destr()
442 if (be != 0) {
443 if (be->f != 0) {
444 (void) _nss_compat_endent(be, 0);
446 nss_delete(be->db_rootp);
448 free(be->workarea);
449 free(be);
516 _attrdb_compat_XY_all(be, argp, netdb, check, op_num) in _attrdb_compat_XY_all() argument
517 compat_backend_ptr_t be; in _attrdb_compat_XY_all()
532 if (be->buf == 0 &&
533 (be->buf = malloc(be->minbuf)) == 0) {
537 if ((res = _nss_compat_setent(be, 0)) != NSS_SUCCESS)
551 be->return_string_data = 1;
557 argp->buf.result = be->workarea;
559 be->return_string_data = 0;
565 if (be->return_string_data == 1)
566 func = be->str2ent_alt;
573 char *instr = be->buf;
575 if ((linelen = read_line(be->f, instr, be->minbuf)) < 0) {
630 if (be->return_string_data != 1) {
662 (void) _nss_compat_endent(be, 0);
671 if (be->return_string_data == 1)
676 res = nss_search(be->db_rootp,
677 be->db_initf,
681 res = nss_getent(be->db_rootp,
682 be->db_initf, &be->db_context, argp);
694 validate_ids(compat_backend_ptr_t be, nss_XbyY_args_t *argp, in validate_ids() argument
697 if (be->return_string_data != 1) { in validate_ids()
704 if (strcmp(be->filename, PASSWD) == 0) { in validate_ids()
710 } else if (strcmp(be->filename, GF_PATH) == 0) { in validate_ids()
722 if (strcmp(be->filename, PASSWD) == 0) in validate_ids()
725 else if (strcmp(be->filename, GF_PATH) == 0) in validate_ids()
732 _nss_compat_XY_all(be, args, check, op_num) in _nss_compat_XY_all() argument
733 compat_backend_ptr_t be; in _nss_compat_XY_all()
742 if (be->buf == 0 &&
743 (be->buf = malloc(be->minbuf)) == 0) {
747 if ((res = _nss_compat_setent(be, 0)) != NSS_SUCCESS) {
760 be->return_string_data = 1;
766 args->buf.result = be->workarea;
768 be->str2ent_save = args->str2ent;
769 args->str2ent = be->str2ent_alt;
771 be->return_string_data = 0;
776 char *instr = be->buf;
779 linelen = read_line(be->f, instr, be->minbuf);
800 parsestat = validate_ids(be, args,
801 instr, &linelen, be->minbuf, 1);
812 if (be->return_string_data != 1) {
822 args->str2ent = be->str2ent_save;
884 if (!be->permit_netgroups ||
885 !netgr_in(be, instr + 2, args->key.name))
889 (void) nss_search(be->db_rootp,
890 be->db_initf, op_num, args);
896 (void) nss_search(be->db_rootp,
897 be->db_initf, op_num, args);
900 if (!be->permit_netgroups ||
901 !netgr_in(be, instr + 2,
902 (*be->getnamef)(args)))
915 (void) nss_search(be->db_rootp, be->db_initf,
935 (void) nss_search(be->db_rootp,
936 be->db_initf, op_num, args);
942 (void) nss_search(be->db_rootp,
943 be->db_initf, op_num, args);
946 if (strcmp(instr + 1, (*be->getnamef)(args))
959 res = do_merge(be, args, instr, linelen);
969 (void) _nss_compat_endent(be, 0);
972 if (be->return_string_data == 1) {
973 args->str2ent = be->str2ent_save;
980 _nss_compat_getent(be, a) in _nss_compat_getent() argument
981 compat_backend_ptr_t be; in _nss_compat_getent()
988 if (be->f == 0) {
989 if ((res = _nss_compat_setent(be, 0)) != NSS_SUCCESS) {
994 if (be->buf == 0 &&
995 (be->buf = malloc(be->minbuf)) == 0) {
1005 be->return_string_data = 1;
1011 args->buf.result = be->workarea;
1013 be->return_string_data = 0;
1017 char *instr = be->buf;
1030 switch (be->state) {
1039 res = _attrdb_compat_XY_all(be,
1044 linelen = read_line(be->f, instr, be->minbuf);
1047 be->state = GETENT_DONE;
1055 (void) strset_add(&be->minuses,
1057 } else if (be->permit_netgroups) {
1058 netgr_set(be, instr + 2);
1059 while (netgr_next_u(be, &name)) {
1060 (void) strset_add(&be->minuses,
1063 netgr_end(be);
1082 if (be->return_string_data != 1) {
1115 nss_setent(be->db_rootp, be->db_initf,
1116 &be->db_context);
1117 be->state = GETENT_ALL;
1118 be->linelen = linelen;
1123 netgr_set(be, instr + 2);
1124 be->state = GETENT_NETGROUP;
1125 be->linelen = linelen;
1135 linelen = be->linelen;
1137 if (be->return_string_data == 1) {
1138 be->str2ent_save = args->str2ent;
1139 args->str2ent = be->str2ent_alt;
1142 (void) nss_getent(be->db_rootp, be->db_initf,
1143 &be->db_context, args);
1146 nss_endent(be->db_rootp, be->db_initf,
1147 &be->db_context);
1148 be->state = GETENT_FILE;
1149 if (be->return_string_data == 1)
1150 args->str2ent = be->str2ent_save;
1153 if (strset_in(&be->minuses, (*be->getnamef)(args)))
1156 if (be->return_string_data == 1)
1157 args->str2ent = be->str2ent_save;
1161 linelen = be->linelen;
1162 if (!netgr_next_u(be, &name)) {
1163 netgr_end(be);
1164 be->state = GETENT_FILE;
1172 if (strset_in(&be->minuses, name)) {
1189 if (be->return_string_data == 1) {
1190 be->str2ent_save = args->str2ent;
1191 args->str2ent = be->str2ent_alt;
1194 (void) nss_search(be->db_rootp, be->db_initf,
1197 if (be->return_string_data == 1)
1198 args->str2ent = be->str2ent_save;
1214 return (do_merge(be, args, instr, linelen));
1236 compat_backend_ptr_t be; local
1238 if ((be = (compat_backend_ptr_t)malloc(sizeof (*be))) == 0) {
1241 be->ops = ops;
1242 be->n_ops = n_ops;
1243 be->filename = filename;
1244 be->f = 0;
1245 be->minbuf = min_bufsize;
1246 be->buf = 0;
1248 be->db_rootp = rootp;
1249 be->db_initf = initf;
1250 be->db_context = context_initval;
1252 be->getnamef = getname_func;
1253 be->mergef = merge_func;
1255 be->state = GETENT_FILE; /* i.e. do Automatic setent(); */
1256 if (strcmp(be->filename, USERATTR_FILENAME) == 0) {
1257 be->state = GETENT_ATTRDB;
1258 be->str2ent_alt = str2userattr_s;
1259 be->workarea = calloc(1, sizeof (userstr_t));
1260 } else if (strcmp(be->filename, AUDITUSER_FILENAME) == 0) {
1261 be->state = GETENT_ATTRDB;
1262 be->str2ent_alt = str2auuser_s;
1263 be->workarea = calloc(1, sizeof (au_user_str_t));
1264 } else if (strcmp(be->filename, PASSWD) == 0) {
1265 be->str2ent_alt = str2passwd;
1266 be->workarea = calloc(1, sizeof (struct passwd));
1267 } else if (strcmp(be->filename, SHADOW) == 0) {
1268 be->str2ent_alt = str2spwd;
1269 be->workarea = calloc(1, sizeof (struct spwd));
1271 be->str2ent_alt = str2group;
1272 be->workarea = calloc(1, sizeof (struct group));
1274 if (be->workarea == NULL)
1277 be->minuses = 0;
1279 be->permit_netgroups = netgroups;
1280 be->yp_domain = 0;
1281 be->getnetgrent_backend = 0;
1282 be->netgr_buffer = 0;
1283 be->return_string_data = 0;
1285 return ((nss_backend_t *)be);