/* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2009 Index Data
+ * Copyright (C) 1995-2012 Index Data
* See the file LICENSE for details.
*/
-
/**
* \file charneg.c
* \brief Implements Z39.50 Charset negotiation utilities
*
* Helper functions for Character Set and Language Negotiation - 3
*/
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
#include <stdio.h>
#include <yaz/otherinfo.h>
#include <yaz/z-charneg.h>
Z_External *p;
int len = strlen(buf);
- if (!(p = (Z_External *)odr_malloc(o, sizeof(*p)))) return 0;
-
+ if (!(p = (Z_External *)odr_malloc(o, sizeof(*p))))
+ return 0;
p->descriptor = 0;
p->indirect_reference = 0;
p->direct_reference = odr_oiddup(o, yaz_oid_negot_charset_id);
p->which = Z_External_octet;
- if (!(p->u.octet_aligned = (Odr_oct *)odr_malloc(o, sizeof(Odr_oct)))) {
+ if (!(p->u.octet_aligned = (Odr_oct *)odr_malloc(o, sizeof(Odr_oct))))
return 0;
- }
- if (!(p->u.octet_aligned->buf = (unsigned char *)odr_malloc(o, len))) {
+ if (!(p->u.octet_aligned->buf = (unsigned char *)odr_malloc(o, len)))
return 0;
- }
p->u.octet_aligned->len = p->u.octet_aligned->size = len;
memcpy(p->u.octet_aligned->buf, buf, len);
{
int form = -1;
-
if (!yaz_matchstr(charset, "UCS-2"))
form = 2;
if (!yaz_matchstr(charset, "UCS-4"))
return form;
}
-static char *set_form (Odr_oid *encoding)
+static char *set_form(Odr_oid *encoding)
{
static char *charset = 0;
if ( oid_oidlen(encoding) != 6)
static Z_OriginProposal_0 *z_get_OriginProposal_0(ODR o, const char *charset)
{
- int form = get_form (charset);
+ int form = get_form(charset);
Z_OriginProposal_0 *p0 =
(Z_OriginProposal_0*)odr_malloc(o, sizeof(*p0));
{ /* ISO 10646 (UNICODE) */
char oidname[20];
- Z_Iso10646 *is = (Z_Iso10646 *) odr_malloc (o, sizeof(*is));
+ Z_Iso10646 *is = (Z_Iso10646 *) odr_malloc(o, sizeof(*is));
p0->which = Z_OriginProposal_0_iso10646;
p0->u.iso10646 = is;
is->collections = 0;
- sprintf (oidname, "1.0.10646.1.0.%d", form);
- is->encodingLevel = odr_getoidbystr (o, oidname);
+ sprintf(oidname, "1.0.10646.1.0.%d", form);
+ is->encodingLevel = odr_getoidbystr(o, oidname);
}
else
{ /* private ones */
memset(p, 0, sizeof(*p));
p->recordsInSelectedCharSets = (bool_t *)odr_malloc(o, sizeof(bool_t));
- *p->recordsInSelectedCharSets = (selected) ? 1:0;
+ *p->recordsInSelectedCharSets = (selected) ? 1 : 0;
- if (charsets && num_charsets) {
-
+ if (charsets && num_charsets)
+ {
p->num_proposedCharSets = num_charsets;
p->proposedCharSets =
(Z_OriginProposal_0**)
odr_malloc(o, num_charsets*sizeof(Z_OriginProposal_0*));
- for (i = 0; i<num_charsets; i++)
+ for (i = 0; i < num_charsets; i++)
p->proposedCharSets[i] =
z_get_OriginProposal_0(o, charsets[i]);
}
- if (langs && num_langs) {
-
+ if (langs && num_langs)
+ {
p->num_proposedlanguages = num_langs;
-
p->proposedlanguages =
(char **) odr_malloc(o, num_langs*sizeof(char *));
- for (i = 0; i<num_langs; i++) {
-
+ for (i = 0; i < num_langs; i++)
p->proposedlanguages[i] = (char *)langs[i];
-
- }
}
return p;
}
int form = get_form(charset);
memset(p, 0, sizeof(*p));
-
if (form > 0)
{
char oidname[20];
p->which = Z_TargetResponse_iso10646;
p->u.iso10646 = is;
is->collections = 0;
- sprintf (oidname, "1.0.10646.1.0.%d", form);
+ sprintf(oidname, "1.0.10646.1.0.%d", form);
is->encodingLevel = odr_getoidbystr (o, oidname);
}
else
z_ext_record2(o, charset);
}
p->recordsInSelectedCharSets = (bool_t *)odr_malloc(o, sizeof(bool_t));
- *p->recordsInSelectedCharSets = (selected) ? 1:0;
+ *p->recordsInSelectedCharSets = (selected) ? 1 : 0;
- p->selectedLanguage = lang ? (char *)odr_strdup(o, lang) : 0;
+ p->selectedLanguage = lang ? (char *) odr_strdup(o, lang) : 0;
return p;
}
if (!p)
return 0;
- for (i = 0; i < p->num_elements; i++) {
+ for (i = 0; i < p->num_elements; i++)
+ {
Z_External *pext;
if ((p->list[i]->which == Z_OtherInfo_externallyDefinedInfo) &&
- (pext = p->list[i]->information.externallyDefinedInfo)) {
-
+ (pext = p->list[i]->information.externallyDefinedInfo))
+ {
if (!oid_oidcmp(pext->direct_reference, yaz_oid_negot_charset_3)
&& pext->which == Z_External_charSetandLanguageNegotiation)
{
if (!*p)
return 0;
- for (i = 0; i < (*p)->num_elements; i++) {
+ for (i = 0; i < (*p)->num_elements; i++)
+ {
Z_External *pext;
if (((*p)->list[i]->which == Z_OtherInfo_externallyDefinedInfo) &&
(pext = (*p)->list[i]->information.externallyDefinedInfo))
else
{
--((*p)->num_elements);
- for(; i < (*p)->num_elements; i++)
+ for (; i < (*p)->num_elements; i++)
(*p)->list[i] = (*p)->list[i+1];
}
return 1;
(*charsets) = (char **)
nmem_malloc(mem, pro->num_proposedCharSets * sizeof(char *));
- for (i=0; i<pro->num_proposedCharSets; i++)
+ for (i = 0; i < pro->num_proposedCharSets; i++)
{
(*charsets)[i] = 0;
if (pro->proposedCharSets[i]->which ==
Z_OriginProposal_0_private &&
pro->proposedCharSets[i]->u.zprivate->which ==
- Z_PrivateCharacterSet_externallySpecified) {
-
+ Z_PrivateCharacterSet_externallySpecified)
+ {
Z_External *pext =
pro->proposedCharSets[i]->u.zprivate->u.externallySpecified;
- if (pext->which == Z_External_octet) {
-
+ if (pext->which == Z_External_octet)
+ {
(*charsets)[i] = (char *)
nmem_malloc(mem, (1+pext->u.octet_aligned->len) *
sizeof(char));
- memcpy ((*charsets)[i], pext->u.octet_aligned->buf,
- pext->u.octet_aligned->len);
+ memcpy((*charsets)[i], pext->u.octet_aligned->buf,
+ pext->u.octet_aligned->len);
(*charsets)[i][pext->u.octet_aligned->len] = 0;
-
}
}
else if (pro->proposedCharSets[i]->which ==
Z_OriginProposal_0_iso10646)
- (*charsets)[i] = set_form (
+ (*charsets)[i] = set_form(
pro->proposedCharSets[i]->u.iso10646->encodingLevel);
}
}
(*langs) = (char **)
nmem_malloc(mem, pro->num_proposedlanguages * sizeof(char *));
- for (i=0; i<pro->num_proposedlanguages; i++)
+ for (i = 0; i < pro->num_proposedlanguages; i++)
(*langs)[i] = nmem_strdup(mem, pro->proposedlanguages[i]);
}
else
*num_langs = 0;
}
- if(pro->recordsInSelectedCharSets && selected)
+ if (pro->recordsInSelectedCharSets && selected)
*selected = *pro->recordsInSelectedCharSets;
}
Z_TargetResponse *res = p->u.response;
if (charset && res->which == Z_TargetResponse_private &&
- res->u.zprivate->which == Z_PrivateCharacterSet_externallySpecified) {
-
+ res->u.zprivate->which == Z_PrivateCharacterSet_externallySpecified)
+ {
Z_External *pext = res->u.zprivate->u.externallySpecified;
- if (pext->which == Z_External_octet) {
-
+ if (pext->which == Z_External_octet)
+ {
*charset = (char *)
nmem_malloc(mem, (1+pext->u.octet_aligned->len)*sizeof(char));
- memcpy (*charset, pext->u.octet_aligned->buf,
- pext->u.octet_aligned->len);
+ memcpy(*charset, pext->u.octet_aligned->buf,
+ pext->u.octet_aligned->len);
(*charset)[pext->u.octet_aligned->len] = 0;
}
}
if (charset && res->which == Z_TargetResponse_iso10646)
- *charset = set_form (res->u.iso10646->encodingLevel);
+ *charset = set_form(res->u.iso10646->encodingLevel);
if (lang && res->selectedLanguage)
- *lang = nmem_strdup (mem, res->selectedLanguage);
+ *lang = nmem_strdup(mem, res->selectedLanguage);
- if(selected && res->recordsInSelectedCharSets)
+ if (selected && res->recordsInSelectedCharSets)
*selected = *res->recordsInSelectedCharSets;
}
/*
* Local variables:
* c-basic-offset: 4
+ * c-file-style: "Stroustrup"
* indent-tabs-mode: nil
* End:
* vim: shiftwidth=4 tabstop=8 expandtab