- req->packageType =
- yaz_oidval_to_z3950oid(out, CLASS_EXTSERV,
- version == 0 ? VAL_DBUPDATE0 : VAL_DBUPDATE);
-
- req->packageName = esPackageName;
-
- req->referenceId = set_refid (out);
-
- r = req->taskSpecificParameters = (Z_External *)
- odr_malloc (out, sizeof(*r));
+static int cmd_update_Z3950(int version, int action_no, const char *recid,
+ char *rec_buf, int rec_len)
+{
+ Z_APDU *apdu = zget_APDU(out, Z_APDU_extendedServicesRequest );
+ Z_ExtendedServicesRequest *req = apdu->u.extendedServicesRequest;
+ Z_External *r;
+ Z_External *record_this = 0;
+ if (rec_buf)
+ record_this = z_ext_record_oid(out, yaz_oid_recsyn_xml,
+ rec_buf, rec_len);
+ else
+ {
+ if (!record_last)
+ {
+ printf("No last record (update ignored)\n");
+ return 0;
+ }
+ record_this = record_last;
+ }
+
+ req->packageType = odr_oiddup(out, (version == 0 ?
+ yaz_oid_extserv_database_update_first_version :
+ yaz_oid_extserv_database_update));
+
+ req->packageName = esPackageName;
+
+ req->referenceId = set_refid (out);
+
+ r = req->taskSpecificParameters = (Z_External *)
+ odr_malloc(out, sizeof(*r));