YAZ  5.23.1
Macros | Typedefs | Functions
marcdisp.h File Reference

MARC conversion. More...

#include <yaz/yconfig.h>
#include <stdio.h>
#include <yaz/wrbuf.h>
#include <yaz/nmem.h>
#include <yaz/xmltypes.h>
#include <yaz/z-opac.h>

Go to the source code of this file.

Macros

#define YAZ_MARC_LINE   0
 Output format: Line-format. More...
 
#define YAZ_MARC_SIMPLEXML   1
 Output format: simplexml (no longer supported) More...
 
#define YAZ_MARC_OAIMARC   2
 Output format: OAI-MARC (no longer supported) More...
 
#define YAZ_MARC_MARCXML   3
 Output format: MARCXML. More...
 
#define YAZ_MARC_ISO2709   4
 Output format: ISO2709. More...
 
#define YAZ_MARC_XCHANGE   5
 Output format: MarcXchange (ISO25577) More...
 
#define YAZ_MARC_CHECK   6
 Output format: check only (no marc output) More...
 
#define YAZ_MARC_TURBOMARC   7
 Output format: Turbo MARC Index Data format (XML based) More...
 
#define YAZ_MARC_JSON   8
 Output format: JSON. More...
 
#define ISO2709_RS   035
 MARC control char: record separator (29 Dec, 1D Hex) More...
 
#define ISO2709_FS   036
 MARC control char: field separator (30 Dec, 1E Hex) More...
 
#define ISO2709_IDFS   037
 MARC control char: identifier-field separator (31 Dec, 1F Hex) More...
 

Typedefs

typedef struct yaz_marc_t_yaz_marc_t
 a yaz_marc_t handle (private content) 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...
 
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_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_debug (yaz_marc_t mt, int level)
 set debug level 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...
 
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 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)
 
void yaz_marc_modify_leader (yaz_marc_t mt, size_t off, const char *str)
 modifies part of the MARC leader More...
 
int atoi_n (const char *buf, int len)
 like atoi(3) except that it reads exactly len characters More...
 
int atoi_n_check (const char *buf, int size, int *val)
 like atoi_n but checks for proper formatting More...
 
int yaz_marc_read_iso2709 (yaz_marc_t mt, const char *buf, int bsize)
 read ISO2709/MARC record from buffer More...
 
int yaz_marc_read_line (yaz_marc_t mt, int(*getbyte)(void *client_data), void(*ungetbyte)(int b, void *client_data), void *client_data)
 read MARC lineformat from stream More...
 
int yaz_marc_read_xml (yaz_marc_t mt, const xmlNode *ptr)
 parses MARCXML/MarcXchange/TurboMARC record from xmlNode pointer More...
 
int yaz_marc_write_line (yaz_marc_t mt, WRBUF wrbuf)
 writes record in line format More...
 
int yaz_marc_write_marcxml (yaz_marc_t mt, WRBUF wrbuf)
 writes record in MARCXML format More...
 
int yaz_marc_write_turbomarc (yaz_marc_t mt, WRBUF wrbuf)
 writes record in TurboMARC format More...
 
int yaz_marc_write_marcxchange (yaz_marc_t mt, WRBUF wrbuf, const char *format, const char *type)
 writes record in MarcXchange XML (ISO25577) More...
 
int yaz_marc_write_iso2709 (yaz_marc_t mt, WRBUF wrbuf)
 writes record in ISO2709 format More...
 
int yaz_marc_write_mode (yaz_marc_t mt, WRBUF wrbuf)
 writes record in mode - given by yaz_marc_xml mode More...
 
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_json (yaz_marc_t mt, WRBUF w)
 writes MARC record in JSON represenation 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...
 
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 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...
 
void yaz_marc_add_subfield (yaz_marc_t mt, const char *code_data, size_t code_data_len)
 adds subfield to MARC structure More...
 
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_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_datafield (yaz_marc_t mt, const char *tag, const char *indicator, size_t indicator_len)
 adds datafield to MARC structure using strings 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...
 
NMEM yaz_marc_get_nmem (yaz_marc_t mt)
 returns memory for MARC handle More...
 
void yaz_marc_reset (yaz_marc_t mt)
 clears memory and MARC record More...
 
int yaz_marc_get_debug (yaz_marc_t mt)
 gets debug level for MARC system 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...
 
