2005-03-14  Ludovic Rousseau  <rousseau@acer>

	* README: release 0.9.3

	* src/openct/checksum.h, src/openct/proto-t1.h, src/commands.h, src/debug.c, src/debug.h, src/defs.h, src/ifdhandler.c, src/utils.c, src/utils.h, src/ccid_serial.h, src/ccid_usb.c, src/ccid_usb.h, src/commands.c, src/ccid_serial.c, src/ccid.c, src/ccid.h, src/ccid_ifdhandler.h, COPYING, README:
	change licence from GNU GPL to GNU LGPL

	* configure.in: version 0.9.3

2005-03-04  Ludovic Rousseau  <rousseau@acer>

	* readers/KAAN_mIDentity.txt, readers/KAAN_SIM_III.txt:
	Add KAAN SIM III and KAAN mIDentity

	* config.h.in: add HAVE_LIBPCSCLITE

	* configure.in: use $PCSC_LIBS instead of $PCSCLITE_LIBS since we used
	PKG_CHECK_MODULES(PCSC, ...)

	* readers/supported_readers.txt, README:
	add Kobil KAAN mIDentity in supported reader list

	* README, readers/supported_readers.txt:
	add Kobil KAAN SIM III in supported readers list

	* README, readers/supported_readers.txt: add SCR 3310

	* readers/SCR3310.txt: SCR3310

2005-02-28  Ludovic Rousseau  <rousseau@acer>

	* src/ifdhandler.c, src/towitoko/atr.c: use ATR_t instead of ATR

	* src/towitoko/atr.h:
	rename ATR struct to ATR_t do not conflict with ATR field defined by
	PCSC/ifdhandler.h.
	This allows compilation using tcc (Tiny C Compiler)

2005-02-27  Ludovic Rousseau  <rousseau@acer>

	* configure.in: check that we can link with libpcsclite needed by
	examples/scardcontrol.c

	* configure.in: exits with an error if usbdropdir is not defined

	* configure.in:
	if /usr/local/lib/pkgconfig/libpcsclite.pc exists (default pcsc-lite
	configuration) we exit telling the user to use
	PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure

	* configure.in: do not check for pkg-config since we can do without it

2005-02-25  Ludovic Rousseau  <rousseau@acer>

	* readers/SPR532.txt, readers/CardMan3121.txt, readers/CherryXX33.txt, readers/CherryXX44.txt, readers/GemPC433_SL.txt, readers/KAAN_Advanced.txt, readers/KAAN_Base.txt, readers/SCR331-DI.txt, readers/SCR331.txt, readers/SCR335.txt:
	typo: correct ICC by CCID where needed

	* src/parse.c: typo: used "ICC" instead of "CCID"

	* src/ifdhandler.c:
	IFDHSetProtocolParameters(): return immediately if the reader has the
	bit CCID_CLASS_AUTO_PPS_PROP set since he will perform PPS and
	SetParameters himself

	* src/ccid.h:  #define CCID_CLASS_AUTO_PPS_PROP       0x00000040

	* src/ifdhandler.c:
	IFDHSetProtocolParameters(): calculate the value of pps[2] (TA1) even if
	CCID_CLASS_AUTO_PPS_CUR bit is set and no PPS will be generated by the
	driver since this value is also used later by the SetParameters()

	* src/ifdhandler.c:
	IFDHSetProtocolParameters(): use "card_baudrate <= ccid_desc->dwMaxDataRate"
	instead of "card_baudrate < ccid_desc->dwMaxDataRate" to not miss the
	maximum speed value

	* Makefile.am: we do not need to distribute mkinstalldirs

	* configure.in: define WITHOUT_PCSC=false when pcsclite _is_ used

2005-02-23  Ludovic Rousseau  <rousseau@acer>

	* examples/scardcontrol.c:
	 #include <sys/time.h> instead of <time.h> to get correct definition of
	struct timeval under Mac OS X

	* src/debug.c:
	if you use --disable-pcsclite and do _not_ want to see the logs sent to
	stderr just #undef LOG_TO_STDERR

	* src/Makefile.am, configure.in:
	if --disable-pcsclite is used we must link the library with debug.c
	to provide debug_msg()

	* examples/Makefile.am: use @PCSC_CFLAGS@ and @PCSC_LIBS@

2005-02-21  Ludovic Rousseau  <rousseau@acer>

	* src/ccid_serial.c:
	OpenSerialByName(): use tx_buffer[] = { 0x02 } insead of "\x02" since we
	want 1 byte only and not a null-terminated string

	* src/Makefile.am: use @PCSC_CFLAGS@

	* configure.in:
	use pkg-config(1) to find everything related to pcsc-lite

	if you installed pcsc-lite in /usr/local you may use
	$ PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure

	if you do not have pkg-config installed you may use
	$ CFLAGS=-I/usr/local/include/PCSC ./configure

2005-02-20  Ludovic Rousseau  <rousseau@acer>

	* src/ccid_usb.c:
	add an "interface field" in _usbDevice. This value is set in OpenUSB()
	and used in CloseUSB().

	The struct usb_device structure is half "corrupted" after the USB device
	is removed and we wanted to use it when when closing the driver after a
	reader removal. This caused a crash with libusb 0.1.10.

	* README:
	add Kobil KAAN Base & KAAN Advanced readers in the supported list

	* src/ccid_usb.c:
	Bogus_firmwares[]: add Kobil KAAN Base & KAAN Advanced readers

	* readers/supported_readers.txt:
	add Kobil KAAN Base & KAAN Advanced readers

	* readers/KAAN_Advanced.txt, readers/KAAN_Base.txt: firmware 0.37

2005-02-04  Ludovic Rousseau  <rousseau@acer>

	* readers/ACR38.txt:
	new firmware (but still with version 1.0) with the wMaxPacketSize bug removed

2005-02-02  Ludovic Rousseau  <rousseau@acer>

	* README: move the ACR 38 from Unsupported to Supported list

2005-01-26  Ludovic Rousseau  <rousseau@acer>

	* readers/Makefile.am: add the new or missing readers

	* readers/CherryXX44.txt, readers/KAAN_Advanced.txt, readers/KAAN_Base.txt:
	new readers descriptions

2005-01-20  Ludovic Rousseau  <rousseau@acer>

	* README: add Cherry XX44 keyboard (SmartBoard G83-6744)

	* readers/supported_readers.txt: add Cherry XX44 (SmartBoard G83-6744)

2005-01-13  Ludovic Rousseau  <rousseau@acer>

	* README:
	move the SCM Micro readers from unsupported to supported list and
	document how to upgrade the firmwares

	Thanks to Torsten Maykranz for his support

	* readers/SCR335.txt: New model with firmware 5.14 (instead of 4.16)

	* src/ccid_usb.c:
	Bogus_firmwares[]: the 3 SMC readers had the same (cut-n-paste) USB
	identification

	* src/commands.c:
	CmdXfrBlockCHAR_T0(): move a variable declaration at the beginning of
	the function since ISO C89 forbids mixed declarations and code

	* src/commands.c:
	SecurePIN(): proprietary command to add the PIN code in the APDU without
	any padding (this is not possible with the CCID specs).

	Thanks to Martin Paljak for the patch.

	* src/ccid.h: define SPR532 USB identification

2005-01-11  Ludovic Rousseau  <rousseau@acer>

	* configure.in: typo: shat -> what

2005-01-09  Ludovic Rousseau  <rousseau@acer>

	* src/commands.c:
	SecurePIN(), CCID_Transmit(), SetParameters(): check that the user
	provided command is not too large (avoid a possible buffer overflow)

	* examples/scardcontrol.c:
	The APDU now comes _after_ the CCID structure as described the CCID
	specifications.

	* src/commands.c:
	SecurePIN(): directly use the user buffer passed instead of reversing
	the APDU/CCID structure. It is now as described in the CCID
	specifications.

	Thanks to Martin Paljak. I was wrong.

