Home | History | Annotate | Download | only in txt_db

Lines Matching refs:db

196 OPENSSL_STRING *TXT_DB_get_by_index(TXT_DB *db, int idx, OPENSSL_STRING *value)
201 if (idx >= db->num_fields)
203 db->error=DB_ERROR_INDEX_OUT_OF_RANGE;
206 lh=db->index[idx];
209 db->error=DB_ERROR_NO_INDEX;
213 db->error=DB_ERROR_OK;
217 int TXT_DB_create_index(TXT_DB *db, int field, int (*qual)(OPENSSL_STRING *),
224 if (field >= db->num_fields)
226 db->error=DB_ERROR_INDEX_OUT_OF_RANGE;
232 db->error=DB_ERROR_MALLOC;
235 n=sk_OPENSSL_PSTRING_num(db->data);
238 r=sk_OPENSSL_PSTRING_value(db->data,i);
242 db->error=DB_ERROR_INDEX_CLASH;
243 db->arg1=sk_OPENSSL_PSTRING_find(db->data,r);
244 db->arg2=i;
249 if (db->index[field] != NULL) lh_OPENSSL_STRING_free(db->index[field]);
250 db->index[field]=idx;
251 db->qual[field]=qual;
255 long TXT_DB_write(BIO *out, TXT_DB *db)
264 n=sk_OPENSSL_PSTRING_num(db->data);
265 nn=db->num_fields;
268 pp=sk_OPENSSL_PSTRING_value(db->data,i);
303 int TXT_DB_insert(TXT_DB *db, OPENSSL_STRING *row)
308 for (i=0; i<db->num_fields; i++)
310 if (db->index[i] != NULL)
312 if ((db->qual[i] != NULL) &&
313 (db->qual[i](row) == 0)) continue;
314 r=lh_OPENSSL_STRING_retrieve(db->index[i],row);
317 db->error=DB_ERROR_INDEX_CLASH;
318 db->arg1=i;
319 db->arg_row=r;
325 if (!sk_OPENSSL_PSTRING_push(db->data,row))
327 db->error=DB_ERROR_MALLOC;
331 for (i=0; i<db->num_fields; i++)
333 if (db->index[i] != NULL)
335 if ((db->qual[i] != NULL) &&
336 (db->qual[i](row) == 0)) continue;
337 (void)lh_OPENSSL_STRING_insert(db->index[i],row);
345 void TXT_DB_free(TXT_DB *db)
350 if(db == NULL)
353 if (db->index != NULL)
355 for (i=db->num_fields-1; i>=0; i--)
356 if (db->index[i] != NULL) lh_OPENSSL_STRING_free(db->index[i]);
357 OPENSSL_free(db->index);
359 if (db->qual != NULL)
360 OPENSSL_free(db->qual);
361 if (db->data != NULL)
363 for (i=sk_OPENSSL_PSTRING_num(db->data)-1; i>=0; i--)
367 p=sk_OPENSSL_PSTRING_value(db->data,i);
368 max=p[db->num_fields]; /* last address */
371 for (n=0; n<db->num_fields; n++)
376 for (n=0; n<db->num_fields; n++)
383 OPENSSL_free(sk_OPENSSL_PSTRING_value(db->data,i));
385 sk_OPENSSL_PSTRING_free(db->data);
387 OPENSSL_free(db);