X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=ztest%2Fread-marc.c;h=0b9dc1d387b37ff02d7236ca4755c82584e7e92d;hp=b11b6973ae8076e8119c1c5a4e70c3e2999a93ac;hb=d7e028ba0de38f6060f53cf75ca7246c402eb34f;hpb=b2c79728bb6d24c604a0a9c8fc278afe01827c2a diff --git a/ztest/read-marc.c b/ztest/read-marc.c index b11b697..0b9dc1d 100644 --- a/ztest/read-marc.c +++ b/ztest/read-marc.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2013 Index Data + * Copyright (C) Index Data * See the file LICENSE for details. */ /** \file @@ -12,9 +12,25 @@ #include #include #include +#include #include "ztest.h" +#if HAVE_SYS_TYPES_H +#include +#endif +#if HAVE_SYS_STAT_H +#include +#endif +#ifdef WIN32 +#include +#endif + +#include +#if HAVE_UNISTD_H +#include +#endif + #define NO_MARC_RECORDS 24 char *marc_records[NO_MARC_RECORDS] = { @@ -1680,6 +1696,49 @@ char *dummy_xml_record(int num, ODR odr, const char *esn) return rec; } } + else + { + char *buf = 0; + const char *e = getenv("YAZ_ZTEST_XML_FETCH"); + if (e) + { + WRBUF w = wrbuf_alloc(); + struct stat sbuf; + FILE *file = 0; + + wrbuf_printf(w, "%s%s.%d.xml", e, esn, num); + if (stat(wrbuf_cstr(w), &sbuf) == 0 && + (file = fopen(wrbuf_cstr(w), "rb"))) + { + buf = odr_malloc(odr, 1 + sbuf.st_size); + fread(buf, 1, sbuf.st_size, file); + buf[sbuf.st_size] = '\0'; + } + if (file) + fclose(file); + } + return buf; + } + return 0; +} + +char *dummy_json_record(int num, ODR odr, const char *esn) +{ + if (!esn || !strcmp(esn, "marcinjson")) + { + char *rec = dummy_marc_record(num, odr); + if (rec) + { + WRBUF w = wrbuf_alloc(); + yaz_marc_t mt = yaz_marc_create(); + yaz_marc_xml(mt, YAZ_MARC_JSON); + yaz_marc_decode_wrbuf(mt, rec, -1, w); + rec = odr_strdup(odr, wrbuf_cstr(w)); + yaz_marc_destroy(mt); + wrbuf_destroy(w); + return rec; + } + } return 0; }