projects
/
yaz-moved-to-github.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
4efb9de
)
Honor charset for raw records (ZOOM_record_get).
author
Adam Dickmeiss
<adam@indexdata.dk>
Tue, 10 Mar 2009 08:00:20 +0000
(09:00 +0100)
committer
Adam Dickmeiss
<adam@indexdata.dk>
Tue, 10 Mar 2009 08:00:20 +0000
(09:00 +0100)
For MARC and string records (octet aligned and SUTRS) the charset
option now takes effect (if given).
src/zoom-c.c
patch
|
blob
|
history
diff --git
a/src/zoom-c.c
b/src/zoom-c.c
index
c626c32
..
ebedbde
100644
(file)
--- a/
src/zoom-c.c
+++ b/
src/zoom-c.c
@@
-2157,11
+2157,10
@@
ZOOM_API(const char *)
charset);
else if (r->which == Z_External_octet)
{
charset);
else if (r->which == Z_External_octet)
{
- int marc_decode_type = YAZ_MARC_MARCXML;
if (yaz_oid_is_iso2709(oid))
{
const char *ret_buf = marc_iconv_return(
if (yaz_oid_is_iso2709(oid))
{
const char *ret_buf = marc_iconv_return(
- rec, marc_decode_type, len,
+ rec, YAZ_MARC_MARCXML, len,
(const char *) r->u.octet_aligned->buf,
r->u.octet_aligned->len,
charset);
(const char *) r->u.octet_aligned->buf,
r->u.octet_aligned->len,
charset);
@@
-2183,16
+2182,30
@@
ZOOM_API(const char *)
else if (!strcmp(type, "raw"))
{
Z_External *r = (Z_External *) npr->u.databaseRecord;
else if (!strcmp(type, "raw"))
{
Z_External *r = (Z_External *) npr->u.databaseRecord;
+ const Odr_oid *oid = r->direct_reference;
if (r->which == Z_External_sutrs)
{
if (r->which == Z_External_sutrs)
{
- if (len) *len = r->u.sutrs->len;
- return (const char *) r->u.sutrs->buf;
+ return record_iconv_return(rec, len,
+ (const char *) r->u.sutrs->buf,
+ r->u.sutrs->len,
+ charset);
}
else if (r->which == Z_External_octet)
{
}
else if (r->which == Z_External_octet)
{
- if (len) *len = r->u.octet_aligned->len;
- return (const char *) r->u.octet_aligned->buf;
+ if (yaz_oid_is_iso2709(oid) && *charset)
+ {
+ const char *ret_buf = marc_iconv_return(
+ rec, YAZ_MARC_ISO2709, len,
+ (const char *) r->u.octet_aligned->buf,
+ r->u.octet_aligned->len,
+ charset);
+ return ret_buf;
+ }
+ return record_iconv_return(rec, len,
+ (const char *) r->u.octet_aligned->buf,
+ r->u.octet_aligned->len,
+ charset);
}
else /* grs-1, explain, OPAC, ... */
{
}
else /* grs-1, explain, OPAC, ... */
{