2004-12-19  Ludovic Rousseau  <rousseau@acer>

	* src/ccid_usb.c:
	SPR 532 firmware previous to 5.04 is bogus regarding min/max pin lengths

	* readers/SPR532.txt: update with firmware 5.04

2004-10-27  Ludovic Rousseau  <rousseau@acer>

	* src/ccid_serial.c:
	OpenSerialByName(): use %s instead of %d for dev_name

2004-10-20  Ludovic Rousseau  <rousseau@acer>

	* examples/scardcontrol.c:
	set wPINMaxExtraDigit: set max to 8 (instead of 4) to differentiate it
	from min (set to 4)

	* examples/scardcontrol.c:
	in wPINMaxExtraDigit the bytes order is max,min and not min,max.
	The comments were wrong

2004-10-19  Ludovic Rousseau  <rousseau@acer>

	* readers/supported_readers.txt: add Oz776

	* src/Info.plist, src/ccid_ifdhandler.h, src/ccid_usb.c:
	check firmware version to avoid firmwares with bugs. You can still use a
	bigus firmware by setting DRIVER_OPTION_USE_BOGUS_FIRMWARE in Info.plist

	* src/openct/proto-t1.c, src/towitoko/pps.c, src/commands.c, src/commands.h:
	Add support of character level communication (CCID_CLASS_CHARACTER).

	Thanks to Jeffrey Dai

2004-10-14  Ludovic Rousseau  <rousseau@acer>

	* readers/DellSCRK.txt:
	add idVendor & idProduct using the new parse command

2004-10-07  Ludovic Rousseau  <rousseau@acer>

	* readers/Makefile.am: reorganize the list and add Oz776S.txt

	* readers/Oz776S.txt: O2Micro Oz776S USB Hub smartcard reader

	* readers/SCR335.txt, readers/SPR532.txt, readers/SCR331-DI.txt:
	add idVendor & idProduct using the new parse command

	* src/ccid_usb.c, src/ccid_usb.h:
	the first argument of get_desc() is lun instead of channel and the
	function uses LunToReaderIndex() to get the reader index

	* src/parse.c:
	use lun instead of channel as first argument to get_desc() and use the
	returned value to detect an error

	* readers/SCR331.txt:
	add idVendor & idProduct using the new parse command

2004-10-06  Ludovic Rousseau  <rousseau@acer>

	* readers/CardMan3121.txt, readers/CherryXX33.txt, readers/DellSK-3106.txt, readers/GemPC433_SL.txt, readers/GemPCKey.txt, readers/GemPCTwin.txt, readers/LTC31.txt, readers/ACR38.txt:
	add idVendor & idProduct using the new parse command

	* src/parse.c: display idVendor and idProduct

	* src/parse.c:
	display USB bcdDevice field. Is it the device firmware release?

	* src/parse.c: add support of "Character level exchange"

2004-10-04  Ludovic Rousseau  <rousseau@acer>

	* configure.in:
	do not redefine PKG_CONFIG_PATH when checking the pcsc-lite version
	since the variable is already defined a few lines above

2004-10-03  Ludovic Rousseau  <rousseau@acer>

	* examples/scardcontrol.c:
	add "THIS PROGRAM IS NOT DESIGNED AS A TESTING TOOL!

2004-09-30  Ludovic Rousseau  <rousseau@acer>

	* src/ifdhandler.c:
	mask bStatus to get the ICC state since bSatus may also indicate
	an error in b6-b7

	* src/ccid.h:  #define CCID_CLASS_CHARACTER

	* src/ccid.h: define OZ776 USB identification

	* src/ccid.h: define CCID_ICC_STATUS_MASK and status states

	* src/commands.c:
	CmdGetSlotStatus(): card absent or mute is not an communication error
	(even if the CCID command result indicates a command failure)

	* src/ccid_usb.c:
	get_ccid_usb_interface(): the O2Micro OZ776S reader has a wrong USB
	descriptor. The extra[] field is associated with the last endpoint instead
	of the main USB descriptor.

2004-09-29  Ludovic Rousseau  <rousseau@acer>

	* src/Makefile.am, examples/Makefile.am:
	use @AM_CPPFLAGS@ (defined by configure.in) instead of `pkg-config
	libpcsclite --cflags` since PKG_CONFIG_PATH may not be correct here

	* configure.in:
	define AM_CPPFLAGS=`pkg-config libpcsclite --cflags` here since we also
	defined/exported a "valid" PKG_CONFIG_PATH

	* src/Makefile.am:
	do not define parse_CFLAGS since AM_CPPFLAGS is already defined with the
	same value

	* configure.in:
	try to find pkg-config files in /usr/local/lib/pkgconfig since pcsc-lite
	installs them in this directory by default

2004-09-08  Ludovic Rousseau  <rousseau@acer>

	* src/ccid.c:
	ccid_open_hack(): do not use a null terminated C string for the
	TPDU->APDU switch command since the command is NOT a C string

	* src/commands.c:
	CmdPowerOn(): do not use a null terminated C string for the EMV->ISO
	switch command since the command is NOT a C string

	* src/commands.c:
	switch the Cherry xx33 reader in ISO mode if power up in EMV mode fails.
	Thanks to Stéphane Durand for the bug report.

	* src/ccid.h:  #define CHERRYXX33     0x046A0005

2004-09-03  Ludovic Rousseau  <rousseau@acer>

	* src/ifdhandler.c:
	IFDHSetProtocolParameters(): return the result value of SetParameters()
	in case of error instead of always IFD_COMMUNICATION_ERROR.

	This will allow to return IFD_NOT_SUPPORTED in some cases and avoid a
	PTS negociation failure (and card ignored) in pcscd.

	* src/commands.c:
	SetParameters(): returns IFD_NOT_SUPPORTED if the CCID error is "command
	not supported".

2004-08-24  Ludovic Rousseau  <rousseau@acer>

	* src/ifdhandler.c:
	IFDHSetProtocolParameters(): the bmTCCKST bits shall be _set_ not cleared

	* src/ifdhandler.c:
	IFDHSetProtocolParameters(): we shall indicate the T=1 checksum used
	(LRC/CRC) in the SetParameters() command

	* src/openct/proto-t1.c:
	t1_negociate_ifsd: the frame size is 5 only for LRC checksum. The
	correct size is (4 + t1->rc_bytes)

	* src/utils.c:
	ReleaseReaderIndex: return 0 since the function is not void ()

2004-08-17  Ludovic Rousseau  <rousseau@acer>

	* src/Info.plist:
	use the official doctype, public and system ids. Thanks to Ville Skyttä
	and OpenCT

2004-08-15  Ludovic Rousseau  <rousseau@acer>

	* README: release 0.9.2

	* examples/Makefile.am, src/Makefile.am:
	use AM_CPPFLAGS = `pkg-config libpcsclite --cflags`

	* config.h.in:
	no need to define HAVE_PCSC_IFDHANDLER_H (the check section changed in
	configure.in)

	* configure.in:
	use `pkg-config libpcsclite --cflags` to locate ifdhandler.h and do not
	use PCSC/ifdhandler.h but just ifdhandler.h

2004-08-10  Ludovic Rousseau  <rousseau@acer>

	* README:
	place the "Known problems" near the affected reader and not in a
	independent section for clarification