void yaz_opac_decode_wrbuf (yaz_marc_t mt, Z_OPACRecord *r, WRBUF wrbuf)
 Performs "pretty" display of OPAC record to WRBUF using marc_t. More...
 
void yaz_opac_decode_wrbuf2 (yaz_marc_t mt, Z_OPACRecord *r, WRBUF wrbuf, yaz_iconv_t cd)
 Performs "pretty" display of OPAC record to WRBUF using marc_t. More...
 
int yaz_xml_to_opac (yaz_marc_t mt, const char *buf_in, size_t size_in, Z_OPACRecord **dst, yaz_iconv_t cd, NMEM nmem, const Odr_oid *syntax)
 Converts XML to OPAC. 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_read_json_node (yaz_marc_t mt, struct json_node *n)
 
int yaz_marc_check_marc21_coding (const char *charset, const char *marc_buf, int sz)
 check if MARC21 is UTF-8 encoded More...
 
int yaz_opac_check_marc21_coding (const char *charset, Z_OPACRecord *r)
 
size_t yaz_marc_sizeof_char (yaz_marc_t mt, const char *buf)
 

Detailed Description

MARC conversion.

Definition in file marcdisp.h.

Macro Definition Documentation

#define ISO2709_FS   036

MARC control char: field separator (30 Dec, 1E Hex)

Definition at line 148 of file marcdisp.h.

Referenced by yaz_marc_read_iso2709(), and yaz_marc_write_iso2709().

#define ISO2709_IDFS   037

MARC control char: identifier-field separator (31 Dec, 1F Hex)

Definition at line 150 of file marcdisp.h.

Referenced by yaz_marc_read_iso2709(), and yaz_marc_write_iso2709().

#define ISO2709_RS   035

MARC control char: record separator (29 Dec, 1D Hex)

Definition at line 146 of file marcdisp.h.

Referenced by yaz_marc_read_iso2709(), and yaz_marc_write_iso2709().

#define YAZ_MARC_CHECK   6

Output format: check only (no marc output)

Definition at line 76 of file marcdisp.h.

Referenced by yaz_marc_write_mode().

#define YAZ_MARC_ISO2709   4
#define YAZ_MARC_JSON   8

Output format: JSON.

Definition at line 80 of file marcdisp.h.

Referenced by construct_marc(), dummy_json_record(), yaz_marc_decode_formatstr(), yaz_marc_write_mode(), and yaz_record_render().

#define YAZ_MARC_LINE   0

Output format: Line-format.

Definition at line 64 of file marcdisp.h.

Referenced by construct_marc(), yaz_marc_create(), yaz_marc_decode_formatstr(), yaz_marc_write_mode(), and yaz_record_render().

#define YAZ_MARC_MARCXML   3
#define YAZ_MARC_OAIMARC   2

Output format: OAI-MARC (no longer supported)

Definition at line 68 of file marcdisp.h.

#define YAZ_MARC_SIMPLEXML   1

Output format: simplexml (no longer supported)

Definition at line 66 of file marcdisp.h.

#define YAZ_MARC_TURBOMARC   7

Output format: Turbo MARC Index Data format (XML based)

Definition at line 78 of file marcdisp.h.

Referenced by construct_marc(), convert_marc(), yaz_marc_decode_formatstr(), yaz_marc_read_xml(), yaz_marc_write_mode(), yaz_marc_write_trailer(), and yaz_record_render().

#define YAZ_MARC_XCHANGE   5

Output format: MarcXchange (ISO25577)

Definition at line 74 of file marcdisp.h.

Referenced by construct_marc(), yaz_marc_decode_formatstr(), yaz_marc_write_mode(), and yaz_marc_write_trailer().

Typedef Documentation

typedef struct yaz_marc_t_* yaz_marc_t

a yaz_marc_t handle (private content)

Definition at line 47 of file marcdisp.h.

Function Documentation

int atoi_n ( const char *  buf,
int  len 
)

like atoi(3) except that it reads exactly len characters

Parameters
bufbuffer to read
lennumber of bytes to consider (being digits)
Returns
value

Definition at line 19 of file atoin.c.

References yaz_isdigit.

Referenced by atoi_n_check(), and yaz_marc_read_iso2709().

int atoi_n_check ( const char *  buf,
int  size,
int *  val 
)

like atoi_n but checks for proper formatting

