SCardGetStatusChange(): fix comment
[pcsclite/PCSC.git] / ChangeLog
1 1.8.22: Ludovic Rousseau
2 17 June 2017
3 - SCardCancel() was broken in 1.8.21. The call was bloking.
4 - Enable use of info level logging for pcscd using -i/--info
5
6
7 1.8.21: Ludovic Rousseau
8 20 May 2017
9 - SCardCancel():
10   . fix a race condition bug
11   . fix a possible use after free
12   . improve Doxygen documentation
13 - SCardGetStatusChange(): fix a race condition when a reader is removed
14 - SCardDisconnect(): fix status update for SCARD_UNPOWER_CARD
15 - pcsc_stringify_error(): use Thread-local storage
16 - pcsc_stringify_error() now returns a const char *
17 - SCardControl() may return SCARD_E_INSUFFICIENT_BUFFER when
18   pbRecvBuffer is not big enough to receive the card response.
19 - Fix compilation error with GCC 4.9
20 - UnitaryTests: add support of Python 3
21 - pcsc-spy: add support of Python 3
22 - Some other minor improvements
23
24
25 1.8.20: Ludovic Rousseau
26 30 December 2016
27 - Fix a crash and potential security issue in pcscd
28
29
30 1.8.19: Ludovic Rousseau
31 9 December 2016
32 - SCardGetStatusChange(): Fix a (rare) race condition
33 - Doxygen:
34   . SCardGetStatusChange() may return SCARD_E_UNKNOWN_READER
35   . SCardConnect() and SCardReconnect() will never return SCARD_E_NOT_READY
36 - pcsc-spy:
37   . fix display of execution time
38   . log the thread number in the results
39 - Some other minor improvements
40
41
42 1.8.18: Ludovic Rousseau
43 10 August 2016
44 - SCardDisconnect(): much faster with SCARD_UNPOWER_CARD
45 - SCardConnect(): Fix a possible duplicated hCard context
46 - Fix compilation on FreeBSD
47 - Fix compilation on Solaris
48 - Some other minor improvements
49
50
51 1.8.17: Ludovic Rousseau
52 29 May 2016
53 - Fix SCardEndTransaction() issue with a SCARD_SHARE_EXCLUSIVE connection
54 - Fix an issue when used with systemd (problem in signal handler)
55 - SCardGetAttrib(): set pcbAttrLen when buffer is too small
56 - Doxygen: SCardGetAttrib() pbAttr can be NULL
57 - Doxygen: SCardGetAttrib() *pcbAttrLen contains the buffer size
58 - fix compilation warnings and link errors on SunOS
59 - Some other minor improvements
60
61
62 1.8.16: Ludovic Rousseau
63 20 March 2016
64 - SCardCancel() was not correctly handled
65   When a SCardGetStatusChange() was cancelled then a next PC/SC call
66   after the SCardGetStatusChange() may fail with a strange error code if
67   the event waited in SCardGetStatusChange() occurs.
68 - Doxygen: fix different documentation issues
69 - SCARD_SCOPE_GLOBAL is now defined in a public header (even if never used)
70 - Enable Trace and Profile features using compiler flags and without
71   modifying the source code
72 - Some other minor improvements and bug corrections
73
74
75 1.8.15: Ludovic Rousseau
76 25 December 2015
77 - Add support of remove and/or customize PC/SC reader names using
78   PCSCLITE_FILTER_IGNORE_READER_NAMES and PCSCLITE_FILTER_EXTEND_READER_NAMES
79   See http://ludovicrousseau.blogspot.fr/2015/12/remove-andor-customize-pcsc-reader-names.html
80 - Some other minor improvements and bug corrections
81
82
83 1.8.14: Ludovic Rousseau
84 5 August 2015
85 - Threading: lock the PC/SC context in a safe way
86 - Threading: lock the card context in a safe way
87 - SCardGetStatusChange(): fix card movement rare bug
88 - Doxygen:
89   . SCardTransmit() may return SCARD_E_INSUFFICIENT_BUFFER
90   . SCardEndTransaction() The disposition IS used and the dwDisposition
91     parameter HAS an effect.
92   . SCardReconnect() do not release locks
93   . fix typos
94 - Move the source code repository from subversion to git
95 - Use asprintf(3) instead of strlcat(3) and strlcpy(3)
96 - Allow to use pcscd in a remote session (polkit issue)
97 - Some other minor improvements and bug corrections
98
99
100 pcsc-lite-1.8.13: Ludovic Rousseau
101 7 November 2014
102 - fix a systemd + libudev hotplug bug introduced in version 1.8.12.
103   The list of readers was not (yet) available just after the start of pcscd
104 - Make the license more 3-clause BSD like
105 - fix a rare race condition in the (non default) libusb hotplug
106 - Some other minor improvements and bug corrections
107
108
109 pcsc-lite-1.8.12: Ludovic Rousseau
110 24 September 2014
111 - make hotplug using libudev (default) more robust
112 - add ReiserFS file system support (for configuration files)
113 - add musl libC support (increase the thread stack)
114 - Some other minor improvements and bug corrections
115
116
117 pcsc-lite-1.8.11: Ludovic Rousseau
118 14 February 2014
119 - Add polkit support. See doc/README.polkit
120 - /etc/reader.conf: CHANNELID and DEVICENAME are both optional but not
121   at the same time
122 - Some other minor improvements and bug corrections
123
124
125 pcsc-lite-1.8.10: Ludovic Rousseau
126 19 October 2013
127 - do not export the internal log_msg symbol from libpcsclite.so.1
128
129
130 pcsc-lite-1.8.9: Ludovic Rousseau
131 16 October 2013
132 - SCardEndTransaction(): Return an error if is called with no
133   corresponding SCardBeginTransaction()
134 - SCardGetAttrib(): Add support of SCARD_ATTR_DEVICE_SYSTEM_NAME
135 - SCardGetAttrib(): Fix bug in SCARD_ATTR_DEVICE_FRIENDLY_NAME
136 - SCardBeginTransaction() was not correctly releasing a mutex when the
137   hCard handle was invalidated
138   The problem was that SCardGetStatusChange() was blocked because
139   SCardBeginTransaction() had not released the context mutex.
140 - PCSC/reader.h: Use C99 flexible array member
141   The structures PIN_MODIFY_STRUCTURE and PIN_VERIFY_STRUCTURE now use a
142   C99 flexible array member when available for abData field.
143   uint8_t abData[];
144 - Add support of --reader-name-no-serial and --reader-name-no-interface
145   It is now possible to NOT add the USB serial number of the reader
146   using --reader-name-no-serial
147   It is now possible to NOT add the CCID interface name of the reader
148   using --reader-name-no-interface
149 - Add support of serialconfdir pkg-config variable
150   It is now possible to use pkg-config to get the directory used by
151   pcscd to fetch serial drivers configurations.
152   $ pkg-config libpcsclite --variable=serialconfdir
153   /etc/reader.conf.d
154 - pcsc-spy: Try to display the thread in the order they appear in the log
155 - pcsc-spy: Add SCARD_ATTR_DEVICE_SYSTEM_NAME
156 - Check the Info.plist file is (a minimum) correct
157 - Update PROTOCOL_VERSION_MINOR from 2 to 3
158   We broke the API between version 1.8.3 and 1.8.4 by changing the value
159   of MAX_READERNAME. This change should have been made before releasing
160   version 1.8.4 to make mix of versions clearly non working instead of
161   failing with strange errors.
162 - hotplug_libudev.c: Fix a memory leak in case of error
163 - Fix OpenBSD 5.2 compilation regarding dlopen
164 - correctly manage thread safe multi-slot readers
165 - Do not use pthread_atfork() any more (fix problem on FreeBSD)
166 - fix memory leaks.
167   This was not really a problem unless you embedd pcscd in another
168   process and do init/deinit pcscd without exiting the process (as maybe
169   used on Android or iOS).
170 - pcscd.8 manpage: add documentation for --max-thread,
171   --max-card-handle-per-thread, --max-card-handle-per-reader,
172   --force-reader-polling, --error, --critical and --color
173 - Some other minor improvements and bug corrections
174
175
176 pcsc-lite-1.8.8: Ludovic Rousseau
177 16 January 2013
178 - /etc/reader.conf: handle FRIENDLYNAME with no " delimiters (serial readers)
179 - Info.plist: Correctly handle reader names containing & (USB readers)
180
181
182 pcsc-lite-1.8.7: Ludovic Rousseau
183 28 November 2012
184 - Fix a problem when a reader is unplugged (and the reader is still in use)
185
186
187 pcsc-lite-1.8.6: Ludovic Rousseau
188 30 August 2012
189 - Fix a problem when only serial drivers are used (no hotplug/USB
190   driver)
191 - increase log buffer size from 160 to 2048. Some "long" log lines where
192   truncated.
193 - Fix redirection of stdin, stdout and stderr to /dev/null when pcscd is
194   started as a daemon (default)
195 - Some other minor improvements and bug corrections
196
197
198 pcsc-lite-1.8.5: Ludovic Rousseau
199 4 August 2012
200 - Fix crash when a reader is unplugged while pcscd is in the middle of a
201   PC/SC function
202 - SCardBeginTransaction(): fix a bug introduced in version 1.8.4
203   related to sharing
204 - Some other minor improvements and bug corrections
205
206
207 pcsc-lite-1.8.4: Ludovic Rousseau
208 26 June 2012
209 - Add [ and ] in the list of accepted characters for a reader name
210 - truncates the reader name if it is too long instead of rejecting the
211   reader
212 - The restriction to have to call SCardEstablishContext() in each thread
213   has been removed. Threads could now share a PC/SC context.
214 - Fix compiler failure for static driver
215 - Update IFDHandler API Doxygen regarding the "libusb-1.0" naming scheme
216 - Some other minor improvements and bug corrections
217
218
219 pcsc-lite-1.8.3: Ludovic Rousseau
220 30 March 2012
221 - ignore directories and hidden (.*) files when parsing a configuration
222   directory (like /etc/reader.conf.d/)
223 - add Mac OS X for PC/SC spy tool
224 - fix a bug in PC/SC spy tool when loading of the real library fails
225 - add PCSCv2_PART10_PROPERTY_dwMaxAPDUDataSize,
226   PCSCv2_PART10_PROPERTY_wIdVendor and PCSCv2_PART10_PROPERTY_wIdProduct
227   from PC/SC v2 part 10 release 2.02.09 (not yet published)
228 - Some other minor improvements and bug corrections
229
230
231 pcsc-lite-1.8.2: Ludovic Rousseau
232 18 January 2012
233 - rename pcsc-spy.py to pcsc-spy and install it as a normal binary (in
234   /usr/local/bin by default)
235 - write a pcsc-spy.1 manpage
236 - fix a bug with a multi-slot reader
237 - Info.plist parser: avoid a buffer read overflow in & management
238 - Some Doxygen improvements
239
240
241 pcsc-lite-1.8.1: Ludovic Rousseau
242 25 November 2011
243 - Distribute missing files from src/spy/
244
245
246 pcsc-lite-1.8.0: Ludovic Rousseau
247 19 November 2011
248 - PC/SC spy tool
249 - Support systemd socket activation (the auto start of pcscd from the
250   library has been removed. Use systemd instead)
251 - SCardGetStatusChange(): check all the readers are already known and
252   return SCARD_E_UNKNOWN_READER if a reader name is not present.
253   Windows XP has this behavior.
254 - SCardEstablishContext(): Invalidate all the handles in the son after a
255   fork
256 - Add define of FEATURE_EXECUTE_PACE from PCSC v2 Part 10 Amendment 1
257   2011-06-03
258 - Fix some memory leaks reported by Coverity
259 - Enable silent build by default
260 - log_line(): correctly calculate delta time when no color is used
261   The update of last_time was only done in case of colorization
262   (LogDoColor). So on unsupported consoles the time was wrong.
263 - log_xxd_always(): Use a variable-length array
264   The debug message buffer is no more with a fixed size (around 600
265   bytes of buffer to log) but uses a variable-length array.
266   It is now possible to log extended APDU of 64kB.
267   The variable-length array feature is available in GCC in C90 mode and
268   is mandatory in C99 standard.
269 - Some other minor improvements and bug corrections
270
271
272 pcsc-lite-1.7.4: Ludovic Rousseau
273 23 June 2011
274 - Fix a stupid bug from the previous version. T=1 cards were not
275   working.
276
277
278 pcsc-lite-1.7.3: Ludovic Rousseau
279 22 June 2011
280 - COPYING: Add my name as copyright holder
281 - hotplug libudev: support libudev >= 171
282 - hotplug libusb: Fix a memory leak
283 - pcscd: exit immediately in case of SIGTERM
284   Closes Debian bug #620305 "pcscd slows down shutdown/restart"
285 - Send logs to stdout instead of stderr
286   It is now possible to use tee(1) to redirect logs in a file without
287   first redirecting stderr to stdout
288 - Add command line option -T, --color: force use of colored logs
289   The idea is to have colored logs even if they are redirected to a file
290   or a pipe.
291 - Define g_rgSCardT?Pci as const structures to be more Windows like
292   I do not expect a regression or compilation problem in WinSCard API
293   users but how knows...
294 - log at level PCSC_LOG_DEBUG instead of PCSC_LOG_ERROR to avoid filling
295   the system log file
296 - Remove the deprecated define FEATURE_MCT_READERDIRECT (replaced by
297   FEATURE_MCT_READER_DIRECT)
298 - better Hurd support
299 - some other minor improvements and bug corrections
300
301
302 pcsc-lite-1.7.2: Ludovic Rousseau
303 31 March 2011
304 - fix a crash if a specific driver fails to work and no class driver is
305   available
306
307 pcsc-lite-1.7.1: Ludovic Rousseau
308 30 March 2011
309 - use libudev only on Linux and libusb elsewhere. The configuration now
310   works by default on GNU/kFreeBSD systems
311 - Try to use a (CCID) class driver if a specific driver fails to use the
312   reader.
313 - fix a potential crash
314
315
316 pcsc-lite-1.7.0: Ludovic Rousseau
317 9 March 2011
318 - use libudev instead of (the deprecated) libhal
319
320
321 pcsc-lite-1.6.7: Ludovic Rousseau
322 22 February 2011
323 - better Mac OS X support
324 - Fix Alioth bug [#312960] SCardDisconnect when other context has transaction
325 - add support of multi-interfaces readers with libusb and not just libhal
326 - add a API tracing feature in the client side (#define DO_TRACE)
327 - allow the use of tracing and profiling features from different
328   application threads
329 - fix a problem with a multi-slots reader
330 - fix minor problems detected by the clang tool
331 - some other minor improvements and bug corrections
332
333
334 pcsc-lite-1.6.6: Ludovic Rousseau
335 12 December 2010
336 - SCardGetStatusChange(): fix a bug on 64-bits systems
337 - Fix another bug because of a regression in internal list manager
338
339
340 pcsc-lite-1.6.5: Ludovic Rousseau
341 3 December 2010
342 - Power on the card _only_ if an application requests a connection.
343   You can disable the feature using DISABLE_ON_DEMAND_POWER_ON in
344   src/pcscd.h.in
345   If DISABLE_AUTO_POWER_ON is defined then do not automatically power on
346   the card. The card will be powered on on the first SCardConnect()
347   See http://ludovicrousseau.blogspot.com/2010/10/card-auto-power-on-and-off.html
348 - SCardReconnect(): return SCARD_E_NO_SMARTCARD when card is removed and
349   SCARD_W_UNRESPONSIVE_CARD when card is unresponsive instead of
350   SCARD_E_PROTO_MISMATCH
351 - Install pcscd as sgid pcscd instead of suid root
352   See http://ludovicrousseau.blogspot.com/2010/09/pcscd-auto-start.html
353 - SCardSetTimeout() is no more provided. This function is not provided
354   by Microsoft and is deprecated since 2004 in pcsc-lite. 
355 - SCardCancelTransaction() is no more provided. This function is not
356   provided by Microsoft and is deprecated since 2005 in pcsc-lite.
357 - Parsing the CCID Info.plist (159 readers supported) was, on a i386
358   machine, done in 264306 µs and is now done 5547 µs => gain x47 or 4600%
359   See http://ludovicrousseau.blogspot.com/2010/08/ram-and-cpu-improvements-in-pcsc-lite.html
360 - It is now possible to configure the local socket name to use using the
361   environment variable PCSCLITE_CSOCK_NAME
362   See http://ludovicrousseau.blogspot.com/2010/11/pcsc-client-and-server-on-two-different.html    
363 - Wait until all connected readers have a chance to power up a possibly
364   inserted card before accepting clients.
365 - restrict pcscd features when not run by root (so using suid): APDU
366   logging or setting parameters are disabled for example
367 - fix compilation problem on kfreebsd-* systems
368 - PCSC/reader.h: HOST_TO_CCID_16() and HOST_TO_CCID_32() are now
369   identity functions
370   Since libccid 1.4.1 (revision 5252) the byte order is no more important
371 - If you want to use IFDHCreateChannel() instead of
372   IFDHCreateChannelByName() then do not use any DEVICENAME line in the
373   configuration file. IFDHCreateChannel() will then be called with the
374   CHANNELID parameter.
375 - the CHANNELID parameter can also be a decimal number.
376 - Remove the support of IFDHandler v1 API. I don't know any driver using
377   this API.
378   See http://ludovicrousseau.blogspot.com/2010/10/ifdhandler-version-1-support-removed.html
379 - avoids a buffer overflow with badly formed ATR
380 - some other minor improvements and bug corrections
381
382
383 pcsc-lite-1.6.4: Ludovic Rousseau
384 15 August 2010
385 - Do not use sysconfdir as configuration directory but
386   "${sysconfdir}/reader.conf.d" instead.
387   Use --enable-confdir=DIR if you want to set a specific value without
388   the "reader.conf.d" appended.
389
390
391 pcsc-lite-1.6.3: Ludovic Rousseau
392 15 August 2010
393 - "/reader.conf.d" is only appended to sysconfdir if no value of
394   sysconfdir is provided
395 - Define LPSCARD_READERSTATE since this is used in the MSDN prototype.
396   Use LPSCARD_READERSTATE in winscard.h instead of (SCARD_READERSTATE *)
397   to mimic the MSDN API.
398 - fix a pcscd crash when the application uses a PCSC handle after a
399   fork. The crash was with openvpn.
400 - some other minor improvements and bug corrections
401
402 pcsc-lite-1.6.2: Ludovic Rousseau
403 4 August 2010
404 - implement a "Forced suicide" mechanism.
405   After 3 Ctrl-C without much reaction from pcscd (in fact the drivers)
406   we force the suicide. Sometimes libusb is blocked in a kind of
407   dead-lock and kill -9 was the only option.
408 - Add support of TAG_IFD_STOP_POLLING_THREAD to request the stop of the
409   driver polling function.
410 - Avoid a division by 0. Closes [#312555] "simclist bug in pcsc-lite"
411 - if pcscd is stared by libpcsclite then close all file handles except
412   stdin, stdout and stderr so that pcscd does not confiscate resources
413   allocated by the application
414 - in case of auto exit create a new session so that Ctrl-C on the
415   application will not also quit pcscd
416 - src/hotplug_libusb.c: port from libusb-0.1 to libusb-1.0
417 - default configuration is now $sysconfdir/reader.conf.d
418 - fix crash with empty config dir
419 - src/PCSC/winscard.h: Remove definitions of SCARD_READERSTATE_A
420   PSCARD_READERSTATE_A and LPSCARD_READERSTATE_A types
421 - some other minor improvements and bug corrections
422
423
424 pcsc-lite-1.6.1: Ludovic Rousseau
425 4 June 2010
426 - SCardControl(): do not check for card events since we are talking to
427   the reader not the card. A smart card removal should not make
428   SCardControl() fail with SCARD_W_REMOVED_CARD
429 - pcscd do not timeout any more after 2 minutes of inactivity. If the
430   other side of the socket dies we will get an error from the kernel.
431   The problem was that if a client does nothing during
432   PCSCLITE_READ_TIMEOUT (120 seconds by default) then pcscd considers it
433   as a dead client and closes the connection. I guess this problem was
434   present since the first version of pcsc-lite but nobody complained
435   before.
436 - pcscd: do not return before most of the initialisation are done
437   correctly. The idea is that pcscd can return an error code if the
438   daemon fails to start correctly (hald not started for example).
439   Before the patch pcscd became a daemon, then returned 0 (success) and
440   then continued with the initialisation. If the initialisation failed
441   it was too late to return an error code. The /etc/init.d/pcscd script
442   was not aware of the failure.
443   Closes https://bugzilla.redhat.com/show_bug.cgi?id=580321
444   "/usr/sbin/pcscd exit codes broken"
445 - src/hotplug_libusb.c: Add a synchronisation so that if pcscd is auto
446   started the initial reader list is available before the server takes
447   commands from clients.
448   Before the change early calls of SCardListReaders() returned an empty
449   list of readers even if a reader was connected.
450   Thanks to Patrice Angelini for the bug report
451 - SCardConnect() & SCardReconnect(): do not reset the cardProtocol in
452   SCARD_SHARE_DIRECT case since the card have _not_ been reseted. A new
453   PPS negotiation would fail.
454 - Do not install files in /etc any more. Serial drivers are rare now.
455 - Avoids a crash if a client sends a unknown command.
456   Thanks to Martin Vogt for the bug report
457 - some other minor improvements and bug corrections
458
459
460 pcsc-lite-1.6.0: Ludovic Rousseau
461 5 May 2010
462 - redesign the client/server communication:
463   * no more shared memory used (allow pcscd and libpcsclite1.so to be on
464   different computer and talk over a network)
465   * no more difference between short and extended APDU
466   * no more use of a /var/run/pcscd/pcscd.events/ directory. events are
467   sent through the socket
468   * simpler command format between client and server
469   The side effect is that you are not able to mix an old pcscd with a
470   new libpcsclite1.so or the reverse. SCardEstablishContext() will fail
471   unless you update both sides of the communication.
472 - Use lists instead of fixed size arrays to store handles.
473   It is now possible to have:
474   - 200 simultaneous PC/SC clients instead of 16
475   - 200 SCardConnect per client instead of 16
476   - 200 clients per reader instead of 16
477   The default value of 200 can be changed by giving an argument to pcscd
478   --max-thread --max-card-handle-per-thread --max-card-handle-per-reader
479   Thanks to Jean-Luc Giraud for the big patch
480 - Make SCardReconnect(), SCardStatus() and SCardTransmit() block instead
481   of returning SCARD_E_SHARING_VIOLATION immediately. These functions
482   will then behave like on Windows.
483   This can happen if these functions are called when the reader is
484   locked by a PCSC transaction
485   (SCardBeginTransaction/SCardEndTransaction).
486   You can define the environment variable PCSCLITE_NO_BLOCKING to use
487   the old behavior.
488   Thanks to Jean-Luc Giraud for the patch.
489   http://archives.neohapsis.com/archives/dev/muscle/2010-q1/0041.html
490 - SCardEstablishContext(): try to start the pcscd daemon if not already
491   running.
492   . pcscd will suicide itself after 60 seconds of inactivity if it is
493   started using --auto-exit. This is the default behavior when pcscd is
494   started by libpcsclite
495   . Set PCSCLITE_PCSCD_ARGS with the argument you want to pass to pcscd in
496   autostart Only one argument is passed. The space character is not a
497   separator. example: export PCSCLITE_PCSCD_ARGS=-dfa
498 - SCardListReaders(): can use SCARD_AUTOALLOCATE
499 - SCardGetAttrib(): return SCARD_E_INSUFFICIENT_BUFFER if the driver
500   returns IFD_ERROR_INSUFFICIENT_BUFFER
501   . add support of SCARD_ATTR_DEVICE_FRIENDLY_NAME as it is better
502   implemented in pcscd (it knows the friendly name)
503 - SCardGetStatusChange(): Calling with cReaders == 0 will now just
504   return SCARD_S_SUCCESS
505   . Use the special reader name "\\?PnP?\Notification" to wait for a
506   reader event notification
507 - SCardTransmit(): do not limit the minimum size of an APDU to 4 bytes.
508   non ISO 7816-4 compliant cards (like Mifare DESFIRE) may use shorter
509   commands
510 - SCardStatus(): returns SCARD_E_SHARING_VIOLATION if the reader is
511   already used More conform to Windows
512 - PCSC/reader.h: update struct PIN_PROPERTIES_STRUCTURE to be conform
513   with Revision 2.02.06, April 2009 of PCSCv2 part 10 Fields
514   wLcdMaxCharacters and wLcdMaxLines have been removed
515   . rename FEATURE_MCT_READERDIRECT in FEATURE_MCT_READER_DIRECT to be
516   conform with ch. 2.3 of PCSC v2 part 10
517   . add FEATURE_GET_TLV_PROPERTIES and FEATURE_CCID_ESC_COMMAND from
518   PC/SC part 10 v2.02.07 March 2010
519   . Add PCSCv2_PART10_PROPERTY_* defines
520 - SCardControl() return SCARD_E_UNSUPPORTED_FEATURE if the driver
521   returned IFD_ERROR_NOT_SUPPORTED or IFD_NOT_SUPPORTED This is used to
522   separate an unsupported value of ControlCode from a general error
523 - Use the standard --sysconfdir=DIR ($prefix/etc by default) instead of
524   --enable-confdir=DIR for defining the directory containing reader.conf
525 - remove SCF support (PC/SC over Smart Card Framework). I never used
526   this feature and SCF is now dead and replaced by JSR 268
527   (javax.smartcardio)
528 - Better handling of PCSCLITE_STATIC_DRIVER as can be used on platforms
529   using µClinux (without dynamic loader).  This is used to statically
530   link the reader driver to pcscd. Since the link is static you must
531   define the IFDHandler API version at compilation time. Either define
532   IFDHANDLERv1, IFDHANDLERv2 or IFDHANDLERv3
533 - Use dynamic instead of static allocation for the driver library
534   filename. The filename is no more limited to 100 characters.
535   Closes: [#312332] MAX_LIBNAME too short?
536 - force the return codes SCARD_* to be long since the SCard* functions
537   return a LONG type
538 - Add the ability to parse all the configuration files of a directory
539   instead of just one configuration file. update-reader.conf is then now
540   obsolete.
541 - Add --enable-embedded (default is no) to build pcsc-lite for an
542   embedded system. This will activate the NO_LOG option to disable
543   logging and limit RAM and disk consumption.
544 - If NO_LOG is defined then no log are displayed. The idea is to limit
545   the binaries size on disk and RAM consumption at execution time.
546   With NO_LOG defined we gain 26% (17 kB) for the .text segment of pcscd
547   and 15% (4 kB) for the .text segment of libpcsclite.so (for i386)
548 - Define a minimal pcsc_stringify_error() if NO_LOG is defined. Only the
549   error code in hex is displayed in this case.
550   Gain: 2kB of .text (10%) for libpcsclite
551 - Add --disable-serial and --disable-usb options
552   --disable-serial removes support of /etc/reader.conf gain: 8.0kB of
553   .text (12%) and 160 bytes of .bss (4%) for pcscd
554   --disable-usb removes support of USB hotplug gain: 9.7kB of .text
555   (14%) and 960 bytes of .bss (23%) for pcscd
556   If you use both options (and use a static driver configuration) gain:
557   17.7kB of .text (26%) and 1152 bytes of .bss (28%) for pcscd
558 - Better support of Android
559 - some other minor improvements and bug corrections
560
561
562 pcsc-lite-1.5.5: Ludovic Rousseau
563 28 July 2009
564 - add the reader interface name if provided by the device
565 - SCardTransmit(): return SCARD_E_UNSUPPORTED_FEATURE if
566   SCARD_PROTOCOL_RAW is requested by unsupported
567 - SCardConnect() and SCardReconnect(): set dwActiveProtocol to
568   SCARD_PROTOCOL_UNDEFINED if SCARD_SHARE_DIRECT is used (conform to
569   MSDN). Contrary to Windows winscard behavior, the reader is accessed in
570   shared mode and not exclusive mode if SCARD_SHARE_DIRECT is used.
571 - SCardControl(): correctly check for buffer overflow (bug introduced in
572   pcsc-lite 1.5.4)
573 - some other minor improvements and bug corrections
574
575
576 pcsc-lite-1.5.4: Ludovic Rousseau
577 24 June 2009
578 - SCardGetStatusChange() works again. It was broken in some cases since
579   version 1.5.2
580 - detect buffer overflows if pcscd if used by a rogue client
581 - force access rights on /var/run/pcscd to be sure it can be used by a
582   libpcsclite client without privileges
583 - create the PCSCLITE_EVENTS_DIR directory with the sticky bit so only
584   root or the owner of the event files can remove them
585 - if RFAddReader() fails with the libhal scheme then we try with the
586   (old) libusb scheme.  This patch should allow proprietary drivers to
587   work even if pcsc-lite is compiled with libhal support.
588 - give a higher priority to a specific driver over the CCID Class
589   driver. This should allow proprietary drivers to be used instead of
590   libccid when possible
591 - some other minor improvements and bug corrections
592
593
594 pcsc-lite-1.5.3: Ludovic Rousseau
595 29 April 2009
596 - SCardEstablishContext(): check we do not reuse an already allocated
597   hContext
598   Thanks to Daniel Nobs for the bug report and patch
599 - pcsclite.h: add missing SCARD_E_* and SCARD_W_* return code. They are
600   unused by pcsc-lite but defined on Windows
601 - reader.h: add PIN_PROPERTIES_STRUCTURE structure and FEATURE_IFD_PIN_PROPERTIES
602   Thanks to Martin Paljak for the patch
603 - remove powermgt_macosx.c since it is using APSL version 1.1 instead of
604   the BSD-like licence like the other files
605   Thanks to Stanislav Brabec for the bug report
606 - avoid a possible crash due to a race condition
607   Thanks to Matheus Ribeiro for the patch
608 - change default log level from PCSC_LOG_INFO to PCSC_LOG_ERROR to limit
609   syslog pollution
610 - CardDisconnect(): call RFUnlockAllSharing() instead of
611   RFUnlockSharing() to release all nested locks. The problem occurs if
612   SCardBeginTransaction() are made without corresponding
613   SCardEndTransaction().  OpenSC "pkcs11-tool -I" exhibits such a
614   behavior.
615   Thanks to Marc Rios Valles for the bug report
616 - some other minor improvements and bug corrections
617
618
619 pcsc-lite-1.5.2: Ludovic Rousseau
620 6 February 2009
621 - SCardGetStatusChange(): return if the state of the reader changed
622   since the previous call. Thanks to Thomas Harning for the patch
623 - SCardCancel() no works as expected. It got broken in version 1.5.0.
624   Closes: [#311342] SCardCancel does not cancel an outstanding
625   SCardGetStatusChange
626 - log TxBuffer and RxBuffer if the SCardControl() command failed.
627   Closes: [#311376] PCSC_LOG_VERBOSE via -dd; print details of "Card not
628   transacted"
629 - add a mutex to avoid a race condition
630   Closes: [#311377] Race condition in SCardBeginTransaction
631 - SCardGetStatusChange() may not return if the reader was removed.
632 - some other minor improvements and bug corrections
633
634
635 pcsc-lite-1.5.1: Ludovic Rousseau
636 7 January 2009
637 - Extended APDU of more than 2048 bytes were corrupted. The problem was
638   introduced in version 1.3.3 (2 years ago) by making the code compile
639   with Sun Studio 11.
640   Thanks to Eric Mounier for the patch
641 - some other minor improvements and bug corrections
642
643
644 pcsc-lite-1.5.0: Ludovic Rousseau
645 18 November 2008
646 - correctly handle up to PCSCLITE_MAX_READERS_CONTEXTS readers (instead
647   of PCSCLITE_MAX_READERS_CONTEXTS-1)
648 - SCardGetStatusChange()
649   . now returns SCARD_E_TIMEOUT instead of SCARD_S_SUCCESS if dwTimeout
650     == 0 (conform to Windows XP)
651   . add support of reader name \\?PnP?\Notification to detect reader
652     insertion/removal (conform to Windows XP)
653   . if a reader disappear also set SCARD_STATE_UNAVAILABLE in
654     dwEventState (more conform to Windows XP)
655 - SCardStatus(): add support of SCARD_AUTOALLOCATE for pcchReaderLen and
656   pcbAtrLen
657 - SCardGetStatusChange() now uses asynchronous events instead of polling
658 - more and/or better Doxygen documentation
659 - SCardTransmit(): correctly pass the pioRecvPci parameter
660 - SCardConnect() and SCardReconnect(): correct a bug when two
661   applications were calling SCardConnect() or SCardReconnect() at the
662   exact same time
663 - pcscd logs the command name sent by the application (when in debug mode)
664 - some other minor improvements and bug corrections
665
666
667 pcsc-lite-1.4.102: Ludovic Rousseau
668 27 June 2008
669 - pcscd -v now displays the enabled features
670 - add support of SCARD_AUTOALLOCATE in SCardListReaders(),
671   SCardListReaderGroups() and SCardGetAttrib
672 - add SCardFreeMemory()
673 - try to use the reader polling thread also for the other slots on a
674   multi-slots reader
675 - solve a possible crash with SCardCancel() in multithreading environment
676 - SCardConnect(), SCardReconnect(): do not check the parameter
677   dwPreferredProtocols if dwShareMode == SCARD_SHARE_DIRECT
678   This is used on contactless readers to talk to the reader without any
679   card and "random" value of dwPreferredProtocols
680 - better support of driver termination (when pcscd exits)
681 - kill the driver polling thread only if the driver supports it
682   (declared using TAG_IFD_POLLING_THREAD_KILLABLE)
683 - generate a .tar.bz2 archive (smaller than the .tar.gz archive)
684 - some other minor improvements and bug corrections
685
686
687 pcsc-lite-1.4.101: Ludovic Rousseau
688 30 April 2008
689 - support for fork(). Handles are now invalid in the child process
690 - SCardStatus() returns SCARD_W_REMOVED_CARD instead of
691   SCARD_W_RESET_CARD when a card has been removed and inserted
692 - Doxygen improvements
693 - add support for DragonFly BSD
694 - some other minor improvements and bug corrections
695
696
697 pcsc-lite-1.4.100: Ludovic Rousseau
698 23 March 2008
699 - add libhal support to avoid polling the USB bus.  libusb is still
700   supported but libhal is now the default
701 - improve performances in SCardConnect(), SCardReconnect(),
702   SCardDisconnect(). Thanks to Sean Wykes for the patch
703 - SCardListReaders(): returns SCARD_E_NO_READERS_AVAILABLE when no
704   reader are available.  Thanks to Thomas Harning for the bug report
705 - add support of TAG_IFD_POLLING_THREAD to use an asynchronous card
706   movements detection instead of an active polling. The reader driver
707   need to support TAG_IFD_POLLING_THREAD to use this feature
708 - CardCheckDaemonAvailability(): lower the priority of the log message
709   in case of "PCSC Not Running" or "PCSC restarted" so that nothing is
710   logged by default.  PCSCLITE_DEBUG can be defined to see the message.
711   Programs linked with libpcsclite will not display anything if pcscd is
712   not running. Solves Red Hat bug 428299.
713 - default log level is PCSC_LOG_CRITICAL+1 so that NO log is sent to
714   stderr by default. You need to explicitly set PCSCLITE_DEBUG to have
715   logs. (in a library stderr(2) can be any file opened with fd=2 so
716   should not be used)
717 - ifdhandler-3.tex: more details about deviceName argument of
718   IFDHCreateChannelByName()
719 - some other minor improvements and bug corrections
720
721
722 pcsc-lite-1.4.99: Ludovic Rousseau
723 9 January 2008
724 - add support of mix 32/64 bits platforms.  Thanks to Jacob Berkman for
725   the big patch
726 - increase MAX_READERNAME from 52 to 100
727 - default ipcdir is /var/run/pcscd instead of /var/run so the directory
728   can be shared locally between 32/64 bits systems on chroots
729 - display time delta between two lines of logs when printed to stderr
730 - return EXIT_SUCCESS (instead of EXIT_SUCCESS) if parsing
731   /etc/reader.conf fails.
732 - performance improvement when powering a card after insertion
733 - some other minor improvements and bug corrections
734
735
736 pcsc-lite-1.4.4: Ludovic Rousseau
737 14 August 2007
738 - do not call a Log function in a signal handler and do hotplug
739   synchronously. See Debian bug #430492 Thanks to Russell Stuart
740 - support LSB init scritp format
741 - better support of Solaris and Mac OS X
742 - some other minor improvements and bug corrections
743
744
745 pcsc-lite-1.4.3: Ludovic Rousseau
746 19 June 2007
747 - correctly handle lock (SCardBeginTransaction) when the locked card is
748   removed.
749 - correct a buffer overflow introduced in 1.4.2 when extended APDU are
750   used
751 - some other minor improvements and bug corrections
752
753
754 pcsc-lite-1.4.2: Ludovic Rousseau
755 23 May 2007
756 - add a Lock counter so that SCardBeginTransaction/SCardEndTransaction
757   can be nested
758 - SCardDisconnect(): do not block if dwDisposition == SCARD_LEAVE_CARD.
759   We block only for SCARD_UNPOWER_CARD, SCARD_RESET_CARD and
760   SCARD_EJECT_CARD since that would impact other running transactions
761 - LPTSTR and LPCTSTR types are no more deprecated since they are found
762   in many applications. And using them is not a problem.
763 - some other minor improvements and bug corrections
764
765
766 pcsc-lite-1.4.1: Ludovic Rousseau
767 16 May 2007
768 - do not limit the execution of an APDU to 2 minutes (Thanks to Harsh
769   Sangal for the bug report)
770 - if the daemon is restarted we invalidate all the existing handles so
771   SCard functions returns SCARD_E_INVALID_HANDLE
772 - SCardReconnect(): block instead of returning SCARD_E_SHARING_VIOLATION
773 - clean the data buffer for SCardTransmit() to clean the APDU buffer to
774   remove any possible PIN or secret value (Thanks to Nils Larsch for the
775   patch)
776 - SCardGetStatusChange(): add a counter in the upper word of
777   dwEventState so it is possible to detect a card movement between two
778   calls to SCardGetStatusChange() (Thanks to Matheus Ribeiro for the
779   patch)
780 - SCardGetStatusChange(): do not check for SCARD_STATE_ATRMATCH,
781   SCARD_STATE_EXCLUSIVE or SCARD_STATE_INUSE bits when the card is not
782   present.  (thanks to Matheus Ribeiro for the bug report)
783 - some other minor improvements and bug corrections
784
785
786 pcsc-lite-1.4.0: Ludovic Rousseau
787 13 February 2007
788 - great speed improvements for SCardBeginTransaction(), SCardReconnect()
789   and SCardDisconnect()
790 - SCardConnect(): return SCARD_W_UNPOWERED_CARD if the card is mute
791   instead of returning SCARD_E_PROTO_MISMATCH because the requested
792   protocol is not supported by the (mute) card
793 - Ctrl-C works again to stop pcscd on FreeBSD
794 - USB polling was not active even if a driver does not support
795   IFD_GENERATE_HOTPLUG.
796 - split pcsclite.h in pcsclite.h and an internal pcscd.h. Some
797   application compilations may fail but should not
798 - move RESPONSECODE definition from wintypes.h to ifdhandler.h since it
799   should only be used as return type of IFDHandler functions. Some
800   driver compilations may fail
801 - some other minor improvements and bug corrections
802
803
804 pcsc-lite-1.3.3: Ludovic Rousseau
805 19 January 2007
806 - add -H --hotplug argument to ask the pcscd daemon to rescan the
807   avaiable readers
808 - add support for IFD_GENERATE_HOTPLUG bit in driver Info.plist
809   ifdCapabilities
810 - add --force-reader-polling to ignore the IFD_GENERATE_HOTPLUG bit in
811   driver Info.plist ifdCapabilities (pcscd will poll the USB bus every 1
812   second as in previous versions)
813 - SCardConnect() & SCardDisconnect(): wait until any transaction
814   finishes before going on. This avoids the possibility to reset a card
815   in the middle of a transaction Thanks to Martin Paljak for the bug
816   report
817 - the tools installifd and formaticc are now completely outdated and
818   should not be used anymore.
819 - PCSC/ifdhandler.h: add IFD_NO_SUCH_DEVICE for readers supporting
820   hotplug
821 - PCSC/pcsclite.h: add SCARD_E_NO_READERS_AVAILABLE
822 - SCardControl(): do not limit cbSendLength to MAX_BUFFER_SIZE bytes
823   since we now transparently support up to MAX_BUFFER_SIZE_EXTENDED
824   bytes.  Thanks to Martin Führlinger for the bug report
825 - SCardGetAttrib()/SCardSetAttrib(): if the driver returns IFD_ERROR_TAG
826   we return SCARD_E_UNSUPPORTED_FEATURE instead of the generic error
827   code SCARD_E_NOT_TRANSACTED
828 - implement SCardIsValidContext() PC/SC call
829 - some other minor improvements and bug corrections
830
831
832 pcsc-lite-1.3.2: Ludovic Rousseau
833 11 August 2006
834 - add support of extended APDU in the standard configuration and in a
835   backward compatible way: pcscd 1.3.2 can be used with libpcsclite <=
836   1.3.2
837 - define MAX_BUFFER_SIZE_EXTENDED as the maximal size allowed for a
838   extended APDU (64KB)
839 - LPCTSTR and LPTSTR types are deprecated. Use LPCSTR and LPSTR instead
840 - Dual licence src/error.c so it can be used bu OpenSC. It is now
841   BSD-like, see the COPYING file and GNU Lesser General Licence 2.1 or
842   (at your option) any later version
843 - document that the 4 bytes field value in PCSC_TLV_STRUCTURE is always
844   in big endian as documented in PCSC v2 part 10 ch 2.2 page 2. You can
845   use ntohl() to convert the value. Thanks to Ulrich Vogl for the bug
846   report
847 - some other minor improvements and bug corrections
848
849
850 pcsc-lite-1.3.1: Ludovic Rousseau
851 22 April 2006
852 - improve support of Solaris
853 - correct a bug when two clients are connecting at the same time
854 - better documentation for ./configure arguments
855 - doc/ifdhandler-3.tex: improve IFD handler documentation
856 - doc/pcsc-lite.tex: document VERIFY_PIN and MODIFY_PIN commands using
857   PCSCv2 part 10 instead of the "proprietary" mechanism now unsupported
858 - doc/pcsc-lite.tex: document log_msg and log_xxd
859 - use fprintf(stderr,) instead of syslog(3) to log messages from libpcsclite
860 - use PCSCLITE_DEBUG to activate the debug messages in libpcsclite.
861   MUSCLECARD_DEBUG is now used for libmusclecard only
862 - add the reader serial number in the reader name only if
863   ADD_SERIAL_NUMBER is defined
864 - some other minor improvements and bug corrections
865
866
867 pcsc-lite-1.3.0: Ludovic Rousseau
868 3 March 2006
869 - new official stable version since 1.2.0 in October 2003. Many thanks
870   to all the bug reporters and bug fixers
871 - libmusclecard is now in a independent package
872 - (re)allow compilation on Solaris
873 - SCardReleaseContext(): do not check that the thread releasing the
874   context is the one that established it. This check is not performed on
875   Windows and creates portability problems See
876   http://archives.neohapsis.com/archives/dev/muscle/2006-q1/0134.html
877 - automatically call SCardUnload() when the libpcsclite library is
878   unloaded Thanks to Najam Siddiqui. See
879   http://archives.neohapsis.com/archives/dev/muscle/2006-q1/0177.html
880 - some other minor improvements and bug corrections
881
882
883 pcsc-lite-1.2.9-beta10: Ludovic Rousseau
884 3 February 2006
885 - if the USB reader defines a serial number then include it in the
886   reader name (between parenthesis)
887 - the library libpcsclite.so.1 only exports the symbols defined by the
888   API (http://pcsclite.alioth.debian.org/pcsc-lite/). This is needed to
889   be able to use the library in an appliation that also uses flex (like
890   muscleTool). The problem only occurs with GCC >= 4.0
891 - some other minor improvements and bug corrections
892
893
894 pcsc-lite-1.2.9-beta9: Ludovic Rousseau
895 27 November 2005
896 - add/improve support of PIN pad readers
897   . define HOST_TO_CCID_16() and HOST_TO_CCID_32() macro to convert 16 and
898     32-bits data to the CCID format (replace HOST_TO_CCID)
899 - add support of SUN C compiler and try to avoid GCC specific features
900   (Heiko Nardmann)
901 - SCardGetStatusChange():
902   . exists if the list of readers changed (one reader added) so that the
903     application can update its list of readers (Najam Siddiqui)
904   . correct a bug when two contexts where used (Najam Siddiqui)
905 - add support of Solaris 10 IFDhandler (Douglas E. Engert)
906 - allow pcsc-lite to be compiled without (f)lex installed
907 - add a TODO file. Help/money needed here.
908 - improve Doxygen documentation
909 - some other minor improvements and bug corrections
910
911
912 pcsc-lite-1.2.9-beta8: Ludovic Rousseau
913 6 September 2005
914 - correct a crash on Fedora Core 4 (off by 1 buffer overflow)
915 - do not silently truncate the reader, library or device name if they
916   are too long but display an error message instead
917 - reinclude musclecard library in pcsc-lite package since a lot of code
918   is shared. The separation was a mistake
919 - add colorization of the logs when sent to stderr. The color depends on
920   the priority level
921 - restrict the number of symbols (function names) exported from
922   libpcsclite.so to limit symbol conflicts with other libraries. Only
923   the PC/SC API symbols should be exported
924 - add Doxygen documentation. Thanks to Luiz Reuter Silva Torro.
925   HTML pages available at
926   http://pcsclite.alioth.debian.org/doxygen/html/index.html
927 - SCardControl(): a 0 byte long pbSendBuffer is no more rejected since
928   the command is in dwControlCode. Thanks to Martin Paljak for the patch
929 - provide a reader.h file (by default in /usr/local/include/PCSC/reader.h)
930   that contains definitions shared between an application and a smart
931   card driver (like SCARD_CTL_CODE, CM_IOCTL_GET_FEATURE_REQUEST,
932   FEATURE_* and HOST_TO_CCID)
933 - pcscd: allow a serial hotplug by sending a SIGUSR1 signal. The
934   /etc/reader.conf file is re-read and reader presence/abscence is updated
935 - musclecard library: small bug fixes
936 - pcsc-lite SCF: small bug fixes
937 - some other minor improvements and bug corrections
938
939
940 pcsc-lite-1.2.9-beta7: Ludovic Rousseau
941 2 March 2005
942 - SCARD_PROTOCOL_ANY is defined as (SCARD_PROTOCOL_T0|SCARD_PROTOCOL_T1)
943   You should not use SCARD_PROTOCOL_ANY since it is not defined in
944   Windows PC/SC. It is just defined for backward source code compatibility
945 - define SCARD_STATE_UNPOWERED even it is a state never used so source
946   code using it can compile
947 - SCardStatus(): pdwState and pdwProtocol parameters may be NULL (mimic
948   Windows)
949 - provide a script update-reader.conf to update the /etc/reader.conf
950   file from /etc/reader.conf.d/* files
951   This script is called by /etc/init.d/pcscd before starting the daemon
952 - add support of SCardGetAttrib() with a NULL pbAttr parameter to only
953   get the needed lenth in pcbAttrLen
954 - SCardReconnect() now works after a card movement.  Previously
955   SCardReconnect() returned "Card was removed" even if the new card is
956   reseted.
957 - SCardGetStatusChange(): greatly improve performances. Thanks to Oivind
958   H. Danielsen
959 - SCardControl(): check if the pbSendBuffer is NULL or no bytes are sent
960   for driver API v2 only. With API v3 we can use dwControlCode as the
961   only data to send.
962 - Implement the dynamic level logging in pcscd
963   The new command line options are:
964     -d, --debug           display lower level debug messages
965         --info            display info level debug messages (default level)
966         --error           display error level debug messages
967         --critical        display critical only level debug messages
968 - some documentation update
969
970
971 pcsc-lite-1.2.9-beta6: Ludovic Rousseau
972 15 August 2004
973 - The debug messages are now displayed by default. This prevented error
974   messages generated by a wrong /etc/reader.conf parsing to be displayed
975 - thread management:
976   . threads are now created with the PTHREAD_CREATE_DETACHED attribute
977     so that resources are released when the thread ends. Thanks to
978     Michael Gold for the patch.
979     Previous versions of pcscd just died after 256 clients connections.
980 - remove PCSC/ from the header files path since the path is given by
981   pkg-config --cflags libpcsclite or the correct -I directive
982 - src/winscard_svc.c:
983   . MSGCleanupClient(): always reset all the fields. Thanks to Michael
984     Gold for the patch.
985 - src/configfile.l:
986   . if the file referenced by DEVICENAME can't be use (because it is not
987     a correct filename) we now display:
988     You should use 'DEVICENAME /dev/null' if your driver does not use this field
989 - src/winscard.c:
990   . Avoid generating a PPS request that would not be just after a power
991     up. The previous code worked only when the card was _reseted_ at
992     SCardDisconnect() but not when SCARD_LEAVE_CARD was used.
993 - correctly manage multi-slots readers
994 - etc/pcscd.init:
995   . updated to reflect the RPM version. Thanks to Ville Skyttä & Fritz Elfert
996 - doc/example/pcsc_demo.c:
997   . add SCardTransmit() code sample
998 - src/testpcsc.c:
999   . add a "(don't panic)" after a "Transaction failed." if it is not a
1000     critical failure.
1001 - doc/pcsc-lite.tex:
1002   . the function SCardSetTimeout() is deprecated and does nothing
1003 - doc/ifdhandler-3.tex:
1004   . add documentation for IFDHGetCapabilities(..., TAG_IFD_THREAD_SAFE, ...),
1005     IFDHGetCapabilities(..., TAG_IFD_SLOT_THREAD_SAFE, ...) and
1006     IFDHSetCapabilities(..., TAG_IFD_SLOTNUM, ...)
1007 - some internal changes and bugs corrections
1008
1009
1010 pcsc-lite-1.2.9-beta5: Ludovic Rousseau
1011 16 July 2004
1012 - src/PCSC/wintypes.h:
1013   . add type LPSTR (again) so that "old" drivers and applications can
1014     compile but mark the type deprecated.
1015     See http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Type-Attributes.html
1016 - src/tokenfactory.c:
1017   . TPSearchBundlesForAtr(): use "%s/%s" insead of "%s%s" when
1018     generating the MuscleCard bundle name on MacOSX
1019 - src/winscard.c:
1020   . SCardControl() (new API) can now be used with a IFDHandler v2.0 or v3.0.
1021     The previous code was broken and only worked with an IFDHandler v3.0
1022     (crashed with a v2.0).
1023 - src/PCSC/ifdhandler.h:
1024   . IFDHControl(): use PUCHAR instead of LPCVOID and LPVOID so the
1025     driver can use TxBuffer[x] without needing a cast.
1026   . it is now possible to compile a IFDHandler v2.0 with this include
1027     file.  Just #define IFDHANDLERv2 in your source code before
1028     #include <ifdhandler.h>
1029     By default it is setup for for most recent version of the API (V3.0)
1030
1031
1032 pcsc-lite-1.2.9-beta4: Ludovic Rousseau
1033 3 July 2004
1034 - src/libmusclecard.pc.in and src/libpcsclite.pc.in
1035   . includedir is now @includedir@/PCSC
1036   . add pthread flags for compilation and link
1037   . thanks to Ville Skyttä for these patches.
1038     They are small but are mandatory to (re)compile muscleTools (and
1039     others) without modification to their Makefile.
1040
1041
1042 pcsc-lite-1.2.9-beta3: Ludovic Rousseau
1043 30 June 2004
1044 - src/hotplug_libusb.c:
1045   . use a dynamic array for available USB drivers:
1046    - avoid a buffer overflow (argh!)
1047    - allow to use more than 16 drivers/supported readers
1048 - src/Makefile.am:
1049   . install mscdefines.h, winscard.h, musclecard.h, pcsclite.h and wintypes.h
1050     in /usr/include/PCSC/ to not pollute /usr/include/
1051   . install ifdhandler.h, debuglog.h and parser.h in /usr/include/PCSC/ so
1052     drivers can use them for compilation.
1053   Modify your source code or add -I/usr/include/PCSC to CFLAGS in your
1054   Makefile or, better, use CFLAGS=`pkg-config libpcsclite --cflags`
1055 - doc/pcsc-lite.tex:
1056   . dwPreferredProtocols is a bit mask of acceptable protocols
1057   . SCARD_SHARE_DIRECT can be used to talk to the reader without a card
1058     inserted
1059   . add "Some SCardControl commands" section (IFD_EXCHANGE and VERIFY_PIN)
1060   . add documentation for LTPBundleFindValueWithKey(), debug_msg() and
1061     debug_xxd()
1062 - src/configfile.l: (/etc/reader.conf parser):
1063   . allow ':' in DEVICENAME. use ':' to indicate a non-real device (pcscd does
1064     not test for its existence as a file).  You can use this in something like
1065     "net://1.2.3.4/foobar" to indicate a reader on a remote machine like an
1066     X11 terminal.
1067 - src/PCSC/wintypes.h:
1068   . Change the names of the types LPCSTR to LPCTSTR and LPSTR to LPTSTR to be
1069     compliant with the Microsoft SCard API. You will have to update your
1070     source codes.
1071 - src/readerfactory.c:
1072   . rework RFSetReaderName() to simply the code and always start with the
1073     lowest number available (like in previous pcsc-lite version)
1074 - src/prothandler.c:
1075   . completely redesign the function so that IFDSetPTS() is always called to
1076     tell the driver which protocol to use and to initialise its internal
1077     state. The driver now knows which protocol (T=0 or T=1) the application
1078     wants to use even if the card only support only one protocol.
1079 - src/atrhandler.c:
1080   . add support of specific mode by the presence of TA2 (protocol not
1081     negociable)
1082 - src/utils/Makefile.am:
1083   . install bundleTool and installifd in [...]/sbin/ instead of [...]/bin/
1084 - doc/example/Makefile.am:
1085   . do not install pcsc_demo since it is just a sample code for developers
1086     that is not supposed (the code) to do anything useful
1087 - doc/example/pcsc_demo.c:
1088   . replace SCARD_PROTOCOL_ANY by SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1 since
1089     SCARD_PROTOCOL_ANY is _not_ defined by Microsoft PC/SC and is not equals
1090     to SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1 in pcsc-lite
1091 - and lots of other minor and/or internal only changes
1092
1093 pcsc-lite-1.2.9-beta2: Ludovic Rousseau
1094 11 May 2004
1095 - change libmusclecard current version to 1 so that old libmusclecard0 and new
1096   libmusclecard1 can cohabit on the same system and will not break existing
1097   programs during upgrades.
1098
1099   This is because libmusclecard is provided in the same distrib/package as
1100   libpcsclite. If we want two libpcsclite to cohabit we must also ensure
1101   that the two libmusclecard can also cohabit.
1102 - src/pcscdaemon.c: print pcsc-lite version number during startup
1103 - src/winscard.c: in SCardReconnect(), SCardDisconnect() and
1104   SCardEndTransaction() SCARD_UNPOWER_CARD is "Power down the card and reset
1105   it (Cold Reset)" so we really power down _and_ then power up the card.
1106 - doc/pcsc-lite.tex: add the chapter "Multithreading and contexts"
1107 - doc/ifdhandler-3.tex: IFD Handler API in LaTeX format
1108 - correct some minor typos in documentation and output texts
1109
1110
1111 pcsc-lite-1.2.9-beta1: Ludovic Rousseau
1112 6 May 2004
1113 - configure: add support of --enable-extendedapdu argument to allow the use of
1114   big APDUs (APDU size between 256-Bytes and 128-KBytes)
1115 - API changes:
1116   . SCardControl() API changed to be similar to the Microsoft PC/SC
1117     implementation
1118   . add SCardGetAttrib()/SCardSetAttrib() functions
1119   . the driver need to be compliant to IFDHandler API v3 to support these new
1120     functions
1121 - multithreading:
1122   Damien Sauveron added the support of multiplexing multi-readers
1123   communications. In the previous version the communications were serialized
1124   and not simultaneous even if it was not needed. Thanks Damien.
1125 - src/pcscdaemon.c:
1126   . remove the warning if no /etc/reader.conf is found. It is normal to not
1127     have an /etc/reader.conf for USB readers only.
1128   . send debug to syslog by default
1129   . send debug to stderr if --foreground|-f is used (no need to add
1130     --debug stderr anymore)
1131 - doc/pcsc-lite.pdf: doc improved to add the new functions and API. The doc is
1132   now generated from a LaTeX file (easier to maintain, html version available,
1133   much more nice, etc.)
1134 - src/testpcsc.c:
1135   . added tests for the new functions SCardGetAttrib(), SCardSetAttrib() and
1136     SCardControl() and also the old SCardListReaderGroups()
1137   . do not ask for reader number if only one reader is present
1138   . some more debug
1139 - pcscd and libpcsclite now exchange a protocol version to know what API to
1140   use. This will be useful if/when the API change again
1141 - change library version to 1:0:0 since the interface changed
1142 - hotplug: the daemon pcscd do not try to restart drivers anymore when it is
1143   exiting
1144 - src/hotplug_libusb.c:
1145   . do not try to restart a USB driver if the first execution fails (because
1146     of a bug in the driver or whatever) since the next execution of the driver
1147     will, with a great probability, also fail. The user has to unplug/replug
1148     the reader to restart the driver. This prevents to fill the system logs
1149     with an error message every 1 second.
1150   . use deviceName defined as usb:idVendor/idProduct:libusb:busname:filename
1151     in HPAddHotPluggable(). This should avoid wrong USB enumeration when used
1152     in IFDHCreateChannelByName()
1153 - src/hotplug_macosx.c:
1154   . buffer overflow: the driver list was not terminated and caused crashes.
1155 - src/winscard.c:
1156   . remove the code to map SCARD_UNPOWER_CARD on IFD_RESET.
1157     SCARD_UNPOWER_CARD is power down and power up (cold reset) => IFD_POWER_DOWN
1158     SCARD_RESET_CARD is just power up (warm reset) => IFD_RESET
1159 - src/winscard.h:
1160   . use SCARDCONTEXT, DWORD, LPSCARDHANDLE, etc. instead of long, unsigned
1161     long, long *, etc. to be more Windows PC/SC compliant
1162 - doc/reader.conf.5.in: new manpage to make it clear that this configuration
1163   file SHOULD not be used for USB readers
1164 - src/configfile.l:
1165   . print a warning if the LIBPATH contains ".bundle". USB drivers SHOULD NOT
1166     be declared in reader.conf
1167   . Check that DEVICENAME and LIBPATH files exist and if an error occurs
1168     during the parsing the reader is not added and pcscd exit.
1169 - doc/example/pcsc_demo.c:
1170   . recode the readers enumeration to avoid the use of
1171     PCSCLITE_MAX_READERS_CONTEXTS. You do not and should not need
1172     PCSCLITE_MAX_READERS_CONTEXTS. Use a dynamic management instead.
1173   . add SCardReconnect() sample code
1174   . allow to select the reader number instead of always selecting the first
1175     reader
1176   . some minor debug
1177 - src/musclecard.c:
1178   . Initialize currentToken->tokenType in MSCListTokens(). Closes "[ #300607 ]
1179     MSCListTokens should set tokenType to know state before OR operation"
1180 - src/tokenfactory.c:
1181   . correct atrString[] buffer size. The ATR is in ASCII so it must be
1182     MAX_ATR_SIZE*2 +1. This was problematic for cards with a "long" ATR.
1183 - src/readerfactory.c:
1184   . initialize vHandle field to NULL in RFAllocateReaderSpace() (caused a
1185     crash under MacOS X)
1186 - aclocal/acx_pthread.m4:
1187   . new upstream version to avoid checking for pthread.h which does not exist
1188     on *BSD
1189 - src/libmusclecard.pc.in, src/libpcsclite.pc.in:
1190   . add muscledropdir (in libmusclecard) and usbdropdir (in libpcsclite) so we
1191     can use `pkg-config libpcsclite --variable=usbdropdir` to find the
1192     directory to use. Should be used by drivers and plugins installation.
1193     Thanks to Ville Skyttä for the patch.
1194 - many other minor patches and corrections. Read ChangeLog.cvs for a complete
1195   list
1196
1197
1198 pcsc-lite-1.2.0: Ludovic Rousseau
1199 27 october, 2003
1200 - the 1.2.0 version is the same as 1.2.0-rc3 version
1201
1202 pcsc-lite-1.2.0-rc3: Ludovic Rousseau
1203 15 october, 2003
1204 - src/winscard_msg.c: perform a round-robbin among clients to avoid starvation
1205   under heavy load. Patch from Bettina Martelli.
1206 - src/winscard_clnt.c: send debug to stdout only if the environment variable
1207   MUSCLECARD_DEBUG is defined
1208 - src/libmusclecard.pc.in: add a new pkg-config file for application using
1209   libmusclecard.
1210 - a lot of code and build clean up by Antti Tapaninen
1211 - some code clean up and debug by Damien Sauveron
1212
1213
1214 pcsc-lite-1.2.0-rc2: Ludovic Rousseau
1215 4 September, 2003
1216 - removed a very _stupid_ bug that linked libpcsclite with libusb. Any
1217   application linked with libpcsclite was also linked with libusb.
1218 - generate a new library libmusclecard and remove MuscleCard code from
1219   libpcsclite. An application using MuscleCard functions needs to explicitly
1220   link with libmusclecard.
1221 - src/winscard_clnt.c: add a new function SCardUnload() to free allocated
1222   resources. It is mandatory only if you use dlopen/dlclose to often
1223   load/unload the library.  Otherwi se you will exhaust the resources
1224   available and get a crash.  Thanks to Guy Moreillon for the patch.
1225 - src/muscletest.c: code cleaning
1226
1227
1228 pcsc-lite-1.2.0-rc1: Ludovic Rousseau
1229 26 August, 2003
1230 - configure.in: --enable-usb is now deprecated and off by default.
1231   --enable-libusb is selected by default and will be used if libusb is
1232   installed in /usr. If libusb is installed in /usr/local use
1233   --enable-libusb=/usr/local
1234 - src/hotplug_macosx.c: Add support of reader aliases using <array></array> in
1235   driver Info.plist on MacOS X.
1236   The old syntax did not work since pcscd on MacOS X wants a correct XML file.
1237   The new syntax is:
1238     <key>ifdVendorID</key>
1239     <array>
1240         <string>0x08E6</string> <!-- 1, Gemplus -->
1241         <string>0x04E6</string> <!-- 2, SCM Microsystems -->
1242         <string>0x076B</string> <!-- 3, OmniKey -->
1243         <string>0x0783</string> <!-- 4, C3PO -->
1244     </array>
1245
1246     <key>ifdProductID</key>
1247     <array>
1248         <string>0x3437</string> <!-- 1 -->
1249         <string>0x5115</string> <!-- 2 -->
1250         <string>0x3021</string> <!-- 3 -->
1251         <string>0x0003</string> <!-- 4 -->
1252     </array>
1253
1254     <key>ifdFriendlyName</key>
1255     <array>
1256         <string>GemPC Twin</string>   <!-- 1 -->
1257         <string>SCR 335</string>      <!-- 2 -->
1258         <string>CardMan 3121</string> <!-- 3 -->
1259         <string>LTC31</string>        <!-- 4 -->
1260     </array>
1261 - src/powermgt_macosx.c, src/hotplug_macosx.c and some others: Add support of
1262   PCMCIA for MacOS X. Thanks to Stephen M. Webb.
1263 - src/hotplug_libusb.c: Add support of libusb. Allow to use USB readers on
1264   *BSD or any plateform supported by libusb. Thanks to Toni Andjelkovic for
1265   the great job.
1266   I also redesigned the code to support up to PCSCLITE_MAX_READERS readers
1267   whatever the driver they use.
1268 - src/musclecard.c:
1269   . fix an initialisation problem of pConnection->shareMode (thanks to Wan-Teh
1270   Chang)
1271   . avoid a memory leak (Toni Andjelkovic)
1272 - doc/example: sample demo application using pcsc-lite API
1273 - src/winscard.c:
1274   . pcscd reported card is present when there is no card in the reader
1275   . return SCARD_E_INVALID_PARAMETER for APDU of less than 4 bytes
1276 - src/winscard_svc.c: Sometimes unknown APDUs were being transmitted when
1277   'SCardStatus' function was invoked
1278 - some code cleanup and compilation problems removed.
1279
1280
1281 pcsc-lite-1.1.2beta5: Ludovic Rousseau
1282 30 May, 2003
1283 - src/winscard.c: SCardStatus(): do not return before filling buffers
1284 - src/winscard_clnt.c: SCardStatusTH(): simplify code and return correct
1285   results when buffers are too short or NULL is used
1286 - src/libpcsclite.pc.in: used to generated a pkg-config ".pc" file (thanks to
1287   Andreas Jellinghaus for the idea and the patch)
1288 - configure.in, src/Makefile.am, src/utils/installifd.c, doc/bundleTool.8.in,
1289   doc/pcscd.8.in, etc/reader.conf.in:
1290   . correct typos and include path configured by ./configure appear in the
1291   docs (thanks to Ville Skyttä)
1292 - src/utils/installifd.c:
1293   . replace gets() by fgets() to avoid buffer overflow.
1294   . Use sizeof() instead of constants.
1295   . do not use strdup() since it is useless.
1296   . print error messages when needed.
1297
1298
1299 pcsc-lite-1.1.2beta4: Ludovic Rousseau
1300 13 Apr, 2003
1301 - src/debuglog.c:
1302   . DebugLogSetLogType() set flags and not just _or_ them (allow unset)
1303   . use strncpy to avoid a possible buffer overflow
1304 - src/hotplug_linux.c:
1305   . code cleanup
1306   . support for driver aliases in Info.plist. The syntax is:
1307         <key>ifdProductString</key>
1308         <string>GemPC430</string>
1309
1310         <key>ifdVendorID</key>
1311         <string>0x08E6</string>
1312         <string>0x08E6</string>
1313         <string>0x08E6</string>
1314
1315         <key>ifdProductID</key>
1316         <string>0x0430</string>
1317         <string>0x0432</string>
1318         <string>0x0435</string>
1319
1320         <key>ifdFriendlyName</key>
1321         <string>GemPC430</string>
1322         <string>GemPC432</string>
1323         <string>GemPC435</string>
1324     So this driver will be used by the three possible readers.
1325 - src/Makefile.am:
1326   . support for driver aliases in Info.plist (use tokenparser.l instead of
1327     driverparser.l)
1328   . support for xBSD back
1329 - src/pcsclite.h:
1330   . rename "pcsc.pub" and "pcsc.comm" in "pcscd.pub" and "pcscd.comm"
1331 - src/tokenparser.l:
1332   . code reindentation
1333   . use DebugLogB()/DebugLogC with correct number of arguments
1334 - src/tokenparser.l:
1335   . regenerated from src/tokenparser.l
1336
1337
1338 pcsc-lite-1.1.2beta3: Ludovic Rousseau, David Corcoran
1339 7 Nov, 2002
1340 - Support for Sun Microsystems' SCF
1341 - Patches from Dmitry Djachenko to:
1342   . init g_rgSCard??Pci variable at compile time
1343   . return more meaningfull error codes in SCardReconnect()
1344   . return more information in SCardStatus()
1345   . accept pioRecvPci == NULL in SCardTransmit()
1346     according to MSDN (July 2002) : SCardTransmit description
1347      pioRecvPci
1348       [in, out] Pointer to the protocol header structure for the instruction,
1349       followed by a buffer in which to receive any returned protocol control
1350       information (PCI) specific to the protocol in use. This parameter may be
1351       NULL if no returned PCI is desired.
1352 - correct an overflow in SCardGetStatusChange(). Thanks to Michael Nidd
1353 - configure.in, src/pcscdaemon.c, src/pcsclite.h:
1354   . add --enable-ipcdir=DIR option. Default is now /var/run/ instead of
1355   /tmp/pcsc/
1356 - src/Makefile.am:
1357   . reorganise conditionals to to have a src/Makefile.in file 142 (yes 142)
1358   times smaller (33 KB instead of 4.7 MB)
1359 - src/eventhandler.c:
1360   . add filename and error message to error logs for /var/run/pcsc.pub
1361 - src/debuglog.h:
1362   . DebugLogC() uses 3 parameters not 2 (use DebugLogB() for that)
1363
1364
1365 pcsc-lite-1.1.2beta2: Ludovic Rousseau, David Corcoran, Jean-Luc Giraud
1366 12 Oct, 2002
1367 - OpenBSD 3.1 and FreeBSD 4.7RC2 debug and testing
1368 - MacOSX debug and improvement
1369 - support multiple identical USB readers under GNU/Linux
1370 - more debug
1371 - Bug in winscard.c for protocol when ANY is chosen
1372
1373 pcsc-lite-1.1.2beta1: (Ludovic Rousseau <ludovic.rousseau@free.fr>)
1374 6 Sep, 2002
1375 - src/tokenfactory.c, configure.in and bundleTool.c:
1376   . add support for --enable-muscledropdir=DIR
1377 - README:
1378   . The licence file is COPYING and not LICENSE (thanks to Juha Tuomala)
1379 - doc/formaticc.1:
1380   . add formaticc.1 manpage from Debian
1381 - doc/bundleTool.1:
1382   . update and rename from .8 to .1
1383 - src/utils/formaticc.c:
1384   . lots of debug and buffer overflow removal
1385 - src/ifdwrapper.c, src/debuglog.c, doc/pcscd.8:
1386   . add support for --apdu|-a
1387 - src/pcscdaemon.c:
1388   . add support for --apdu, test if the pcscd is still running before
1389     complaining that /tmp/pcsc is present
1390   . print an error message if the --debug argument is not known
1391 - src/Makefile.am:
1392   . add -Wl,--export-dynamic link option
1393 - src/hotplug_linux.c:
1394   . add support for --enable-usbdropdir=DIR
1395
1396
1397 pcsc-lite-1.1.1: (David Corcoran <corcoran@linuxnet.com>)
1398 5 Jun, 2002
1399 - src/readerfactory.c
1400   . Fixed multiple slot handling by adding dwFeeds to multiple slots
1401 - src/winscard_clnt.c
1402   . Fixed multi Establish/Release Context problem by removing CleanupClient
1403
1404
1405 pcsc-lite-1.1.0: (David Corcoran <corcoran@linuxnet.com>)
1406 28 May, 2002
1407 - src/mscdefines.h added
1408 - src/musclecard.c/.h added
1409   . Added client side token/card plugin interface
1410 - src/tokenfactory.c added
1411 - src/powermgt_macosx.h added
1412 - src/powermgt_macosx.c added
1413   . Support for sleep mode on OS X
1414 - src/tokenparser.l added
1415 - src/dyn_hpux modified with new include <errno.h>
1416 - src/winscard_svc.c
1417   . Added session checking so rogue clients cannot steal hCard values
1418 - src/readerfactory.c
1419   . removed world writable files in /tmp/pcsc
1420 - configure.in
1421   . Added support for SCF with SCF plugin
1422 - Added command line arguments for debug/daemon mode <cprados@yahoo.com>
1423 - Previous additions from Ludovic Rousseau <ludovic.rousseau@free.fr>
1424
1425 pcsc-lite-1.0.2beta5: (Ludovic Rousseau <ludovic.rousseau@free.fr>)
1426 10 Mar, 2002
1427 - src/pcscdaemon.c:
1428    . move the pid file creation earlier (before drivers loading)
1429    . allow to properly kill pcscd before or during driver loading
1430      this is useful when the driver init is buggy
1431 - src/pcsclite.h: change PCSCLITE_VERSION_NUMBER to 1.0.2.beta5
1432 - configure.in: change version number to 1.0.2.beta5
1433
1434
1435 pcsc-lite-1.0.2beta4: (Ludovic Rousseau <ludovic.rousseau@free.fr>)
1436 13 Feb, 2002
1437 - configure.in: change version number to 1.0.2.beta4
1438 (from Douglas Atique bugs report and patch)
1439 - etc/Makefile.am
1440    . add the files makeFMStyle, makeSTDStyle and moveFMCode to the
1441      distribution archive
1442 - src/Makefile.am
1443    . add the files sys_solaris.c, sys_hpux.c and powermgt_macosx.c to the
1444      distribution archive
1445 - src/pcscdaemon.c
1446    . ignore SIGHUP signal
1447    . remove pid file if USE_RUN_PID is defined
1448 - src/winscard_msg.c
1449    . move #ifdef PCSC_TARGET_SOLARIS _after_ the inclusion of config.h since
1450      PCSC_TARGET_SOLARIS is defined in config.h
1451
1452
1453 pcsc-lite-1.0.2beta3: (Ludovic Rousseau <ludovic.rousseau@free.fr>)
1454 10 Jan, 2002
1455 (from Carlos Prados Debian package)
1456 - configure.in
1457    . add AC_PREFIX_DEFAULT(/usr/local/pcsc) to install in /usr/local/pcsc by
1458    default
1459 - etc/
1460    . add makeFMStyle, makeSTDStyle and moveFMCode scripts
1461 - src/utils/Makefile.am
1462    . add EXTRA_DIST = sample.in sample.ibm sample.out
1463 - src/dyn_bsd.c
1464    . try without a leading '_' in cas of failure (needed by FreeBSD) thanks to
1465    Toni Andjelkovic <toni@soth.at> for the patch)
1466 - src/test.c
1467    . commented declarations on unused variables
1468    . corrected three %x to %lx for long arguments
1469 - README
1470    . add documentation for --enable-confdir and --enable-runpid
1471 - src/README_INTERNALS.txt: new file containing some documentation for source
1472   code hackers
1473 - src/Makefile.am: add EXTRA_DIST = README_INTERNALS.txt
1474 - src/pcscdaemon.c: the daemon now cleany stops the drivers before exiting
1475    . the global variable AraKiri is set in signal_trap()
1476    . this variable is checked in the main loop of SVCServiceRunLoop()
1477    . RFCleanupReaders() is then called if AraKiri
1478 - src/readerfactory.c: add RFCleanupReaders() to do the cleaning job at exit
1479 - src/test.c: change %x to %02X for the ATR bytes
1480 - src/debuglog.c and src/debuglog.h:
1481    . rewrote the DebugLog[ABCD] function
1482    . the function are now defines than include __FILE__ and __LINE__
1483    . the test #ifdef USE_SYSLOG if moved from the source code to the
1484      src/debuglog.c function only -> the source is more readable
1485    . the new log functions are now used everywhere
1486 - src/configfile.l:
1487    . changed syslog() to DebugLog()
1488    . add #include "debuglog.h"
1489 - README: add a supported platform: OpenBSD 3.0 (with libc.so.28.2)
1490 - Makefile.am: add HELP file to EXTRA_DIST
1491
1492
1493 pcsc-lite-1.0.2beta2: (Ludovic Rousseau <ludovic.rousseau@free.fr>)
1494 20 Dec, 2001
1495 - bootstrap: added --verbose
1496 - reconf: added --verbose and --enable-debug
1497 - configure.in:
1498    . changed release number to 1.0.2.beta2
1499    . added -Wall to CFLAGS to compile with all the warnings ON. This change
1500          implied many small corrections: mainly addition of include file to add
1501          functions prototyping, adding return values when needed, removing unused
1502          variables.
1503    . add doc/ directory (from Carlos Prados Debian package)
1504    . add --enable-confdir=DIR (default to /etc)
1505      inspiration from Shell Hin-Lik Hung, OpenBSD pcsc-lite port
1506    . add --enable-runpid=FILE to store the pcscd pid
1507      inspiration from Carlos Prados, Debian package maintainer
1508 - many C source files includes <pcsclite.h> (or similar). I changed to
1509   "pcsclite.h" since the local .h should be more recent and with less
1510   bugs than the one in /usr/local/include/
1511 - src/dyn_bsd.c, src/dyn_unix.c: in DYN_LoadLibrary() changed 0 to
1512   NULL, "char *" to "const char *"
1513 - src/dyn_hpux.c: removed declared but unused variables
1514 - src/ifdwrapper.c: initialize IFD_? functions pointer to NULL
1515 - src/pcscdaemon.c:
1516    . removed declaration of errno (already made in errno.h)
1517    . exit with code value
1518    . more explicit error message when /tmp/pcsc/ already exist
1519    . test if VERSION and PCSCLITE_VERSION_NUMBER are the same
1520      release numbers
1521    . create a file containing the PID (see configure --enable-runpid=FILE)
1522      ("stolen" from Carlos Prados Debian package)
1523 - src/readerfactory.c
1524    . removed unused variables
1525    . dwSlot is a long, use %ld instead of %d
1526    . changed "SCARD_F_UNKNOWN_ERROR;" to "return SCARD_F_UNKNOWN_ERROR;"
1527 - src/readerfactory.h: corrected "RVAllocateReaderSpace" to
1528   "RFAllocateReaderSpace" (RVA -> RFA)
1529 - sys_*.c: removed declaration of errno
1530 - src/sys_unix.c: add "return 0;" in SYS_Initialize()
1531 - winscard.c: in SCardReconnect()
1532    . initialize dwAction to 0
1533    . remove unused variables dwReaderLen and dwProtocol
1534 - src/winscard_clnt.c: commented out declaration and definition of
1535   SCardSetupThreadSafety(). It is not used anywhere.
1536 - src/winscard_msg.c:
1537    . add the error message "strerror(errno)" returned by the socket
1538      functions in the debug message logged
1539    . removed unused variables
1540    . removed (fd_set *) cast in select calls. (compiles OK without)
1541 - src/winscard_svc.c: add a "return 0;" in MSGCleanupClient()
1542 - src/winscard_svc.h: add prototype for MSGCleanupClient()
1543 - doc/Makefile.am: ("stolen" from Carlos Prados Debian package)
1544    . add this directory in dist files
1545 - Makefile.am: ("stolen" from Carlos Prados Debian package)
1546    . add doc directory
1547    . add reconf bootstrap in dist files
1548 - src/Makefile.am: ("stolen" from Carlos Prados Debian package)
1549    . add utils directory
1550    . remove libpcsclite-core.la from install target
1551    . add dyn_bsd.c dyn_hpux.c to EXTRA_libpcsclite_core_la_SOURCES
1552 - src/utils/Makefile.am: ("stolen" from Carlos Prados Debian package)
1553    . converted LIBS line into formaticc_LDADD line
1554 - src/hotplug_linux.c
1555    . add some includes files
1556    . commented useless declarations of hpManu_id, hpProd_id, bundleArraySize
1557 - src/utils/installifd.c
1558    . rv, dwRecvLength and dwSendLength are long, use %ld instead of %d
1559    . commented useless declarations of many variables
1560    . add some (int *) casts
1561 - etc/ ("stolen" from Carlos Prados Debian package)
1562    . added SmartcardServices
1563    . added StartupParameters.plist
1564 - src/debuglog.c:
1565    . put the ATR on just one line even with syslog
1566    . changed LOG_DEBUG to LOG_INFO since the LOG_DEBUG level messages are
1567      seldom logged
1568 - src/pcsclite.h: test if USE_READER_CONF is defined (see
1569      --enable-confdir=DIR)
1570
1571 pcsc-lite-1.0.2beta: (Ludovic Rousseau)
1572 29 Nov, 2001
1573 - stop if /tmp/pcsc already exists
1574 - clean and remove /tmp/pcsc on exit using signal() and atexit()
1575 - renamed SYS_Exit to exit in many places to use the atexit() defined
1576   cleaning function
1577 - removed \n in debug messages (syslog does not need it)
1578 - some minor print cosmetic modification in atrhandler.c
1579 - use a define DEBUG_BUFFER_LENGTH instead of 150 in debuglog.c
1580 - use snprintf() instead of sprintf() in debuglog.c
1581 - add a error on compile in pcscdaemon.c
1582    You must use '--enable-syslog' when also using '--enable-daemon' or
1583    you will not get any message
1584 - renamed SYS_Stat to SYS_Fstat since the system call is fstat and stat
1585   is another one
1586 - use PCSCLITE_IPC_DIR instead of repeating "/tmp/pcsc/" in pcsclite.h
1587
1588 pcsc-lite-1.0.1:
1589 added -fno-common to CCFLAGS
1590 fixed syslog error on ATR
1591 lengthened the default client timeout on commands
1592 fixed bus error when vendir/id not found
1593 Added support for HP-UX 11 and OpenBSD 2.9
1594 Removed callback socket from server
1595 Fixed GetStatusChange bug on small timeouts
1596 Fix bug in transmit where reader sends back
1597 wrong length causes client to overwrite buffer
1598
1599 pcsc-lite-1.0.0b:
1600 Fixed numerous NULL pointer errors
1601 Fixed many, many behaviors
1602 Tried Windows compatibility testing
1603 Switched to sockets based implementation
1604 Basically, it's had 2 months testing
1605
1606 pcsc-lite-0.9.3:
1607 Changed test.c
1608 Added buffered read/write layer
1609 Shortened timeouts on outgoing commands
1610 Added support for Solaris 2.6 2.8
1611 Fixed autoconf problems
1612 Added an option for client side thread safety
1613 Fixed '-' problem for bundleparser
1614
1615 pcsc-lite-0.9.1:
1616 Switched to named pipes for transport
1617 Fixed SCARD_POWERED tag when card inserted upside down
1618 Added non-polling request blocking
1619 Switched to autoconf thanks to some help
1620 Added timeouts for client/server
1621
1622 pcsc-lite-0.8.7:
1623 Added kernel IoKit notifications for USB devices on OS X
1624 Added polling support for USB devices on Linux
1625 Added XML parsing for bundles on Linux
1626 Fixed GetStatusChange's SCARD_READERSTATE structure problem
1627 Fixed random generation in EstablishContext ( Carl-Magnus Pettersson )
1628 Fixed RPC Channel leak in EstablishContext  ( Carl-Magnus Pettersson )
1629 Updated documentation to 0.8.7
1630
1631 pcsc-lite-0.8.6:
1632 Added empty file powermgt_macosx.c for future power management
1633 Added ability for multiple identical readers on OS X
1634 Fixed bug enabling SCardTransmit to pass memory card functions
1635 by allowing sSendPci to be NULL
1636 Fixed some possible buffer overrun exploits
1637
1638 pcsc-lite-0.8.5:
1639 Moved to 'fat client' architecture
1640 Mapped status to clients so events are immediate
1641 Removed fork() from server, and wait() calls
1642 Added multi readers to GetStatusChange
1643 Added block for reader in GetStatusChange
1644 Added Reader Lun naming mechanism for friendlynames
1645 Updated the documentation
1646
1647 pcsc-lite-0.8.2:
1648 Added more error checking to all winscard functions.
1649 Added the ability to use Domain Sockets on Linux, Solaris.
1650 Increased the select sleep time to conserve cpu time.
1651 Added the ability to recover from errors by reloading drivers/etc.
1652 Pre-allocated bundle array list to save cpu time and memory leakage.
1653 Added SECURITY file.
1654
1655 pcsc-lite-0.8.0:
1656 Added Hot Pluggable search function to select loop.
1657 Fixed Makefiles to do copies not moves
1658 Changed some filenames.
1659
1660 pcsc-lite-0.7.8:
1661 Fixed race condition between pcscusb and eventhandler.c
1662 Fixed core dump on error startup.
1663 Added T=1 detection to test.c.
1664 Added SCardControl()
1665
1666 pcsc-lite-0.7.5:
1667 Dynamically addable readers.
1668 Multiple dynamically addable readers.
1669 More startup error checking.
1670 Full support for OS X
1671
1672 pcsc-lite-0.7.3:
1673 Added stringified error responses.
1674 Fixed some error returning bugs.
1675 Support for dynamic readers such as USB readers.
1676 More support for OS X
1677
1678 pcsc-lite-0.7.1:
1679 Fixed bugs causing problems in Redhat regarding mutex pointers.
1680 Fixed exiting problem causing random zombie processes.
1681 Removed thread libs and dyn libs from local library.
1682 Abstracted thread libs in thread_generic.h
1683 Added support for Mac OS X.
1684
1685 pcsc-lite-0.7.0:
1686 Support for ifd handler 2.0 specifications.
1687
1688 pcsc-lite-0.6.9:
1689 Fixed bug in readerfactory.c that only allowed 2 applications
1690 to run simultaneously.
1691 Fixed bug in rpc/winscard.c so that some applications which
1692 while looped on Begin/End could not cause starvation.
1693
1694
1695 pcsc-lite-0.6.8
1696 Fixed mutex bug in readerfactory.c
1697 Added SCardListReaderGroups for compatibility
1698 Fixed NULL in for ListReaders
1699 Fixed NULL as pioRecvPci in Transmit
1700 Added multi-sys Makefiles
1701 Pulled Windows(r) defs from pcsclite.h
1702 Added INFINITE to GetStatusChange.
1703
1704 pcsc-lite-0.6.6
1705 Added application event notification on calls
1706 Added SCardReconnect
1707
1708 pcsc-lite-0.6.5
1709 Added -v option for version checking
1710 Added security module for future encryption/decryption
1711 Added function to allow only from localhost
1712 Added default values to all variables
1713 Proper freeing of all pointer values
1714 Fixed Reset on Disconnect
1715 Removed any dangerous pointer references
1716
1717 pcsc-lite-0.6.4
1718 Shortened the thread zombie cleanup time.
1719
1720 pcsc-lite-0.6.3
1721 Fixed readerfactory assignment of ID problem
1722
1723 pcsc-lite-0.6.2
1724 Using pthreads for status poll.
1725 Using pthread mutexes instead of test and set.
1726 Fixed problem in GetStatusChange.
1727 Fixed SCardBeginTransaction.
1728
1729 pcsc-lite-0.6.0
1730 Removed SCardReadMemory, SCardWriteMemory
1731 Added Mutex locks around all driver calls
1732 Added ability to do startup allocation
1733 Fixed memory leak in RFAddReader
1734 Removed some warnings
1735
1736 pcsc-lite-0.5.5
1737 Added multi-slot support
1738 Fixed T=0/1 protocol definition
1739
1740 pcsc-lite-0.5.2
1741 Fixed protocol negotiation
1742 Modified defines to work with OCF
1743
1744 pcsc-lite-0.5.0
1745 Fixed the Makefiles to include
1746 symbolic links to external libraries
1747
1748 pcsc-lite-0.4.9
1749 Added some objects to the client's
1750 library so it can be used with ssp-lite
1751
1752 pcsc-lite-0.4.7
1753 Added Server State Machine
1754 Kills dead clients and frees resources
1755 Added SCardSetTimeout
1756 Fixed Makefile for non-rpc
1757 Added BSD style Makefile for BSD compilation
1758 Fixed SCardRead/Write functions
1759
1760 pcsc-lite-0.4.0
1761 Fixed SCardStatus Function
1762 Added IFD Wrapper Abstraction Layer
1763 Began support for multiple slots
1764 Fixed bug in SCardStatus with overflow
1765 Added code to remove zombie processes
1766 Added support for connecting to multiple
1767 readers/resource managers from the client.
1768
1769 pcsc-lite-0.3.0:
1770 Added RPC abstraction layer.
1771 Added Server Forking on Transmit and GetStatusChange.
1772 Fixed overflowed buffer in atrhandler.c
1773 Fixed Disconnect Bug.
1774
1775 pcsc-lite-0.2.4:
1776 Added ATR Handling.
1777 Added support for T=1
1778 Added support for PTS negotiation
1779 Added abstraction for more slots/terminal
1780 Added correct ATR size return
1781
1782 pcsc-lite-0.2.2:
1783 Added some defines in pcsclite.h
1784 Added support for Memory cards.
1785 Added support for SCardCancel.
1786
1787 pcsc-lite-0.2.0:
1788 Fixed powering up error in GetStatusChange.
1789 Added some type defines in pcsclite.h
1790
1791 pcsc-lite-0.1.0:
1792 Fixed bug in readerfactory.c line 117 lpcReaders[p] = 0
1793 to lpcTReaders[p] = 0.  This was giving strange errors.
1794 Fixed return rv at SCardStatus function to return SCARD_S_SUCCESS.
1795 Added 7 more defines to pcsclite.h
1796
1797 pcsc-lite-0.0.2:
1798 Added functions Status, and GetStatusChange
1799 Fixed Connect to look for card
1800 Fixed return values for functions