X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=src%2Frecord.c;h=2d830122f49b7e61e29c5bac3efdba95c45f580a;hb=9b4b753a6833eda435f995060f5d3f515381ce11;hp=277fd1b5c928342e4f0ec458ea9b60887a301bad;hpb=3670a21abc40afe784b2127c4d831471761747a0;p=pazpar2-moved-to-github.git diff --git a/src/record.c b/src/record.c index 277fd1b..2d83012 100644 --- a/src/record.c +++ b/src/record.c @@ -1,4 +1,4 @@ -/* $Id: record.c,v 1.1 2007-04-20 14:37:17 marc Exp $ +/* $Id: record.c,v 1.2 2007-04-23 08:48:50 marc Exp $ Copyright (c) 2006-2007, Index Data. This file is part of Pazpar2. @@ -19,7 +19,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* $Id: record.c,v 1.1 2007-04-20 14:37:17 marc Exp $ */ +/* $Id: record.c,v 1.2 2007-04-23 08:48:50 marc Exp $ */ #include @@ -65,26 +65,59 @@ struct record * record_create(NMEM nmem, int num_metadata, int num_sortkeys) } -struct record_metadata * record_add_metadata_fieldno(NMEM nmem, - struct record * record, - int fieldno, - union data_types data) +struct record_metadata * record_metadata_insert(NMEM nmem, + struct record_metadata ** rmd, + union data_types data) { - struct record_metadata * rmd = 0; - - if (!record || fieldno < 0 - || !record->metadata || !record->metadata[fieldno] ) + struct record_metadata * tmp_rmd = 0; + // assert(nmem); + + if(!rmd) return 0; - // construct new record_metadata - rmd = nmem_malloc(nmem, sizeof(struct record_metadata)); - rmd->data = data; - rmd->next = 0; + // construct new record_metadata + tmp_rmd = nmem_malloc(nmem, sizeof(struct record_metadata)); + tmp_rmd->data = data; + + + // insert in *rmd's place + tmp_rmd->next = *rmd; + *rmd = tmp_rmd; + + return tmp_rmd; +} + + +struct record_metadata * record_add_metadata(NMEM nmem, + struct record * record, + struct conf_service * service, + const char * name, + union data_types data) +{ + int field_id = 0; - // still needs to be assigned .. + if (!record || !record->metadata || !service || !name) + return 0; + + field_id = conf_service_field_id(service, name); - return rmd; + if (-1 == field_id) + return 0; + return record_metadata_insert(nmem, &(record->metadata[field_id]), data); +} + + + +struct record_metadata * record_add_metadata_field_id(NMEM nmem, + struct record * record, + int field_id, + union data_types data) +{ + if (field_id < 0 || !record || !record->metadata) + return 0; + + return record_metadata_insert(nmem, &(record->metadata[field_id]), data); };