Parameters
bufbuffer to read values from
sizesize of buffer
valvalue of decimal number (if successful)
Return values
0no value found (non-digits found)
1value found and *val holds value

Definition at line 32 of file atoin.c.

References atoi_n(), and yaz_isdigit.

Referenced by convert_solrmarc(), replace_node(), yaz_marc_read_iso2709(), yaz_marc_read_line(), yaz_marc_set_leader(), yaz_marc_write_check(), yaz_marc_write_iso2709(), yaz_marc_write_json(), yaz_marc_write_line(), yaz_marc_write_marcxml_wrbuf(), yaz_marc_write_xml(), and yaz_marc_write_xml_turbo_xml().

void yaz_marc_add_comment ( yaz_marc_t  mt,
char *  comment 
)

adds MARC comment string

Parameters
mthandle
commentcomment 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

Parameters
mthandle
tag(e.g. "001"
datavalue for this tag
data_lenlength 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_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

Parameters
mthandle
ptr_tagvalue of tag (TEXT xmlNode)
ptr_datavalue 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

Parameters
mthandle
tagstring tag
ptr_datavalue 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_datafield::tag, 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

Parameters
mthandle
tagvalue of tag as string
indicatorindicator string
indicator_lenlength 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(), and yaz_marc_read_line().

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

Parameters
mthandle
ptr_tagvalue of tag (TEXT xmlNode)
indicatorindicator string
indicator_lenlength 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

Parameters
mthandle
tag_valuestring value (pointer copied verbatim, not strdupped)
indicatorsindicator 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_subfield ( yaz_marc_t  mt,
const char *  code_data,
size_t  code_data_len 
)

adds subfield to MARC structure

Parameters
mthandle
code_datacode data buffer
code_data_lenlength 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_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

Parameters
charsetthat is given by user
marc_bufISO2709 buf
szISO2709 size
Return values
1is probably UTF-8
0is not UTF-8

Definition at line 1487 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,
  ... 
)
yaz_marc_t yaz_marc_create ( void  )
void yaz_marc_debug ( yaz_marc_t  mt,
int  level 
)

set debug level

Parameters
mthandle
levellevel, where 0=lowest, 1 more debug, 2 even more

Definition at line 1378 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

Parameters
mtmarc handle
bufinput buffer
bsizesize of buffer or (-1 if "any size")
resultresult to be stored here
rsizesize 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 1359 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_..)

Parameters
argstring
Return values
-1unknown format (bad arg)
>=0 OK (one of YAZ_MARC - values)

Definition at line 1464 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

Parameters
mthandle
bufinput buffer
bsizesize of buffer (-1 if "any size")
wrbufWRBUF 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 1348 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)
void yaz_marc_enable_collection ( yaz_marc_t  mt)

enables record collection output

Parameters
mthandle

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

Parameters
mthandle

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 1389 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

Parameters
mthandle
Return values
NMEMhandle 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 1384 of file marcdisp.c.

References yaz_marc_t_::iconv_cd.

Referenced by convert_marc(), return_marc_record(), return_opac_record(), and yaz_record_conv_opac_record().

int yaz_marc_leader_spec ( yaz_marc_t  mt,
const char *  leader_spec 
)

sets leader spec (for modifying bytes in 24 byte leader)

Parameters
mthandle
leader_spec
Return values
0OK
-1ERROR

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 1407 of file marcdisp.c.

References yaz_marc_t_::leader_spec, marc_exec_leader(), xfree, and xstrdup.

Referenced by convert_marc().

void yaz_marc_modify_leader ( yaz_marc_t  mt,
size_t  off,
const char *  str 
)
int yaz_marc_read_iso2709 ( yaz_marc_t  mt,
const char *  buf,
int  bsize 
)

read ISO2709/MARC record from buffer

Parameters
mthandle
bufISO2709 buffer of size bsize
bsizesize of buffer (-1 for unlimited size)

Parses ISO2709 record from supplied buffer

Return values
-1ERROR
>0OK (length)

Definition at line 25 of file marc_read_iso2709.c.

References atoi_n(), atoi_n_check(), ISO2709_FS, ISO2709_IDFS, ISO2709_RS, wrbuf_alloc(), wrbuf_cstr(), wrbuf_destroy(), wrbuf_puts(), wrbuf_write_escaped(), yaz_isdigit, yaz_marc_add_controlfield(), yaz_marc_add_datafield(), yaz_marc_add_subfield(), yaz_marc_cprintf(), yaz_marc_get_debug(), yaz_marc_reset(), yaz_marc_set_leader(), and yaz_marc_sizeof_char().

