+ pdu->u.request->overrule=(bool_t*)odr_malloc(odr_encode(),sizeof(bool_t));
+ *pdu->u.request->overrule = false;
+
+ if (!z_UrsPDU (odr_encode(), &pdu, 0, ""))
+ {
+ yaz_log (LOG_LOG, "ursula encoding failed");
+ return 1;
+ }
+ char *buf =
+ odr_getbuf (odr_encode(), &ext->u.single_ASN1_type->len, 0);
+
+ ext->u.single_ASN1_type->buf = (unsigned char*)
+ odr_malloc (odr_encode(), ext->u.single_ASN1_type->len);
+ memcpy (ext->u.single_ASN1_type->buf, buf, ext->u.single_ASN1_type->len);
+ ext->u.single_ASN1_type->size = ext->u.single_ASN1_type->len;
+
+ if (send_Z_PDU(apdu) >= 0)
+ wait();
+ return 1;
+}
+
+int MyClient::cmd_ursula_renew(char *args)
+{
+ Z_APDU *apdu = create_Z_PDU(Z_APDU_extendedServicesRequest);
+ Z_ExtendedServicesRequest *req = apdu->u.extendedServicesRequest;
+
+ req->packageType = odr_getoidbystr(odr_encode(), "1.2.840.10003");
+
+ Z_External *ext = (Z_External *) odr_malloc(odr_encode(), sizeof(*ext));
+ req->taskSpecificParameters = ext;
+ ext->direct_reference = req->packageType;
+ ext->descriptor = 0;
+ ext->indirect_reference = 0;
+
+ ext->which = Z_External_octet;
+ ext->u.single_ASN1_type = (Odr_oct *)
+ odr_malloc (odr_encode(), sizeof(Odr_oct));
+
+ Z_UrsPDU *pdu = (Z_UrsPDU *) odr_malloc (odr_encode(), sizeof(*pdu));
+ pdu->which = Z_UrsPDU_renewal;
+ pdu->u.renewal = (Z_UrsRenewal *)
+ odr_malloc (odr_encode(), sizeof(*pdu->u.renewal));
+ pdu->u.renewal->libraryNo = odr_strdup(odr_encode(), "000200");
+ pdu->u.renewal->borrowerTicketNo = odr_strdup(odr_encode(),"1234567973");
+ pdu->u.renewal->num_copies=1;
+ pdu->u.renewal->copies = (Z_InternationalString **)
+ odr_malloc(odr_encode(),1* sizeof(Z_InternationalString *) );
+ pdu->u.renewal->copies[0]= odr_strdup(odr_encode(), "000035238");
+ pdu->u.renewal->newReturnDate=odr_strdup(odr_encode(), "20011224");
+ pdu->u.renewal->overrule=(bool_t*)odr_malloc(odr_encode(),sizeof(bool_t));
+ *pdu->u.renewal->overrule=false;