- case 600: res->commonInfo = f_commonInfo(c, select, o); break;
- case 102: res->name = f_string(c, o); break;
- case 226: res->explainDatabase = ODR_NULLVAL; break;
- case 114:
- res->num_nicknames = 0; res->nicknames = 0; break; /* fix */
- case 104: res->icon = 0; break; /* fix */
- case 201: res->userFee = f_bool(c, o); break;
- case 202: res->available = f_bool(c, o); break;
- case 203: res->titleString = f_humstring(c, o); break;
- case 227: res->num_keywords = 0; res->keywords = 0; break; /* fix */
- case 113: res->description = f_humstring(c, o); break;
- case 205: res->associatedDbs = 0; break; /* fix */
- case 206: res->subDbs = 0; break; /* fix */
- case 207: res->disclaimers = f_humstring(c, o); break;
- case 103: res->news = f_humstring(c, o); break;
- case 209: res->recordCount =
- f_recordCount(c, o, &res->recordCount_which); break;
- case 212: res->defaultOrder = f_humstring(c, o); break;
- case 213: res->avRecordSize = f_integer(c, o); break;
- case 214: res->maxRecordSize = f_integer(c, o); break;
- case 215: res->hours = f_humstring(c, o); break;
- case 216: res->bestTime = f_humstring(c, o); break;
- case 217: res->lastUpdate = f_string(c, o); break;
- case 218: res->updateInterval = f_intunit(c, o); break;
- case 219: res->coverage = f_humstring(c, o); break;
- case 220: res->proprietary = f_bool(c, o); break;
- case 221: res->copyrightText = f_humstring(c, o); break;
- case 222: res->copyrightNotice = f_humstring(c, o); break;
- case 223: res->producerContactInfo = f_contactInfo(c, o); break;
- case 224: res->supplierContactInfo = f_contactInfo(c, o); break;
- case 225: res->submissionContactInfo = f_contactInfo(c, o); break;
- case 500: res->accessInfo = f_accessInfo(c, select, o); break;
- default:
- logf(LOG_WARN, "Unknown element in databaseInfo");
+ case 600: res->commonInfo = f_commonInfo(eh, c); break;
+ case 102: res->name = f_string(eh, c); break;
+ case 226: res->explainDatabase = odr_nullval(); break;
+ case 114:
+ res->num_nicknames = 0;
+ for (n = c->child; n; n = n->next)
+ {
+ if (!is_numeric_tag(eh, n) ||
+ n->u.tag.element->tag->value.numeric != 102)
+ continue;
+ (res->num_nicknames)++;
+ }
+ if (res->num_nicknames)
+ res->nicknames =
+ (char **)odr_malloc (eh->o, res->num_nicknames
+ * sizeof(*res->nicknames));
+ for (n = c->child; n; n = n->next)
+ {
+ if (!is_numeric_tag(eh, n) ||
+ n->u.tag.element->tag->value.numeric != 102)
+ continue;
+ res->nicknames[i++] = f_string (eh, n);
+ }
+ break;
+ case 104: res->icon = 0; break; /* fix */
+ case 201: res->userFee = f_bool(eh, c); break;
+ case 202: res->available = f_bool(eh, c); break;
+ case 203: res->titleString = f_humstring(eh, c); break;
+ case 227:
+ res->num_keywords = 0;
+ for (n = c->child; n; n = n->next)
+ {
+ if (!is_numeric_tag(eh, n) != 1000)
+ continue;
+ (res->num_keywords)++;
+ }
+ if (res->num_keywords)
+ res->keywords =
+ (Z_HumanString **)odr_malloc (eh->o, res->num_keywords
+ * sizeof(*res->keywords));
+ for (n = c->child; n; n = n->next)
+ {
+ if (!is_numeric_tag(eh, n) != 1000)
+ continue;
+ res->keywords[i++] = f_humstring (eh, n);
+ }
+ break;
+ case 113: res->description = f_humstring(eh, c); break;
+ case 205:
+ res->associatedDbs = f_databaseList (eh, c);
+ break;
+ case 206:
+ res->subDbs = f_databaseList (eh, c);
+ break;
+ case 207: res->disclaimers = f_humstring(eh, c); break;
+ case 103: res->news = f_humstring(eh, c); break;
+ case 209: res->recordCount =
+ f_recordCount(eh, c, &res->recordCount_which); break;
+ case 212: res->defaultOrder = f_humstring(eh, c); break;
+ case 213: res->avRecordSize = f_integer(eh, c); break;
+ case 214: res->maxRecordSize = f_integer(eh, c); break;
+ case 215: res->hours = f_humstring(eh, c); break;
+ case 216: res->bestTime = f_humstring(eh, c); break;
+ case 217: res->lastUpdate = f_string(eh, c); break;
+ case 218: res->updateInterval = f_intunit(eh, c); break;
+ case 219: res->coverage = f_humstring(eh, c); break;
+ case 220: res->proprietary = f_bool(eh, c); break;
+ case 221: res->copyrightText = f_humstring(eh, c); break;
+ case 222: res->copyrightNotice = f_humstring(eh, c); break;
+ case 223: res->producerContactInfo = f_contactInfo(eh, c); break;
+ case 224: res->supplierContactInfo = f_contactInfo(eh, c); break;
+ case 225: res->submissionContactInfo = f_contactInfo(eh, c); break;
+ case 500: res->accessInfo = f_accessInfo(eh, c); break;