+
+static int diag_to_wrbuf(Z_DiagRec **pp, int num, WRBUF w)
+{
+ int code = 0;
+ int i;
+ for (i = 0; i<num; i++)
+ {
+ Z_DiagRec *p = pp[i];
+ if (i)
+ wrbuf_puts(w, "; ");
+ if (p->which != Z_DiagRec_defaultFormat)
+ {
+ wrbuf_puts(w, "? Not in default format");
+ }
+ else
+ {
+ Z_DefaultDiagFormat *r = p->u.defaultFormat;
+
+ if (!r->diagnosticSetId)
+ wrbuf_puts(w, "? Missing diagset");
+ else
+ {
+ oid_class oclass;
+ char diag_name_buf[OID_STR_MAX];
+ const char *diag_name = 0;
+ diag_name = yaz_oid_to_string_buf
+ (r->diagnosticSetId, &oclass, diag_name_buf);
+ wrbuf_puts(w, diag_name);
+ }
+ if (!code)
+ code = *r->condition;
+ wrbuf_printf(w, " %d %s", *r->condition,
+ diagbib1_str(*r->condition));
+ switch (r->which)
+ {
+ case Z_DefaultDiagFormat_v2Addinfo:
+ wrbuf_printf(w, " -- v2 addinfo '%s'", r->u.v2Addinfo);
+ break;
+ case Z_DefaultDiagFormat_v3Addinfo:
+ wrbuf_printf(w, " -- v3 addinfo '%s'", r->u.v3Addinfo);
+ break;
+ }
+ }
+ }
+ return code;
+}
+
+
+