Referenced by convert_marc(), and yaz_marc_decode_wrbuf().

int yaz_marc_read_json_node ( yaz_marc_t  mt,
struct json_node n 
)
int yaz_marc_read_line ( yaz_marc_t  mt,
int(*)(void *client_data)  getbyte,
void(*)(int b, void *client_data)  ungetbyte,
void *  client_data 
)

read MARC lineformat from stream

Parameters
mthandle
getbyteget one byte handler
ungetbyteunget one byte handler
client_dataopaque data for handers
Return values
-1ERROR
>0OK (length)

Parses MARC line record from stream Returns > 0 for OK (same as length), -1=ERROR

Definition at line 95 of file marc_read_line.c.

References atoi_n_check(), wrbuf_alloc(), wrbuf_cstr(), wrbuf_destroy(), yaz_marc_add_controlfield(), yaz_marc_add_datafield(), yaz_marc_add_subfield(), yaz_marc_cprintf(), yaz_marc_line_gets(), yaz_marc_reset(), and yaz_marc_set_leader().

int yaz_marc_read_xml ( yaz_marc_t  mt,
const xmlNode *  ptr 
)

parses MARCXML/MarcXchange/TurboMARC record from xmlNode pointer

Parameters
mthandle
ptris a pointer to root xml node
Return values
0OK
-1ERROR

Definition at line 356 of file marc_read_xml.c.

References yaz_marc_cprintf(), YAZ_MARC_MARCXML, yaz_marc_read_turbo_xml_fields(), yaz_marc_read_xml_fields(), yaz_marc_read_xml_leader(), yaz_marc_reset(), and YAZ_MARC_TURBOMARC.

Referenced by bibliographicRecord(), and convert_marc().

void yaz_marc_reset ( yaz_marc_t  mt)

clears memory and MARC record

Parameters
mthandle

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(), and yaz_marc_read_xml().

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

Parameters
mthandle
leaderof the 24 byte leader to be set
indicator_lengthindicator length (returned value)
identifier_lengthidentifier length (returned value)
base_addressbase address (returned value)
length_data_entrylength of data entry (returned value)
length_startinglength of starting
length_implementationlength 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_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_iso2709 ( yaz_marc_t  mt,
WRBUF  wrbuf 
)
int yaz_marc_write_json ( yaz_marc_t  mt,
WRBUF  w 
)
int yaz_marc_write_line ( yaz_marc_t  mt,
WRBUF  wrbuf 
)
int yaz_marc_write_marcxchange ( yaz_marc_t  mt,
WRBUF  wrbuf,
const char *  format,
const char *  type 
)

writes record in MarcXchange XML (ISO25577)

Parameters
mthandle
wrbufWRBUF for output
formatrecord format (e.g. "MARC21")
typerecord type (e.g. Bibliographic)
Return values
0OK
-1ERROR

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

Parameters
mthandle
wrbufWRBUF for output
Return values
0OK
-1ERROR

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().

int yaz_marc_write_mode ( yaz_marc_t  mt,
WRBUF  wrbuf 
)

writes record in mode - given by yaz_marc_xml mode

Parameters
mthandle
wrbufWRBUF for output
Return values
0OK
-1ERROR

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

Parameters
mthandle
wrWRBUF for output
Return values
0OK
-1ERROR

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

Parameters
mthandle
wrbufWRBUF for output
Return values
0OK
-1ERROR

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.

Parameters
mthandle
enable0=disable, 1=enable

Definition at line 1482 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

Parameters
mthandle
root_ptrpointer to record node
nsnamespace of record (such as "http://www.loc.gov/MARC21/slim")
formatMarcXchange format (NULL for none)
typeMarcXchange format (NULL for none)
Return values
0Creation successful and *root_ptr is "record" node
-1ERROR

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, 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().

void yaz_marc_xml ( yaz_marc_t  mt,
int  xmlmode 
)

set XML mode YAZ_MARC_LINE, YAZ_MARCXML, YAZ_MARC_ISO2709 ..

Parameters
mtMARC handle
xmlmodemode.

This function ONLY affects yaz_marc_write_mode, yaz_marc_write_trailer.

Definition at line 1373 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().

