25 int len = strlen(buf);
56 static char *charset = 0;
76 memset(p0, 0,
sizeof(*p0));
86 sprintf(oidname,
"1.0.10646.1.0.%d", form);
94 memset(pc, 0,
sizeof(*pc));
106 ODR o,
const char **charsets,
int num_charsets,
107 const char **langs,
int num_langs,
int selected)
112 memset(p, 0,
sizeof(*p));
117 if (charsets && num_charsets)
124 for (i = 0; i < num_charsets; i++)
128 if (langs && num_langs)
132 (
char **)
odr_malloc(o, num_langs*
sizeof(
char *));
134 for (i = 0; i < num_langs; i++)
146 memset(p, 0,
sizeof(*p));
153 const char **charsets,
int num_charsets,
154 const char **langs,
int num_langs,
169 langs, num_langs, selected);
176 const char *charset_list,
177 const char *lang_list,
180 char **charsets_addresses = 0;
181 char **langs_addresses = 0;
182 int charsets_count = 0;
187 &charsets_addresses, &charsets_count);
190 &langs_addresses, &langs_count);
192 (
const char **) charsets_addresses,
194 (
const char **) langs_addresses,
202 const char *lang,
int selected)
207 memset(p, 0,
sizeof(*p));
216 sprintf(oidname,
"1.0.10646.1.0.%d", form);
224 memset(pc, 0,
sizeof(*pc));
242 const char *lang,
int selected)
291 for (i = 0; i < (*p)->num_elements; i++)
295 (pext = (*p)->list[i]->information.externallyDefinedInfo))
300 if ((*p)->num_elements <= 1)
304 --((*p)->num_elements);
305 for (; i < (*p)->num_elements; i++)
306 (*p)->
list[i] = (*p)->list[i+1];
318 char ***charsets,
int *num_charsets,
319 char ***langs,
int *num_langs,
int *selected)
324 if (num_charsets && charsets)
330 (*charsets) = (
char **)
347 (*charsets)[i] = (
char *)
366 if (langs && num_langs)
388 char **charset,
char **lang,
int *selected)
static int get_form(const char *charset)
Z_External * yaz_set_proposal_charneg(ODR o, const char **charsets, int num_charsets, const char **langs, int num_langs, int selected)
static Z_External * z_ext_record2(ODR o, const char *buf)
static Z_TargetResponse * z_get_TargetResponse(ODR o, const char *charset, const char *lang, int selected)
static Z_OriginProposal * z_get_OriginProposal(ODR o, const char **charsets, int num_charsets, const char **langs, int num_langs, int selected)
static Z_CharSetandLanguageNegotiation * z_get_CharSetandLanguageNegotiation(ODR o)
static Z_OriginProposal_0 * z_get_OriginProposal_0(ODR o, const char *charset)
Z_External * yaz_set_response_charneg(ODR o, const char *charset, const char *lang, int selected)
static char * set_form(Odr_oid *encoding)
void yaz_get_proposal_charneg(NMEM mem, Z_CharSetandLanguageNegotiation *p, char ***charsets, int *num_charsets, char ***langs, int *num_langs, int *selected)
void yaz_get_response_charneg(NMEM mem, Z_CharSetandLanguageNegotiation *p, char **charset, char **lang, int *selected)
Z_CharSetandLanguageNegotiation * yaz_get_charneg_record(Z_OtherInformation *p)
Z_External * yaz_set_proposal_charneg_list(ODR o, const char *delim, const char *charset_list, const char *lang_list, int selected)
int yaz_del_charneg_record(Z_OtherInformation **p)
Header for Z39.50 Charset negotiation utilities.
int yaz_matchstr(const char *s1, const char *s2)
match strings - independent of case and '-'
void * nmem_malloc(NMEM n, size_t size)
allocates memory block on NMEM handle
void nmem_strsplit(NMEM nmem, const char *delim, const char *dstr, char ***darray, int *num)
allocates sub strings out of string using certain delimitors
char * nmem_strdup(NMEM mem, const char *src)
allocates string on NMEM handle (similar strdup)
char * odr_strdup(ODR o, const char *str)
void * odr_malloc(ODR o, size_t size)
Odr_oct * odr_create_Odr_oct(ODR o, const char *buf, int sz)
Odr_oid * odr_oiddup(ODR odr, const Odr_oid *o)
Odr_oid * odr_getoidbystr(ODR o, const char *str)
const Odr_oid yaz_oid_negot_charset_3[]
const Odr_oid yaz_oid_negot_charset_id[]
int oid_oidcmp(const Odr_oid *o1, const Odr_oid *o2)
compares OIDs
int oid_oidlen(const Odr_oid *o)
returns length of OIDs
Header for Z39.50 OtherInfo utilities.
#define Z_External_charSetandLanguageNegotiation
union Z_CharSetandLanguageNegotiation::@37 u
Z_TargetResponse * response
Z_OriginProposal * proposal
structure for all known EXTERNALs
Z_CharSetandLanguageNegotiation * charNeg3
Odr_int * indirect_reference
Odr_oid * direct_reference
Z_PrivateCharacterSet * zprivate
union Z_OriginProposal_0::@38 u
Z_LanguageCode ** proposedlanguages
int num_proposedlanguages
Z_OriginProposal_0 ** proposedCharSets
Odr_bool * recordsInSelectedCharSets
Z_External * externallySpecified
union Z_PrivateCharacterSet::@40 u
Z_PrivateCharacterSet * zprivate
Odr_bool * recordsInSelectedCharSets
union Z_TargetResponse::@39 u
Z_LanguageCode * selectedLanguage
Header for common YAZ utilities.
ASN.1 Module NegotiationRecordDefinition-charSetandLanguageNegotiation-3.
#define Z_CharSetandLanguageNegotiation_proposal
#define Z_OriginProposal_0_private
#define Z_PrivateCharacterSet_externallySpecified
#define Z_CharSetandLanguageNegotiation_response
#define Z_OriginProposal_0_iso10646
#define Z_TargetResponse_private
#define Z_TargetResponse_iso10646
#define Z_OtherInfo_externallyDefinedInfo