+ if (node_type && node_type->u.data.len > 0)
+ (*zsuip)->info.index_type = node_type->u.data.data[0];
+ else
+ {
+ yaz_log(YLOG_WARN, "Missing attribute 'type' in attribute info");
+ (*zsuip)->info.index_type = 'w';
+ }
+
+ if (node_set && node_use)
+ {
+ (*zsuip)->info.which = ZEB_SU_SET_USE;
+
+ oid_str_len = node_set->u.data.len;
+ if (oid_str_len >= (int) sizeof(oid_str))
+ oid_str_len = sizeof(oid_str)-1;
+ memcpy (oid_str, node_set->u.data.data, oid_str_len);
+ oid_str[oid_str_len] = '\0';
+
+ (*zsuip)->info.u.su.set = oid_getvalbyname (oid_str);
+
+ (*zsuip)->info.u.su.use = atoi_n (node_use->u.data.data,
+ node_use->u.data.len);
+ yaz_log (YLOG_DEBUG, "set=%d use=%d ordinal=%d",
+ (*zsuip)->info.u.su.set, (*zsuip)->info.u.su.use,
+ (*zsuip)->info.ordinal);
+ }
+ else if (node_str)
+ {
+ (*zsuip)->info.which = ZEB_SU_STR;
+
+ (*zsuip)->info.u.str = nmem_strdupn(zei->nmem,
+ node_str->u.data.data,
+ node_str->u.data.len);
+ }
+ else
+ {
+ yaz_log(YLOG_WARN, "Missing set/use/str in attribute info");
+ continue;
+ }