2004-08-06  Ludovic Rousseau  <rousseau@acer>

	* src/parse.c:
	try to IFDHCloseChannel() only if we opened at least one reader

	* src/ccid.c:
	ccid_open_hack(): update the hack for the SCR331-DI contactless now we
	use multi-slots

	* src/ifdhandler.c:
	IFDHICCPresence(): periodic debug message indicating the card presence/absence

	* src/ifdhandler.c:
	use a much cleaner way to check presence of a contactless card with a
	multislot SCR331-DI reader

	* src/ifdhandler.c:
	IFDHICCPresence(): call get_ccid_descriptor() on reader_index instead of Lun

	* src/ifdhandler.c:
	FDHGetCapabilities() tag TAG_IFD_SLOT_THREAD_SAFE: Can NOT talk to
	multiple slots at the same time (at least until it is fully validated)

	* src/ifdhandler.c:
	IFDHCreateChannel()/IFDHCreateChannelByName(): if the OpenPort() call
	fails we ReleaseReaderIndex() and do not call ccid_open_hack()

	* src/ccid_usb.c:
	for multi-slots readers IFDHCreateChannel*()/OpenUSB is called for each
	slot. If we are opening a new slot of an already opened reader we reuse
	the same data (same libusb structures) and share the same pbSeq.

	* src/commands.c:
	use (*ccid_descriptor->pbSeq)++ instead of ccid_descriptor->bSeq++

	* src/ccid_serial.c, src/ccid_usb.c: use pbSeq instead of bSeq

	* src/ccid.h:
	replace "unsigned char bSeq" by "unsigned char *pbSeq" so that two slots
	of a same reader can share the same sequence number

	* src/ccid_serial.c:
	use a dynamic timeout when reading the serial port.

	The first timeout use when detecting the reader is 2 seconds to not wait
	too long if no reader is connected. Later timeouts are set to 1 minute
	to allow long time APDU.

2004-08-04  Ludovic Rousseau  <rousseau@acer>

	* src/ccid_serial.c, src/ccid_usb.c, src/ifdhandler.c, src/ccid.h:
	remove defaultFeatures management (was used for SCR331-DI hack)

	* src/Makefile.am:
	add "parse_CFLAGS = `pkg-config libpcsclite --cflags`" so that parse.c
	can find and use <ifdhandler.h>

	* src/parse.c:
	do not use OpenUSB/CloseUSB but IFDHCreateChannel/IFDHCloseChannel to
	use the ReaderIndex[] mechanism

	* src/utils.c: update copyright date (add 2004)

	* src/utils.c: LunToReaderIndex(): debug message when Lun is not found

	* src/utils.c:
	GetNewReaderIndex(): debug message when ReaderIndex[] is full

	* src/utils.c:
	GetNewReaderIndex(): store Lun in the first free ReaderIndex[] entry

	* src/towitoko/pps.c: typo: Receivig -> Receiving

	* src/towitoko/pps.c:
	PPS_Exchange(): do not recalculate the PPS length from the received PPS
	but take it from the number of bytes actually received (it may not be
	a PPS)

2004-07-28  Ludovic Rousseau  <rousseau@acer>

	* src/ifdhandler.c:
	use reader_index instead of lun as reader identification
	allocate (in IFDHCreateChannel*) and release (in IFDHCloseChannel)

	* src/ccid.h, src/ccid_ifdhandler.h, src/ccid_serial.c, src/ccid_serial.h, src/ccid_usb.c, src/ccid_usb.h, src/commands.c, src/commands.h, src/ccid.c:
	use reader_index instead of lun as reader identification

	* src/utils.c, src/utils.h:
	use a more complex Lun -> reader transformation
	(Lun>>16) is not usable for multi-slots readers

2004-07-27  Ludovic Rousseau  <rousseau@acer>

	* src/openct/proto-t1.c:
	this code fails EMV test 1771-4 (should be a residue)

2004-07-26  Ludovic Rousseau  <rousseau@acer>

	* src/openct/proto-t1.c: - debug some cases
	- add ISO 7816-3 rule number in comments

	* src/ccid_serial.c, src/ccid_usb.c:
	initialise ccid.defaultFeatures field

2004-07-22  Ludovic Rousseau  <rousseau@acer>

	* configure.in: use pkg-config to test the release version of pcsc-lite

2004-07-21  Ludovic Rousseau  <rousseau@acer>

	* configure.in: version 0.9.2

	* src/ifdhandler.c: hack to support the SCR331-DI contactless interface

	* src/ccid.c:
	ccid_open_hack(): detect and activate the contactless interface of the
	SCR331-DI

	* src/commands.c:
	use bCurrentSlotIndex as the slot number in the CCID commands (instead of 0)

	* src/ccid_serial.c, src/ccid_usb.c:
	initialise bMaxSlotIndex and ccid.bCurrentSlotIndex fields

	* src/ccid.h:
	add defaultFeatures field for multislot readers with different
	dwFeatures for each slot.

	* src/ccid.h: add SCR331DI identification

	* src/ccid.h:
	add bMaxSlotIndex and bCurrentSlotIndex fields to support multislot
	readers (one USB device with two or more card readers)

2004-07-20  Ludovic Rousseau  <rousseau@acer>

	* src/openct/proto-t1.c:
	remove "|| sent_length" in "if (retries == 0 || sent_length)" since it
	is an OpenCT code that should not be needed with the new automata.

	* src/openct/proto-t1.c:
	update the copyright, add my name to reflect the same change in OpenCT

2004-07-19  Ludovic Rousseau  <rousseau@acer>

	* src/ifdhandler.c:
	update IFDHControl() prototype to replace LPVOID by PUCHAR (prototype
	changed in pcsc-lite-1.2.9-beta5)

	* src/ifdhandler.c, src/openct/proto-t1.c, src/openct/proto-t1.h:
	BUG: I forgot to initialise the t1.lun field. It failed to work with
	more than one readers and a T=1 card in a TPDU reader.

	* src/openct/proto-t1.c:
	in resync: we set retries = 1 since when we return in the loop we have
	retries--;
	Without this retries goes negative and the test 'if (retries == 0)' will
	not become true again before a looooong time.

2004-07-16  Ludovic Rousseau  <rousseau@acer>

	* src/ccid_usb.c:
	OpenUSBByName(): use base 0 instead of 16 in strtoul() so that you can
	express the decimal value 15 as: 15 (decimal), 0xF (hex) or 017 (octal).

	It is not really needed since the reader descriptions in Info.plist are
	all in hex.

	* src/ifdhandler.c:
	init_driver(): use base 0 instead of 16 in strtoul() so that you can
	express the decimal value 15 as: 15 (decimal), 0xF (hex) or 017 (octal)

	* src/ccid_ifdhandler.h, src/ccid_serial.c, src/ccid_usb.c, src/ifdhandler.c, src/parse.c, src/utils.c:
	rename PCSCLITE_MAX_READERS in CCID_DRIVER_MAX_READERS

	This value is not defined by pcsc-lite but is internal to the CCID
	driver. By default pcsc-lite supports the same number of readers (16).

	* src/commands.c:
	BUG: CmdPowerOn(): use memmove() instead of memcpy() to copy the ATR
	bytes since the source end destination buffers (with a more than 10
	bytes long ATR) overlaps.

	Bug spotted by splint http://www.splint.org/

2004-07-15  Ludovic Rousseau  <rousseau@acer>

	* src/openct/proto-t1.h:
	use "uint8_t *" instead of "unsigned char *" in the prototype of
	t1_state_t.checksum field.

	* src/tokenparser.l: initialise pcDesiredKey to NULL instead of 0

	* src/commands.c:
	BUG in CmdXfrBlockTPDU_T1(): the t1_transceive() returned value was
	stored in an unsigned int and tested if < 0 (error case). Of course the
	test was never true.

	* src/openct/proto-t1.c: remove a useless break; after a goto;

	* src/openct/proto-t1.c, src/openct/proto-t1.h:
	in t1_transceive() and t1_negociate_ifsd() dad argument is unsigned.

	* src/openct/checksum.h:
	replace "unsigned char *" by "uint8_t *" to use the exact same prototype as in
	the functions definition

	* src/commands.c, src/commands.h:
	i2dw() is not used outside commands.c so declare it static

	* examples/scardcontrol.c:
	allow splint to continue parsing after use of type fd_set

	* src/commands.c, src/commands.h:
	CmdXfrBlockTPDU_T0() and CmdXfrBlockTPDU_T1() are internal functions so
	declare them static

	* src/towitoko/atr.c:
	atr tables are internal only so declare them static

	* src/openct/proto-t1.c: define internal functions as static

	* src/openct/buffer.c, src/openct/buffer.h: remove unused functions