int yaz_opac_check_marc21_coding ( const char *  charset,
Z_OPACRecord r 
)
void yaz_opac_decode_wrbuf ( yaz_marc_t  mt,
Z_OPACRecord r,
WRBUF  wrbuf 
)

Performs "pretty" display of OPAC record to WRBUF using marc_t.

Parameters
mthandle
rOPAC record
wrbufWRBUF for resulting display string

This function uses iconv_handle of yaz_marc_t for character set conversion of both OPAC + ISO2709 part. \

Definition at line 189 of file opac_to_xml.c.

References yaz_opac_decode_wrbuf2().

Referenced by dummy_xml_record(), return_opac_record(), and yaz_record_conv_opac_record().

void yaz_opac_decode_wrbuf2 ( yaz_marc_t  mt,
Z_OPACRecord r,
WRBUF  wrbuf,
yaz_iconv_t  cd 
)

Performs "pretty" display of OPAC record to WRBUF using marc_t.

Parameters
mthandle
rOPAC record
wrbufWRBUF for resulting display string
cdiconv handle for OPAC content (not ISO2709 part)

This function uses iconv handle of yaz_marc_t for character set conversion of ISO2709 part and supplied handle (cd) for OPAC part. \

Definition at line 62 of file opac_to_xml.c.

References Z_CircRecord::availableNow, Z_CircRecord::availableThru, Z_CircRecord::availablityDate, Z_OPACRecord::bibliographicRecord, odr_oct::buf, Z_HoldingsAndCircData::callNumber, Z_Volume::chronology, Z_HoldingsAndCircData::circulationData, Z_HoldingsAndCircData::completeness, Z_HoldingsAndCircData::copyNumber, Z_HoldingsAndCircData::dateOfReport, Z_HoldingsAndCircData::encodingLevel, Z_HoldingsAndCircData::enumAndChron, Z_Volume::enumAndChron, Z_CircRecord::enumAndChron, Z_Volume::enumeration, Z_HoldingsAndCircData::format, Z_HoldingsAndCircData::generalRetention, Z_HoldingsRecord::holdingsAndCirc, Z_OPACRecord::holdingsData, Z_CircRecord::itemId, odr_oct::len, Z_HoldingsAndCircData::localLocation, Z_HoldingsRecord::marcHoldingsRecord, Z_CircRecord::midspine, Z_HoldingsAndCircData::nucCode, Z_HoldingsAndCircData::num_circulationData, Z_OPACRecord::num_holdingsData, Z_HoldingsAndCircData::num_volumes, Z_External::octet_aligned, Z_CircRecord::onHold, opac_element_bool(), opac_element_str(), Z_HoldingsAndCircData::publicNote, Z_HoldingsAndCircData::receiptAcqStatus, Z_CircRecord::renewable, Z_HoldingsAndCircData::reproductionNote, Z_CircRecord::restrictions, Z_HoldingsAndCircData::shelvingData, Z_HoldingsAndCircData::shelvingLocation, Z_CircRecord::temporaryLocation, Z_HoldingsAndCircData::termsUseRepro, Z_HoldingsAndCircData::typeOfRecord, Z_HoldingsRecord::u, Z_External::u, Z_HoldingsAndCircData::volumes, Z_HoldingsRecord::which, Z_External::which, wrbuf_puts(), yaz_marc_decode_wrbuf(), yaz_marc_get_iconv(), Z_External_octet, Z_HoldingsRecord_holdingsAndCirc, and Z_HoldingsRecord_marcHoldingsRecord.

Referenced by return_opac_record(), and yaz_opac_decode_wrbuf().

int yaz_xml_to_opac ( yaz_marc_t  mt,
const char *  buf_in,
size_t  size_in,
Z_OPACRecord **  dst,
yaz_iconv_t  cd,
NMEM  nmem,
const Odr_oid syntax 
)

Converts XML to OPAC.

Parameters
mtmarc handle
buf_inXML buffer
size_insize of XML buffer
dstZ39.50 OPAC result - allocated by NMEM on marc handle
cdiconv handle for the OPAC content (not ISO2709 part)
nmemmemory for OPACRecord (if NULL, mt NMEM memory is used)
syntaxOID for embedded MARC (if NULL, USMARC is used)
Return values
1conversion OK
0conversion NOT OK \

Definition at line 299 of file xml_to_opac.c.

References yaz_xml_to_opac_ptr().

Referenced by retrieve_fetch().