YAZ
5.34.0
|
Implements MARC conversion utilities. More...
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <yaz/marcdisp.h>
#include <yaz/wrbuf.h>
#include <yaz/yaz-util.h>
#include <yaz/nmem_xml.h>
#include <yaz/snprintf.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
Go to the source code of this file.
Data Structures | |
struct | yaz_marc_datafield |
represents a data field More... | |
struct | yaz_marc_controlfield |
represents a control field More... | |
struct | yaz_marc_comment |
a comment node More... | |
struct | yaz_marc_node |
MARC node. More... | |
struct | yaz_marc_subfield |
represents a subfield More... | |
struct | yaz_marc_t_ |
the internals of a yaz_marc_t handle More... | |
Enumerations | |
enum | yaz_collection_state { no_collection , collection_first , collection_second } |
enum | YAZ_MARC_NODE_TYPE { YAZ_MARC_DATAFIELD , YAZ_MARC_CONTROLFIELD , YAZ_MARC_COMMENT , YAZ_MARC_LEADER } |
node types for yaz_marc_node More... | |
Functions | |
yaz_marc_t | yaz_marc_create (void) |
construct yaz_marc_t handle More... | |
void | yaz_marc_destroy (yaz_marc_t mt) |
destroy yaz_marc_t handle More... | |
NMEM | yaz_marc_get_nmem (yaz_marc_t mt) |
returns memory for MARC handle More... | |
static void | marc_iconv_reset (yaz_marc_t mt, WRBUF wr) |
static int | marc_exec_leader (const char *leader_spec, char *leader, size_t size) |
static int | yaz_marc_write_xml_turbo_xml (yaz_marc_t mt, xmlNode **root_ptr, const char *ns, const char *format, const char *type) |
static struct yaz_marc_node * | yaz_marc_add_node (yaz_marc_t mt) |
void | yaz_marc_add_controlfield_xml (yaz_marc_t mt, const xmlNode *ptr_tag, const xmlNode *ptr_data) |
adds controlfield to MARC structure using xml Nodes More... | |
void | yaz_marc_add_controlfield_xml2 (yaz_marc_t mt, char *tag, const xmlNode *ptr_data) |
adds controlfield to MARC structure using xml Nodes for data More... | |
void | yaz_marc_add_comment (yaz_marc_t mt, char *comment) |
adds MARC comment string More... | |
void | yaz_marc_cprintf (yaz_marc_t mt, const char *fmt,...) |
adds MARC annotation - printf interface More... | |
int | yaz_marc_get_debug (yaz_marc_t mt) |
gets debug level for MARC system More... | |
void | yaz_marc_add_leader (yaz_marc_t mt, const char *leader, size_t leader_len) |
void | yaz_marc_add_controlfield (yaz_marc_t mt, const char *tag, const char *data, size_t data_len) |
adds controlfield to MARC structure More... | |
void | yaz_marc_add_datafield (yaz_marc_t mt, const char *tag, const char *indicator, size_t indicator_len) |
adds datafield to MARC structure using strings More... | |
static int | element_name_append_attribute_value (yaz_marc_t mt, WRBUF buffer, const char *attribute_name, char *code_data, size_t code_len) |
adds a attribute value to the element name if it is plain chars More... | |
void | yaz_marc_add_datafield_xml (yaz_marc_t mt, const xmlNode *ptr_tag, const char *indicator, size_t indicator_len) |
adds datafield to MARC structure using xml Nodes More... | |
void | yaz_marc_add_datafield_xml2 (yaz_marc_t mt, char *tag_value, char *indicators) |
adds datafield to MARC structure using xml Nodes More... | |
void | yaz_marc_datafield_set_indicators (struct yaz_marc_node *n, char *indicator) |
void | yaz_marc_add_subfield (yaz_marc_t mt, const char *code_data, size_t code_data_len) |
adds subfield to MARC structure More... | |
static void | check_ascii (yaz_marc_t mt, char *leader, int offset, int ch_default) |
void | yaz_marc_set_leader (yaz_marc_t mt, const char *leader_c, int *indicator_length, int *identifier_length, int *base_address, int *length_data_entry, int *length_starting, int *length_implementation) |
sets leader, validates it, and returns important values More... | |
void | yaz_marc_subfield_str (yaz_marc_t mt, const char *s) |
void | yaz_marc_endline_str (yaz_marc_t mt, const char *s) |
static size_t | cdata_one_character (yaz_marc_t mt, const char *buf) |
size_t | yaz_marc_sizeof_char (yaz_marc_t mt, const char *buf) |
void | yaz_marc_reset (yaz_marc_t mt) |
clears memory and MARC record More... | |
int | yaz_marc_write_check (yaz_marc_t mt, WRBUF wr) |
static size_t | get_subfield_len (yaz_marc_t mt, const char *data, int identifier_length) |
int | yaz_marc_write_line (yaz_marc_t mt, WRBUF wr) |
writes record in line format More... | |
int | yaz_marc_write_trailer (yaz_marc_t mt, WRBUF wr) |
flushes records More... | |
void | yaz_marc_enable_collection (yaz_marc_t mt) |
enables record collection output More... | |
int | yaz_marc_write_mode (yaz_marc_t mt, WRBUF wr) |
writes record in mode - given by yaz_marc_xml mode More... | |
static int | yaz_marc_write_marcxml_wrbuf (yaz_marc_t mt, WRBUF wr, const char *ns, const char *format, const char *type, int turbo) |
common MARC XML/Xchange/turbomarc writer More... | |
static int | yaz_marc_write_marcxml_ns (yaz_marc_t mt, WRBUF wr, const char *ns, const char *format, const char *type, int turbo) |
int | yaz_marc_write_marcxml (yaz_marc_t mt, WRBUF wr) |
writes record in MARCXML format More... | |
int | yaz_marc_write_turbomarc (yaz_marc_t mt, WRBUF wr) |
writes record in TurboMARC format More... | |
int | yaz_marc_write_marcxchange (yaz_marc_t mt, WRBUF wr, const char *format, const char *type) |
writes record in MarcXchange XML (ISO25577) More... | |
static void | write_xml_indicator (yaz_marc_t mt, struct yaz_marc_node *n, xmlNode *ptr, int turbo) |
static void | add_marc_datafield_turbo_xml (yaz_marc_t mt, struct yaz_marc_node *n, xmlNode *record_ptr, xmlNsPtr ns_record, WRBUF wr_cdata, int identifier_length) |
int | yaz_marc_write_xml (yaz_marc_t mt, xmlNode **root_ptr, const char *ns, const char *format, const char *type) |
writes MARC record as libxml2 tree More... | |
int | yaz_marc_write_iso2709 (yaz_marc_t mt, WRBUF wr) |
writes record in ISO2709 format More... | |
int | yaz_marc_write_json (yaz_marc_t mt, WRBUF w) |
writes MARC record in JSON represenation More... | |
int | yaz_marc_decode_wrbuf (yaz_marc_t mt, const char *buf, int bsize, WRBUF wr) |
decodes ISO2709/MARC buffer and stores result in WRBUF More... | |
int | yaz_marc_decode_buf (yaz_marc_t mt, const char *buf, int bsize, const char **result, size_t *rsize) |
decodes ISO2709 buffer using straight buffers More... | |
void | yaz_marc_xml (yaz_marc_t mt, int xmlmode) |
set XML mode YAZ_MARC_LINE, YAZ_MARCXML, YAZ_MARC_ISO2709 .. More... | |
void | yaz_marc_debug (yaz_marc_t mt, int level) |
set debug level More... | |
void | yaz_marc_iconv (yaz_marc_t mt, yaz_iconv_t cd) |
set iconv handle for character set conversion More... | |
yaz_iconv_t | yaz_marc_get_iconv (yaz_marc_t mt) |
supply iconv handle for character set conversion More... | |
void | yaz_marc_modify_leader (yaz_marc_t mt, size_t off, const char *str) |
modifies part of the MARC leader More... | |
int | yaz_marc_leader_spec (yaz_marc_t mt, const char *leader_spec) |
sets leader spec (for modifying bytes in 24 byte leader) More... | |
int | yaz_marc_decode_formatstr (const char *arg) |
Converts MARC format type to format type(YAZ_MARC_..) More... | |
void | yaz_marc_write_using_libxml2 (yaz_marc_t mt, int enable) |
Enables or disables writing of MARC XML records using Libxml2. More... | |
int | yaz_marc_check_marc21_coding (const char *charset, const char *marc_buf, int sz) |
check if MARC21 is UTF-8 encoded More... | |
Variables | |
static const char * | record_name [2] = { "record", "r"} |
static const char * | leader_name [2] = { "leader", "l"} |
static const char * | controlfield_name [2] = { "controlfield", "c"} |
static const char * | datafield_name [2] = { "datafield", "d"} |
static const char * | indicator_name [2] = { "ind", "i"} |
static const char * | subfield_name [2] = { "subfield", "s"} |
Implements MARC conversion utilities.
Definition in file marcdisp.c.
enum yaz_collection_state |
Enumerator | |
---|---|
no_collection | |
collection_first | |
collection_second |
Definition at line 34 of file marcdisp.c.
enum YAZ_MARC_NODE_TYPE |
node types for yaz_marc_node
Enumerator | |
---|---|
YAZ_MARC_DATAFIELD | |
YAZ_MARC_CONTROLFIELD | |
YAZ_MARC_COMMENT | |
YAZ_MARC_LEADER |
Definition at line 41 of file marcdisp.c.
|
static |
Definition at line 906 of file marcdisp.c.
References yaz_marc_subfield::code_data, yaz_marc_node::datafield, element_name_append_attribute_value(), get_subfield_len(), yaz_marc_t_::iconv_cd, marc_iconv_reset(), yaz_marc_subfield::next, subfield_name, yaz_marc_datafield::subfields, yaz_marc_datafield::tag, yaz_marc_node::u, wrbuf_alloc(), wrbuf_cstr(), wrbuf_destroy(), wrbuf_iconv_puts(), wrbuf_iconv_write(), wrbuf_puts(), wrbuf_rewind(), and write_xml_indicator().
Referenced by yaz_marc_write_xml_turbo_xml().
|
static |
Definition at line 445 of file marcdisp.c.
References yaz_marc_t_::iconv_cd, yaz_iconv(), and yaz_read_UTF8_char().
Referenced by get_subfield_len(), write_xml_indicator(), yaz_marc_sizeof_char(), yaz_marc_write_json(), and yaz_marc_write_marcxml_wrbuf().
|
static |
Definition at line 344 of file marcdisp.c.
References yaz_marc_cprintf().
Referenced by yaz_marc_set_leader().
|
static |
adds a attribute value to the element name if it is plain chars
If not, and if the attribute name is not null, it will append a attribute element with the value if attribute name is null it will return a non-zero value meaning it couldnt handle the value.
Definition at line 253 of file marcdisp.c.
References yaz_marc_t_::iconv_cd, wrbuf_iconv_write_cdata(), and wrbuf_printf().
Referenced by add_marc_datafield_turbo_xml(), and yaz_marc_write_marcxml_wrbuf().
|
static |
Definition at line 525 of file marcdisp.c.
References cdata_one_character().
Referenced by add_marc_datafield_turbo_xml(), yaz_marc_write_json(), yaz_marc_write_line(), yaz_marc_write_marcxml_wrbuf(), and yaz_marc_write_xml().
|
static |
Definition at line 1424 of file marcdisp.c.
References yaz_marc_node::leader.
Referenced by yaz_marc_add_leader(), and yaz_marc_leader_spec().
|
static |
Definition at line 135 of file marcdisp.c.
References yaz_marc_t_::iconv_cd, and wrbuf_iconv_reset().
Referenced by add_marc_datafield_turbo_xml(), yaz_marc_write_iso2709(), yaz_marc_write_line(), yaz_marc_write_marcxml_wrbuf(), yaz_marc_write_xml(), and yaz_marc_write_xml_turbo_xml().
|
static |
Definition at line 881 of file marcdisp.c.
References cdata_one_character(), yaz_marc_node::datafield, yaz_marc_datafield::indicator, indicator_name, and yaz_marc_node::u.
Referenced by add_marc_datafield_turbo_xml(), and yaz_marc_write_xml().
void yaz_marc_add_comment | ( | yaz_marc_t | mt, |
char * | comment | ||
) |
adds MARC comment string
mt | handle |
comment | comment to be added) |
Definition at line 181 of file marcdisp.c.
References yaz_marc_node::comment, yaz_marc_t_::nmem, nmem_strdup(), yaz_marc_node::u, yaz_marc_node::which, yaz_marc_add_node(), and YAZ_MARC_COMMENT.
Referenced by yaz_marc_add_controlfield(), yaz_marc_add_subfield(), and yaz_marc_cprintf().
void yaz_marc_add_controlfield | ( | yaz_marc_t | mt, |
const char * | tag, | ||
const char * | data, | ||
size_t | data_len | ||
) |
adds controlfield to MARC structure
mt | handle |
tag | (e.g. "001" |
data | value for this tag |
data_len | length of data |
Definition at line 212 of file marcdisp.c.
References yaz_marc_node::controlfield, yaz_marc_controlfield::data, yaz_marc_t_::debug, yaz_marc_t_::nmem, nmem_strdup(), nmem_strdupn(), yaz_marc_controlfield::tag, yaz_marc_node::u, yaz_marc_node::which, yaz_marc_add_comment(), yaz_marc_add_node(), and YAZ_MARC_CONTROLFIELD.
Referenced by parse_field(), yaz_end_element_ns(), yaz_marc_read_iso2709(), and yaz_marc_read_line().
void yaz_marc_add_controlfield_xml | ( | yaz_marc_t | mt, |
const xmlNode * | ptr_tag, | ||
const xmlNode * | ptr_data | ||
) |
adds controlfield to MARC structure using xml Nodes
mt | handle |
ptr_tag | value of tag (TEXT xmlNode) |
ptr_data | value of data (TEXT xmlNode) |
Definition at line 160 of file marcdisp.c.
References yaz_marc_node::controlfield, yaz_marc_controlfield::data, yaz_marc_t_::nmem, nmem_text_node_cdata(), yaz_marc_controlfield::tag, yaz_marc_node::u, yaz_marc_node::which, yaz_marc_add_node(), and YAZ_MARC_CONTROLFIELD.
Referenced by yaz_marc_read_xml_fields().
void yaz_marc_add_controlfield_xml2 | ( | yaz_marc_t | mt, |
char * | tag, | ||
const xmlNode * | ptr_data | ||
) |
adds controlfield to MARC structure using xml Nodes for data
mt | handle |
tag | string tag |
ptr_data | value of data (TEXT xmlNode) |
Definition at line 169 of file marcdisp.c.
References yaz_marc_node::controlfield, yaz_marc_controlfield::data, yaz_marc_t_::nmem, nmem_text_node_cdata(), yaz_marc_controlfield::tag, yaz_marc_node::u, yaz_marc_node::which, yaz_marc_add_node(), and YAZ_MARC_CONTROLFIELD.
Referenced by yaz_marc_read_turbo_xml_fields().
void yaz_marc_add_datafield | ( | yaz_marc_t | mt, |
const char * | tag, | ||
const char * | indicator, | ||
size_t | indicator_len | ||
) |
adds datafield to MARC structure using strings
mt | handle |
tag | value of tag as string |
indicator | indicator string |
indicator_len | length of indicator string |
Definition at line 233 of file marcdisp.c.
References yaz_marc_node::datafield, yaz_marc_datafield::indicator, yaz_marc_t_::nmem, nmem_strdup(), nmem_strdupn(), yaz_marc_t_::subfield_pp, yaz_marc_datafield::subfields, yaz_marc_datafield::tag, yaz_marc_node::u, yaz_marc_node::which, yaz_marc_add_node(), and YAZ_MARC_DATAFIELD.
Referenced by parse_field(), yaz_marc_read_iso2709(), yaz_marc_read_line(), and yaz_start_element_ns().
void yaz_marc_add_datafield_xml | ( | yaz_marc_t | mt, |
const xmlNode * | ptr_tag, | ||
const char * | indicator, | ||
size_t | indicator_len | ||
) |
adds datafield to MARC structure using xml Nodes
mt | handle |
ptr_tag | value of tag (TEXT xmlNode) |
indicator | indicator string |
indicator_len | length of indicator string |
Definition at line 284 of file marcdisp.c.
References yaz_marc_node::datafield, yaz_marc_datafield::indicator, yaz_marc_t_::nmem, nmem_strdup(), nmem_text_node_cdata(), yaz_marc_t_::subfield_pp, yaz_marc_datafield::subfields, yaz_marc_datafield::tag, yaz_marc_node::u, yaz_marc_node::which, yaz_marc_add_node(), and YAZ_MARC_DATAFIELD.
Referenced by yaz_marc_read_xml_fields().
void yaz_marc_add_datafield_xml2 | ( | yaz_marc_t | mt, |
char * | tag_value, | ||
char * | indicators | ||
) |
adds datafield to MARC structure using xml Nodes
mt | handle |
tag_value | string value (pointer copied verbatim, not strdupped) |
indicators | indicator string ; pointer copied verbatim; not strdupped |
Definition at line 297 of file marcdisp.c.
References yaz_marc_node::datafield, yaz_marc_datafield::indicator, yaz_marc_t_::subfield_pp, yaz_marc_datafield::subfields, yaz_marc_datafield::tag, yaz_marc_node::u, yaz_marc_node::which, yaz_marc_add_node(), and YAZ_MARC_DATAFIELD.
Referenced by yaz_marc_read_turbo_xml_fields().
void yaz_marc_add_leader | ( | yaz_marc_t | mt, |
const char * | leader, | ||
size_t | leader_len | ||
) |
Definition at line 204 of file marcdisp.c.
References yaz_marc_node::leader, yaz_marc_t_::leader_spec, marc_exec_leader(), yaz_marc_t_::nmem, nmem_strdupn(), yaz_marc_node::u, yaz_marc_node::which, yaz_marc_add_node(), and YAZ_MARC_LEADER.
Referenced by yaz_marc_set_leader().
|
static |
Definition at line 149 of file marcdisp.c.
References yaz_marc_node::next, yaz_marc_t_::nmem, nmem_malloc(), and yaz_marc_t_::nodes_pp.
Referenced by yaz_marc_add_comment(), yaz_marc_add_controlfield(), yaz_marc_add_controlfield_xml(), yaz_marc_add_controlfield_xml2(), yaz_marc_add_datafield(), yaz_marc_add_datafield_xml(), yaz_marc_add_datafield_xml2(), and yaz_marc_add_leader().
void yaz_marc_add_subfield | ( | yaz_marc_t | mt, |
const char * | code_data, | ||
size_t | code_data_len | ||
) |
adds subfield to MARC structure
mt | handle |
code_data | code data buffer |
code_data_len | length of code data |
Definition at line 316 of file marcdisp.c.
References yaz_marc_subfield::code_data, yaz_marc_t_::debug, yaz_marc_subfield::next, yaz_marc_t_::nmem, nmem_malloc(), nmem_strdupn(), yaz_marc_t_::subfield_pp, and yaz_marc_add_comment().
Referenced by parse_subfields(), yaz_end_element_ns(), yaz_marc_read_iso2709(), yaz_marc_read_line(), yaz_marc_read_turbo_xml_subfields(), and yaz_marc_read_xml_subfields().
int yaz_marc_check_marc21_coding | ( | const char * | charset, |
const char * | marc_buf, | ||
int | sz | ||
) |
check if MARC21 is UTF-8 encoded
charset | that is given by user |
marc_buf | ISO2709 buf |
sz | ISO2709 size |
1 | is probably UTF-8 |
0 | is not UTF-8 |
Definition at line 1490 of file marcdisp.c.
References yaz_matchstr().
Referenced by convert_marc(), iconv_create_charset(), and yaz_opac_check_marc21_coding().
void yaz_marc_cprintf | ( | yaz_marc_t | mt, |
const char * | fmt, | ||
... | |||
) |
adds MARC annotation - printf interface
mt | handle |
fmt | printf format string |
Definition at line 188 of file marcdisp.c.
References yaz_marc_add_comment(), and yaz_vsnprintf().
Referenced by check_ascii(), yaz_marc_read_iso2709(), yaz_marc_read_json_node(), yaz_marc_read_line(), yaz_marc_read_turbo_xml_fields(), yaz_marc_read_turbo_xml_subfields(), yaz_marc_read_xml(), yaz_marc_read_xml_fields(), yaz_marc_read_xml_leader(), yaz_marc_read_xml_subfields(), and yaz_marc_set_leader().
yaz_marc_t yaz_marc_create | ( | void | ) |
construct yaz_marc_t handle
Definition at line 102 of file marcdisp.c.
References yaz_marc_t_::debug, yaz_marc_t_::enable_collection, yaz_marc_t_::endline_str, yaz_marc_t_::iconv_cd, yaz_marc_t_::leader_spec, yaz_marc_t_::m_wr, yaz_marc_t_::nmem, nmem_create(), no_collection, yaz_marc_t_::output_format, yaz_marc_t_::subfield_str, wrbuf_alloc(), yaz_marc_t_::write_using_libxml2, xmalloc, YAZ_MARC_LINE, and yaz_marc_reset().
Referenced by convert_marc(), dummy_json_record(), dummy_xml_record(), retrieve_fetch(), return_marc_record(), return_opac_record(), and yaz_record_conv_opac_record().
void yaz_marc_datafield_set_indicators | ( | struct yaz_marc_node * | n, |
char * | indicator | ||
) |
Definition at line 309 of file marcdisp.c.
References yaz_marc_node::datafield, yaz_marc_datafield::indicator, and yaz_marc_node::u.
void yaz_marc_debug | ( | yaz_marc_t | mt, |
int | level | ||
) |
set debug level
mt | handle |
level | level, where 0=lowest, 1 more debug, 2 even more |
Definition at line 1381 of file marcdisp.c.
References yaz_marc_t_::debug.
int yaz_marc_decode_buf | ( | yaz_marc_t | mt, |
const char * | buf, | ||
int | bsize, | ||
const char ** | result, | ||
size_t * | rsize | ||
) |
decodes ISO2709 buffer using straight buffers
mt | marc handle |
buf | input buffer |
bsize | size of buffer or (-1 if "any size") |
result | result to be stored here |
rsize | size of result (memory "owned" by yaz_marc_mt handle) |
Decodes MARC in buf of size bsize. On success, result in *result with size *rsize. Returns -1 on error, or size of input record (>0) if OK
Definition at line 1362 of file marcdisp.c.
References yaz_marc_t_::m_wr, wrbuf_cstr(), wrbuf_len, wrbuf_rewind(), and yaz_marc_decode_wrbuf().
int yaz_marc_decode_formatstr | ( | const char * | arg | ) |
Converts MARC format type to format type(YAZ_MARC_..)
arg | string |
-1 | unknown format (bad arg) |
>= | 0 OK (one of YAZ_MARC - values) |
Definition at line 1467 of file marcdisp.c.
References YAZ_MARC_ISO2709, YAZ_MARC_JSON, YAZ_MARC_LINE, YAZ_MARC_MARCXML, YAZ_MARC_TURBOMARC, and YAZ_MARC_XCHANGE.
int yaz_marc_decode_wrbuf | ( | yaz_marc_t | mt, |
const char * | buf, | ||
int | bsize, | ||
WRBUF | wrbuf | ||
) |
decodes ISO2709/MARC buffer and stores result in WRBUF
mt | handle |
buf | input buffer |
bsize | size of buffer (-1 if "any size") |
wrbuf | WRBUF for output |
Decodes MARC in buf of size bsize. On success, result in wrbuf Returns -1 on error, or size of input record (>0) if OK
Definition at line 1351 of file marcdisp.c.
References yaz_marc_read_iso2709(), and yaz_marc_write_mode().
Referenced by dummy_json_record(), dummy_xml_record(), return_marc_record(), yaz_marc_decode_buf(), and yaz_opac_decode_wrbuf2().
void yaz_marc_destroy | ( | yaz_marc_t | mt | ) |
destroy yaz_marc_t handle
Definition at line 120 of file marcdisp.c.
References yaz_marc_t_::leader_spec, yaz_marc_t_::m_wr, yaz_marc_t_::nmem, nmem_destroy(), wrbuf_destroy(), and xfree.
Referenced by convert_marc(), dummy_json_record(), dummy_xml_record(), retrieve_fetch(), return_marc_record(), return_opac_record(), and yaz_record_conv_opac_record().
void yaz_marc_enable_collection | ( | yaz_marc_t | mt | ) |
enables record collection output
mt | handle |
Definition at line 618 of file marcdisp.c.
References collection_first, and yaz_marc_t_::enable_collection.
void yaz_marc_endline_str | ( | yaz_marc_t | mt, |
const char * | s | ||
) |
Definition at line 438 of file marcdisp.c.
References yaz_marc_t_::endline_str.
int yaz_marc_get_debug | ( | yaz_marc_t | mt | ) |
gets debug level for MARC system
mt | handle |
Definition at line 199 of file marcdisp.c.
References yaz_marc_t_::debug.
Referenced by yaz_marc_read_iso2709().
yaz_iconv_t yaz_marc_get_iconv | ( | yaz_marc_t | mt | ) |
supply iconv handle for character set conversion
Definition at line 1392 of file marcdisp.c.
References yaz_marc_t_::iconv_cd.
Referenced by yaz_opac_decode_wrbuf2().
NMEM yaz_marc_get_nmem | ( | yaz_marc_t | mt | ) |
returns memory for MARC handle
mt | handle |
NMEM | handle for MARC system |
Definition at line 130 of file marcdisp.c.
References yaz_marc_t_::nmem.
Referenced by yaz_marc_read_turbo_xml_fields(), yaz_marc_read_turbo_xml_subfields(), yaz_marc_read_xml_subfields(), and yaz_xml_to_opac_ptr().
void yaz_marc_iconv | ( | yaz_marc_t | mt, |
yaz_iconv_t | cd | ||
) |
set iconv handle for character set conversion
Definition at line 1387 of file marcdisp.c.
References yaz_marc_t_::iconv_cd.
Referenced by convert_marc(), return_marc_record(), return_opac_record(), yaz_record_conv_opac_record(), and yaz_xml_to_opac().
int yaz_marc_leader_spec | ( | yaz_marc_t | mt, |
const char * | leader_spec | ||
) |
sets leader spec (for modifying bytes in 24 byte leader)
mt | handle |
leader_spec |
0 | OK |
-1 | ERROR |
Spec takes form pos=val,pos=val,... where value is either a number (decimal char value) or a string in 'a', e.g. 9='a'
Definition at line 1410 of file marcdisp.c.
References yaz_marc_t_::leader_spec, marc_exec_leader(), xfree, and xstrdup.
Referenced by convert_marc(), and yaz_record_conv_opac_record().
void yaz_marc_modify_leader | ( | yaz_marc_t | mt, |
size_t | off, | ||
const char * | str | ||
) |
modifies part of the MARC leader
Definition at line 1397 of file marcdisp.c.
References yaz_marc_node::leader, yaz_marc_node::next, yaz_marc_t_::nodes, yaz_marc_node::u, yaz_marc_node::which, and YAZ_MARC_LEADER.
Referenced by yaz_marc_write_marcxml(), and yaz_marc_write_turbomarc().
void yaz_marc_reset | ( | yaz_marc_t | mt | ) |
clears memory and MARC record
mt | handle |
Definition at line 483 of file marcdisp.c.
References yaz_marc_t_::nmem, nmem_reset(), yaz_marc_t_::nodes, yaz_marc_t_::nodes_pp, and yaz_marc_t_::subfield_pp.
Referenced by yaz_marc_create(), yaz_marc_read_iso2709(), yaz_marc_read_line(), yaz_marc_read_xml(), and yaz_start_element_ns().
void yaz_marc_set_leader | ( | yaz_marc_t | mt, |
const char * | leader, | ||
int * | indicator_length, | ||
int * | identifier_length, | ||
int * | base_address, | ||
int * | length_data_entry, | ||
int * | length_starting, | ||
int * | length_implementation | ||
) |
sets leader, validates it, and returns important values
mt | handle |
leader | of the 24 byte leader to be set |
indicator_length | indicator length (returned value) |
identifier_length | identifier length (returned value) |
base_address | base address (returned value) |
length_data_entry | length of data entry (returned value) |
length_starting | length of starting |
length_implementation | length of implementation defined data |
Definition at line 356 of file marcdisp.c.
References atoi_n_check(), check_ascii(), yaz_marc_t_::debug, yaz_marc_add_leader(), and yaz_marc_cprintf().
Referenced by yaz_end_element_ns(), yaz_marc_read_iso2709(), yaz_marc_read_json_node(), yaz_marc_read_line(), and yaz_marc_read_xml_leader().
size_t yaz_marc_sizeof_char | ( | yaz_marc_t | mt, |
const char * | buf | ||
) |
Definition at line 478 of file marcdisp.c.
References cdata_one_character().
Referenced by yaz_marc_read_iso2709().
void yaz_marc_subfield_str | ( | yaz_marc_t | mt, |
const char * | s | ||
) |
Definition at line 432 of file marcdisp.c.
References yaz_marc_t_::subfield_str.
int yaz_marc_write_check | ( | yaz_marc_t | mt, |
WRBUF | wr | ||
) |
Definition at line 491 of file marcdisp.c.
References atoi_n_check(), yaz_marc_node::comment, yaz_marc_t_::iconv_cd, yaz_marc_node::leader, yaz_marc_node::next, yaz_marc_t_::nodes, yaz_marc_node::u, yaz_marc_node::which, wrbuf_iconv_write(), wrbuf_puts(), YAZ_MARC_COMMENT, and YAZ_MARC_LEADER.
Referenced by yaz_marc_write_mode().
int yaz_marc_write_iso2709 | ( | yaz_marc_t | mt, |
WRBUF | wrbuf | ||
) |
writes record in ISO2709 format
mt | handle |
wrbuf | WRBUF for output |
0 | OK |
-1 | ERROR |
Definition at line 1119 of file marcdisp.c.
References atoi_n_check(), yaz_marc_subfield::code_data, yaz_marc_node::controlfield, yaz_marc_controlfield::data, yaz_marc_node::datafield, yaz_marc_t_::iconv_cd, yaz_marc_datafield::indicator, ISO2709_FS, ISO2709_IDFS, ISO2709_RS, yaz_marc_node::leader, marc_iconv_reset(), yaz_marc_node::next, yaz_marc_subfield::next, yaz_marc_t_::nodes, yaz_marc_datafield::subfields, yaz_marc_datafield::tag, yaz_marc_controlfield::tag, yaz_marc_node::u, yaz_marc_node::which, wrbuf_alloc(), wrbuf_buf, wrbuf_destroy(), wrbuf_iconv_putchar(), wrbuf_iconv_puts(), wrbuf_len, wrbuf_printf(), wrbuf_putc, wrbuf_puts(), wrbuf_rewind(), wrbuf_write(), YAZ_MARC_COMMENT, YAZ_MARC_CONTROLFIELD, YAZ_MARC_DATAFIELD, and YAZ_MARC_LEADER.
Referenced by bibliographicRecord(), and yaz_marc_write_mode().
int yaz_marc_write_json | ( | yaz_marc_t | mt, |
WRBUF | w | ||
) |
writes MARC record in JSON represenation
mt | handle |
w | WRBUF for output |
0 | Creation successful |
-1 | ERROR |
Definition at line 1257 of file marcdisp.c.
References atoi_n_check(), cdata_one_character(), yaz_marc_subfield::code_data, yaz_marc_node::controlfield, yaz_marc_controlfield::data, yaz_marc_node::datafield, get_subfield_len(), yaz_marc_t_::iconv_cd, yaz_marc_datafield::indicator, yaz_marc_node::leader, yaz_marc_node::next, yaz_marc_subfield::next, yaz_marc_t_::nodes, yaz_marc_datafield::subfields, yaz_marc_datafield::tag, yaz_marc_controlfield::tag, yaz_marc_node::u, yaz_marc_node::which, wrbuf_iconv_json_puts(), wrbuf_iconv_json_write(), wrbuf_json_puts(), wrbuf_json_write(), wrbuf_printf(), wrbuf_puts(), YAZ_MARC_COMMENT, YAZ_MARC_CONTROLFIELD, YAZ_MARC_DATAFIELD, and YAZ_MARC_LEADER.
Referenced by yaz_marc_write_mode().
int yaz_marc_write_line | ( | yaz_marc_t | mt, |
WRBUF | wrbuf | ||
) |
writes record in line format
mt | handle |
wrbuf | WRBUF for output |
0 | OK |
-1 | ERROR |
Definition at line 537 of file marcdisp.c.
References atoi_n_check(), yaz_marc_subfield::code_data, yaz_marc_node::comment, yaz_marc_node::controlfield, yaz_marc_controlfield::data, yaz_marc_node::datafield, yaz_marc_t_::endline_str, get_subfield_len(), yaz_marc_t_::iconv_cd, yaz_marc_datafield::indicator, yaz_marc_node::leader, marc_iconv_reset(), yaz_marc_node::next, yaz_marc_subfield::next, yaz_marc_t_::nodes, yaz_marc_t_::subfield_str, yaz_marc_datafield::subfields, yaz_marc_datafield::tag, yaz_marc_controlfield::tag, yaz_marc_node::u, yaz_marc_node::which, wrbuf_iconv_puts(), wrbuf_iconv_write(), wrbuf_printf(), wrbuf_puts(), YAZ_MARC_COMMENT, YAZ_MARC_CONTROLFIELD, YAZ_MARC_DATAFIELD, and YAZ_MARC_LEADER.
Referenced by yaz_marc_write_mode().
int yaz_marc_write_marcxchange | ( | yaz_marc_t | mt, |
WRBUF | wrbuf, | ||
const char * | format, | ||
const char * | type | ||
) |
writes record in MarcXchange XML (ISO25577)
mt | handle |
wrbuf | WRBUF for output |
format | record format (e.g. "MARC21") |
type | record type (e.g. Bibliographic) |
0 | OK |
-1 | ERROR |
Definition at line 871 of file marcdisp.c.
References yaz_marc_write_marcxml_ns().
Referenced by yaz_marc_write_mode().
int yaz_marc_write_marcxml | ( | yaz_marc_t | mt, |
WRBUF | wrbuf | ||
) |
writes record in MARCXML format
mt | handle |
wrbuf | WRBUF for output |
0 | OK |
-1 | ERROR |
Sets leader[9]='a' .
Definition at line 850 of file marcdisp.c.
References yaz_marc_t_::leader_spec, yaz_marc_modify_leader(), and yaz_marc_write_marcxml_ns().
Referenced by yaz_marc_write_mode().
|
static |
Definition at line 811 of file marcdisp.c.
References type, wrbuf_puts(), wrbuf_write(), yaz_marc_t_::write_using_libxml2, yaz_marc_write_marcxml_wrbuf(), yaz_marc_write_xml(), and yaz_marc_write_xml_turbo_xml().
Referenced by yaz_marc_write_marcxchange(), yaz_marc_write_marcxml(), and yaz_marc_write_turbomarc().
|
static |
common MARC XML/Xchange/turbomarc writer
mt | handle |
wr | WRBUF output |
ns | XMLNS for the elements |
format | record format (e.g. "MARC21") |
type | record type (e.g. "Bibliographic") |
turbo | =1 for turbomarc |
0 | OK |
-1 | failure |
Definition at line 662 of file marcdisp.c.
References atoi_n_check(), cdata_one_character(), yaz_marc_subfield::code_data, collection_first, collection_second, yaz_marc_node::comment, yaz_marc_node::controlfield, controlfield_name, yaz_marc_controlfield::data, yaz_marc_node::datafield, datafield_name, element_name_append_attribute_value(), yaz_marc_t_::enable_collection, get_subfield_len(), yaz_marc_t_::iconv_cd, yaz_marc_datafield::indicator, indicator_name, yaz_marc_node::leader, leader_name, marc_iconv_reset(), yaz_marc_node::next, yaz_marc_subfield::next, no_collection, yaz_marc_t_::nodes, record_name, subfield_name, yaz_marc_datafield::subfields, yaz_marc_datafield::tag, yaz_marc_controlfield::tag, type, yaz_marc_node::u, yaz_marc_node::which, wrbuf_iconv_puts(), wrbuf_iconv_write_cdata(), wrbuf_printf(), wrbuf_puts(), YAZ_MARC_COMMENT, YAZ_MARC_CONTROLFIELD, YAZ_MARC_DATAFIELD, and YAZ_MARC_LEADER.
Referenced by yaz_marc_write_marcxml_ns().
int yaz_marc_write_mode | ( | yaz_marc_t | mt, |
WRBUF | wrbuf | ||
) |
writes record in mode - given by yaz_marc_xml mode
mt | handle |
wrbuf | WRBUF for output |
0 | OK |
-1 | ERROR |
This function calls yaz_marc_write_iso2709, yaz_marc_write_marcxml, etc.. depending on mode given by yaz_marc_xml.
Definition at line 623 of file marcdisp.c.
References yaz_marc_t_::output_format, YAZ_MARC_CHECK, YAZ_MARC_ISO2709, YAZ_MARC_JSON, YAZ_MARC_LINE, YAZ_MARC_MARCXML, YAZ_MARC_TURBOMARC, yaz_marc_write_check(), yaz_marc_write_iso2709(), yaz_marc_write_json(), yaz_marc_write_line(), yaz_marc_write_marcxchange(), yaz_marc_write_marcxml(), yaz_marc_write_turbomarc(), and YAZ_MARC_XCHANGE.
Referenced by convert_marc(), and yaz_marc_decode_wrbuf().
int yaz_marc_write_trailer | ( | yaz_marc_t | mt, |
WRBUF | wr | ||
) |
flushes records
mt | handle |
wr | WRBUF for output |
0 | OK |
-1 | ERROR |
Definition at line 600 of file marcdisp.c.
References collection_second, yaz_marc_t_::enable_collection, yaz_marc_t_::output_format, wrbuf_printf(), YAZ_MARC_MARCXML, YAZ_MARC_TURBOMARC, and YAZ_MARC_XCHANGE.
int yaz_marc_write_turbomarc | ( | yaz_marc_t | mt, |
WRBUF | wrbuf | ||
) |
writes record in TurboMARC format
mt | handle |
wrbuf | WRBUF for output |
0 | OK |
-1 | ERROR |
Definition at line 861 of file marcdisp.c.
References yaz_marc_t_::leader_spec, yaz_marc_modify_leader(), and yaz_marc_write_marcxml_ns().
Referenced by yaz_marc_write_mode().
void yaz_marc_write_using_libxml2 | ( | yaz_marc_t | mt, |
int | enable | ||
) |
Enables or disables writing of MARC XML records using Libxml2.
mt | handle |
enable | 0=disable, 1=enable |
Definition at line 1485 of file marcdisp.c.
References yaz_marc_t_::write_using_libxml2.
int yaz_marc_write_xml | ( | yaz_marc_t | mt, |
xmlNode ** | root_ptr, | ||
const char * | ns, | ||
const char * | format, | ||
const char * | type | ||
) |
writes MARC record as libxml2 tree
mt | handle |
root_ptr | pointer to record node |
ns | namespace of record (such as "http://www.loc.gov/MARC21/slim") |
format | MarcXchange format (NULL for none) |
type | MarcXchange format (NULL for none) |
0 | Creation successful and *root_ptr is "record" node |
-1 | ERROR |
Definition at line 1025 of file marcdisp.c.
References atoi_n_check(), yaz_marc_subfield::code_data, yaz_marc_node::comment, yaz_marc_node::controlfield, yaz_marc_controlfield::data, yaz_marc_node::datafield, get_subfield_len(), yaz_marc_t_::iconv_cd, yaz_marc_node::leader, marc_iconv_reset(), yaz_marc_node::next, yaz_marc_subfield::next, yaz_marc_t_::nodes, yaz_marc_datafield::subfields, yaz_marc_datafield::tag, yaz_marc_controlfield::tag, type, yaz_marc_node::u, yaz_marc_node::which, wrbuf_alloc(), wrbuf_cstr(), wrbuf_destroy(), wrbuf_iconv_puts(), wrbuf_iconv_write(), wrbuf_rewind(), write_xml_indicator(), YAZ_MARC_COMMENT, YAZ_MARC_CONTROLFIELD, YAZ_MARC_DATAFIELD, and YAZ_MARC_LEADER.
Referenced by yaz_marc_write_marcxml_ns().
|
static |
Definition at line 951 of file marcdisp.c.
References add_marc_datafield_turbo_xml(), atoi_n_check(), yaz_marc_node::comment, yaz_marc_node::controlfield, yaz_marc_controlfield::data, yaz_marc_t_::iconv_cd, yaz_marc_node::leader, marc_iconv_reset(), yaz_marc_node::next, yaz_marc_t_::nodes, yaz_marc_controlfield::tag, type, yaz_marc_node::u, yaz_marc_node::which, wrbuf_alloc(), wrbuf_cstr(), wrbuf_destroy(), wrbuf_iconv_puts(), wrbuf_rewind(), YAZ_MARC_COMMENT, YAZ_MARC_CONTROLFIELD, YAZ_MARC_DATAFIELD, and YAZ_MARC_LEADER.
Referenced by yaz_marc_write_marcxml_ns().
void yaz_marc_xml | ( | yaz_marc_t | mt, |
int | xmlmode | ||
) |
set XML mode YAZ_MARC_LINE, YAZ_MARCXML, YAZ_MARC_ISO2709 ..
mt | MARC handle |
xmlmode | mode. |
This function ONLY affects yaz_marc_write_mode, yaz_marc_write_trailer.
Definition at line 1376 of file marcdisp.c.
References yaz_marc_t_::output_format.
Referenced by convert_marc(), dummy_json_record(), dummy_xml_record(), return_marc_record(), return_opac_record(), and yaz_record_conv_opac_record().
|
static |
Definition at line 647 of file marcdisp.c.
Referenced by yaz_marc_write_marcxml_wrbuf().
|
static |
Definition at line 648 of file marcdisp.c.
Referenced by yaz_marc_write_marcxml_wrbuf().
|
static |
Definition at line 649 of file marcdisp.c.
Referenced by write_xml_indicator(), and yaz_marc_write_marcxml_wrbuf().
|
static |
Definition at line 646 of file marcdisp.c.
Referenced by yaz_marc_write_marcxml_wrbuf().
|
static |
Definition at line 645 of file marcdisp.c.
Referenced by yaz_marc_write_marcxml_wrbuf().
|
static |
Definition at line 650 of file marcdisp.c.
Referenced by add_marc_datafield_turbo_xml(), and yaz_marc_write_marcxml_wrbuf().