2004-07-10  Ludovic Rousseau  <rousseau@acer>

	* src/openct/proto-t1.c:
	change "previous_block[1]" in "previous_block[PCB]"

	* src/openct/proto-t1.c: remove unused struct ifd_protocol_ops

	* src/openct/proto-t1.h, src/openct/proto-t1.c:
	IFD_PROTOCOL_MORE -> IFD_PROTOCOL_T1_MORE
	IFD_PROTOCOL_STATE -> IFD_PROTOCOL_T1_STATE
	renamed to be in line with OpenCT

2004-07-09  Ludovic Rousseau  <rousseau@acer>

	* examples/scardcontrol.c, src/ifdhandler.c, src/parse.c:
	explicitely cast the returned value as (void) if we don't use it

	* src/ifdhandler.c:
	IFDHSetProtocolParameters(): test the return value of SetParameters()

	* src/parse.c: ccid_parse_interface_descriptor() is now static

	* src/parse.c: make channel variable (unsigned int) instead of (int)

	* src/parse.c: include <sys/types.h> so splint can parse the file

	* src/ccid_serial.c, src/ccid_usb.c, src/ccid_usb.h:
	mark potentially null values as /*@null@*/ for splint

	* src/ccid_serial.c, src/ccid_usb.c, src/ifdhandler.c, src/parse.c, src/openct/proto-t1.c:
	mark unused arguments as /*@unused@*/ for splint

	* src/ccid_usb.c: include <sys/types.h> so splint can parse the file

	* src/ccid.c:
	the buffer var_text[] was, in fact, used outside its declaration

	* src/ccid_serial.c, src/ccid_serial.h:
	ReadChunk() and get_bytes() are internal use in ccid_serial.c so declare
	them static

	* src/ccid_serial.c, src/ccid_usb.c:
	lun is (unsigned int) so reader = LunToReaderIndex(lun) is also (unsigned int)

	* src/ccid_serial.c:
	OpenSerialByName(): arguments of CmdEscape() are unsigned

	* src/ccid_serial.c:
	replace "121234" by "123456" to make it more clear it is a memory reservation
	for 6 characters

	* src/ccid_serial.c: remove a unneeded cast in (int)lun

	* src/ccid_serial.c:
	allow splint to continue parsing after use of type fd_set

	* src/ccid_serial.c:
	ReadSerial(): the unknown card movement byte is in "c" not "buffer[3]"

	* src/ccid.c, src/ccid.h, src/ccid_ifdhandler.h, src/ccid_serial.c, src/ccid_serial.h, src/ccid_usb.c, src/ccid_usb.h, src/commands.c, src/commands.h, src/ifdhandler.c:
	lun is (unsigned int) instead of (int)

	Avoid a warning by splint in #define LunToReaderIndex(Lun) (Lun>>16)
	Left operand of >> may be negative (int): lun >> 16

2004-07-02  Ludovic Rousseau  <rousseau@acer>

	* src/Info.plist, src/create_Info_plist.pl:
	replace VENDOR pattern by MAGIC_VENDOR since we also have a VENDOR in
	IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE and then a collision.

	same change for PRODUCT and FRIENDLYNAME to be homogenous.

	* src/ccid_serial.c:
	OpenSerialByName(): perform a command (get the reader firmware) to be
	sure a GemPC Twin (serial or pcmcia) reader is connected

	* src/openct/README: present where the files come from and what I did

2004-07-01  Ludovic Rousseau  <rousseau@acer>

	* configure.in: version 0.9.1

	* README: release 0.9.1

	* src/openct/proto-t1.h:  #define IFD_PARITY_ERROR

	* README: release 0.9.0

