Lines Matching +full:data +full:- +full:size
1 /*-
2 * SPDX-License-Identifier: BSD-4-Clause
18 * 4. Neither the name of the author nor the names of any co-contributors
28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
76 int size; member
111 q->dbptr = malloc(sizeof(struct dbent)); in yp_malloc_qent()
112 if (q->dbptr == NULL) { in yp_malloc_qent()
117 bzero((char *)q->dbptr, sizeof(struct dbent)); in yp_malloc_qent()
132 * package, including the memory pointed to by q->dbptr->key. in yp_free_qent()
133 * This means we don't have to free q->dbptr->key here. in yp_free_qent()
135 if (q->dbptr->dbp) { in yp_free_qent()
136 (void)(q->dbptr->dbp->close)(q->dbptr->dbp); in yp_free_qent()
137 q->dbptr->dbp = NULL; in yp_free_qent()
142 free(q->dbptr->name); in yp_free_qent()
147 free(q->dbptr); in yp_free_qent()
148 q->dbptr = NULL; in yp_free_qent()
170 numdbs--; in yp_flush()
192 static int inter_sz = sizeof("YP_INTERDOMAIN") - 1;
193 static int secure_sz = sizeof("YP_SECURE") - 1;
198 DBT key = { NULL, 0 }, data = { NULL, 0 }; in yp_setflags() local
201 key.data = inter_string; in yp_setflags()
202 key.size = inter_sz; in yp_setflags()
204 if (!(dbp->get)(dbp, &key, &data, 0)) in yp_setflags()
207 key.data = secure_string; in yp_setflags()
208 key.size = secure_sz; in yp_setflags()
210 if (!(dbp->get)(dbp, &key, &data, 0)) in yp_setflags()
230 if (!strcmp(qptr->dbptr->name, buf)) { in yp_testflag()
231 if (qptr->dbptr->flags & flag) in yp_testflag()
241 if (TAILQ_FIRST(&qhead)->dbptr->flags & flag) in yp_testflag()
254 yp_cache_db(DB *dbp, char *name, int size) in yp_cache_db() argument
260 yp_error("queue overflow -- releasing last slot"); in yp_cache_db()
273 qptr->dbptr->dbp = dbp; in yp_cache_db()
274 qptr->dbptr->name = strdup(name); in yp_cache_db()
275 qptr->dbptr->size = size; in yp_cache_db()
276 qptr->dbptr->key = NULL; in yp_cache_db()
278 qptr->dbptr->flags = yp_setflags(dbp); in yp_cache_db()
295 * - The caller specifies the name of a database to locate. We try to
298 * - If the caller doesn't specify a key or size, we assume that the
300 * This will result in matches regardless of the key/size values
303 * - If the caller also specifies a key and length, we check to see
308 * - Once we have a match, it gets migrated to the top of the queue
313 yp_find_db(const char *name, const char *key, int size) in yp_find_db() argument
318 if (!strcmp(qptr->dbptr->name, name)) { in yp_find_db()
319 if (size) { in yp_find_db()
320 if (size != qptr->dbptr->size || in yp_find_db()
321 strncmp(qptr->dbptr->key, key, size)) in yp_find_db()
324 if (qptr->dbptr->size) in yp_find_db()
331 return(qptr->dbptr->dbp); in yp_find_db()
346 const int size) in yp_open_db_cache() argument
359 if ((dbp = yp_find_db(buf, key, size)) != NULL) { in yp_open_db_cache()
363 if (yp_cache_db(dbp, buf, size)) { in yp_open_db_cache()
364 (void)(dbp->close)(dbp); in yp_open_db_cache()
435 * - yp_get_record(): retrieve an arbitrary key/data pair given one key
438 * - yp_first_record(): retrieve first key/data base in a database.
440 * - yp_next_record(): retrieve key/data pair that sequentially follows
446 yp_get_record(DB *dbp, const DBT *key, DBT *data, int allow) in yp_get_record() argument
450 const DBT *key, DBT *data, int allow) in yp_get_record()
463 (int)key->size, (char *)key->data); in yp_get_record()
470 if (!allow && !strncmp(key->data, "YP_", 3)) in yp_get_record()
479 if ((rval = (dbp->get)(dbp, key, data, 0)) != 0) { in yp_get_record()
481 TAILQ_FIRST(&qhead)->dbptr->size = 0; in yp_get_record()
483 (void)(dbp->close)(dbp); in yp_get_record()
492 yp_error("result of lookup: key: [%.*s] data: [%.*s]", in yp_get_record()
493 (int)key->size, (char *)key->data, in yp_get_record()
494 (int)data->size, (char *)data->data); in yp_get_record()
497 if (TAILQ_FIRST(&qhead)->dbptr->size) { in yp_get_record()
498 TAILQ_FIRST(&qhead)->dbptr->key = ""; in yp_get_record()
499 TAILQ_FIRST(&qhead)->dbptr->size = 0; in yp_get_record()
502 bcopy(data->data, &buf, data->size); in yp_get_record()
503 data->data = &buf; in yp_get_record()
504 (void)(dbp->close)(dbp); in yp_get_record()
511 yp_first_record(const DB *dbp, DBT *key, DBT *data, int allow) in yp_first_record() argument
521 if ((rval = (dbp->seq)(dbp,key,data,R_FIRST)) != 0) { in yp_first_record()
523 TAILQ_FIRST(&qhead)->dbptr->size = 0; in yp_first_record()
532 while (!strncmp(key->data, "YP_", 3) && !allow) { in yp_first_record()
533 if ((rval = (dbp->seq)(dbp,key,data,R_NEXT)) != 0) { in yp_first_record()
535 TAILQ_FIRST(&qhead)->dbptr->size = 0; in yp_first_record()
545 yp_error("result of lookup: key: [%.*s] data: [%.*s]", in yp_first_record()
546 (int)key->size, (char *)key->data, in yp_first_record()
547 (int)data->size, (char *)data->data); in yp_first_record()
550 if (TAILQ_FIRST(&qhead)->dbptr->size) { in yp_first_record()
551 TAILQ_FIRST(&qhead)->dbptr->key = key->data; in yp_first_record()
552 TAILQ_FIRST(&qhead)->dbptr->size = key->size; in yp_first_record()
555 bcopy(data->data, &buf, data->size); in yp_first_record()
556 data->data = &buf; in yp_first_record()
563 yp_next_record(const DB *dbp, DBT *key, DBT *data, int all, int allow) in yp_next_record() argument
573 if (key == NULL || !key->size || key->data == NULL) { in yp_next_record()
574 rval = yp_first_record(dbp,key,data,allow); in yp_next_record()
579 TAILQ_FIRST(&qhead)->dbptr->key = key->data; in yp_next_record()
580 TAILQ_FIRST(&qhead)->dbptr->size = key->size; in yp_next_record()
588 (int)key->size, (char *)key->data); in yp_next_record()
592 if (TAILQ_FIRST(&qhead)->dbptr->key == NULL) { in yp_next_record()
594 (dbp->seq)(dbp,&lkey,&ldata,R_FIRST); in yp_next_record()
595 while (key->size != lkey.size || in yp_next_record()
596 strncmp(key->data, lkey.data, in yp_next_record()
597 (int)key->size)) in yp_next_record()
598 if ((dbp->seq)(dbp,&lkey,&ldata,R_NEXT)) { in yp_next_record()
600 TAILQ_FIRST(&qhead)->dbptr->size = 0; in yp_next_record()
610 if ((dbp->seq)(dbp,key,data,R_NEXT)) { in yp_next_record()
612 TAILQ_FIRST(&qhead)->dbptr->size = 0; in yp_next_record()
618 while (!strncmp(key->data, "YP_", 3) && !allow) in yp_next_record()
619 if ((dbp->seq)(dbp,key,data,R_NEXT)) { in yp_next_record()
621 TAILQ_FIRST(&qhead)->dbptr->size = 0; in yp_next_record()
627 yp_error("result of lookup: key: [%.*s] data: [%.*s]", in yp_next_record()
628 (int)key->size, (char *)key->data, in yp_next_record()
629 (int)data->size, (char *)data->data); in yp_next_record()
632 if (TAILQ_FIRST(&qhead)->dbptr->size) { in yp_next_record()
633 TAILQ_FIRST(&qhead)->dbptr->key = key->data; in yp_next_record()
634 TAILQ_FIRST(&qhead)->dbptr->size = key->size; in yp_next_record()
637 bcopy(key->data, &keybuf, key->size); in yp_next_record()
638 lkey.data = &keybuf; in yp_next_record()
639 lkey.size = key->size; in yp_next_record()
640 bcopy(data->data, &datbuf, data->size); in yp_next_record()
641 data->data = &datbuf; in yp_next_record()
662 key->keydat_val, in yp_select_map()
663 key->keydat_len); in yp_select_map()
675 db_key.data = key->keydat_val; in yp_getbykey()
676 db_key.size = key->keydat_len; in yp_getbykey()
682 val->valdat_val = db_val.data; in yp_getbykey()
683 val->valdat_len = db_val.size; in yp_getbykey()
698 key->keydat_val = db_key.data; in yp_firstbykey()
699 key->keydat_len = db_key.size; in yp_firstbykey()
700 val->valdat_val = db_val.data; in yp_firstbykey()
701 val->valdat_len = db_val.size; in yp_firstbykey()
713 db_key.data = key->keydat_val; in yp_nextbykey()
714 db_key.size = key->keydat_len; in yp_nextbykey()
719 key->keydat_val = db_key.data; in yp_nextbykey()
720 key->keydat_len = db_key.size; in yp_nextbykey()
721 val->valdat_val = db_val.data; in yp_nextbykey()
722 val->valdat_len = db_val.size; in yp_nextbykey()