ZOOM-C options changes.
[yaz-moved-to-github.git] / CHANGELOG
index a7897d1..c0f209b 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,542 @@
 Possible compatibility problems with earlier versions marked with '*'.
 
+--- (IN PROGRESS)
+
+ZOOM-C now supports standard ZOOM option names as described in v1.4 of
+the ZOOM Abstract API.  The older names for the same options are still
+also supported for the benefit of old applications.
+
+ZOOM-C supports "implementationId" and "implementationVersion" options
+to go along with "implementationName".  These allow the user code to
+specify identification strings to be sent to servers.
+Add OID for the new ExtLite attribute set.
+
+Add OIDs for NACSIS-CATP, FINMARC2000 and MARC21-fin record-syntaxes,
+ as requested/supplid by Ere Maijala <ere@atp.fi>
+
+For generic frontend server, reverse the order of
+"toolkit-supplied / application-supplied" strings sent as implementationId,
+Name and Version.  Also, remove the spaces around the slash.  This brings
+the GFS in line with the behaviour of ZOOM-C on the client side.
+
+Add function ZOOM_scanset_display_term.
+
+yaz-client shows scan displayTerm if present.
+
+Utility yaz-iconv is now installed by default along with the man page 
+yaz-iconv.1.
+
+Extend configure check for OpenSSL to use pkg-config where available (such
+as RedHat 9).
+
+Incorporate patch by Morten Bogeskov which allows a Unix file socket
+server to specify uid/gid/mask for socket using the format
+ unix:[user=uid,][group=gid,][umask=mask,]file=path
+If file= is omitted the existing format is assumed, e.g.
+ unix:path
+in which case the mask is 0666 (rw for everybody).
+
+Major restructure of YAZ source. All source in libyaz is in src directory.
+Programs in client (yaz-client), ztest (yaz-ztest), zoom (zoom programs),
+util (utility programs such as ASN.1 compiler, yaz-marcdump). 
+
+Added man page for utility yaz-marcdump (used to be called marcdump).
+yaz-marcdump is installed by 'make install'.
+
+Fixed a memory leak in Generic Frontend Server that occurred when decoding
+of incoming package failed.
+
+Fixed a potential DOS attack vulnerability in COMSTACK/ODR.
+
+Change prototype of odr_perror: add const to message string.
+
+New function yaz_log_reopen which reopens log file (for log rotate, etc.)
+
+* Blocking parameter for COMSTACK cs_create is now a bit mask rather
+than a blocking flag. Bit 0 is set for blocking, reset for non-blocking.
+Bit 1 is set if cs_addrstr should avoid DNS lookup; reset for full
+DNS lookup. There should not be any compatibility problems with this
+assuming that blocking=1 or 0 is used.
+
+Fix bad reference in UNIX comstack in function cs_addrstr.
+
+Fix for compilation on AIX.
+
+The generic front-end server (server/seshigh.c) now supports returning
+Init diagnostics to the client in User-information-field, in
+accordance with Z35.90 Implementor Agreement 5 (Returning diagnostics
+in an InitResponse)
+
+
+--- 2.0.4 2003/09/04
+
+Allow any CQL relation (not just all,any,exact,scr).
+
+Fixes for OCLC UI ASN.1 to make it work with SilverPlatter targets
+that features the same UI.
+
+Implemented command update0 in YAZ client which is equivalent to
+update but uses old of Ext Update ASN.1.
+
+Use OID 1.2.840.10003.15.1000.81.1 for privately defined charsets
+in charset negotiation. Added VAL_ID_CHARSET in oid.h.
+Previously no OID was used for this info.
+
+ZOOM uses smallSetUpperBound=1 instead of 0 for piggyback searches.
+It apparantely upsets EBSCO Publishing IR Z39.50 Server which
+returns 'malformed search term' otherwise.
+
+SortResponse member resultCount now set to NULL in sort handler of
+frontend server.
+
+OPAC support ZOOM. ZOOM_record_get returns OPAC info (as XML) if
+type is "opac".
+
+Add three new utility functions for translating OIDs between various
+formats -- symbolic name such as "Usmarc", minus-1-terminated int
+arrays and dotted strings such as "1.2.840.10003.9.5.1":
+ int *oid_name_to_oid(oid_class oclass, const char *name, int *oid);
+ char *oid_to_dotstring(const int *oid, char *oidbuf);
+ char *oid_name_to_dotstring(oid_class oclass, const char *name, char *oidbuf);
+
+Reverted modifications for ES Update definition for z_IU0Update 
+(OID 1.2.840.10003.9.5.1 and 1.2.840.10003.9.5). The definition
+is back to YAZ 2.0.2.
+
+String value attributes for CCL parser.
+
+Support for OCLC's locally registered "OCLC-UserInformation" PDU,
+which their FirstSearch server returns in Init responses, sometimes
+carrying useful diagnostic information when Init fails.  This has the
+OID 1.2.840.10003.10.1000.17.1 and is defined in the file
+"z39.50/oclcui.asn", where its definition is somewhat different from
+what OCLC document on their web-site, as required to interoperate with
+their servers.
+
+Support for anonymous authentication in yaz-client.  Use the command
+"auth -".
+
+* Fix the OID of the Index Data-local "admin" Extended Service from 
+  1.2.840.10003.9.81.1 to 1.2.840.10003.9.1000.81.1.  The omission of
+  the 1000, which indicates a locally-defined OID, was a mistake.
+
+--- 2.0.3 2003/06/20
+
+Fix CCL directive @case handling so that it affects string match for
+both CCL keywords and qualifiers.
+
+* ESFormat-Update updates. Packages with OID 1.2.840.10003.9.5.1 and
+1.2.840.10003.9.5 are now handled by the same decoder z_IU0Update .
+Decoder has been updated with ASN.1 changes as listed in
+http://lcweb.loc.gov/z3950/agency/defns/updateES.html
+Note that the "latest" DB Update, OID 1.2.840.10003.9.5.1.1 , handler
+z_IUUpdate, remains unchanged. 
+
+ZOOM_record_get may now return a record in a specific character set.
+For type use "form; charset=from[,to]" where form (render, xml, ..) ,
+"from" is the character set of record as returned by target. "to" is
+the character set to be returned. If omitted, "to" is UTF-8.
+
+YAZ ASN.1 compiler renamed from yaz-comp to yaz-asncomp
+
+New ODR utility, odr_getelement, which returns name of element for
+which encoding/decoding failed.
+
+Fixed ODR so that it returns error code OREQUIRED rather than ONONE
+in cases where a required element was omitted.
+
+Bug fix: some MARC8 sequences were not converted.
+
+New ZOOM option "step" which specifies number of records to be
+retrieved in one chunk. Used in conjunction with "start" and "count".
+
+SRW support for yaz-client. Use scheme http: to use it, e.g.
+ http://host:port/db
+
+yaz-client no longer does (un)intelligent character set conversions
+by default. Can be enabled with charset and marc_charset commands.
+
+xmalloc trace fix for 64-bit systems such as DEC alpha. 
+
+Solaris 2.6 compile fix.
+
+New function, cql_strerror() translates SRW error codes, as returned
+by cql_transform_error(), into human-readable English strings.  Used
+in yaz-client diagnostics when appropriate.
+
+New CQL2RPN query-type for the command-line yaz-client, parses CQL and
+converts it into a type-1 query which is sent to the server.  This
+makes CQL available for use with all Z-servers, as opposed to the tiny
+minority that can handle CQL queries themselves.
+
+--- 2.0.2 2003/04/28
+
+New Debian package layout similar to the Redhat Package layout.
+
+New ZOOM events ZOOM_EVENT_RECV_{RECORD,SEARCH} for receiving a record
+and search result respectively.
+
+--- 2.0.1 2003/04/25
+
+Redhat package is now several packages: libyaz (runtime libraries),
+libyaz-devel (development and documentation, and yaz (utility programs).
+Package spec file by Morten Bøgeskov.
+
+New member 'schema' in struct bend_fetch_rr which the name of requested
+schema (SRW/SRU) for record (or NULL if none was given). The fetch
+handler MAY set this to reflect the schema of the returned record.
+
+New member 'display_term' in struct scan_entry. GFS now sets member entries
+and allocates scan entries to be filled by user scan handler. In previous
+version, entries member was allocated by the scan handler. That still works,
+but the GFS will ignore member display_term - assuming it was NOT set by
+the handler. The fact that the GFS now allocates the entries both allows
+for new members and makes a scan handler easier to write.
+
+Fix CQL lex buffer overflow.
+
+SRW/SRU recordPacking. For SRW default recordPacking is string. For
+SRU default recordPacking is string.
+
+SRU protocol support for frontend server.
+
+Fix compile bug for systems that have nl_langinfo but CODESET undefined.
+
+Added missing PQF transform rules for <= and >= . Thanks to Peter Popovics.
+
+Added scan for the ZOOM shell (zoomsh).
+
+--- 2.0 2003/02/23
+
+* String Identifers for Schemas (Amendment 5).
+http://lcweb.loc.gov/z3950/agency/amend/am5.html
+Old definition for schema
+  Odr_oid *schema; /* OPT */
+New:
+  int which;
+  union {
+     Odr_oid *oid;
+     Z_InternationalString *uri;
+  #define Z_Schema_oid 1
+  #define Z_Schema_uri 2
+  } schema; /* OPT */
+
+* resultCount parameter to Sort Response (Amendment 1).
+http://lcweb.loc.gov/z3950/agency/amend/am1.html
+
+Support for SRW 1.0 over HTTP. This is an optional feature and
+requires libxml2 to operate. Enable SOAP by specifying --with-xml2
+for configure.
+
+Generic frontend server supports HTTP/SOAP/SRW and Z39.50/BER
+on the same port.  SRW SearchRetrieveRequests are mapped
+to bend_init,bend_search,bend_fetch,bend_close. 
+
+Z39.50 Query Type-104 added - to facilitate CQL within Z39.50.
+
+CQL support. Source is directory 'cql'. CQL is supported in ZOOM
+(both SRW and Z39.50) and the YAZ client (Z39.50 only).
+
+ZOOM connections are SRW based if schem http is used for hostname
+in connect, e.g.  z = ZOOM_connection_new("http://myserver");
+ZOOM_query may be of type CQL, e.g. ZOOM_query_cql(q, "dc.title=x");
+
+CCL proximity operators !n, %n converts to PQF @prox 0 n 1 2 k 2
+and @prox 0 n 0 1 k 2 respectively, meaning: exlusion=false,
+distance=n, order=true/false, relation=le, prox unit=word. If
+n is omitted, distance 1 is used.
+
+Fixed problem with C compiler include path in wrong order.
+
+For TCP/IP COMSTACK, set recv buffer to an appropriate "large" value
+on Solaris. Patch from Ko van der Sloot.
+
+New MARC decode API. All new functions operate on a yaz_marc_t
+handle. The most important new functions are: yaz_marc_create,
+yaz_marc_decode_{buf,wrbuf}, yaz_marc_destroy, .. to create handler,
+decode and destroy respectively. Decoder can produce formats
+MARC line, simple XML, OAI MARC and MARC XML (LoC). See
+include/yaz/marcdisp.h.
+
+YAZ Iconv utility now supports MARC8 decoding (marc8.c). Converts
+to UTF-8, UCS-32, wchar_t or Latin-1.
+
+* Prototypes for yaz_iconv_-functions moved to separate header 
+include/yaz/yaz-iconv.h.
+
+Make a few private functions 'static' in unix.c. This prevents
+duplicate unix_close in PHP with YAZ and imap. PHP Bug 20977.
+
+For ZOOM connection, the options targetImplementation{Id,Name,Version}
+are set when Init Response is received.
+
+New function ZOOM_connection_error_x similar to ZOOM_connection_error
+but returns diagnostic set as well.
+
+New function yaz_strerror which is a portable wrapper for
+strerror/strerror_r/GetLastMessage.
+
+* ZOOM_record_get supports type "xml" in which case MARC XML (from LOC)
+is returned for MARC. If type is "oai", then OAI MARC is returned.
+
+Fix creation of lib/yaz-config so it works if srcdir != objdir. Patch
+from Kang-Jin Lee.
+
+--- 1.9.2 2002/11/26
+
+yaz_marc_decode uses OAI MARC as XML format for ISO2709 records.
+
+Fix bad race conditions on SIGTERM and terminate gracefully in
+frontend server.
+
+Move retrieval (data1) module to Zebra since nobody seems to be
+using it.
+
+Add GRS-1 render for ZOOM using same format as yaz-client.
+
+--- 1.9.1 2002/10/05
+
+Added man pages: yaz-client(1), yaz-ztest(8), yaz(7), zoomsh(1).
+
+Fix broken ESpec handling in data1 module.
+
+SGML reader parses comments and makes them part of the data1 tree.
+
+Added several type casts so that YAZ compiles as C++ code.
+
+ZOOM didn't handle PDU encoding failures properly.
+
+Added more Bib-1 diagnostics (approved extensions).
+
+GNU configure: better check for iconv.
+
+More portable use of accept, getpeername. Check for socklen_t. Use
+int/size_t if socklen_t is not defined.
+
+--- 1.9 2002/09/06
+
+PQF parser rejects bad queries - including those with extra
+characters in them. PQF parser used to silently ignore that.
+Cleaner API for PQF added, which allows you to get detailed
+error information for bad queries (see yaz/pquery.h).
+
+Fixed bug in ZOOM_record_get for type "database".
+
+Implemented mini iconv library supporting conversions between
+UTF-8, UCS4, UCS4LE and ISO-8859-1. Implemented in util/siconv.c.
+
+* Removed XML reader (d1_expat.c). It's part of Zebra instead.
+
+--- 1.8.9 2002/08/20
+
+Fixed ZOOM C record cache so that preferredRecordSyntax and
+elementSetName is used to check for already fetched records.
+
+--- 1.8.8 2002/08/02
+
+Added three members in bend_initrequest structure to facilitate
+character set negotiation.
+
+Fixed a bug in frontend server that could cause indefinite
+loops under rare conditions. 
+
+Revised character set utilities (charneg.h) so that encoding
+UCS-4, UCSA-4, UTF-16 and UTF-8 are encoded non-privately.
+
+For PQF, directive @term <type> sets term type for Scan/Search.
+Here <type> is general, string, numeric, null. The term type
+is inherited - just like @attr.
+
+New call odr_set_charset that sets character set conversion for
+international-strings on a ODR stream. Prototype is:
+ int odr_set_charset(ODR o, const char *to, const char *from);
+The InternationalString is still represented as C string in YAZ 
+so native strings of type UTF-8, ASCII, etc. will work (UTF-16
+won't). On the protocol level, you can use any encoding.
+
+Support for UNIX sockets in ZOOM.
+
+Solaris recv sometimes returns errno == ENOENT. It is treated as
+EINPROGRESS. COMSTACK patch by Ko van der Sloot.
+
+New COMSTACK of type UNIX Socket. Use "unix:/path" as address for
+both client and server. Code by Morten Bøgeskov.
+
+--- 1.8.7 2002/05/22
+
+On Windows ZOOM functions are of type __stdcall rather than __cdecl, so
+that they can be used directly from Visual Basic. You must recompile
+your windows APP if you're using ZOOM.
+
+Character Set and Language Negotiation(3) for ZOOM API and YAZ client.
+Commands "lang" and "charset" sets language and character set respectively.
+Options "lang" and "charset" is interpreted by the ZOOM API. Note, these
+are not part of the official ZOOM spec) All is due to Oleg Kolobov. 
+
+Attributes from multiple CCL fields may be OR'ed rather than merged
+using directive "@field or". Fields are still merged by default -
+equivalent to "@field merge".
+
+Fixed bug in ZOOM connect that occurred on OpenBSD (maybe others). Patch
+by Oleg Kolobov.
+
+Fixed bug in zget for parameter ExtendedServicesResponse.
+
+Fix OID for ILL.
+
+--- 1.8.6 2002/03/25
+
+Added PQF feature: '@attr type=value' may be written as '@type=value'.
+
+Client displays USR.1:SearchResult-1 (hits per term).
+
+Additional Search Info for search in Generic Frontend Server.
+
+Fixed CCL parsing of "field=s".
+
+WIN32 installer - using the excellent NSIS software from nullsoft.
+
+Fixed CCL parsing of "field = - <number>".
+
+Added function yaz_marc_decode that decodes MARC for line mode
+display or XML (similar to that used by JZKit).
+
+Fixed BER decoding of OPTIONAL CHOICE. The bug didn't affect the
+Z39.50. But ISO/ILL was, however.
+
+Added patch by Rustam T. Usmanov that implements Z39.50 duplicate
+detection service (Z39.50-1995 Amendment 2) and Language Negotiation (3).
+See:
+ http://lcweb.loc.gov/z3950/agency/amend/am2.html
+ http://lcweb.loc.gov/z3950/agency/defns/charneg-3.html
+
+--- 1.8.5 2002/02/03
+
+New YAZ client features: Command completion and new commands:
+push_command, set_apdufile, set_marcdump, set_cclfields, register_oid.
+Code provided by Jacob Poulsen.
+
+New call oid_trav, that visits all registered OIDs via callback.
+
+Function ZOOM_record_get now returns const char pointer rather than
+void pointer. It saves a lot of type casts.
+
+For YAZ client, command "auth" now allows you to set authentication
+in IdPass style. It is enabled when three tokens are given - order
+is user, group and password.
+
+Fix memory leaks in MARC record handling for ZOOM.
+
+New option for YAZ client, -k <kilobytes> that sets
+maximum record size. Similar to -k option for generic frontend
+server and yaz-ztest.
+
+More fixes for scan. Non-zero stepSize handled. OID's fixes.
+
+Prefix query parser reports "fail" when bad attribute set is given.
+
+Fix in MARC decoder. Proximity logging. Fix for attribute set
+in scan handler for server. Patches by Shigeru Ishida.
+
+SSL/COMSTACK updates. cs_rcvconnect completes SSL handshake. ZOOM
+works with SSL.
+
+Configure option --with-openssl=<dir> now works when a directory is
+specified. Patch provided by Morten Bøgeskov.
+
+New option for YAZ client, -u <auth>, that sets authentication.
+
+ZOOM fix: error information was sometimes "missing", since error
+was cleared/reset too when it shouldn't.
+
+ZOOM_record_get returns ISO2709 buffer when "raw" is given.
+
+--- 1.8.4 2002/01/04
+
+Scan for ZOOM API. New object ZOOM_scanset. New functions
+ZOOM_connection_scan, ZOOM_scanset_size, ZOOM_scanset_term and
+ZOOM_scanset_destroy.
+
+New ZOOM function, ZOOM_connection_last_event, that returns type
+of last event (such as "receive data", "send data", "apdu received",
+etc.
+
+New ZOOM option, schema, that specifies schema for retrieval.
+
+New CCL feature. Qualifiers can be aliases for one or more
+other qualifiers (if more than one is given, OR is used).
+
+ZOOM uses named result sets if target supports it.
+
+Two new YAZ client commands: .  (dot, which sources a script of YAZ
+client commands), and ! (to execute shell command.). Implemented
+by Jacob Poulsen.
+
+Working on Debian packages.
+
+--- 1.8.3 2001/11/19
+
+YAZ client enables named result sets only if target supports it.
+
+*** ZOOM. Prefix for ZOOM definitions changed from Z3950_ to ZOOM_.
+
+* ZOOM. Removed Z3950_connection_host. Use Z3950_connection_option_get
+with key="host" to get same result.
+
+* ZOOM. Added Z3950_record_clone and removed Z3950_resultset_get.
+Function Z3950_resultset_record(s) returns references to records
+"owned" by resultset. To become owner use Z3950_record_clone.
+
+Function z_ext_record handles Extended Services. Thanks to
+Irina Dijour.
+
+--- 1.8.2 2001/11/12
+
+CCL Parser fix: ignore token comma when dealing with and-lists.
+
+Documentation updates for COMSTACK.
+
+* ZOOM changes. Query object renamed from Z3950_search to Z3950_query.
+Changed prototype Z3950_records. For some functions, int parameters
+were changed to size_t.
+
+TCP/IP COMSTACK no longer uses getprotobyname to avoid memory leak
+on some Unices.
+
+New MARC decode/display function, marc_display_exl, which properly rejects
+non-ISO2709 records. YAZ client uses it.
+
+--- 1.8.1 2001/10/29
+
+Fix bug: local attribute set wasn't set correctly in PQF strings.
+
+--- 1.8 2001/10/25
+
+* Old Z39.50 codecs no longer supported. 
+
+Added ZOOM C binding. See http://zoom.z3950.org/
+
+Renamed states for COMSTACKs to avoid confusion with events.
+
+Implemented cs_look and proper cs_rcvconnect.
+
+Fixed COMSTACK error that occurred on HPUX. Fix by Giannis Kosmas.
+
+Configure detects POSIX threads on OpenBSD.
+
+When sort flag 'i' was specified in yaz-client the caseSensitivy flag
+was set to a wrong value.  Thanks to Robert Sanderson for reporting this.
+
+When error is returned from present handler, non-surrogate diagnostic
+is returned in present response (and fetch handler is no longer called).
+
+* Minor adjustments to pquery parser (PQF). Token characters may be
+escaped by using backslash (C-style).
+
+PQF parser allows string attribute values to be specified. For @attr,
+non-numeric characters after the equal-sign are treated as strings
+(e.g. @attr 9=title).
+
 CCL trunction character may be defined (@truncation in file)
 
 * function zget_ExtendedServicesRequest sets waitAction to