X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fretrieve.c;h=d75e937783d473e485644fd9065d604f2fa93ea3;hb=7253cbefce93c35a083505e14d97b3ae24c0a66b;hp=c37808b04ae14f21ddef4106382fb0459df324e4;hpb=0b9734fe70bbb721a5c0464dc122c77b98299c30;p=idzebra-moved-to-github.git diff --git a/index/retrieve.c b/index/retrieve.c index c37808b..d75e937 100644 --- a/index/retrieve.c +++ b/index/retrieve.c @@ -1,4 +1,4 @@ -/* $Id: retrieve.c,v 1.58 2006-11-24 11:35:23 adam Exp $ +/* $Id: retrieve.c,v 1.60 2006-11-29 09:01:53 marc Exp $ Copyright (C) 1995-2006 Index Data ApS @@ -271,12 +271,18 @@ static void retrieve_puts_attr(WRBUF wrbuf, const char *name, { if (value) { - wrbuf_printf(wrbuf, "%s=\"", name); + wrbuf_printf(wrbuf, " %s=\"", name); wrbuf_xmlputs(wrbuf, value); - wrbuf_printf(wrbuf, "\"\n"); + wrbuf_printf(wrbuf, "\""); } } +static void retrieve_puts_attr_int(WRBUF wrbuf, const char *name, + const int value) +{ + wrbuf_printf(wrbuf, " %s=\"%i\"", name, value); +} + static void retrieve_puts_str(WRBUF wrbuf, const char *name, const char *value) { @@ -284,6 +290,12 @@ static void retrieve_puts_str(WRBUF wrbuf, const char *name, wrbuf_printf(wrbuf, "%s %s\n", name, value); } +static void retrieve_puts_int(WRBUF wrbuf, const char *name, + const int value) +{ + wrbuf_printf(wrbuf, "%s %i\n", name, value); +} + int zebra_special_fetch(ZebraHandle zh, zint sysno, int score, ODR odr, const char *elemsetname, oid_value input_format, @@ -310,9 +322,8 @@ int zebra_special_fetch(ZebraHandle zh, zint sysno, int score, ODR odr, else if (input_format == VAL_TEXT_XML) { wrbuf_printf(wrbuf, ZEBRA_XML_HEADER_STR - " sysno=\"" ZINT_FORMAT "\"" - " set=\"zebra::%s\"/>\n", - sysno, elemsetname); + " sysno=\"" ZINT_FORMAT "\"/>\n", + sysno); *output_format = VAL_TEXT_XML; } *rec_lenp = wrbuf_len(wrbuf); @@ -367,23 +378,21 @@ int zebra_special_fetch(ZebraHandle zh, zint sysno, int score, ODR odr, { *output_format = VAL_TEXT_XML; - wrbuf_printf( - wrbuf, ZEBRA_XML_HEADER_STR - " sysno=\"" ZINT_FORMAT "\"", sysno); + wrbuf_printf(wrbuf, ZEBRA_XML_HEADER_STR + " sysno=\"" ZINT_FORMAT "\"", sysno); retrieve_puts_attr(wrbuf, "base", rec->info[recInfo_databaseName]); retrieve_puts_attr(wrbuf, "file", rec->info[recInfo_filename]); retrieve_puts_attr(wrbuf, "type", rec->info[recInfo_fileType]); - - wrbuf_printf( - wrbuf, - " score=\"%i\"" - " rank=\"" ZINT_FORMAT "\"" - " size=\"%i\"" - " set=\"zebra::%s\"/>\n", - score, - recordAttr->staticrank, - recordAttr->recordSize, - elemsetname); + if (score >= 0) + retrieve_puts_attr_int(wrbuf, "score", score); + + wrbuf_printf(wrbuf, + " rank=\"" ZINT_FORMAT "\"" + " size=\"%i\"" + " set=\"zebra::%s\"/>\n", + recordAttr->staticrank, + recordAttr->recordSize, + elemsetname); } else if (input_format == VAL_SUTRS) { @@ -392,13 +401,13 @@ int zebra_special_fetch(ZebraHandle zh, zint sysno, int score, ODR odr, retrieve_puts_str(wrbuf, "base", rec->info[recInfo_databaseName]); retrieve_puts_str(wrbuf, "file", rec->info[recInfo_filename]); retrieve_puts_str(wrbuf, "type", rec->info[recInfo_fileType]); + if (score >= 0) + retrieve_puts_int(wrbuf, "score", score); wrbuf_printf(wrbuf, - "score %i\n" "rank " ZINT_FORMAT "\n" "size %i\n" "set zebra::%s\n", - score, recordAttr->staticrank, recordAttr->recordSize, elemsetname);