Lines Matching refs:db

128 OPENSSL_STRING *TXT_DB_get_by_index(TXT_DB *db, int idx,
134 if (idx >= db->num_fields) {
135 db->error = DB_ERROR_INDEX_OUT_OF_RANGE;
138 lh = db->index[idx];
140 db->error = DB_ERROR_NO_INDEX;
144 db->error = DB_ERROR_OK;
148 int TXT_DB_create_index(TXT_DB *db, int field, int (*qual) (OPENSSL_STRING *),
155 if (field >= db->num_fields) {
156 db->error = DB_ERROR_INDEX_OUT_OF_RANGE;
161 db->error = DB_ERROR_MALLOC;
164 n = sk_OPENSSL_PSTRING_num(db->data);
166 r = sk_OPENSSL_PSTRING_value(db->data, i);
170 db->error = DB_ERROR_INDEX_CLASH;
171 db->arg1 = sk_OPENSSL_PSTRING_find(db->data, k);
172 db->arg2 = i;
177 db->error = DB_ERROR_MALLOC;
182 lh_OPENSSL_STRING_free(db->index[field]);
183 db->index[field] = idx;
184 db->qual[field] = qual;
188 long TXT_DB_write(BIO *out, TXT_DB *db)
197 n = sk_OPENSSL_PSTRING_num(db->data);
198 nn = db->num_fields;
200 pp = sk_OPENSSL_PSTRING_value(db->data, i);
235 int TXT_DB_insert(TXT_DB *db, OPENSSL_STRING *row)
240 for (i = 0; i < db->num_fields; i++) {
241 if (db->index[i] != NULL) {
242 if ((db->qual[i] != NULL) && (db->qual[i] (row) == 0))
244 r = lh_OPENSSL_STRING_retrieve(db->index[i], row);
246 db->error = DB_ERROR_INDEX_CLASH;
247 db->arg1 = i;
248 db->arg_row = r;
254 for (i = 0; i < db->num_fields; i++) {
255 if (db->index[i] != NULL) {
256 if ((db->qual[i] != NULL) && (db->qual[i] (row) == 0))
258 (void)lh_OPENSSL_STRING_insert(db->index[i], row);
259 if (lh_OPENSSL_STRING_retrieve(db->index[i], row) == NULL)
263 if (!sk_OPENSSL_PSTRING_push(db->data, row))
268 db->error = DB_ERROR_MALLOC;
270 if (db->index[i] != NULL) {
271 if ((db->qual[i] != NULL) && (db->qual[i] (row) == 0))
273 (void)lh_OPENSSL_STRING_delete(db->index[i], row);
280 void TXT_DB_free(TXT_DB *db)
285 if (db == NULL)
287 if (db->index != NULL) {
288 for (i = db->num_fields - 1; i >= 0; i--)
289 lh_OPENSSL_STRING_free(db->index[i]);
290 OPENSSL_free(db->index);
292 OPENSSL_free(db->qual);
293 if (db->data != NULL) {
294 for (i = sk_OPENSSL_PSTRING_num(db->data) - 1; i >= 0; i--) {
299 p = sk_OPENSSL_PSTRING_value(db->data, i);
300 max = p[db->num_fields]; /* last address */
302 for (n = 0; n < db->num_fields; n++)
305 for (n = 0; n < db->num_fields; n++) {
310 OPENSSL_free(sk_OPENSSL_PSTRING_value(db->data, i));
312 sk_OPENSSL_PSTRING_free(db->data);
314 OPENSSL_free(db);