|
YAZ 5.35.1
|
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 | |
| void | yaz_marc_destroy (yaz_marc_t mt) |
| destroy yaz_marc_t handle | |
| NMEM | yaz_marc_get_nmem (yaz_marc_t mt) |
| returns memory for MARC handle | |
| 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 | |
| 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 | |
| void | yaz_marc_add_comment (yaz_marc_t mt, char *comment) |
| adds MARC comment string | |
| void | yaz_marc_cprintf (yaz_marc_t mt, const char *fmt,...) |
| adds MARC annotation - printf interface | |
| int | yaz_marc_get_debug (yaz_marc_t mt) |
| gets debug level for MARC system | |
| 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 | |
| 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 | |
| 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 | |
| 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 | |
| void | yaz_marc_add_datafield_xml2 (yaz_marc_t mt, char *tag_value, char *indicators) |
| adds datafield to MARC structure using xml Nodes | |
| 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 | |
| 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 | |
| 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 | |
| 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 | |
| int | yaz_marc_write_trailer (yaz_marc_t mt, WRBUF wr) |
| flushes records | |
| void | yaz_marc_enable_collection (yaz_marc_t mt) |
| enables record collection output | |
| int | yaz_marc_write_mode (yaz_marc_t mt, WRBUF wr) |
| writes record in mode - given by yaz_marc_xml mode | |
| 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 | |
| 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 | |
| int | yaz_marc_write_turbomarc (yaz_marc_t mt, WRBUF wr) |
| writes record in TurboMARC format | |
| int | yaz_marc_write_marcxchange (yaz_marc_t mt, WRBUF wr, const char *format, const char *type) |
| writes record in MarcXchange XML (ISO25577) | |
| 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 | |
| int | yaz_marc_write_iso2709 (yaz_marc_t mt, WRBUF wr) |
| writes record in ISO2709 format | |
| int | yaz_marc_write_json (yaz_marc_t mt, WRBUF w) |
| writes MARC record in JSON represenation | |
| 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 | |
| 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 | |
| void | yaz_marc_xml (yaz_marc_t mt, int xmlmode) |
| set XML mode YAZ_MARC_LINE, YAZ_MARCXML, YAZ_MARC_ISO2709 .. | |
| void | yaz_marc_debug (yaz_marc_t mt, int level) |
| set debug level | |
| void | yaz_marc_iconv (yaz_marc_t mt, yaz_iconv_t cd) |
| set iconv handle for character set conversion | |
| yaz_iconv_t | yaz_marc_get_iconv (yaz_marc_t mt) |
| supply iconv handle for character set conversion | |
| void | yaz_marc_modify_leader (yaz_marc_t mt, size_t off, const char *str) |
| modifies part of the MARC leader | |
| int | yaz_marc_leader_spec (yaz_marc_t mt, const char *leader_spec) |
| sets leader spec (for modifying bytes in 24 byte leader) | |
| int | yaz_marc_decode_formatstr (const char *arg) |
| Converts MARC format type to format type(YAZ_MARC_..) | |
| void | yaz_marc_write_using_libxml2 (yaz_marc_t mt, int enable) |
| Enables or disables writing of MARC XML records using Libxml2. | |
| int | yaz_marc_check_marc21_coding (const char *charset, const char *marc_buf, int sz) |
| check if MARC21 is UTF-8 encoded | |
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_puts2(), wrbuf_iconv_write2(), wrbuf_puts(), wrbuf_rewind(), wrbuf_xml_strip(), 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_puts2(), wrbuf_iconv_write2(), wrbuf_rewind(), wrbuf_xml_strip(), 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_puts2(), wrbuf_rewind(), wrbuf_xml_strip(), 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().