2004-06-30  Ludovic Rousseau  <rousseau@acer>

	* examples/scardcontrol.c: correct a signedness issue

	* src/.cvsignore: rename tokenparser_macosx.? in tokenparser_fake.?

	* .cvsignore: add build-stamp and configure-stamp

	* examples/.cvsignore: ignore temporary files

	* src/towitoko/COPYING: LGPL licence

	* configure.in: version 0.9.0

	* src/towitoko/pps.c:
	PPS_Match() was wrong when the confirmation is shorter than the request

	* src/towitoko/pps.c, src/towitoko/pps.h:
	PPS_Exchange() has a new argument (unsigned char *pps1) which is the
	PPS1 returned by the card (TA1 the card wants to use)

	* src/towitoko/pps.c:
	CCID_Transmit() now uses a 4th argument (unsigned char bBWI)

	* src/towitoko/pps.c, src/towitoko/pps.h:
	move macros PPS_HAS_PPS?() from pps.c to pps.h

	* src/towitoko/atr.c, src/towitoko/atr.h:
	add ATR_GetDefaultProtocol() function

	* src/towitoko/atr.c, src/towitoko/atr.h: remove unused functions

	* src/towitoko/atr.c:
	the atr_f_table[] and atr_d_table[] tables were partly wrong

	* src/towitoko/README: - update the text
	- the function ATR_GetDefaultProtocol() is mine (Ludovic Rousseau)

	* src/towitoko/defines.h: remove MIN() and MAX() definitions

	* src/ifdhandler.c:
	if DEBUG_LEVEL_PERIODIC is not set we temporaily remove DEBUG_LEVEL_COMM in
	IFDHICCPresence() to avoid having the low level debug every time pcscd
	test the card presence

	* src/ifdhandler.c: - removed CardUp() and CardDown()
	- all the reader initialisation/negotiation is now done in
	  IFDHSetProtocolParameters() (that's why you need pcsc-lite-1.2.9beta3)

	* src/utils.c: pcsclite.h moved in PCSC/

	* src/defs.h:
	the t1 field in struct CCID_DESC changed from Protocol_T1 (towitiko) to
	t1_state_t (openct)

	* src/debug.h:
	we do not need to have PACKAGE defined (I do not remember what it was
	used for)

	* src/commands.c:
	CmdXfrBlockTPDU_T1(): use the T=1 TPDU layer from opensc/ instead of towitoko/

	* src/commands.c:
	CCID_Receive() returns IFD_PARITY_ERROR if the error returned by the
	reader is 0xFD (parity error) and IFD_COMMUNICATION_ERROR otherwise (so
	that the T=1 TPDU layer can recover the error)

	* src/commands.c, src/commands.h:
	CCID_Transmit() now has a new "unsigned char bBWI" argument

	* src/commands.c:
	CmdPowerOn(): add a mechanism to allow power on at 1.8V, 3V and then 5V
	as specified by ISO 7816. We still use 5V for now to avoid problems with
	non ISO compliant cards

	* src/commands.c: add __FUNCTION__ as argument to ccid_error()

	* src/ccid.c, src/ccid.h:
	ccid_error() now also has a "char *function" argument to log the name of
	the function in which the error occured

	* src/Makefile.am:
	- rename protocol_t1/ in towitoko/ to reflect the project the code comes from
	- remove the now useless files from towitoko/ and add the files from openct/

	* src/towitoko/apdu.h, src/towitoko/protocol_t1.c, src/towitoko/protocol_t1.h, src/towitoko/t1_block.c, src/towitoko/t1_block.h:
	remove these files since I now use the T=1 TPDU code from OpenCT

	* src/openct/LICENSE, src/openct/buffer.c, src/openct/buffer.h, src/openct/checksum.c, src/openct/checksum.h, src/openct/proto-t1.c, src/openct/proto-t1.h:
	use T=1 TPDU code from the OpenCT project <http://www.opensc.org/>

	The state automata was greatly improved to manage "all" the possible
	errors cases.

	* src/Info.plist:
	document the possible values for ifdLogLevel and ifdDriverOptions

2004-06-23  Ludovic Rousseau  <rousseau@acer>

	* examples/scardcontrol.c:
	- send Select DF and Select EF APDU before Verify PIN
	- read stdin (consume the "*" fake keys) if the pinpad is on a keyboard

	* configure.in:
	check for the presence of PCSC/ifdhandler.h instead of ifdhandler.h

	* config.h.in: HAVE_IFDHANDLER_H is renamed HAVE_PCSC_IFDHANDLER_H

	* README: add info for:
	- Cherry XX33 keyboard
	- Dell keyboard SK-3106
	- Dell smart card reader keyboard

	Move some readers in "Unsupported or partly supported CCID readers:"
	- C3PO LTC31
	- SCM Micro SCR 331
	- SCM Micro SCR 335
	- SCM Micro SPR 532

2004-06-22  Ludovic Rousseau  <rousseau@acer>

	* Makefile.am: ChangeLog is not a .PHONY target but a real file

2004-06-13  Ludovic Rousseau  <rousseau@acer>

	* examples/scardcontrol.c:
	use SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1 instead of SCARD_PROTOCOL_ANY
	since it is not defined in Micosoft PC/SC

2004-05-30  Ludovic Rousseau  <rousseau@acer>

	* configure.in:
	use 'pkg-config libpcsclite --variable=usbdropdir' even if --prefix= is
	used. You should use --enable-usbdropdir= and --enable-ccidtwindir= to
	set to different values.

2004-05-26  Ludovic Rousseau  <rousseau@acer>

	* readers/DellSK-3106.txt: Dell keyboard SK-3106

	* src/commands.c:
	set *rx_length to 0 when a ReadPort() error is returned.
	The problem was not solved by ccid_usb.c 1.25.

	* src/commands.c:
	bPINOperation is not passed in the user command since the command is
	"PIN Verification" and nothing else

	* examples/scardcontrol.c: remove useless bPINOperation

2004-05-25  Ludovic Rousseau  <rousseau@acer>

	* examples/scardcontrol.c, src/ccid.h, src/ccid_serial.c, src/ccid_usb.c, src/ifdhandler.c:
	add support for SCardGetAttrib(.., IOCTL_SMARTCARD_VENDOR_VERIFY_PIN, ..)
	to know if the reader supports SCardControl(.., IOCTL_SMARTCARD_VENDOR_VERIFY_PIN, ..)

	* configure.in:
	add a --enable-pcsclite option (default yes) so that the driver can be
	compiled for a different framework (one needing tokenparser.l)

	* src/ccid_usb.c:
	set length to 0 when a usb_bulk_read() error is returned

	* src/Makefile.am:
	install Info.plist before the lib. This is for my convenience only
	because of my debug setup.

	* src/Makefile.am:
	rename tokenparser_macosx.l into tokenparser_fake.l since it is not
	MacOSX specific.

2004-05-24  Ludovic Rousseau  <rousseau@acer>

	* examples/scardcontrol.c, src/ccid.c, src/ccid_serial.c, src/ccid_serial.h, src/ccid_usb.c, src/ccid_usb.h, src/commands.c, src/commands.h, src/debug.c, src/ifdhandler.c, src/towitoko/atr.h, src/towitoko/protocol_t1.c:
	recompile using gcc -pedantic and correct:
	- some C++ syntax comments
	- many signedness "problems"

	* src/ccid_ifdhandler.h, src/commands.c, src/commands.h, src/ifdhandler.c:
	add support for Secure PIN through SCardControl() (see sample code in examples/)

	* src/ccid.c: - add some missing error codes
	- low error values indicate the byte in error in the CCID frame

	* examples/Makefile.am, examples/scardcontrol.c:
	add examples for SCardControl IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE and
	IOCTL_SMARTCARD_VENDOR_VERIFY_PIN

	* Makefile.am: add examples in SUBDIRS

	* configure.in:
	remove -fno-common from CFLAGS since it is(?) gcc specific

	* readers/ACR38.txt, readers/supported_readers.txt:
	add Advanced Card Systems ACR 38

	* readers/CherryXX33.txt, readers/supported_readers.txt:
	add Cherry XX33

2004-05-18  Ludovic Rousseau  <rousseau@acer>

	* src/ifdhandler.c: in CardUp():SetParameters() the default TA1 is 0x11

2004-05-17  Ludovic Rousseau  <rousseau@acer>

	* src/Info.plist: add default ifdDriverOptions set to 0x0000

	* src/ifdhandler.c:
	- add support of IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE in IFDHControl()
	- read ifdDriverOptions from Info.plist to limit the use of
	  IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE (idea from Peter Williams)

	* src/ccid.c, src/commands.c:
	redefined CmdEscape() to pass the CCID message instead of just a tag

	* src/ccid_usb.c, src/ccid_usb.h:
	do not export get_end_points() declaration and make the function static

	* src/Makefile.am, src/ccid_ifdhandler.h, src/ccid_serial.c, src/commands.h, src/defs.h, src/parse.c, src/towitoko/atr.c, src/towitoko/defines.h, src/towitoko/protocol_t1.c, src/utils.c:
	reorganize header files

	* config.h.in, configure.in:
	check for pcsclite.h and ifdhandler.h installed by recent pcsc-lite

	* src/pcscdefines.h:
	types and definitions are now in <pcsclite.h>, "defs.h" and "ccid_ifdhandler.h"

	* src/winsmcrd.h: removed since pcsclite.h now defines SCARD_ATTR_*

	* src/ccid_ifdhandler.h:
	use the ifdhandler.h provided by pcsc-lite so remove a lot of lines

2004-05-14  Ludovic Rousseau  <rousseau@acer>

	* configure.in:
	check that pkg-config command is present before using it

	* INSTALL, configure.in:
	use `pkg-config libpcsclite --variable=usbdropdir` so you do not have to
	use --enable-usbdropdir=DIR or --enable-ccidtwindir=DIR even if pcscd
	does not use the default /usr/local/pcsc/drivers

2004-05-12  Ludovic Rousseau  <rousseau@acer>

	* README:
	document the libusb bug on MacOS X with unplug/replug in a different USB
	socket

	* INSTALL, README:
	move debug configuration from INSTALL to README since it is dynamic now

	* README:
	remove the "readers enumeration" part since this problem is now solved
	by pcsc-lite-1.2.9

	* INSTALL:
	document the use of 'pkg-config libpcsclite --variable=usbdropdir'

2004-05-10  Ludovic Rousseau  <rousseau@acer>

	* src/ifdhandler.c:
	in IFDHPowerICC() IFD_POWER_DOWN is just power down without a power up.
	Changed to be compliant with IFD Handler specifications.

2004-05-07  Ludovic Rousseau  <rousseau@acer>

	* src/towitoko/protocol_t1.c:
	in Protocol_T1_Negociate_IFSD() rename sblock in block since the same
	variable is used for sent and received block.
	This was not clear and was the source of reported bug [ #300707 ]
	"Delete block before using it in t1_protocol.c" which is not a bug in fact.

2004-05-06  Ludovic Rousseau  <rousseau@acer>

	* INSTALL:
	add a "configuring the driver for the serial reader (GemPC Twin)" part

2004-05-04  Ludovic Rousseau  <rousseau@acer>

	* readers/Makefile.am: add DellSCRK.txt

	* readers/DellSCRK.txt, readers/supported_readers.txt:
	add Dell smart card reader keyboard

2004-04-19  Ludovic Rousseau  <rousseau@acer>

	* src/Makefile.am: add winsmcrd.h in COMMON

	* src/ifdhandler.c:
	reset ATR string (length = 0) when the card is powered down or not present

	* src/defs.h: typo in a comment

	* src/winsmcrd.h:
	list of tags for SCardGetAttrib() like SCARD_ATTR_ATR_STRING

	* src/ifdhandler.c:
	add SCARD_ATTR_ATR_STRING in addition to TAG_IFD_ATR in IFDHGetCapabilities()

2004-04-16  Ludovic Rousseau  <rousseau@acer>

	* src/ifdhandler.c: new IFDHControl() API

	* src/ccid_ifdhandler.h:
	use a new version from pcsc-lite with support of the new IFDHControl() API

2004-04-08  Ludovic Rousseau  <rousseau@acer>

	* src/ccid_usb.c:
	add support for the libusb naming scheme: usb:%04x/%04x:libusb:%s

	* readers/SK-3106.txt, readers/SPR532.txt, src/parse.c:
	parse bPINSupport field

2004-04-07  Ludovic Rousseau  <rousseau@acer>

	* readers/Makefile.am: also distribute SK-3106.txt

2004-04-06  Ludovic Rousseau  <rousseau@acer>

	* config.h.in, configure.in:
	remove --enable-debugcritical, --enable-debuginfo,
	--enable-debugperiodic and --enable-debugcomm options since the log
	level is now dynamically managed by ifdLogLevel in Info.plist

	* src/Info.plist:
	define default ifdLogLevel at 3 (DEBUG_LEVEL_CRITICAL | DEBUG_LEVEL_INFO)

	* src/debug.c: remove now useless #ifdef DEBUG

	* src/ccid_serial.c, src/ccid_usb.c:
	add { } to avoid ambiguities now that DEBUG_* are "if (x) y" constructions

	* src/ifdhandler.c:
	during the first IFDHCreateChannel*() init_debug() is called to read the
	value of ifdLogLevel from the Info.plist

	* src/debug.h:
	change the DEBUG_* macros from static (compilation conditional) to
	dynamic (if ())

	* src/Makefile.am: debug.c is only needed by parse_SOURCES not COMMON

	* src/ifdhandler.c:
	do not return before pthread_mutex_unlock() in IFDHCreateChannelByName()

	* src/ifdhandler.c:
	also call ccid_open_hack() in IFDHCreateChannelByName()

	* src/ifdhandler.c:
	T=1 context is initialized in CardUp(), not in IFDHCreateChannel()

	* src/ifdhandler.c: revert to nearly previous version.
	- IFD_POWER_DOWN is power down and power up (cold reset)
	- IFD_RESET is power up (warm reset)
	- IFD_POWER_UP is power up

2004-04-05  Ludovic Rousseau  <rousseau@acer>

	* configure.in: version 0.4.2

	* readers/SK-3106.txt, readers/supported_readers.txt:
	add support for the Dell keyboard SK-3106

	* src/ccid_usb.c: define ALLOW_PROPRIETARY_CLASS by default

	Proprietary USB Class (0xFF) are (or are not) accepted
	A proprietary class is used for devices released before the final CCID
	specifications were ready.
	We should not have problems with non CCID devices becasue the
	Manufacturer and Product ID are also used to identify the device */

2004-03-31  Ludovic Rousseau  <rousseau@acer>

	* src/Makefile.am:
	use $(srcdir) instead of ".". Thanks to Dr Russel Winder for the patch.

2004-03-30  Ludovic Rousseau  <rousseau@acer>

	* src/ccid_usb.c:
	allow proprietary CCID Class byte but only if ALLOW_PROPRIETARY_CLASS is
	defined. You should know what you do. Only useful for pre-CCID devices.

	* src/parse.c:
	- use get_ccid_usb_interface() to also manage USB composite devices (keyboards)
	- continue parsing even if bDescriptorType == 0xFF (proprietary)

	* src/ccid_usb.h:
	define get_ccid_usb_interface() only if __USB_H__ is defined (usb.h included)

2004-03-23  Ludovic Rousseau  <rousseau@acer>

	* reconf: move the "cp aclocal.m4 build/" after autoreconf

2004-03-22  Ludovic Rousseau  <rousseau@acer>

	* reconf: cp aclocal.m4 build/

2004-03-18  Ludovic Rousseau  <rousseau@acer>

	* src/ifdhandler.c:
	Reset action is power off and power on, not just power on

2004-02-27  Ludovic Rousseau  <rousseau@acer>

	* README:
	add C3PO LTC32, SCM Micro SCR 333 and C3PO TLTC2USB in the list of
	"Should work but untested by me" readers

	* README: alphabetical reordering of readers

	* readers/supported_readers.txt: add SCR 333

2004-02-24  Ludovic Rousseau  <rousseau@acer>

	* Makefile.am:
	use a shorter Perl script to convert generate/convert ChangeLog

2004-02-14  Ludovic Rousseau  <rousseau@acer>

	* README: release 0.4.1

	* configure.in: version 0.4.1

	* readers/Makefile.am:
	distribute SCR331-DI.txt and supported_readers.txt

	* src/Makefile.am: disribute create_Info_plist.pl

2004-02-13  Ludovic Rousseau  <rousseau@acer>

	* configure.in: version 0.4.0

	* README: release 0.4.0

2004-02-12  Ludovic Rousseau  <rousseau@acer>

	* src/ifdhandler.c: huge rework of CardUp()

	* src/towitoko/protocol_t1.c:
	return with a error if the received bloc in less than 4 bytes (T=0
	error response for example)

	* src/ccid_serial.c, src/ccid_usb.c:
	fill dwDefaultClock and dwMaxDataRate according to the reader descriptor

	* src/ccid.h: add dwDefaultClock and dwMaxDataRate fields

2004-02-11  Ludovic Rousseau  <rousseau@acer>

	* src/ifdhandler.c:
	Perform PPS and IFSD only if the reader does not do it automatically

	* src/ccid.h: add CCID_CLASS_AUTO_BAUD and CCID_CLASS_AUTO_IFSD

	* src/towitoko/protocol_t1.c:
	add return code tests in Protocol_T1_Negociate_IFSD()

	* src/towitoko/pps.c, src/towitoko/pps.h:
	PPS_Exchange() now uses 'int lun' instead of 'Protocol_T1 * t1'

	* src/towitoko/protocol_t1.c: remove debug message

	* src/ifdhandler.c: use Protocol_T1_Negociate_IFSD() in CardUp()

	* src/towitoko/protocol_t1.c, src/towitoko/protocol_t1.h:
	add Protocol_T1_Negociate_IFSD()

	* src/ccid.h: add CCID_CLASS_AUTO_CONF_ATR

2004-02-09  Ludovic Rousseau  <rousseau@acer>

	* src/ccid_usb.c: first bSeq is 0 (even if 1 works ok)

	* src/ccid_usb.c: usb_reset() the device before usb_close()

2004-02-05  Ludovic Rousseau  <rousseau@acer>

	* README: add Silitek SK-3105 keyboard URL

2004-02-04  Ludovic Rousseau  <rousseau@acer>

	* src/debug.h: DEBUG_COMM4 was named DEBUG_COMM3 due to cut-n-paste

2004-02-03  Ludovic Rousseau  <rousseau@acer>

	* src/ccid_ifdhandler.h, src/ifdhandler.c:
	add CardUp() and CardDown() for PowerOn and PowerOff actions

	* src/ccid.h, src/ccid_serial.c, src/ccid_usb.c: add dwMaxIFSD field

	* src/debug.h: add DEBUG_COMM3()

	* src/towitoko/pps.c, src/towitoko/protocol_t1.c, src/towitoko/t1_block.c:
	use my own debug routines

	* readers/SCR331-DI.txt: new file

2004-02-02  Ludovic Rousseau  <rousseau@acer>

	* src/towitoko/protocol_t1.c: do not restrict ifsc to Towitoko

	* src/towitoko/protocol_t1.c: remove PPS hack

	* README: add SCR 331-DI in the "should work" list

	* readers/supported_readers.txt, src/Info.plist, src/Makefile.am, src/create_Info_plist.pl:
	use create_Info_plist.pl to generate the installed Info.plist from an
	Info.plist template and a list of supported readers.

2004-01-29  Ludovic Rousseau  <rousseau@acer>

	* src/ifdhandler.c:
	removed useless function name in debug messages since we use __FUNCTION__

	* src/ccid_usb.c: - remove device_name[] from struct _usbDevice
	- use naming scheme usb:vendor/product
	- simplify (a bit) the code

	* src/ccid_usb.h, src/parse.c:
	remore *device_name[] argument from get_desc()

	* src/debug.h: add DEBUG_CRITICAL4

2004-01-27  Ludovic Rousseau  <rousseau@acer>

	* src/commands.c:
	set received size to 0 in case of error in CmdXfrBlockTPDU_T1

	* src/commands.c:
	in case of error exits CCID_Receive() without copying an nonexistent anwser

	* src/ccid_usb.c: use DEBUG_CRITICAL2() instead of DEBUG_CRITICAL()

	* README:
	add the "Silitek SK-3105 keyboard" in the "Should work but untested by
	me" list

	* .cvsignore, aclocal/.cvsignore, build/.cvsignore, readers/.cvsignore, src/.cvsignore, src/towitoko/.cvsignore:
	ignore some build files

	* src/Info.plist: add Silitek SK-3105 keyboard

	* src/ccid_usb.c, src/ccid_usb.h:
	add support of USB devices with multiple interfaces (like the Silitek
	SK-3105 keyboard)

	* src/ccid_serial.c, src/ccid_serial.h, src/ccid_usb.c, src/ccid_usb.h, src/defs.h, src/ifdhandler.c:
	add support of IFDHCreateChannelByName

2004-01-22  Ludovic Rousseau  <rousseau@acer>

	* src/Makefile.am:
	move rules for src/protocol_t1/ files in src/Makefile.am to avoid
	building a (problematic) static library

	* src/towitoko/Makefile.am:
	removed since rules for src/protocol_t1/ files are in src/Makefile.am

2004-01-15  Ludovic Rousseau  <rousseau@acer>

	* src/towitoko/apdu.h: define APDU_Cmd and APDU_Rsp

	* src/towitoko/Makefile.am, src/towitoko/README, src/towitoko/atr.c, src/towitoko/atr.h, src/towitoko/defines.h, src/towitoko/pps.c, src/towitoko/pps.h, src/towitoko/protocol_t1.c, src/towitoko/protocol_t1.h, src/towitoko/t1_block.c, src/towitoko/t1_block.h:
	new files from Carlos Prados towitoko-2.0.7 driver (with a bit of hacking)

	* src/Makefile.am: build protocol_t1 library

	* src/commands.c: add SetParameters() CCID command

	* src/ifdhandler.c: add support of T=1 in TPDU mode

	* src/defs.h: add CcidDesc.t1 field

	* src/commands.c, src/commands.h:
	replace CmdXfrBlockTPDU() by CmdXfrBlockTPDU_T0() and CmdXfrBlockTPDU_T1()

	* src/commands.c:
	split CmdXfrBlockShortAPDU() in CCID_Transmit() and CCID_Receive()

	* src/ccid_serial.c, src/ccid_usb.c, src/ifdhandler.c:
	call ccid_open_hack() in IFDHCreateChannel() instead of in each OpenPort()

	* src/ccid.c, src/commands.c, src/commands.h, src/ifdhandler.c:
	use an (int *) instead of a PDWORD for rx_length argument

	* aclocal/Makefile.am, aclocal/acx_pthread.m4:
	new files. add definition of ACX_PTHREAD macro

	* src/ccid_ifdhandler.h, src/ifdhandler.c: add get_ccid_slot() function

	* src/ccid_serial.c, src/ccid_usb.c, src/ifdhandler.c:
	remove function name from debug message since __FUNCTION__ is now used in
	DEBUG_* macro definition

	* src/Info.plist: add ActivCard

	* README:
	created an "Should work but untested by me" section and add SCM Micro
	SPR 532 and ActivCard USB reader 2.0

2004-01-08  Ludovic Rousseau  <rousseau@acer>

	* README:
	The crashes under MacOS X were not because of a bug in libusb but because of
	a bug in pcscd MacOS X hotplug.

2004-01-06  Ludovic Rousseau  <rousseau@acer>

	* src/ccid_usb.c:
	the USB extra field length shall be exactly 54 bytes to be CCID.

2004-01-05  Ludovic Rousseau  <rousseau@acer>

	* src/debug.h:
	also print the function name (__FUNCTION__) in the debug messages

	* src/ccid_usb.c, src/parse.c:
	add a test on the USB extra field length to avoid a crash and print an
	error message. This occurs when the reader is _not_ CCID and the CCID
	driver is used (wrong Info.plist for example).

2003-12-19  Ludovic Rousseau  <rousseau@acer>

	* INSTALL, src/Makefile.am:
	build but do not install the serial ccidtwin driver by default since it
	is useless on computers without a serial port or without this reader for
	example.

2003-12-16  Ludovic Rousseau  <rousseau@acer>

	* src/ccid_usb.c:
	read and write timeouts are not symmetric. write timout can be shorter
	since the reader and card is not supposed to do anything before
	receiving (write) a command.

2003-12-12  Ludovic Rousseau  <rousseau@acer>

	* src/ifdhandler.c:
	return IFD_NOT_SUPPORTED instead of IFD_SUCCESS in functions doing
	nothing (yet) (IFDHSetCapabilities, IFDHSetProtocolParameters,
	IFDHControl);

2003-12-11  Ludovic Rousseau  <rousseau@acer>

	* src/ifdhandler.c: set the result buffer length to 0 in IFDHControl()

2003-11-25  Ludovic Rousseau  <rousseau@acer>

	* configure.in:
	do not try to find usb.h and other libusb files if --disable-libusb is
	used. Needed if you only want to build the serial driver. Thanks to Niki
	Waibel for the patch.

	* INSTALL, configure.in, src/Makefile.am:
	add a --enable-ccidtwindir argument to ./configure to specify the
	serial GemPC Twin installation directory

	* config.h.in, configure.in, reconf, src/ifdhandler.c, Makefile.am:
	use a updated version of acx_pthread.m4 needed for FreeBSD

2003-11-06  Ludovic Rousseau  <rousseau@acer>

	* configure.in:
	check that the installed libusb implements usb_get_string_simple()

2003-11-04  Ludovic Rousseau  <rousseau@acer>

	* README: add SPR 532 in "Supported CCID readers" list

	* README: release 0.3.2

	* configure.in: version 0.3.2

	* src/commands.c:
	comment out the automatic GET RESPONSE part. I don't think it should be
	in the driver. Maybe in pcscd instead?

2003-11-03  Ludovic Rousseau  <rousseau@acer>

	* readers/Makefile.am: also distribute SPR532.txt

2003-11-01  Ludovic Rousseau  <rousseau@acer>

	* Makefile.am:
	bootstrap is no more distributed (it is no more in CVS either)

	* src/Makefile.am:
	$(CCID_BUNDLE) is a directory so use 'rm -r' in uninstall_ccid: target

2003-10-31  Ludovic Rousseau  <rousseau@acer>

	* src/Makefile.am: modify the hack to compile under MacOSX.

	* reconf:
	config.guess, config.sub, depcomp and ltmain.sh are in build/ so removed
	them there.

	* create_distrib.sh: useless since we have a 'make dist' rule

2003-10-29  Ludovic Rousseau  <rousseau@acer>

	* src/Info.plist: add USB identification for SPR 532

	* readers/SPR532.txt:
	add SPR 532 description even if it is not a "real" CCID reader.

	* src/parse.c:
	continue parsing even if bInterfaceSubClass and bInterfaceProtocol are
	unsupported. This may be the case with non "real" CCID readers.

	* src/parse.c:
	do not exit if the InterfaceClass is 0xFF (proprietary). It is the case
	with old readers manufactured before the final release of the CCID specs.

2003-10-28  Ludovic Rousseau  <rousseau@acer>

	* src/ccid_usb.c:
	correctly use the device name in a debug message instead of a not yet initialised field.

	* bootstrap: removed since ./reconf is doing a correct job

	* README:
	move LTC31 reader from unsupported to supported reader list. It was my fault
	since in used odd INS byte in my test applet and odd INS bytes are
	forbidden by ISO 7816-4 ch. 5.4.2 Instruction byte. Thanks to Josep Monés
	Teixidor for pointing the problem.

	* src/commands.c:
	correct a stupid bug that occurs with an APDU with 2 bytes response.

2003-09-23  Ludovic Rousseau  <rousseau@acer>

	* README: release 0.3.1

	* MANIFEST: update file list

	* README: add a note about T=1 cards and readers in TPDU mode

2003-09-22  Ludovic Rousseau  <rousseau@acer>

	* src/ccid_ifdhandler.h:
	define TAG_IFD_THREAD_SAFE introduced in pcsclite-1.2.0-rc3

	* src/ifdhandler.c:
	add support of thread safe (APDU multiplexing on different readers)

	* src/ccid_serial.c:
	ReadChunk() realy reads up to min_length bytes. Add some debug messages
	in the state automata.

	* src/Makefile.am:
	modify install rules so that root can use them even over NFS where root is
	nobody

	* config.h.in, configure.in:
	add --enable-multi-thread for thread safe support

	* Makefile.am, reconf: add reconf file

2003-09-19  Ludovic Rousseau  <rousseau@acer>

	* src/ccid_serial.c, src/ccid_serial.h:
	complete reimplementation of the Twin serial protocol using a finite
	state automata (code much simpler)

2003-09-16  Ludovic Rousseau  <rousseau@acer>

	* configure.in:
	Put back AC_PROG_CPP, it has nothing to do with C++ but with C preprocessor

	* src/ccid.c:
	Do not switch to APDU mode since it also swicth in EMV mode and may not
	work with non EMV cards

	* src/Makefile.am: honor DESTDIR in install rules (closes [ #300110 ])

	* configure.in: remove useless AC_PROG_CPP (no C++ code in ccid driver)

	* configure.in: version 0.3.1

	* INSTALL: document the use of --enable-libusb=PATH

	* configure.in: add --enable-libusb=PATH option

2003-09-10  Ludovic Rousseau  <rousseau@acer>

	* README: I forgot to add "support of "time request" from the card."

	* README: release 0.3.0

	* INSTALL: document the use of ./configure script

	* Makefile.am:
	use ChangeLog instead of ChangeLog.cvs since the dist Makefile target is
	looking at this file name.

	* src/config.h: config.h is now generated by ./configure

	* Makefile.am, configure.in, readers/Makefile.am:
	add readers/ in generated .tar.gz archive

	* readers/CardMan3121.txt, readers/GemPC433_SL.txt, readers/GemPCKey.txt, readers/GemPCTwin.txt, readers/LTC31.txt, readers/SCR331.txt, readers/SCR335.txt:
	use new parse indentation for more readability of supported features

	* config.h.in: new build process using autoconf/automake

	* src/ccid_serial.c, src/ccid_serial.h:
	manage serial protocol used by the GemPC Twin. Thanks to Niki W. Waibel
	for a working prototype.

	* src/ccid.c, src/ccid.h:
	contains common CCID feature for USB and serial (was in ccid_usb before)

	* src/reader.conf.in:
	used to generate a correct reader.conf with the real library name

	* src/ccid_ifdhandler.h:
	remove IFDSetEmv() definition. It is now useless.

	* src/ifdhandler.c:
	use OpenPort instead of OpenUSB. move the complex TPDU management in
	commands.c (and use it only if reader does not support APDU mode)

	* src/defs.h:
	transport abstraction: define OpenPort, ClosePort, etc. to OpenSerial or
	OpenUSB depending on TWIN_SERIAL compilation option

	* src/debug.h:
	test for PACKAGE and not __CONFIG_H__ since the config.h file is not
	generated by ./configure

	* src/commands.c, src/commands.h:
	- support auto voltage at power on if reader support it
	- support Gemplus proprietary command to switch reader from TPDU to APDU mode
	- use APDU mode if reader support it. make it easy to support extended
	  APDU but I have no reader to test this.

	* src/ccid_usb.c, src/ccid_usb.h:
	redesign to separate communication media and CCID protocol. call
	ccid_open_hack() upon open to do some reader dependent magic.

	* src/parse.c:
	indent the output with one feature per line (and not on the same line
	separated by ,)

	* Makefile, src/Makefile, src/check, src/ylwrap:
	new build process using autoconf/automake

	* src/pcscdefines.h, src/utils.c:
	use PCSCLITE_MAX_READERS instead of PCSCLITE_MAX_CHANNELS

	* build/ylwrap, src/Makefile.am, Makefile.am, NEWS, bootstrap, configure.in:
	new build process using autoconf/automake

2003-08-27  Ludovic Rousseau  <rousseau@acer>

	* MANIFEST, src/Makefile, src/capabilities.c:
	remove unused capabilities.c file

2003-08-26  Ludovic Rousseau  <rousseau@acer>

	* README: release 0.2.0

	* create_distrib.sh: script to create the .tar.gz

	* README: add a note about libusb problem under *BSD

	* src/check: require pcsc-lite 1.2.0 instead of 1.1.2

	* README:
	the reader enumeration problem also exist under GNU/Linux (is not MacOS
	specific)

2003-08-24  Ludovic Rousseau  <rousseau@acer>

	* MANIFEST: remove src/dep_stamp

	* README: add not about bugs/limitations under MacOS X

2003-08-21  Ludovic Rousseau  <rousseau@acer>

	* src/parse.c:
	do not print garbage if we can't get the iManufacturer or iProduct fields

2003-08-20  Ludovic Rousseau  <rousseau@acer>

	* src/config.h: comment low level debug messages

	* src/Makefile: use ./ylwrap instead of ylwrap

	* src/check: do not define LDFLAGS since we get it from outside

	* src/Makefile:
	add needed MacOS X frameworks to LDFLAGS (for parse and check)

	* MANIFEST: add src/ylwrap

	* src/ylwrap: wrapper to call (f)lex

	* MANIFEST: src/parse shall not be distributed

	* src/ccid_usb.c:
	do not duplicate the Info.plist filename but "calculate" it once

	* src/Makefile: Add support of MacOS X

	* src/Info.plist: use an <array></array> for the alias enumeration

2003-08-14  Ludovic Rousseau  <rousseau@acer>

	* src/ccid_usb.c:
	use a 1 minute USB timeout instead of the 1 second used for debug

	* MANIFEST: include in CVS

	* src/Makefile: remove parse binary in clean target

2003-08-13  Ludovic Rousseau  <rousseau@acer>

	* src/Makefile:
	do not exit with failure if makedepend(1) does not exist

	* INSTALL: Installation and check guide

2003-08-12  Ludovic Rousseau  <rousseau@acer>

	* README: release 0.1.0

	* readers/CardMan3121.txt, readers/GemPC433_SL.txt, readers/GemPCKey.txt, readers/GemPCTwin.txt, readers/LTC31.txt, readers/SCR331.txt, readers/SCR335.txt, src/commands.h, src/parse.c, src/parser.h, src/tokenparser.l:
	First release

	* readers/CardMan3121.txt, readers/GemPC433_SL.txt, readers/GemPCKey.txt, readers/GemPCTwin.txt, readers/LTC31.txt, readers/SCR331.txt, readers/SCR335.txt, src/commands.h, src/parse.c, src/parser.h, src/tokenparser.l:
	New file.

	* AUTHORS, COPYING, Makefile, README, src/.dependencies, src/Info.plist, src/Makefile, src/capabilities.c, src/ccid_ifdhandler.h, src/ccid_usb.c, src/ccid_usb.h, src/check, src/commands.c, src/config.h, src/debug.c, src/debug.h, src/defs.h, src/ifdhandler.c, src/pcscdefines.h, src/utils.c, src/utils.h:
	First release

	* AUTHORS, COPYING, Makefile, README, src/.dependencies, src/Info.plist, src/Makefile, src/capabilities.c, src/ccid_ifdhandler.h, src/ccid_usb.c, src/ccid_usb.h, src/check, src/commands.c, src/config.h, src/debug.c, src/debug.h, src/defs.h, src/ifdhandler.c, src/pcscdefines.h, src/utils.c, src/utils.h:
	New file.

