+ const char *name_oid = OID_STR_USMARC; // default if syntax is given
+ if (preferredRecordSyntax)
+ {
+ name_oid =
+ yaz_oid_to_string(yaz_oid_std(), preferredRecordSyntax, 0);
+ if (name_oid && !strcmp(name_oid, OID_STR_USMARC))
+ ;
+ else if (name_oid && !strcmp(name_oid, OID_STR_XML))
+ ;
+ else
+ {
+ error_code = YAZ_BIB1_RECORD_SYNTAX_UNSUPP;
+ return 0;
+ }
+ }
+
+ // no element set, "B" and "F" are supported
+ if (esn)
+ {
+ if (esn->which != Z_ElementSetNames_generic)
+ {
+ error_code
+ = YAZ_BIB1_SPECIFIED_ELEMENT_SET_NAME_NOT_VALID_FOR_SPECIFIED_;
+ return 0;
+ }
+ element_set_name = esn->u.generic;
+ }
+ if (!strcmp(element_set_name, "B")
+ && !strcmp(name_oid, OID_STR_USMARC))
+ ; // Brief
+ else if (!strcmp(element_set_name, "F")
+ && !strcmp(name_oid, OID_STR_USMARC))
+ ; // Full
+ else if (!strncmp(element_set_name, "FF", 2)
+ && !strcmp(name_oid, OID_STR_XML))
+ ; // Huge XML test record