Merge lp:~kalon33/ubuntu/natty/pcsc-lite/merge-1.7.0-2-from-unstable into lp:ubuntu/natty/pcsc-lite

Proposed by Nicolas DERIVE
Status: Merged
Merged at revision: 27
Proposed branch: lp:~kalon33/ubuntu/natty/pcsc-lite/merge-1.7.0-2-from-unstable
Merge into: lp:ubuntu/natty/pcsc-lite
Diff against target: 54050 lines
To merge this branch: bzr merge lp:~kalon33/ubuntu/natty/pcsc-lite/merge-1.7.0-2-from-unstable
Reviewer Review Type Date Requested Status
Martin Pitt Approve
Review via email: mp+54102@code.launchpad.net

This proposal supersedes a proposal from 2011-03-17.

Description of the change

New branch merging latest 1.7.0-2 version from Debian Unstable, as requested by Ludovic Rousseau (the upstream maintainer)

Builds fine, see:

https://launchpad.net/~kalon33/+archive/rfid/+buildjob/2331027 (With new packaging rules)

To post a comment you must log in.
Revision history for this message
Martin Pitt (pitti) wrote : Posted in a previous version of this proposal

Note that this merge moves libpcsclite.so.1.0.0 back from /lib/ to /usr/lib/, which we shouldn't do yet (before we also get a new wpasupplicant).

Also, why does this introduce all the flag mangling in debian/rules? The standard debhelper rules should handle nostrip, noopt, and parallel options just fine.

review: Needs Fixing
Revision history for this message
Nicolas DERIVE (kalon33) wrote : Posted in a previous version of this proposal

@pitti: the libpcsclite1.install file is here, where should I change this?
For debian/rules: so there is no need to keep any change in our rules or I keep usbdrop, confdir and prefix?

Thanks for your help.

Revision history for this message
Martin Pitt (pitti) wrote : Posted in a previous version of this proposal

> @pitti: the libpcsclite1.install file is here, where should I change this?

Same way as it was done before? The previous version did the moving in debian/rules:

       # move runtime libraries to /lib
       mv debian/libpcsclite1/usr/lib/libpcsclite.so.1* \
               debian/libpcsclite1/lib/
       rmdir -p --ignore-fail-on-non-empty debian/libpcsclite1/usr/lib
       ln -sf /lib/$$(readlink debian/libpcsclite-dev/usr/lib/libpcsclite.so) \
               debian/libpcsclite-dev/usr/lib/libpcsclite.so

So you might just do the same in an override_dh_install rule?

> For debian/rules: so there is no need to keep any change in our rules or I keep usbdrop, confdir and prefix?

If debian doesn't explicitly specify --enable-confdir=/var/lib/pcscd, then this might just be the default value? Likewise, --enable-usbdropdir=/usr/lib/pcsc/drivers might be the default as well?

The rest is not necessary.

Revision history for this message
Nicolas DERIVE (kalon33) wrote : Posted in a previous version of this proposal

> > @pitti: the libpcsclite1.install file is here, where should I change this?
>
> Same way as it was done before? The previous version did the moving in
> debian/rules:
>
> # move runtime libraries to /lib
> mv debian/libpcsclite1/usr/lib/libpcsclite.so.1* \
> debian/libpcsclite1/lib/
> rmdir -p --ignore-fail-on-non-empty debian/libpcsclite1/usr/lib
> ln -sf /lib/$$(readlink debian/libpcsclite-dev/usr/lib/libpcsclite.so)
> \
> debian/libpcsclite-dev/usr/lib/libpcsclite.so
>
> So you might just do the same in an override_dh_install rule?

I think it's done, what do you think?
>
> > For debian/rules: so there is no need to keep any change in our rules or I
> keep usbdrop, confdir and prefix?
>
> If debian doesn't explicitly specify --enable-confdir=/var/lib/pcscd, then
> this might just be the default value? Likewise, --enable-
> usbdropdir=/usr/lib/pcsc/drivers might be the default as well?

It seems that it was the case indeed.
>
> The rest is not necessary.
I dropped the rest.

Should I change other things?

Thanks for your help.

Revision history for this message
Martin Pitt (pitti) wrote :

Looks fine now, thanks!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'ChangeLog'
2--- ChangeLog 2010-07-10 11:15:59 +0000
3+++ ChangeLog 2011-03-19 11:52:23 +0000
4@@ -1,3 +1,249 @@
5+pcsc-lite-1.7.0: Ludovic Rousseau
6+9 March 2011
7+- use libudev instead of (the deprecated) libhal
8+
9+
10+pcsc-lite-1.6.7: Ludovic Rousseau
11+22 February 2011
12+- better Mac OS X support
13+- Fix Alioth bug [#312960] SCardDisconnect when other context has transaction
14+- add support of multi-interfaces readers with libusb and not just libhal
15+- add a API tracing feature in the client side (#define DO_TRACE)
16+- allow the use of tracing and profiling features from different
17+ application threads
18+- fix a problem with a multi-slots reader
19+- fix minor problems detected by the clang tool
20+- some other minor improvements and bug corrections
21+
22+
23+pcsc-lite-1.6.6: Ludovic Rousseau
24+12 December 2010
25+- SCardGetStatusChange(): fix a bug on 64-bits systems
26+- Fix another bug because of a regression in internal list manager
27+
28+
29+pcsc-lite-1.6.5: Ludovic Rousseau
30+3 December 2010
31+- Power on the card _only_ if an application requests a connection.
32+ You can disable the feature using DISABLE_ON_DEMAND_POWER_ON in
33+ src/pcscd.h.in
34+ If DISABLE_AUTO_POWER_ON is defined then do not automatically power on
35+ the card. The card will be powered on on the first SCardConnect()
36+ See http://ludovicrousseau.blogspot.com/2010/10/card-auto-power-on-and-off.html
37+- SCardReconnect(): return SCARD_E_NO_SMARTCARD when card is removed and
38+ SCARD_W_UNRESPONSIVE_CARD when card is unresponsive instead of
39+ SCARD_E_PROTO_MISMATCH
40+- Install pcscd as sgid pcscd instead of suid root
41+ See http://ludovicrousseau.blogspot.com/2010/09/pcscd-auto-start.html
42+- SCardSetTimeout() is no more provided. This function is not provided
43+ by Microsoft and is deprecated since 2004 in pcsc-lite.
44+- SCardCancelTransaction() is no more provided. This function is not
45+ provided by Microsoft and is deprecated since 2005 in pcsc-lite.
46+- Parsing the CCID Info.plist (159 readers supported) was, on a i386
47+ machine, done in 264306 µs and is now done 5547 µs => gain x47 or 4600%
48+ See http://ludovicrousseau.blogspot.com/2010/08/ram-and-cpu-improvements-in-pcsc-lite.html
49+- It is now possible to configure the local socket name to use using the
50+ environment variable PCSCLITE_CSOCK_NAME
51+ See http://ludovicrousseau.blogspot.com/2010/11/pcsc-client-and-server-on-two-different.html
52+- Wait until all connected readers have a chance to power up a possibly
53+ inserted card before accepting clients.
54+- restrict pcscd features when not run by root (so using suid): APDU
55+ logging or setting parameters are disabled for example
56+- fix compilation problem on kfreebsd-* systems
57+- PCSC/reader.h: HOST_TO_CCID_16() and HOST_TO_CCID_32() are now
58+ identity functions
59+ Since libccid 1.4.1 (revision 5252) the byte order is no more important
60+- If you want to use IFDHCreateChannel() instead of
61+ IFDHCreateChannelByName() then do not use any DEVICENAME line in the
62+ configuration file. IFDHCreateChannel() will then be called with the
63+ CHANNELID parameter.
64+- the CHANNELID parameter can also be a decimal number.
65+- Remove the support of IFDHandler v1 API. I don't know any driver using
66+ this API.
67+ See http://ludovicrousseau.blogspot.com/2010/10/ifdhandler-version-1-support-removed.html
68+- avoids a buffer overflow with badly formed ATR
69+- some other minor improvements and bug corrections
70+
71+
72+pcsc-lite-1.6.4: Ludovic Rousseau
73+15 August 2010
74+- Do not use sysconfdir as configuration directory but
75+ "${sysconfdir}/reader.conf.d" instead.
76+ Use --enable-confdir=DIR if you want to set a specific value without
77+ the "reader.conf.d" appended.
78+
79+
80+pcsc-lite-1.6.3: Ludovic Rousseau
81+15 August 2010
82+- "/reader.conf.d" is only appended to sysconfdir if no value of
83+ sysconfdir is provided
84+- Define LPSCARD_READERSTATE since this is used in the MSDN prototype.
85+ Use LPSCARD_READERSTATE in winscard.h instead of (SCARD_READERSTATE *)
86+ to mimic the MSDN API.
87+- fix a pcscd crash when the application uses a PCSC handle after a
88+ fork. The crash was with openvpn.
89+- some other minor improvements and bug corrections
90+
91+pcsc-lite-1.6.2: Ludovic Rousseau
92+4 August 2010
93+- implement a "Forced suicide" mechanism.
94+ After 3 Ctrl-C without much reaction from pcscd (in fact the drivers)
95+ we force the suicide. Sometimes libusb is blocked in a kind of
96+ dead-lock and kill -9 was the only option.
97+- Add support of TAG_IFD_STOP_POLLING_THREAD to request the stop of the
98+ driver polling function.
99+- Avoid a division by 0. Closes [#312555] "simclist bug in pcsc-lite"
100+- if pcscd is stared by libpcsclite then close all file handles except
101+ stdin, stdout and stderr so that pcscd does not confiscate ressources
102+ allocated by the application
103+- in case of auto exit create a new session so that Ctrl-C on the
104+ application will not also quit pcscd
105+- src/hotplug_libusb.c: port from libusb-0.1 to libusb-1.0
106+- default configuration is now $sysconfdir/reader.conf.d
107+- fix crash with empty config dir
108+- src/PCSC/winscard.h: Remove definitions of SCARD_READERSTATE_A
109+ PSCARD_READERSTATE_A and LPSCARD_READERSTATE_A types
110+- some other minor improvements and bug corrections
111+
112+
113+pcsc-lite-1.6.1: Ludovic Rousseau
114+4 June 2010
115+- SCardControl(): do not check for card events since we are talking to
116+ the reader not the card. A smart card removal should not make
117+ SCardControl() fail with SCARD_W_REMOVED_CARD
118+- pcscd do not timeout any more after 2 minutes of inactivity. If the
119+ other side of the socket dies we will get an error from the kernel.
120+ The problem was that if a client does nothing during
121+ PCSCLITE_READ_TIMEOUT (120 seconds by default) then pcscd considers it
122+ as a dead client and closes the connection. I guess this problem was
123+ present since the first version of pcsc-lite but nobody complained
124+ before.
125+- pcscd: do not return before most of the initialisation are done
126+ correctly. The idea is that pcscd can return an error code if the
127+ daemon fails to start correctly (hald not started for example).
128+ Before the patch pcscd became a daemon, then returned 0 (success) and
129+ then continued with the initialisation. If the initialisation failed
130+ it was too late to return an error code. The /etc/init.d/pcscd script
131+ was not aware of the failure.
132+ Closes https://bugzilla.redhat.com/show_bug.cgi?id=580321
133+ "/usr/sbin/pcscd exit codes broken"
134+- src/hotplug_libusb.c: Add a synchronisation so that if pcscd is auto
135+ started the initial reader list is available before the server takes
136+ commands from clients.
137+ Before the change early calls of SCardListReaders() returned an empty
138+ list of readers even if a reader was connected.
139+ Thanks to Patrice Angelini for the bug report
140+- SCardConnect() & SCardReconnect(): do not reset the cardProtocol in
141+ SCARD_SHARE_DIRECT case since the card have _not_ been reseted. A new
142+ PPS negociation would fail.
143+- Do not install files in /etc any more. Serial drivers are rare now.
144+- Avoids a crash if a client sends a unknown command.
145+ Thanks to Martin Vogt for the bug report
146+- some other minor improvements and bug corrections
147+
148+
149+pcsc-lite-1.6.0: Ludovic Rousseau
150+5 May 2010
151+- redesign the client/server communication:
152+ * no more shared memory used (allow pcscd and libpcsclite1.so to be on
153+ different computer and talk over a network)
154+ * no more difference between short and extended APDU
155+ * no more use of a /var/run/pcscd/pcscd.events/ directory. events are
156+ sent through the socket
157+ * simpler command format between client and server
158+ The side effect is that you are not able to mix an old pcscd with a
159+ new libpcsclite1.so or the reverse. SCardEstablishContext() will fail
160+ unless you update both sides of the communication.
161+- Use lists instead of fixed size arrays to store handles.
162+ It is now possible to have:
163+ - 200 simultaneous PC/SC clients instead of 16
164+ - 200 SCardConnect per client instead of 16
165+ - 200 clients per reader instead of 16
166+ The default value of 200 can be changed by giving an argument to pcscd
167+ --max-thread --max-card-handle-per-thread --max-card-handle-per-reader
168+ Thanks to Jean-Luc Giraud for the big patch
169+- Make SCardReconnect(), SCardStatus() and SCardTransmit() block instead
170+ of returning SCARD_E_SHARING_VIOLATION immediately. These functions
171+ will then behave like on Windows.
172+ This can happen if these functions are called when the reader is
173+ locked by a PCSC transaction
174+ (SCardBeginTransaction/SCardEndTransaction).
175+ You can define the environment variable PCSCLITE_NO_BLOCKING to use
176+ the old behavior.
177+ Thanks to Jean-Luc Giraud for the patch.
178+ http://archives.neohapsis.com/archives/dev/muscle/2010-q1/0041.html
179+- SCardEstablishContext(): try to start the pcscd daemon if not already
180+ running.
181+ . pcscd will suicide itself after 60 seconds of inactivity if it is
182+ started using --auto-exit. This is the default behavior when pcscd is
183+ started by libpcsclite
184+ . Set PCSCLITE_PCSCD_ARGS with the argument you want to pass to pcscd in
185+ autostart Only one argument is passed. The space character is not a
186+ separator. example: export PCSCLITE_PCSCD_ARGS=-dfa
187+- SCardListReaders(): can use SCARD_AUTOALLOCATE
188+- SCardGetAttrib(): return SCARD_E_INSUFFICIENT_BUFFER if the driver
189+ returns IFD_ERROR_INSUFFICIENT_BUFFER
190+ . add support of SCARD_ATTR_DEVICE_FRIENDLY_NAME as it is better
191+ implemented in pcscd (it knows the friendly name)
192+- SCardGetStatusChange(): Calling with cReaders == 0 will now just
193+ return SCARD_S_SUCCESS
194+ . Use the special reader name "\\?PnP?\Notification" to wait for a
195+ reader event notification
196+- SCardTransmit(): do not limit the minimum size of an APDU to 4 bytes.
197+ non ISO 7816-4 compliant cards (like Mifare DESFIRE) may use shorter
198+ commands
199+- SCardStatus(): returns SCARD_E_SHARING_VIOLATION if the reader is
200+ already used More conform to Windows
201+- PCSC/reader.h: update sruct PIN_PROPERTIES_STRUCTURE to be conform
202+ with Revision 2.02.06, April 2009 of PCSCv2 part 10 Fields
203+ wLcdMaxCharacters and wLcdMaxLines have been removed
204+ . rename FEATURE_MCT_READERDIRECT in FEATURE_MCT_READER_DIRECT to be
205+ conform with ch. 2.3 of PCSC v2 part 10
206+ . add FEATURE_GET_TLV_PROPERTIES and FEATURE_CCID_ESC_COMMAND from
207+ PC/SC part 10 v2.02.07 March 2010
208+ . Add PCSCv2_PART10_PROPERTY_* defines
209+- SCardControl() return SCARD_E_UNSUPPORTED_FEATURE if the driver
210+ returned IFD_ERROR_NOT_SUPPORTED or IFD_NOT_SUPPORTED This is used to
211+ separate an unsupported value of ControlCode from a general error
212+- Use the standard --sysconfdir=DIR ($prefix/etc by default) instead of
213+ --enable-confdir=DIR for defining the directory containing reader.conf
214+- remove SCF support (PC/SC over Smart Card Framework). I never used
215+ this feature and SCF is now dead and replaced by JSR 268
216+ (javax.smartcardio)
217+- Better handling of PCSCLITE_STATIC_DRIVER as can be used on platforms
218+ using µClinux (without dynamic loader). This is used to statically
219+ link the reader driver to pcscd. Since the link is static you must
220+ define the IFDHandler API version at compilation time. Either define
221+ IFDHANDLERv1, IFDHANDLERv2 or IFDHANDLERv3
222+- Use dynamic instead of static allocation for the driver library
223+ filename. The filename is no more limited to 100 characters.
224+ Closes: [#312332] MAX_LIBNAME too short?
225+- force the return codes SCARD_* to be long since the SCard* functions
226+ return a LONG type
227+- Add the ability to parse all the configuration files of a directory
228+ instead of just one configuration file. update-reader.conf is then now
229+ obsolete.
230+- Add --enable-embedded (default is no) to build pcsc-lite for an
231+ embedded system. This will activate the NO_LOG option to disable
232+ logging and limit RAM and disk consumption.
233+- If NO_LOG is defined then no log are displayed. The idea is to limit
234+ the binaries size on disk and RAM consumption at execution time.
235+ With NO_LOG defined we gain 26% (17 kB) for the .text segment of pcscd
236+ and 15% (4 kB) for the .text segment of libpcsclite.so (for i386)
237+- Define a minimal pcsc_stringify_error() if NO_LOG is defined. Only the
238+ error code in hex is displayed in this case.
239+ Gain: 2kB of .text (10%) for libpcsclite
240+- Add --disable-serial and --disable-usb options
241+ --disable-serial removes support of /etc/reader.conf gain: 8.0kB of
242+ .text (12%) and 160 bytes of .bss (4%) for pcscd
243+ --disable-usb removes support of USB hotplug gain: 9.7kB of .text
244+ (14%) and 960 bytes of .bss (23%) for pcscd
245+ If you use both options (and use a static driver configuration) gain:
246+ 17.7kB of .text (26%) and 1152 bytes of .bss (28%) for pcscd
247+- Better support of Android
248+- some other minor improvements and bug corrections
249+
250+
251 pcsc-lite-1.5.5: Ludovic Rousseau
252 28 July 2009
253 - add the reader interface name if provided by the device
254@@ -40,7 +286,7 @@
255 - reader.h: add PIN_PROPERTIES_STRUCTURE structure and FEATURE_IFD_PIN_PROPERTIES
256 Thanks to Martin Paljak for the patch
257 - remove powermgt_macosx.c since it is using APSL version 1.1 instead of
258- the BSD-like licence like the other files
259+ the BSD-like licence like the other files
260 Thanks to Stanislav Brabec for the bug report
261 - avoid a possible crash due to a race condition
262 Thanks to Matheus Ribeiro for the patch
263@@ -65,7 +311,7 @@
264 - log TxBuffer and RxBuffer if the SCardControl() command failed.
265 Closes: [#311376] PCSC_LOG_VERBOSE via -dd; print details of "Card not
266 transacted"
267-- add a mutex to avoid a race condition
268+- add a mutex to avoid a race condition
269 Closes: [#311377] Race condition in SCardBeginTransaction
270 - SCardGetStatusChange() may not return if the reader was removed.
271 - some other minor improvements and bug corrections
272@@ -105,7 +351,7 @@
273
274 pcsc-lite-1.4.102: Ludovic Rousseau
275 27 June 2008
276-- pcscd -v now displays the enabled features
277+- pcscd -v now displays the enabled features
278 - add support of SCARD_AUTOALLOCATE in SCardListReaders(),
279 SCardListReaderGroups() and SCardGetAttrib
280 - add SCardFreeMemory()
281@@ -148,7 +394,7 @@
282 in case of "PCSC Not Running" or "PCSC restarted" so that nothing is
283 logged by default. PCSCLITE_DEBUG can be defined to see the message.
284 Programs linked with libpcsclite will not display anything if pcscd is
285- not running. Solves Red Hat bug 428299.
286+ not running. Solves Red Hat bug 428299.
287 - default log level is PCSC_LOG_CRITICAL+1 so that NO log is sent to
288 stderr by default. You need to explicitly set PCSCLITE_DEBUG to have
289 logs. (in a library stderr(2) can be any file opened with fd=2 so
290
291=== modified file 'ChangeLog.svn'
292--- ChangeLog.svn 2010-07-10 11:15:59 +0000
293+++ ChangeLog.svn 2011-03-19 11:52:23 +0000
294@@ -1,3 +1,2619 @@
295+2011-03-09 Ludovic Rousseau
296+
297+ * [r5650] ChangeLog: Typo caused by autocompletion without check
298+ * [r5649] ChangeLog, configure.in: release 1.7.0
299+
300+2011-02-25 Ludovic Rousseau
301+
302+ * [r5638] configure.in, src/Makefile.am, src/PCSC/ifdhandler.h,
303+ src/hotplug_generic.c, src/hotplug_libhal.c,
304+ src/hotplug_libudev.c, src/hotplug_linux.c: Use libudev instead
305+ of (deprecated) libhal for the USB hotplug mechanism.
306+
307+2011-02-24 Ludovic Rousseau
308+
309+ * [r5636] src/hotplug_libusb.c: Remove debug printf()
310+
311+2011-02-22 Ludovic Rousseau
312+
313+ * [r5628] ChangeLog, configure.in: release 1.6.7
314+
315+2011-02-21 Ludovic Rousseau
316+
317+ * [r5621] src/hotplug_libusb.c: If a device has more than one CCID
318+ interface the "libhal:" naming scheme (with the interface number
319+ included) is used instead of "libusb:".
320+
321+ The new mechanism allows to use multi-interfaces devices like the
322+ Gemalto ProxDU also with hotplug_libusb. libhal is deprecated and
323+ may not be available everywhere.
324+
325+ Thanks to Diego Elio Pettenò for the patch (for Gentoo)
326+
327+2011-02-10 Ludovic Rousseau
328+
329+ * [r5589] src/winscard_clnt.c: Move the definition of DO_TRACE,
330+ DO_PROFILE, and DO_CHECK_SAME_PROCESS at the top of the file, and
331+ add documentation.
332+
333+2011-02-09 Ludovic Rousseau
334+
335+ * [r5587] src/Makefile.am: Do not create empty directories
336+ .../pcsc/drivers and .../pcsc/services any more. The needed
337+ directory is created by the driver instead.
338+
339+2011-02-04 Ludovic Rousseau
340+
341+ * [r5584] UnitaryTests/ThreadSafe.py, UnitaryTests/stress_apdu.py:
342+ Fix PEP8 warnings
343+ * [r5583] UnitaryTests/ThreadSafe.py: Display the thread id and
344+ iterations
345+ * [r5582] UnitaryTests/SCard_fork.py: Better documentation and
346+ debug
347+ * [r5581] src/winscard_clnt.c: Add a missing variable declaration
348+ used if DO_CHECK_SAME_PROCESS is defined
349+ * [r5580] UnitaryTests/SCardConnect_DIRECT.py: Test the behavior as
350+ documented in revision 5579
351+ * [r5579] src/winscard_clnt.c: Doxygen: CardConnect() &
352+ SCardReconnect() pdwActiveProtocol is not set to
353+ SCARD_PROTOCOL_UNDEFINED if SCARD_SHARE_DIRECT is used but the
354+ card has already negociated its protocol
355+
356+2011-02-01 Ludovic Rousseau
357+
358+ * [r5575] UnitaryTests/SCardBeginTransaction_ExclusiceMode.py:
359+ Unitary test for Alioth bug [#312960] SCardDisconnect when other
360+ context has transaction
361+ * [r5574] src/winscard.c: SCardDisconnect(): RFUnlockAllSharing()
362+ may fail with SCARD_E_SHARING_VIOLATION if a transaction is on
363+ going on another card context and dwDisposition ==
364+ SCARD_LEAVE_CARD. We should not stop and continue disconnecting
365+ the card.
366+
367+ Fixes Alioth bug [#312960] SCardDisconnect when other context has
368+ transaction
369+ * [r5573] UnitaryTests/SCardConnect_DIRECT2.py: Use the protocol
370+ negociated by SCardConnect() instead of hard coding SCARD_PCI_T1
371+ * [r5572] src/winscard_clnt.c: SCardDisconnect(): remove the card
372+ handle only if SCARD_DISCONNECT command succeeded on the server
373+
374+ Related to alioth bug [#312960] SCardDisconnect when other
375+ context has transaction If a first SCardDisconnect() fails with
376+ SCARD_E_SHARING_VIOLATION it is now possible to try again
377+ SCardDisconnect(). Before the patch the second call to
378+ SCardDisconnect() returned SCARD_E_INVALID_HANDLE but the
379+ connection was still "in use".
380+
381+2011-01-29 Ludovic Rousseau
382+
383+ * [r5569] src/PCSC/ifdhandler.h, src/readerfactory.h: Revert
384+ revision 5568 since it has side effect on driver compilation
385+ (like libccid fails to build)
386+ * [r5568] src/PCSC/ifdhandler.h, src/readerfactory.h: Move #include
387+ "pcsclite.h" from PCSC/ifdhandler.h to readerfactory.h so that
388+ ifdhandler.h can be used as-is on Mac OS X (for handler_test.c)
389+ * [r5567] src/eventhandler.c, src/ifdwrapper.c, src/prothandler.c,
390+ src/readerfactory.c: Remove useless #include "ifdhandler.h"
391+
392+2011-01-27 Ludovic Rousseau
393+
394+ * [r5560] src/winscard_clnt.c: SCardSetAttrib(): add profiling
395+ calls
396+ * [r5559] src/winscard_clnt.c: SCardGetSetAttrib(): remove a call
397+ to PROFILE_END() since this is already done in SCardGetAttrib()
398+ * [r5558] src/winscard_clnt.c: profiling: compare threads using
399+ pthread_equal() instead of == to make the code more portable.
400+ * [r5557] src/winscard_clnt.c: SCardGetAttrib(): Always exit from
401+ the same point so that profiling does work even in case of error
402+ * [r5556] src/winscard_clnt.c: profile_end(): add a missing \n in
403+ the warning message
404+ * [r5555] src/winscard_clnt.c: Send API traces do stderr instead of
405+ stdout
406+
407+2011-01-25 Ludovic Rousseau
408+
409+ * [r5550] src/winscard_clnt.c: SCardReleaseContext(): Always exit
410+ from the same point so that profiling does work even in case of
411+ error
412+ * [r5549] src/winscard_clnt.c: SCardCancel(): Always exit from the
413+ same point so that profiling does work even in case of error
414+ * [r5548] src/winscard_clnt.c: Profiling: allow to support up to
415+ MAX_THREADS simultaneous calls
416+
417+ For example SCardCancel() is called from another thread when
418+ SCardGetStatusChange() is running. This was not supported.
419+ * [r5547] src/winscard_clnt.c: Use color names macros
420+ * [r5546] src/winscard_clnt.c: Add API tracing with arguments
421+ display
422+ * [r5545] src/winscard_clnt.c: SCardGetStatusChange(): Always exit
423+ from the same point so that profiling does work even in case of
424+ error
425+ * [r5544] src/winscard_clnt.c: SCardDisconnect(): Always exit from
426+ the same point so that profiling does work even in case of error
427+
428+2011-01-21 Ludovic Rousseau
429+
430+ * [r5543] src/configfile.l: Display the correct line number if
431+ garbage is found in the configuration file
432+
433+2011-01-20 Ludovic Rousseau
434+
435+ * [r5539] src/winscard_svc.c: contextsListhContext_seeker(): avoid
436+ a potential crash if NULL values are used
437+
438+ src/winscard_svc.c:90:22: warning: Dereference of null pointer if
439+ (currentContext->hContext == *(int32_t *)key) ^
440+ src/winscard_svc.c:90:34: warning: Dereference of null pointer if
441+ (currentContext->hContext == *(int32_t *)key) ^
442+ * [r5538] src/winscard_clnt.c: SCardStatus(): initialize a dummy
443+ variable to avoid warnings
444+
445+ src/winscard_clnt.c:1451:2: warning: Assigned value is garbage or
446+ undefined dwReaderLen = *pcchReaderLen; ^ ~~~~~~~~~~~~~~
447+ src/winscard_clnt.c:1452:2: warning: Assigned value is garbage or
448+ undefined dwAtrLen = *pcbAtrLen; ^ ~~~~~~~~~~
449+ * [r5537] src/winscard_clnt.c: Avoid a potential crash if NULL
450+ values are used
451+
452+ src/winscard_clnt.c:226:27: warning: Dereference of null pointer
453+ if (channelMap->hCard == *(SCARDHANDLE *)key) ^
454+ src/winscard_clnt.c:226:18: warning: Dereference of null pointer
455+ if (channelMap->hCard == *(SCARDHANDLE *)key) ^
456+ src/winscard_clnt.c:260:18: warning: Dereference of null pointer
457+ if (contextMap->hContext == *(SCARDCONTEXT *) key) ^
458+ src/winscard_clnt.c:260:30: warning: Dereference of null pointer
459+ if (contextMap->hContext == *(SCARDCONTEXT *) key) ^
460+ * [r5536] src/winscard_clnt.c: SCardEstablishContext(): remove
461+ useless affectation
462+
463+ src/winscard_clnt.c:439:5: warning: Value stored to 'ret' is
464+ never read ...ret = execl(PCSCD_BINARY, "pcscd", "--auto-exit",
465+ param, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
466+ * [r5535] src/winscard_clnt.c: SCardEndTransaction(): remove
467+ useless code
468+
469+ src/winscard_clnt.c:1269:2: warning: Value stored to 'randnum' is
470+ never read randnum = 0; ^
471+ * [r5534] src/winscard.c: remove unused affectations
472+
473+ src/winscard.c:565:4: warning: Value stored to 'rv' is never read
474+ rv = IFDPowerICC(rContext, IFD_POWER_DOWN, NULL, NULL); ^
475+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
476+ src/winscard.c:835:4: warning: Value stored to 'rv' is never read
477+ rv = IFDPowerICC(rContext, IFD_POWER_DOWN, NULL, NULL); ^
478+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
479+ src/winscard.c:1095:4: warning: Value stored to 'rv' is never
480+ read rv = IFDPowerICC(rContext, IFD_POWER_DOWN, NULL, NULL); ^
481+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
482+ * [r5533] clang-analyze.sh: Do not analyze tokenparser.c since it
483+ is generated by flex
484+ * [r5532] src/readerfactory.c: RDR_CLIHANDLES_seeker(): avoid a
485+ potential crash if NULL values are used
486+
487+ src/readerfactory.c:72:30: warning: Dereference of null pointer
488+ if (rdrCliHandles->hCard == *(SCARDHANDLE *)key) ^
489+ src/readerfactory.c:72:21: warning: Dereference of null pointer
490+ if (rdrCliHandles->hCard == *(SCARDHANDLE *)key) ^
491+ * [r5531] src/readerfactory.c: RFAddReader(): remove unused
492+ affectation
493+
494+ src/readerfactory.c:344:4: warning: Value stored to 'rv' is never
495+ read rv = RFRemoveReader(readerName, port); ^
496+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
497+ * [r5530] src/readerfactory.c: RFAddReaderHandle(): return the
498+ error code if any
499+
500+ src/readerfactory.c:1116:3: warning: Value stored to 'rv' is
501+ never read rv = SCARD_E_NO_MEMORY; ^ ~~~~~~~~~~~~~~~~~
502+ src/readerfactory.c:1103:3: warning: Value stored to 'rv' is
503+ never read rv = SCARD_E_NO_MEMORY; ^ ~~~~~~~~~~~~~~~~~
504+ src/readerfactory.c:1095:3: warning: Value stored to 'rv' is
505+ never read rv = SCARD_E_NO_MEMORY; ^ ~~~~~~~~~~~~~~~~~
506+
507+2011-01-18 Ludovic Rousseau
508+
509+ * [r5525] src/pcscdaemon.c: Remove useless code
510+
511+ src/pcscdaemon.c:85:2: warning: Value stored to 'rv' is never
512+ read rv = 0; ^ ~ src/pcscdaemon.c:175:2: warning: Value stored to
513+ 'rv' is never read rv = 0; ^ ~
514+ * [r5524] src/ifdwrapper.c: IFDPowerICC(): remove useless code
515+
516+ src/ifdwrapper.c:294:2: warning: Value stored to 'ret' is never
517+ read ret = ATRDecodeAtr(&sSmartCard, pucAtr, *pdwAtrLen); ^
518+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
519+ src/ifdwrapper.c:268:2: warning: Value stored to 'rv' is never
520+ read rv = IFD_SUCCESS; ^ ~~~~~~~~~~~
521+ * [r5523] src/eventhandler.c: EHStatusHandlerThread(): check the
522+ return value of IFDStatusICC()
523+
524+ Thanks to clang(1) for the warning src/eventhandler.c:235:2:
525+ warning: Value stored to 'rv' is never read rv =
526+ IFDStatusICC(rContext, &dwStatus); ^
527+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
528+ * [r5522] src/eventhandler.c: EHStatusHandlerThread(): remove
529+ unused code
530+
531+ src/eventhandler.c:233:2: warning: Value stored to
532+ 'dwCurrentState' is never read dwCurrentState = 0; ^ ~
533+ src/eventhandler.c:232:2: warning: Value stored to
534+ 'readerSharing' is never read readerSharing = 0; ^ ~
535+ * [r5521] src/atrhandler.c: ATRDecodeAtr(): remove unused code
536+
537+ src/atrhandler.c:55:2: warning: Value stored to 'p' is never read
538+ p = K = TCK = Y1i = T = 0; ^ ~~~~~~~~~~~~~~~~~~~~~
539+ src/atrhandler.c:55:6: warning: Although the value stored to 'K'
540+ is used in the enclosing expression, the value is never actually
541+ read from 'K' p = K = TCK = Y1i = T = 0; ^ ~~~~~~~~~~~~~~~~~
542+ src/atrhandler.c:55:10: warning: Although the value stored to
543+ 'TCK' is used in the enclosing expression, the value is never
544+ actually read from 'TCK' p = K = TCK = Y1i = T = 0; ^ ~~~~~~~~~~~
545+ src/atrhandler.c:55:16: warning: Although the value stored to
546+ 'Y1i' is used in the enclosing expression, the value is never
547+ actually read from 'Y1i' p = K = TCK = Y1i = T = 0; ^ ~~~~~
548+ src/atrhandler.c:55:22: warning: Although the value stored to 'T'
549+ is used in the enclosing expression, the value is never actually
550+ read from 'T' p = K = TCK = Y1i = T = 0; ^ ~
551+ * [r5520] clang-analyze.sh: script to call clang --analyze
552+ * [r5519] splint.sh: No more scf files since revision 4486
553+ * [r5518] src/winscard_clnt.c: SCardGetStatusChange(): avoids a
554+ compiler warning
555+
556+ winscard_clnt.c:1875:33: warning: comparison of integers of
557+ different signs: 'uint32_t' (aka 'unsigned int') and 'int'
558+ [-Wsign-compare] ...if (rContext->eventCounter != currentCounter)
559+ ~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~
560+ * [r5517] src/readerfactory.c: Add an explicit cast to avoid a
561+ compiler warning
562+
563+ readerfactory.c:1033:45: warning: comparison of integers of
564+ different signs: 'unsigned long' and 'SCARDHANDLE' (aka 'long')
565+ [-Wsign-compare] if ((rContext->dwIdentity + randHandle) ==
566+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
567+
568+2011-01-14 Ludovic Rousseau
569+
570+ * [r5509]
571+ UnitaryTests/SCardGetStatusChange/SCardGetStatusChange_PnP.py:
572+ Also initialize the state of the PnP special reader (For Mac OS
573+ X)
574+ * [r5508] src/hotplug_macosx.c: HPSearchHotPluggables(): use the
575+ same naming convention as used by Apple PC/SC layer on Leopard
576+ (and later). The reader friendly name is used instead of
577+ "usb:%04x/%04x" as documented in IFDHandler v3 API at
578+ http://pcsclite.alioth.debian.org/api/group__IFDHandler.html#gabb9fe35a68fa080ce9397f0b830b1e7e
579+
580+ The same driver source code can be used by Apple PC/SC layer and
581+ by this pcsc-lite.
582+ * [r5507] src/hotplug_macosx.c: Fix compiler warning
583+
584+ hotplug_macosx.c: In function ‘HPDriversGetFromDirectory’:
585+ hotplug_macosx.c:150: warning: comparison between signed and
586+ unsigned
587+ * [r5506] c.sh: Remove commented CFLAGS definition
588+ * [r5505] src/PCSC/pcsclite.h.in, src/PCSC/wintypes.h: Mac OS X
589+ "port" - Define Windows types as they are defined on Mac OS X in
590+ /System/Library/Frameworks/PCSC.framework/Headers/wintypes.h -
591+ Pack structures as they are packed on Mac OS X in
592+ /System/Library/Frameworks/PCSC.framework/Headers/pcsclite.h
593+
594+ With these changes it is possible to build this pcsc-lite on Mac
595+ OS X and use it with an application built using the PCSC
596+ Framework headers provided by Apple.
597+
598+ One application is to temporarily replace the Apple PCSC layer by
599+ a better/working one.
600+ * [r5504] src/PCSC/pcsclite.h.in: Use LONG instead of long for
601+ SCARDCONTEXT and SCARDHANDLE so that the exact type can be easily
602+ changed by editing PCSC/wintypes.h
603+
604+ By default: typedef long LONG; so no change
605+
606+2011-01-13 Ludovic Rousseau
607+
608+ * [r5501] doc/pcscd.8.in: Remove references to a init.d/pcscd
609+ script since pcscd is autostarted by default now.
610+ * [r5500] doc/reader.conf.5.in: Use @confdir_exp@ instead of
611+ (removed) @confdir@
612+
613+2011-01-12 Ludovic Rousseau
614+
615+ * [r5498] doc/pcscd.8.in: Use @confdir_exp@ instead of
616+ @sysconfdir_exp@
617+
618+ Closes [#312929] @sysconfdir_exp@ not expanded in manual page
619+
620+2011-01-07 Ludovic Rousseau
621+
622+ * [r5496] src/readerfactory.c: RFAddReader(): correctly initialize
623+ the pthCardEvent field for the other slots. The bug occured with
624+ a multi slot reader and a driver with no
625+ TAG_IFD_POLLING_THREAD_WITH_TIMEOUT function (as is the case with
626+ my CCID driver since revision 5495)
627+
628+2011-01-06 Ludovic Rousseau
629+
630+ * [r5491] UnitaryTests/SCardConnect_DIRECT2.py: Add comments
631+ * [r5490] src/winscard.c: SCardDisconnect(): Switch to
632+ POWER_STATE_GRACE_PERIOD unless the card was not powered
633+
634+ In the previous implementation the state was changed to
635+ POWER_STATE_GRACE_PERIOD only if the previous state was
636+ POWER_STATE_INUSE. So if a SCARD_SHARE_DIRECT connection was used
637+ the card state was not set POWER_STATE_INUSE and a power off
638+ action was immediate at the SCardDisconnect(). Not nice if the
639+ card is reused just after.
640+
641+2011-01-04 Ludovic Rousseau
642+
643+ * [r5478] src/winscard_svc.c: ContextThread(): in command
644+ CMD_GET_READERS_STATE, wait until all the readers are ready (ATR
645+ available) before sending the reader states.
646+
647+ The problem arrives when you connect two readers at the same time
648+ (and one of them is slow to get the ATR). SCardGetStatusChange()
649+ must not exit with one reader in state READER_NOT_INITIALIZED (as
650+ implemented in revision 5217)
651+
652+2010-12-12 Ludovic Rousseau
653+
654+ * [r5442] ChangeLog, configure.in: release 1.6.6
655+ * [r5441] src/simclist.c: Reapply change in revision 4986 since the
656+ problem was not corrected in version 1.5 of simclist.
657+
658+2010-12-11 Ludovic Rousseau
659+
660+ * [r5440] src/winscard_msg.c: Use LONG instead of int to store
661+ PC/SC return codes like SCARD_E_*
662+
663+ The problem comes from sign extenstion from int to LONG int rv =
664+ SCARD_E_TIMEOUT; /* 0x8010000A */ is (sign) extended into a LONG
665+ = 0xFFFFFFFF8010000A
666+
667+ So the line in winscard_clnt.c if (SCARD_E_TIMEOUT == rv) is
668+ never true on a 64-bits system because rv has been extended from
669+ int to LONG. The comparison is then between 0x8010000A and
670+ 0xFFFFFFFF8010000A
671+
672+2010-12-08 Ludovic Rousseau
673+
674+ * [r5434] src/PCSC/debuglog.h, src/PCSC/ifdhandler.h,
675+ src/atrhandler.h, src/dyn_generic.h, src/eventhandler.h,
676+ src/hotplug.h, src/ifdwrapper.h, src/misc.h, src/parser.h,
677+ src/powermgt_generic.h, src/prothandler.h, src/readerfactory.h,
678+ src/sys_generic.h, src/winscard_msg.h, src/winscard_svc.h: Do not
679+ use extern "C" since we are in C and not C++
680+
681+ Follow rule 13 of "On C Library Implementation" by Rusty Russell
682+ http://rusty.ozlabs.org/?p=140
683+
684+2010-12-03 Ludovic Rousseau
685+
686+ * [r5429] src/configfile.l: Fix configfile.l: In function
687+ 'evaluatetoken': configfile.l:205: warning: assignment discards
688+ qualifiers from pointer target type
689+ * [r5427] ChangeLog, configure.in: release 1.6.5
690+
691+2010-11-26 Ludovic Rousseau
692+
693+ * [r5420] src/simclist.c: From SimCList version 1.5
694+ http://mij.oltrelinux.com/devel/simclist/
695+
696+2010-11-23 Ludovic Rousseau
697+
698+ * [r5415] src/eventhandler.c, src/readerfactory.c,
699+ src/readerfactory.h, src/winscard.c: Add a mutex to make the test
700+ and set of the powerState field atomic.
701+
702+2010-11-22 Ludovic Rousseau
703+
704+ * [r5414] src/eventhandler.c, src/winscard.c: Log the new
705+ powerState value at DEBUG level
706+ * [r5412] src/readerfactory.c: Remove dead code
707+
708+2010-11-16 Ludovic Rousseau
709+
710+ * [r5402] src/winscard.c: SCardDisconnect(): change powerState to
711+ POWER_STATE_GRACE_PERIOD only if the previous state was
712+ POWER_STATE_INUSE
713+
714+ If the powerState was POWER_STATE_UNPOWERED then do NOT change to
715+ POWER_STATE_GRACE_PERIOD. POWER_STATE_GRACE_PERIOD indicates that
716+ the card is powered on. That is the case if mode is
717+ SCARD_SHARE_DIRECT at SCardConnect()
718+ * [r5401] src/winscard.c: SCardConnect(): change the power state to
719+ POWER_STATE_INUSE only if the card has been powered on. The card
720+ is NOT powered on if mode is SCARD_SHARE_DIRECT
721+ * [r5400] src/eventhandler.c, src/readerfactory.c: Move the zeroing
722+ of the reader context from EHDestroyEventHandler() to
723+ RFUnInitializeReader() where it is more appropriate.
724+
725+ The reader context shall be valid until the reader is
726+ uninitialized in RFUnInitializeReader() and most importantly
727+ after IFDCloseIFD() is called.
728+ * [r5399] src/readerfactory.c: RFInitializeReader(): if
729+ IFDOpenIFD() fails just mark the reader as "not correctly
730+ started". This will present a call to IFDCloseIFD() in
731+ RFUnInitializeReader() (revision 5393)
732+
733+2010-11-09 Ludovic Rousseau
734+
735+ * [r5393] src/readerfactory.c: RFUnInitializeReader(): Do not close
736+ a reader if IFDOpenIFD() failed in RFInitializeReader()
737+ * [r5392] src/readerfactory.c: RFRemoveReader(): destroy the event
738+ handler only if it exists already
739+
740+2010-11-08 Ludovic Rousseau
741+
742+ * [r5391] src/winscard_msg_srv.c: ProcessCommonChannelRequest(): no
743+ need to define serv_adr as static. Free a few bytes of memory.
744+ * [r5390] src/winscard_msg.c, src/winscard_msg.h,
745+ src/winscard_msg_srv.c: Remove CleanupSharedSegment() and do not
746+ call it anymore
747+
748+ The function is not about shared segment any more The file
749+ PCSCLITE_CSOCK_NAME will be removed in clean_temp_files() at exit
750+ anyway
751+ * [r5388] src/winscard_msg.c: MessageSend(): return
752+ SCARD_E_NO_SERVICE instead of SCARD_F_COMM_ERROR if the daemon
753+ died and we reveice a EPIPE error.
754+ * [r5387] src/winscard_msg.c: MessageSendWithHeader(): do not send
755+ a 0 length buffer.
756+
757+ Some commands only have a header and no data like
758+ CMD_GET_READERS_STATE
759+ * [r5386] src/winscard_clnt.c, src/winscard_msg.c,
760+ src/winscard_msg.h, src/winscard_svc.c: MessageReceiveTimeout(),
761+ MessageSendWithHeader(), MessageSend() and MessageReceive() now
762+ returns a PC/SC error code instead of an internal value. So the
763+ callers can just return the error code to the application with no
764+ transcoding.
765+ * [r5385] src/winscard_clnt.c: Move SCardInvalidateHandles() in the
766+ same #ifdef DO_CHECK_SAME_PROCESS as SCardCheckSameProcess()
767+ since it is only used in this case.
768+ * [r5384] src/winscard_clnt.c: No need to check the server pid
769+ anymore. If the server is restarted the socket communication will
770+ fail and an "RPC transport error" SCARD_F_COMM_ERROR error will
771+ be returned
772+
773+ This check was needed when the readers state was stored in
774+ /var/run/pcscd/pcscd.pub. But that is no more the case. Every
775+ command now uses the client/server Unix socket.
776+
777+2010-11-05 Ludovic Rousseau
778+
779+ * [r5379] src/winscard_msg.h: InitializeSocket() and
780+ ProcessEventsServer() are used by the server side so must be
781+ declared in the #ifdef PCSCD part of the header file
782+ * [r5378] src/winscard_msg.h: Add missing getSocketName()
783+ declaration used by winscard_clnt.c and winscard_msg.c
784+ * [r5377] src/winscard_msg.h: Reorder the function definitions as
785+ they are in winscard_msg.c in revision 5371
786+ * [r5376] src/readerfactory.h: Remove definition of FctMap_V1 now
787+ useless since revision 5321
788+ * [r5375] src/atrhandler.c, src/atrhandler.h: Remove typedef of
789+ PSMARTCARD_EXTENSION and use SMARTCARD_EXTENSION * instead
790+
791+2010-11-04 Ludovic Rousseau
792+
793+ * [r5373] src/winscard_clnt.c, src/winscard_msg.c: It is now
794+ possible to configure the local socket name to use using the
795+ environment variable PCSCLITE_CSOCK_NAME
796+
797+ This is used by Estobuntu LTSP to redirect the smart card reader
798+ on the light terminal display to the application running on the
799+ server. They use a patched SSH version to redirect
800+ /var/run/pcscd/pcscd.comm on the client to ~/.pcscd.comm on the
801+ server.
802+ * [r5372] src/winscard_msg.c: MessageReceiveTimeout(): remove pcscd
803+ specific code inside a function used only by libpcsclite
804+ * [r5371] src/winscard_msg.c: reorganize the functions in 3
805+ categories: - functions used by pcscd only:
806+ CleanupSharedSegment() - functions used by libpcsclite only:
807+ ClientSetupSession(), ClientCloseSession(),
808+ MessageReceiveTimeout(), MessageSendWithHeader() - functions used
809+ by pcscd and libpcsclite: MessageSend(), MessageReceive()
810+
811+ We gain on the code size: 1104 bytes for pcscd and 101 bytes for
812+ libpcsclite
813+
814+2010-11-03 Ludovic Rousseau
815+
816+ * [r5370] src/atrhandler.c: ATRDecodeAtr(): avoids a buffer
817+ overflow with badly formed ATR like 3B FF 11 22 33 F0 11 22 33 F0
818+ 11 22 33 F0 11 22 33 F0 11 22 33 F0 11 22 33 F0 11 22 33 00 11 22
819+ 33
820+
821+ Thanks to Rafael Dominguez Vega for the bug report
822+
823+2010-10-28 Ludovic Rousseau
824+
825+ * [r5368] src/winscard.c: Move declaration of dwAtrLen closer to
826+ where it is used.
827+ * [r5367] src/winscard.c: SCardConnect(): log the ATR in case of
828+ auto power on
829+
830+ The ATR may be different from the previous one if the card has a
831+ cold and a warm ATR.
832+
833+2010-10-26 Ludovic Rousseau
834+
835+ * [r5364] src/winscard.c: SCardDisconnect(): check for card removal
836+ in case DISABLE_AUTO_POWER_ON
837+ * [r5359] src/winscard.c: Doxygen documentation is done on the
838+ client side (winscard_clnt.c) so remove documentation of
839+ SCardEstablishContext()
840+ * [r5358] src/winscard.c: SCardTransmit(): do not check for NULL
841+ pointers since we are called from ContextThread() with correct
842+ values
843+ * [r5357] src/winscard.c: SCardReconnect(): do not check for
844+ pdwActiveProtocol NULL pointer since we are called from
845+ ContextThread() with a correct value
846+ * [r5356] src/winscard.c: SCardConnect(): do not check for NULL
847+ pointers since we are called from ContextThread() with correct
848+ values
849+ * [r5355] src/winscard.c: SCardEstablishContext(): do not check for
850+ phContext NULL pointer since we are called from ContextThread()
851+ with a correct value
852+
853+2010-10-25 Ludovic Rousseau
854+
855+ * [r5354] src/winscard.c: SCardConnect(): test for not
856+ SCARD_POWERED instead of SCARD_SWALLOWED
857+ * [r5351] src/hotplug_linux.c: Use the new bundle parser code
858+ * [r5350] src/winscard.c: SCardConnect(): log an error if auto
859+ power on failed
860+ * [r5349] Makefile.am: Add a fix-rights rule at the top level to
861+ call the fix-rights rule in src/
862+
863+2010-10-23 Ludovic Rousseau
864+
865+ * [r5348] src/winscard.c: SCardConnect(): check the returned value
866+ of IFDPowerICC() to change the readerState if power up succeeded
867+ * [r5347] src/winscard.c: SCardConnect(): power up the card before
868+ checking for its SCARD_SWALLOWED state.
869+
870+ If a card fails to power up on card insertion a new power up will
871+ be tried on SCardConnect().
872+
873+2010-10-22 Ludovic Rousseau
874+
875+ * [r5346] src/winscard_clnt.c: Remove the "This function " in the
876+ Doxygen brief line
877+ * [r5345] UnitaryTests/SCardCancel2.py: SCardCancel() should do
878+ nothing if no cancellable call is ongoing bug fixed in revision
879+ 5344
880+ * [r5344] src/winscard_clnt.c: Only SCardGetStatusChange() can be
881+ cancelled using SCardCancel()
882+
883+ Thanks to Jan Rochat for the bug report
884+ https://bugs.launchpad.net/ubuntu/+source/pcsc-lite/+bug/647545
885+ * [r5343] src/eventhandler.c, src/eventhandler.h,
886+ src/hotplug_libhal.c, src/hotplug_macosx.c, src/ifdwrapper.c,
887+ src/misc.h, src/pcscdaemon.c, src/winscard.c,
888+ src/winscard_clnt.c, src/winscard_msg.c: Remove spaces and tabs
889+ at end of line
890+ * [r5342] src/winscard_svc.c: Reformat
891+ * [r5341] src/PCSC/winscard.h, src/winscard.c, src/winscard_clnt.c,
892+ src/winscard_msg.h, src/winscard_svc.c: SCardCancelTransaction()
893+ is no more provided. This function is not provided by Microsoft
894+ and is deprecated since 2005 in pcsc-lite.
895+ * [r5340] src/winscard.c: Reindent
896+ * [r5339] src/winscard_clnt.c: Reformat
897+ * [r5338] src/PCSC/winscard.h, src/winscard_clnt.c:
898+ SCardSetTimeout() is no more provided. This function is not
899+ provided by Microsoft and is deprecated since 2004 in pcsc-lite.
900+ * [r5337] src/winscard.c: SCardSetTimeout() is implemented (and
901+ deprecated) on the client side
902+ * [r5336] src/winscard.c: SCardListReaders() and SCardCancel() are
903+ implemented on the client side
904+ * [r5335] src/winscard.c: SCardDisconnect(): if
905+ DISABLE_AUTO_POWER_ON is defined then do not power on the card if
906+ SCARD_UNPOWER_CARD is used.
907+ * [r5334] src/eventhandler.c, src/pcscd.h.in: Move
908+ DISABLE_ON_DEMAND_POWER_ON and DISABLE_AUTO_POWER_ON defines from
909+ eventhandler.c to pcscd.h.in so they are visible by all the .c
910+ files
911+ * [r5333] src/winscard.c: SCardConnect(): remove debug log
912+
913+2010-10-21 Ludovic Rousseau
914+
915+ * [r5332] src/eventhandler.c: If DISABLE_AUTO_POWER_ON is defined
916+ then do not automatically power on the card. The card will be
917+ powered on on the first SCardConnect()
918+ * [r5331] src/readerfactory.c: Remove extra parenthesis We are
919+ using C not Lisp :-)
920+ * [r5328] TODO, src/PCSC/ifdhandler.h, src/eventhandler.c,
921+ src/eventhandler.h, src/pcscd.h.in, src/readerfactory.c,
922+ src/readerfactory.h, src/winscard.c: Power on the card _only_ if
923+ an application requests a connection see Alioth bug #301965
924+
925+ You can disable the feature using DISABLE_ON_DEMAND_POWER_ON in
926+ src/eventhandler.c
927+
928+2010-10-17 Ludovic Rousseau
929+
930+ * [r5324] src/Makefile.am: PCSC/reader.h is no more generated from
931+ PCSC/reader.h.in Directly use the filename in
932+ nobase_include_HEADERS
933+
934+2010-10-15 Ludovic Rousseau
935+
936+ * [r5323] UnitaryTests/SCardStatus.py: Add a call to
937+ SCardDisconnect() before SCardReleaseContext()
938+ * [r5322] src/eventhandler.h, src/winscard.c, src/winscard_clnt.c:
939+ Rename the sharing states unsing the PCSCLITE_SHARING_ prefix
940+ Doxygen: document the READER_STATE structure
941+ * [r5321] src/PCSC/ifdhandler.h, src/eventhandler.c,
942+ src/ifdwrapper.c, src/ifdwrapper.h, src/readerfactory.c,
943+ src/readerfactory.h: Remove the support of IFDHandler v1 API. I
944+ don't know any driver using this API.
945+
946+ We can now simplify the API of IFDStatusICC() and remove the ATR
947+ related parameters. These paremeters were only used by the
948+ IFDHandler v1 API.
949+
950+ diffstat says: 6 files changed, 51 insertions(+), 335
951+ deletions(-)
952+
953+2010-10-14 Ludovic Rousseau
954+
955+ * [r5317] src/hotplug_libhal.c: ifdCapabilities driver feature is
956+ not used with libhal (and has never been). Remove dead/unused
957+ code.
958+
959+2010-10-13 Ludovic Rousseau
960+
961+ * [r5316] src/winscard.c: Reformat
962+ * [r5315] src/readerfactory.c, src/winscard.c: Use the simpler form
963+ of IFDPowerICC(..., IFD_POWER_DOWN, ...) introduced in revision
964+ 5314
965+ * [r5314] src/ifdwrapper.c: IFDPowerICC(): allow to use NULL for
966+ pucAtr and pdwAtrLen to make power down easy with
967+ IFDPowerICC(rContext, IFD_POWER_DOWN, NULL, NULL);
968+ * [r5313] src/winscard.c: Correctly set dwAtrLen to the sizeof the
969+ ATR array before calling IFDPowerICC().
970+
971+ Some drivers do not write more that dwAtrLen bytes in cardAtr
972+ array.
973+
974+2010-10-12 Ludovic Rousseau
975+
976+ * [r5308] src/winscard_msg.h: Doxygen: SCARD_GET_STATUS_CHANGE is
977+ not used anymore
978+ * [r5307] src/winscard.c: Remove SCardStatus() (dead code) on the
979+ server side.
980+ * [r5306] src/winscard.c: SCardEndTransaction(): use the same code
981+ to reset a card as in revision 5301
982+ * [r5305] src/winscard.c: SCardReconnect(), SCardDisconnect() and
983+ SCardEndTransaction(): reset the value of dwAtrLen before the
984+ second call to IFDPowerICC() so that the driver gets a correct
985+ value if the first call to IFDPowerICC(IFD_POWER_DOWN) set
986+ dwAtrLen=0
987+
988+ Thanks to Frank Morgner for the bug report Closes: [#312754]
989+ IFDHPowerICC is called with IFD_POWER_UP and *AtrLength==0
990+ * [r5304] src/pcsc-wirecheck-gen.c, src/winscard.c,
991+ src/winscard_clnt.c, src/winscard_msg.h, src/winscard_svc.c: A
992+ large part of SCardStatus() is done on the client side using
993+ readerStates[]. So remove a few lines of dead code on the server
994+ side.
995+ * [r5303] UnitaryTests/SCardStatus.py: Call SCardStatus() a second
996+ time after a keypress
997+ * [r5302] UnitaryTests/SCardStatus.py: Unit test for SCardStatus()
998+ * [r5301] src/winscard.c: SCardReconnect(): Reorganize the code to
999+ manage ATR and readerState after a power up. Remove a call to
1000+ IFDStatusICC() to know if a card is present or not since
1001+ IFDPowerICC() already gives us this information.
1002+
1003+ SCardDisconnect(): Use the same code as above
1004+ * [r5300] src/eventhandler.c, src/winscard.c, src/winscard_clnt.c:
1005+ Use uint32_t readerState instead of DWORD dwStatus to store the
1006+ state of the reader. DWORD and uint32_t may be different.
1007+ * [r5299] src/winscard.c: SCardReconnect(): return
1008+ SCARD_E_NO_SMARTCARD when card is removed and
1009+ SCARD_W_UNRESPONSIVE_CARD when card is unresponsive instead of
1010+ SCARD_E_PROTO_MISMATCH
1011+ * [r5298] src/winscard_msg.h: Increment minor version because of
1012+ changes in revision 5290
1013+ * [r5297] doc/Makefile.am, doc/ifdhandler-3.tex: Remove the
1014+ deprecated LaTeX version of IFDHandler documentation
1015+
1016+2010-10-11 Ludovic Rousseau
1017+
1018+ * [r5296] src/configfile.l: evaluatetoken(): the CHANNELID
1019+ parameter can also be a decimal number.
1020+ * [r5294] src/PCSC/ifdhandler.h, src/configfile.l: reader.conf
1021+ configuration: If you want to use IFDHCreateChannel() instead of
1022+ IFDHCreateChannelByName() then do not use any DEVICENAME line in
1023+ the configuration file. IFDHCreateChannel() will then be called
1024+ with the CHANNELID parameter.
1025+
1026+ Closes: [#312749] Should call IFDHCreateChannel for serial driver
1027+ with DEVICENAME /dev/null
1028+ * [r5293] src/readerfactory.c, src/winscard_clnt.c,
1029+ src/winscard_svc.c: list_* functions return an decimal integer so
1030+ use %d insteaf of %X to log the error value.
1031+ * [r5292] src/readerfactory.c: Add a "0x" before hex displays
1032+
1033+2010-10-10 Ludovic Rousseau
1034+
1035+ * [r5291] src/winscard_clnt.c: Doxygen SCardStatus(): *pdwState
1036+ also contains a number of events
1037+ * [r5290] src/eventhandler.c, src/eventhandler.h,
1038+ src/winscard_clnt.c: Split the card event counter out of the card
1039+ event state on the pcscd side to simplify the code in
1040+ EHStatusHandlerThread()
1041+
1042+ The two information are combined on the client side in
1043+ SCardGetStatusChange() and SCardStatus()
1044+ * [r5289]
1045+ UnitaryTests/SCardGetStatusChange/SCardGetStatusChange_loop.py:
1046+ Exit the endless loop in case of error
1047+ * [r5288] src/PCSC/pcsclite.h.in: struct SCARD_READERSTATE: use
1048+ "DWORD" instead of "unsigned long" type for the fields
1049+ dwCurrentState, dwEventState and cbAtr
1050+
1051+ This is compliant to the Windows definition and allows to
1052+ redefine DWORD to something other than unsigned long, like
1053+ uint32_t
1054+ * [r5287] src/PCSC/pcsclite.h.in, src/error.c:
1055+ pcsc_stringify_error(): Use "LONG" instead of "long" as parameter
1056+ type to reflect the return type from winscard.h
1057+
1058+ The LONG type may be redefined in PCSC/wintypes.h to int32_t for
1059+ example
1060+
1061+2010-10-05 Ludovic Rousseau
1062+
1063+ * [r5281] src/winscard_clnt.c: Doxygen: do not document unused
1064+ SCARD_STATE_ATRMATCH and SCARD_STATE_PRESENT states in
1065+ SCardGetStatusChange()
1066+
1067+ Thanks to Martin Paljak for the patch
1068+ * [r5280]
1069+ UnitaryTests/SCardGetStatusChange/SCardGetStatusChange_loop.py:
1070+ Call SCardGetStatusChange() in a endless loop
1071+ * [r5279] src/tokenparser.l: Doxygen: fix documentation of
1072+ LTPBundleFindValueWithKey()
1073+ * [r5278] src/winscard_clnt.c: SCardGetStatusChange(): include the
1074+ event counter in dwEventState even if dwCurrentState contains a
1075+ counter at 0 (default).
1076+ * [r5277] doc/doxygen.conf.in: Update from Doxygen 1.5.5 to 1.7.1
1077+
1078+ warning: Tag `DETAILS_AT_TOP' at line 163 of file
1079+ doc/doxygen.conf has become obsolete. To avoid this warning
1080+ please update your configuration file using "doxygen -u"
1081+
1082+2010-10-01 Ludovic Rousseau
1083+
1084+ * [r5275] src/pcscdaemon.c: main(): do not limit rights if run as
1085+ root
1086+
1087+2010-09-19 Ludovic Rousseau
1088+
1089+ * [r5262] src/Makefile.am: Do not change the access rights of pcscd
1090+ in the install rule but in another one. This is needed when
1091+ building the package in a system without the pcscd group.
1092+
1093+2010-09-14 Ludovic Rousseau
1094+
1095+ * [r5256] configure.in: Do not generate src/PCSC/reader.h from
1096+ src/PCSC/reader.h.in any more
1097+ * [r5255] src/PCSC/reader.h: HOST_TO_CCID_16() and
1098+ HOST_TO_CCID_32() are now identity functions
1099+
1100+ Since CCID 1.4.1 (revision 5252) the byte order is no more
1101+ important
1102+ * [r5254] src/PCSC/reader.h, src/PCSC/reader.h.in: Rename
1103+ reader.h.in in reader.h
1104+
1105+2010-09-04 Ludovic Rousseau
1106+
1107+ * [r5245] src/Makefile.am: Install pcscd as sgid pcscd instead of
1108+ suid root
1109+ * [r5241] src/hotplug_libhal.c: HPReadBundleValues(): do not fail
1110+ if the key "CFBundleName" is not found in a driver Info.plist.
1111+ This key should only be defined for the CCID class driver.
1112+
1113+2010-09-03 Ludovic Rousseau
1114+
1115+ * [r5231] src/winscard_msg.c: Doxygen: remove documentation about
1116+ the (now removed) timeOut parameter of MessageSend() and
1117+ MessageSendWithHeader()
1118+
1119+2010-09-02 Ludovic Rousseau
1120+
1121+ * [r5227] src/winscard_clnt.c: Doxygen: clarify the use of one
1122+ different SCARDCONTEXT per thread and the expection for
1123+ SCardCancel()
1124+ * [r5226] src/winscard_svc.c: Remove protocol_major, protocol_minor
1125+ fields from struct _psContext since they are not used.
1126+ * [r5225] src/winscard_msg.h: update PROTOCOL_VERSION_MINOR since
1127+ struct pubReaderStatesList changed (readerID removed)
1128+ * [r5224] src/winscard_svc.c: ContextThread(): check that the
1129+ procotol major.minor is the same for the daemon and lib. If not
1130+ just fail. We are not backward compatible.
1131+ * [r5219] src/winscard_clnt.c: Complete change in revision 5212
1132+
1133+ SCardGetStatusChange() and SCardListReaders() were broken.
1134+ * [r5218] src/ifdwrapper.c, src/readerfactory.c,
1135+ src/readerfactory.h: Rename lpcLibrary in library and lpcDevice
1136+ in device
1137+ * [r5217] src/eventhandler.c, src/eventhandler.h, src/pcscdaemon.c,
1138+ src/readerfactory.c, src/readerfactory.h: Wait until all
1139+ connected readers have a chance to power up a possibly inserted
1140+ card.
1141+
1142+ This is needed when auto start is used and a card is already
1143+ present in a USB reader. The reader presence is correctly
1144+ reported to libpcsclite but the power up has not yet happen. So
1145+ the ATR is not yet available.
1146+ * [r5216] src/eventhandler.c, src/readerfactory.c,
1147+ src/readerfactory.h, src/winscard_clnt.c: Rename lpcReaderName in
1148+ readerName and use (char *) instead of LPSTR
1149+ * [r5215] src/eventhandler.c, src/readerfactory.c,
1150+ src/readerfactory.h, src/winscard.c: Get rid of the lpcReader[]
1151+ field in struct ReaderContext
1152+
1153+ The reader name is already present in readerState->readerName
1154+ linked from struct ReaderContext
1155+
1156+ Gain: MAX_READERNAME*PCSCLITE_MAX_READERS_CONTEXTS = 100*16 =
1157+ 1600 bytes fo RAM on pcscd
1158+ * [r5214] src/winscard.c: SCardStatus(): remove a useless test
1159+
1160+ lpcReader can't be larger than MAX_BUFFER_SIZE (264) since its
1161+ buffer is only MAX_READERNAME (100) bytes long. And I don't see
1162+ why we need this test anyway.
1163+ * [r5213] src/eventhandler.c, src/winscard.c: Complete change
1164+ started in revision 5212
1165+
1166+ rContext->readerState is never NULL now. So do not even check its
1167+ value.
1168+ * [r5212] src/eventhandler.c, src/eventhandler.h,
1169+ src/pcsc-wirecheck-gen.c, src/readerfactory.c,
1170+ src/winscard_clnt.c: Get rid of the readerID field in struct
1171+ pubReaderStatesList
1172+ * [r5211] src/readerfactory.c, src/readerfactory.h: Remove unused
1173+ RFSuspendAllReaders() and RFAwakeAllReaders()
1174+
1175+2010-08-31 Ludovic Rousseau
1176+
1177+ * [r5204] src/eventhandler.c: Reformat
1178+
1179+2010-08-30 Ludovic Rousseau
1180+
1181+ * [r5202] src/winscard_msg_srv.c: InitializeSocket(): do not set
1182+ the execution bit on the socket file. It is useless.
1183+
1184+2010-08-27 Ludovic Rousseau
1185+
1186+ * [r5196] src/debug.c, src/error.c, src/utils.c, src/utils.h: svn
1187+ propset svn:keywords 'Author Date Id Revision'
1188+ * [r5195] src/utils.c: GetDaemonPid(): use open(3) instead of
1189+ fopen(3) to avoid an internal malloc() call and gain some CPU
1190+ cycles
1191+ * [r5194] src/hotplug_libhal.c: HPAddDevice(): wait 1 millisecond
1192+ instead of 1 second until the device is visible to libusb/etc.
1193+
1194+2010-08-25 Ludovic Rousseau
1195+
1196+ * [r5183] src/winscard_clnt.c: Doxygen:
1197+ SCardCheckDaemonAvailability() do not invalidate handles after a
1198+ fork() any more
1199+
1200+2010-08-23 Ludovic Rousseau
1201+
1202+ * [r5179] src/hotplug_libusb.c: HPReadBundleValues(): use the new
1203+ Info.plist parsing API.
1204+
1205+ Parsing the CCID Info.plist (159 readers supported) was on a ARM9
1206+ machine 13193049 µs and is now 258262 µs => gain x51 or 5008%
1207+ * [r5178] src/readerfactory.c: RFBindFunctions(): rename rv in rvl
1208+ to avoid warnings warning: declaration of ‘rv’ shadows a previous
1209+ local
1210+
1211+ Also change type from DWORD to int since DYN_GetAddress() returns
1212+ an int
1213+ * [r5177] src/readerfactory.c: RFLoadReader(): optimize the
1214+ detection of Ifd Handler version by checking for
1215+ "IFDHCreateChannelByName", "IFDHCreateChannel" and then
1216+ "IO_Create_Channel" instead of the 3 symbols at once.
1217+
1218+ Also suppress the error message suppression. Ifd handler v2 or v1
1219+ will display one or two errors for symbols not found.
1220+ * [r5175] src/hotplug_libhal.c: HPReadBundleValues(): duplicate the
1221+ readerName and CFBundleName strings since the originals are
1222+ destroyed by bundleRelease() later
1223+
1224+ The reader names were corrupted.
1225+
1226+2010-08-18 Ludovic Rousseau
1227+
1228+ * [r5160] ChangeLog: Fix typo
1229+
1230+2010-08-17 Ludovic Rousseau
1231+
1232+ * [r5157] src/hotplug_libhal.c: HPReadBundleValues(): use the new
1233+ Info.plist parsing API.
1234+
1235+ Parsing the CCID Info.plist (159 readers supported) was on a i386
1236+ machine 264306 µs and is now 5547 µs => gain x47 or 4600%
1237+ * [r5156] src/parser.h, src/tokenparser.l: parse the Info.plist
1238+ file only once and generate a list of key/values
1239+ * [r5152] src/hotplug_libusb.c: HPSearchHotPluggables(): create the
1240+ synchronisation pipe only if the HPEstablishUSBNotifications
1241+ thread is created. Avoids to leak resources.
1242+ * [r5151] src/hotplug_libusb.c: HPSearchHotPluggables(): wait for
1243+ initial readers to setup only if HPEstablishUSBNotifications is
1244+ created. Otherwise the process is blocked for ever.
1245+ * [r5150] src/hotplug_libhal.c: HPRegisterForHotplugEvents():
1246+ having no bundle for USB readers is not an error. USB
1247+ support/hotplug is just disabled.
1248+ * [r5149] src/pcscdaemon.c: main(): Log a message if
1249+ HPRegisterForHotplugEvents() fails
1250+ * [r5148] src/hotplug_libusb.c: Do not hardcode the libusb-1.0
1251+ include header path (remove the libusb-1.0/ part)
1252+
1253+2010-08-16 Ludovic Rousseau
1254+
1255+ * [r5147] configure.in: Do not hardcode the libusb.h path.
1256+
1257+ See Debian bug #591782 ccid: FTBFS on kfreebsd-*: configure:
1258+ error: libusb.h not found
1259+ * [r5146] c.sh: add --sysconfdir=/etc
1260+ * [r5145] src/pcscdaemon.c: Do not allow restricting defaults
1261+ values of --max-thread, --max-card-handle-per-thread or
1262+ --max-card-handle-per-reader when restricted
1263+ * [r5144] src/pcscdaemon.c: Do not allow APDU logging when
1264+ restricted
1265+ * [r5143] src/pcscdaemon.c: If the process is setuid or setgid it
1266+ may have some restrictions
1267+
1268+ Do not allow to specify a configuration file when restricted
1269+
1270+2010-08-15 Ludovic Rousseau
1271+
1272+ * [r5138] ChangeLog, configure.in: release 1.6.4
1273+ * [r5137] configure.in: Do not use sysconfdir as configuration
1274+ directory but ${sysconfdir}/reader.conf.d instead.
1275+
1276+ Use --enable-confdir=DIR if you want to set a specific value
1277+ without the reader.conf.d appended.
1278+
1279+ Thanks to Kalev Lember for the bug report
1280+ http://archives.neohapsis.com/archives/dev/muscle/2010-q3/0150.html
1281+ * [r5135] ChangeLog, configure.in: release 1.6.3
1282+ * [r5134] src/PCSC/pcsclite.h.in, src/PCSC/winscard.h: Define
1283+ LPSCARD_READERSTATE since this is used in the MSDN prototype.
1284+
1285+ Use LPSCARD_READERSTATE in winscard.h instead of
1286+ (SCARD_READERSTATE *) to mimic the MSDN API.
1287+
1288+ This partly reverts changeset 5096
1289+
1290+2010-08-13 Ludovic Rousseau
1291+
1292+ * [r5130] UnitaryTests/SCard_fork.py: Also call SCardDisconnect()
1293+ and SCardReleaseContext() in the forked process
1294+ * [r5129] src/winscard_svc.c: ContextThread(): goto exit if
1295+ MSGCheckHandleAssociation() fails instead of just returning no
1296+ error.
1297+
1298+ Something wrong happened on the client side (like a fork) and the
1299+ client needs to call SCardEstablishContext() to create a new
1300+ connection.
1301+ * [r5128] src/winscard_svc.c: ContextThread(): fix goto label when
1302+ it _is_ an overflow
1303+ * [r5127] src/winscard_svc.c: ContextThread(): fix goto label when
1304+ it is not an overflow
1305+ * [r5126] src/winscard_clnt.c: Revert changeset 5102 to add
1306+ profiling on the client side again.
1307+
1308+ ltrace(1) can't be used with a dynamically loaded (dlopen(3))
1309+ library like it is the case with the majority of PKCS#11 client
1310+ application.
1311+ * [r5125] src/simclist.c: Reset mid field when the list is empty to
1312+ avoid assert() errors
1313+ * [r5124] src/winscard_svc.c: MSGCheckHandleAssociation(): check
1314+ that the context handle is still valid. Calling a PC/SC function
1315+ after SCardReleaseContext() is not supported.
1316+ * [r5123] src/eventhandler.c: Fix typo in comment
1317+
1318+2010-08-05 Ludovic Rousseau
1319+
1320+ * [r5118] configure.in: remove debug line
1321+ * [r5117] configure.in: "/reader.conf.d" is only appended to
1322+ sysconfdir if no value of sysconfdir is provided
1323+
1324+ Thanks to Patrice Angelini for the bug report
1325+ * [r5114] src/hotplug_libusb.c: HPAddHotPluggable(): do not use
1326+ libusb_strerror() since it is not yet available in current stable
1327+ libusb (1.0.8)
1328+ * [r5113] src/ifdwrapper.c: Fix compilation warnings
1329+ ifdwrapper.c:166:7: warning: "IFDHANDLERv2" is not defined
1330+ ifdwrapper.c:589:7: warning: "IFDHANDLERv2" is not defined
1331+ ifdwrapper.c:640:7: warning: "IFDHANDLERv3" is not defined
1332+ * [r5112] src/ifdwrapper.c: Check that either IFDHANDLERv1,
1333+ IFDHANDLERv2 or IFDHANDLERv3 is defined if PCSCLITE_STATIC_DRIVER
1334+ is used
1335+ * [r5111] c.sh: No need to use -D_REENTRANT. It was needed for
1336+ LinuxThreads but we do not use LinuxThreads since a long time.
1337+
1338+ See Debian bug #475101 "Remove obsolete -D_REENTRANT requirement"
1339+
1340+2010-08-04 Ludovic Rousseau
1341+
1342+ * [r5107] ChangeLog, configure.in: release 1.6.2
1343+ * [r5106] src/Makefile.am: Remove useless $(COREFOUNDATION) from
1344+ libpcsclite_la_LIBADD The library has no Mac OS X specific code.
1345+ * [r5105] src/Makefile.am: Remove undefined $(LIBSMARTCARD) from
1346+ libpcsclite_la_LIBADD
1347+ * [r5104] src/Makefile.am: libpcsclite does not use dlopen() so no
1348+ need to link with $(LIBDL)
1349+
1350+2010-08-03 Ludovic Rousseau
1351+
1352+ * [r5102] src/winscard_clnt.c: Remove client side profiling since
1353+ we can use ltrace(1) with better results
1354+ * [r5098] configure.in: Remove 2 debug traces
1355+
1356+2010-08-02 Ludovic Rousseau
1357+
1358+ * [r5097] src/PCSC/winscard.h, src/winscard.c, src/winscard_clnt.c:
1359+ Use "SCARD_IO_REQUEST *" instead of LPSCARD_IO_REQUEST and "const
1360+ SCARD_IO_REQUEST *" instead of "LPCSCARD_IO_REQUEST
1361+
1362+ Should make the code more easy to read
1363+ * [r5096] doc/example/pcsc_demo.c, src/PCSC/pcsclite.h.in,
1364+ src/PCSC/winscard.h, src/testpcsc.c, src/utils/formaticc.c,
1365+ src/winscard.c, src/winscard_clnt.c: Use SCARD_READERSTATE
1366+ instead of SCARD_READERSTATE_A
1367+
1368+ Remove definitions of SCARD_READERSTATE_A PSCARD_READERSTATE_A
1369+ and LPSCARD_READERSTATE_A types
1370+ * [r5093] configure.in: Use $libdir instead of $prefix/lib to set
1371+ the default value of usbdropdir
1372+
1373+ " Fedora uses /usr/lib on 32 bit and /usr/lib64 on 64 bit
1374+ multilib platforms. "
1375+
1376+ Thanks to Kalev Lember for the idea.
1377+ http://archives.neohapsis.com/archives/dev/muscle/2010-q3/0108.html
1378+ * [r5092] c.sh: sysconfdir=/etc by default if prefix=/usr so remove
1379+ the --sysconfdir line
1380+ * [r5091] UnitaryTests/SCardBeginTransaction_Disconnect.py,
1381+ UnitaryTests/SCardConnect_DIRECT.py,
1382+ UnitaryTests/SCardConnect_DIRECT2.py,
1383+ UnitaryTests/SCardExclusiveBehaviour.py,
1384+ UnitaryTests/SCardReconnect.py, UnitaryTests/reset_card.py: Do
1385+ not duplicate the reader index to avoids problems when I want to
1386+ change it.
1387+
1388+2010-08-01 Ludovic Rousseau
1389+
1390+ * [r5082] configure.in: Set sysconfdir to /etc if prefix=/usr
1391+
1392+ You should have a default working configuration only with
1393+ --prefix=/usr
1394+
1395+2010-07-31 Ludovic Rousseau
1396+
1397+ * [r5081] c.sh: --enable-muscledropdir is no more supported by
1398+ pcsc-lite since a long time. So remove the line.
1399+ * [r5080] c.sh: --enable-usbdropdir=/usr/lib/pcsc/drivers is now
1400+ the default value. So remove the line.
1401+ * [r5079] configure.in: Default value of usbdropdir is now
1402+ $prefix/lib/pcsc/drivers instead of $prefix/pcsc/drivers
1403+
1404+ The new path is the path used on Debian (with prefix-/usr). So no
1405+ need to change the default value.
1406+
1407+2010-07-27 Ludovic Rousseau
1408+
1409+ * [r5073] src/Makefile.am: Create empty directories used by drivers
1410+
1411+ Thanks to Kalev Lember for the patch
1412+ http://archives.neohapsis.com/archives/dev/muscle/2010-q3/0065.html
1413+
1414+2010-07-26 Ludovic Rousseau
1415+
1416+ * [r5071] src/hotplug_libhal.c, src/pcscdaemon.c, src/utils.c,
1417+ src/winscard.c: Do not affect and check a variable on the same
1418+ line
1419+ * [r5070] src/readerfactory.c: reformat
1420+ * [r5069] src/winscard.c: Get the value of rContext before its use.
1421+ A simple call to SCardTransmit() crashed with a NULL pointer.
1422+
1423+2010-07-08 Ludovic Rousseau
1424+
1425+ * [r5066] src/readerfactory.c: fix crash with empty config dir
1426+
1427+ Thanks to Kalev Lember for the patch
1428+ http://archives.neohapsis.com/archives/dev/muscle/2010-q3/0017.html
1429+
1430+ pcscd attempts to read uninitialized memory and free an invalid
1431+ pointer when its configuration directory is empty.
1432+
1433+ The patch fixes this by initializing reader_list to NULL.
1434+
1435+ ==2658== Conditional jump or move depends on uninitialised
1436+ value(s) ==2658== at 0x40A2EF: RFStartSerialReaders
1437+ (readerfactory.c:1324) ==2658== by 0x40743F: main
1438+ (pcscdaemon.c:522) ==2658== ==2658== Use of uninitialised value
1439+ of size 8 ==2658== at 0x40A2F5: RFStartSerialReaders
1440+ (readerfactory.c:1327) ==2658== by 0x40743F: main
1441+ (pcscdaemon.c:522) ==2658== ==2658== Conditional jump or move
1442+ depends on uninitialised value(s) ==2658== at 0x4C26D25: free
1443+ (vg_replace_malloc.c:325) ==2658== by 0x40A404:
1444+ RFStartSerialReaders (readerfactory.c:1348) ==2658== by 0x40743F:
1445+ main (pcscdaemon.c:522) ==2658== ==2658== Invalid free() / delete
1446+ / delete[] ==2658== at 0x4C26D72: free (vg_replace_malloc.c:325)
1447+ ==2658== by 0x40A404: RFStartSerialReaders (readerfactory.c:1348)
1448+ ==2658== by 0x40743F: main (pcscdaemon.c:522) ==2658== Address
1449+ 0x4222148 is not stack'd, malloc'd or (recently) free'd
1450+
1451+ --- pcsc-lite-1.6.1/src/readerfactory.c.orig2010-07-04
1452+ 23:42:14.000000000 +0300 +++
1453+ pcsc-lite-1.6.1/src/readerfactory.configuration2010-07-04
1454+ 23:42:23.000000000 +0300 @@ -1312,7 +1312,7 @@ void
1455+ RFCleanupReaders(void) #ifdef USE_SERIAL int
1456+ RFStartSerialReaders(const char *readerconf) {
1457+ -readerconfSerialReader *reader_list; +reader_listSerialReader
1458+ *reader_list = NULL; int i, rv; /* remember the configuration
1459+ filename for * RFReCheckReaderConf() */
1460+ * [r5065] c.sh, configure.in, src/pcscd.h.in: more idiomatic
1461+ sysconfdir usage
1462+
1463+ Thanks to Kalev Lember for the patch
1464+ http://archives.neohapsis.com/archives/dev/muscle/2010-q3/0015.html
1465+
1466+ > URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=5060 > Log:
1467+ set --sysconfdir=/etc/reader.conf.d so that we parse any file in
1468+ > this directory > > [...] > - --sysconfdir=/etc \ > +
1469+ --sysconfdir=/etc/reader.conf.d \
1470+
1471+ It's more common to set sysconfdir to /etc and have configure
1472+ script figure out the subdirectory. The configure script should
1473+ always default to sane values when no arguments are specified.
1474+ The default value for sysconfdir is /usr/local/etc; so the
1475+ configure script should just append /reader.conf.d to that. Right
1476+ now if the user doesn't override sysconfdir, pcsc will try to go
1477+ through every .conf file in /usr/local/etc, and I don't think
1478+ anything good will come out of that.
1479+
1480+ I have a patch attached which should make it more idiomatic:
1481+ default to $sysconfdir/reader.conf.d directory.
1482+
1483+2010-07-02 Ludovic Rousseau
1484+
1485+ * [r5062] src/pcscd.h.in: remove PCSCLITE_READER_CONFIG now useless
1486+ * [r5061] src/pcscdaemon.c: main(): use PCSCLITE_CONFIG_DIR instead
1487+ of PCSCLITE_READER_CONFIG to use the directory configured using
1488+ --sysconfdir=...
1489+ * [r5060] c.sh: set --sysconfdir=/etc/reader.conf.d so that we
1490+ parse any file in this directory
1491+ * [r5059] src/configfile.l: DBGetReaderListDir(): add a log line
1492+ when parsing a directory (containing config files)
1493+ * [r5058] src/readerfactory.c, src/readerfactory.h, src/winscard.c:
1494+ RFCheckSharing(), RFLockSharing(), RFUnlockSharing() &
1495+ RFUnlockAllSharing(): add the READER_CONTEXT * rContext parameter
1496+ to avoid recomputing it internally (gain a few CPU cycles)
1497+
1498+2010-06-29 Ludovic Rousseau
1499+
1500+ * [r5047] src/configfile.h, src/configfile.l, src/debuglog.c,
1501+ src/dyn_hpux.c, src/dyn_macosx.c, src/dyn_unix.c,
1502+ src/eventhandler.c, src/eventhandler.h, src/hotplug_generic.c,
1503+ src/hotplug_libhal.c, src/hotplug_libusb.c, src/hotplug_linux.c,
1504+ src/hotplug_macosx.c, src/ifdwrapper.c, src/ifdwrapper.h,
1505+ src/pcscdaemon.c, src/readerfactory.c, src/readerfactory.h,
1506+ src/sys_generic.h, src/sys_unix.c, src/testpcsc.c,
1507+ src/winscard.c, src/winscard_clnt.c, src/winscard_msg.h,
1508+ src/winscard_svc.c, src/winscard_svc.h: update copyright date
1509+ * [r5046] src/hotplug_libusb.c: Remove declaration of 3 static
1510+ functions since they are defined before use. Declaration is then
1511+ useless.
1512+ * [r5045] configure.in: check for libusb-1.0 instead of libusb-0.1
1513+ * [r5044] src/hotplug_libusb.c: port from libusb-0.1 to libusb-1.0
1514+
1515+2010-06-25 Ludovic Rousseau
1516+
1517+ * [r5040] UnitaryTests/MCT_ReaderDirect.py,
1518+ UnitaryTests/control_get_firmware.py,
1519+ UnitaryTests/control_switch_interface.py,
1520+ UnitaryTests/stress_get_firmware.py: use readers() from
1521+ smartcard.System instead of smartcard.pcsc.PCSCReader
1522+
1523+ readers() method is now a staticmethod of the PCSCReader class
1524+ since pyscard subversion revision 500.
1525+
1526+2010-06-24 Ludovic Rousseau
1527+
1528+ * [r5039] src/pcscdaemon.c: signal_trap(): implement a "Forced
1529+ suicide" mechanism.
1530+
1531+ After 3 Ctrl-C without much reaction from pcscd (in fact the
1532+ drivers) we force the suicide. Sometimes libusb is blocked in a
1533+ kind of dead-lock and kill -9 was the only option.
1534+ * [r5038] UnitaryTests/stress_apdu.py,
1535+ UnitaryTests/stress_get_firmware.py: - better display the list of
1536+ available readers - display the command duration and log to
1537+ stderr if the duration is more than 1 second indicating a problem
1538+ * [r5037] UnitaryTests/stress_get_firmware.py: get firmware version
1539+ of Gemalto readers in loop
1540+ * [r5036] UnitaryTests/stress_apdu.py: send an apdu in loop
1541+
1542+2010-06-22 Ludovic Rousseau
1543+
1544+ * [r5032] src/PCSC/debuglog.h: Add Log5() function
1545+ * [r5031] src/PCSC/ifdhandler.h: fix a comment
1546+ * [r5029] src/PCSC/ifdhandler.h, src/eventhandler.c: Add support of
1547+ TAG_IFD_STOP_POLLING_THREAD to request the stop of the driver
1548+ polling function.
1549+
1550+2010-06-21 Ludovic Rousseau
1551+
1552+ * [r5023] configure.in: Use AC_CHECK_FUNCS() instead of
1553+ AC_CHECK_FUNC() to have HAVE_PTHREAD_CANCEL defined when needed.
1554+
1555+ AC_CHECK_FUNC() defined nothing so HAVE_PTHREAD_CANCEL was not
1556+ defined even if pthread_cancel() was available.
1557+
1558+2010-06-17 Ludovic Rousseau
1559+
1560+ * [r5009] src/pcscdaemon.c: main(): in case of auto exit create a
1561+ new session so that Ctrl-C on the application will not also quit
1562+ pcscd
1563+
1564+ Thanks to Thierry Fabre for reporting the bug
1565+
1566+2010-06-13 Ludovic Rousseau
1567+
1568+ * [r4992] src/winscard_msg.h: typo in comment
1569+
1570+2010-06-12 Ludovic Rousseau
1571+
1572+ * [r4991] UnitaryTests/SCardBeginTransaction_Disconnect.py,
1573+ UnitaryTests/SCardBlockingBehaviourTest.py,
1574+ UnitaryTests/SCardCancel.py, UnitaryTests/SCardConnect_DIRECT.py,
1575+ UnitaryTests/SCardConnect_DIRECT2.py,
1576+ UnitaryTests/SCardExclusiveBehaviour.py,
1577+ UnitaryTests/SCardGetAttrib.py, UnitaryTests/SCardReconnect.py,
1578+ UnitaryTests/SCard_fork.py, UnitaryTests/ThreadSafe.py,
1579+ UnitaryTests/ThreadSafeConnect.py, UnitaryTests/reset_card.py:
1580+ return exception from smartcard.pcsc.PCSCExceptions when
1581+ appropriate
1582+
1583+2010-06-09 Ludovic Rousseau
1584+
1585+ * [r4986] src/simclist.c: Avoid a division by 0. Closes [#312555]
1586+ simclist bug in pcsc-lite
1587+ * [r4985] src/simclist.c, src/simclist.h: update to version version
1588+ 1.4.4rc4 Apr 2010
1589+
1590+2010-06-07 Ludovic Rousseau
1591+
1592+ * [r4983] src/winscard_clnt.c: SCardEstablishContext(): if pcscd is
1593+ stared by libpcsclite then close all file handles except stdin,
1594+ stdout and stderr so that pcscd does not confiscate ressources
1595+ allocated by the application
1596+
1597+ Thanks to Thierry Fabre for the bug report
1598+
1599+2010-06-04 Ludovic Rousseau
1600+
1601+ * [r4978] configure.in: release 1.6.1
1602+ * [r4977] ChangeLog: release 1.6.1
1603+
1604+2010-06-01 Ludovic Rousseau
1605+
1606+ * [r4974] src/misc.h, src/strlcpycat.h, src/tokenparser.l: update
1607+ copyright date
1608+ * [r4969] src/pcscdaemon.c, src/sys_unix.c: pcscd: do not return
1609+ before most of the initialisation are done correctly. The idea is
1610+ that pcscd can return an error code if the daemon fails to start
1611+ correctly (hald not started for example).
1612+
1613+ Before the patch pcscd became a daemon, then returned 0 (success)
1614+ and then continued with the initialisation. If the initialisation
1615+ failed it was too late to return an error code. The
1616+ /etc/init.d/pcscd script was not aware of the failure.
1617+
1618+ Closes https://bugzilla.redhat.com/show_bug.cgi?id=580321
1619+ "/usr/sbin/pcscd exit codes broken"
1620+
1621+2010-05-31 Ludovic Rousseau
1622+
1623+ * [r4968] src/pcscdaemon.c: main(): return EXIT_FAILURE instead of
1624+ EXIT_SUCCESS if a unknown argument is passed
1625+
1626+2010-05-29 Ludovic Rousseau
1627+
1628+ * [r4967] src/winscard_msg.h, src/winscard_svc.c: Avoids a crash if
1629+ a client sends a unknown command.
1630+
1631+ Thanks to Martin Vogt for the bug report
1632+ http://archives.neohapsis.com/archives/dev/muscle/2010-q2/0096.html
1633+
1634+2010-05-27 Ludovic Rousseau
1635+
1636+ * [r4964] src/winscard.c: SCardControl(): do not check for card
1637+ events since we are talking to the reader not the card. A smart
1638+ card removal should not make SCardControl() fail with
1639+ SCARD_W_REMOVED_CARD
1640+
1641+2010-05-20 Ludovic Rousseau
1642+
1643+ * [r4957] UnitaryTests/SCardGetAttrib.py: get
1644+ SCARD_ATTR_VENDOR_IFD_SERIAL_NO PC/SC attribute
1645+
1646+2010-05-18 Ludovic Rousseau
1647+
1648+ * [r4954] src/PCSC/reader.h.in: Add
1649+ PCSCv2_PART10_PROPERTY_bPPDUSupport
1650+ * [r4953]
1651+ UnitaryTests/SCardGetStatusChange/SCardGetStatusChange.py,
1652+ UnitaryTests/SCardGetStatusChange/SCardGetStatusChange_PnP.py:
1653+ Also display the return value of SCardReleaseContext()
1654+ * [r4952] src/pcscd.h.in, src/winscard_clnt.c, src/winscard_msg.c,
1655+ src/winscard_msg.h, src/winscard_svc.c: MessageSend(),
1656+ MessageReceive() & MessageSendWithHeader() do not timeout any
1657+ more. If the other side of the socket dies we will get an error
1658+ from the kernel.
1659+
1660+ Add a new MessageReceiveTimeout() to implement
1661+ SCardGetStatusChange() with a timeout.
1662+
1663+ The constants PCSCLITE_WRITE_TIMEOUT & PCSCLITE_READ_TIMEOUT are
1664+ now also removed.
1665+
1666+ The problem was that if a client does nothing during
1667+ PCSCLITE_READ_TIMEOUT (120 seconds by default) then pcscd
1668+ considers it as a dead client and closes the connection. I guess
1669+ this problem was present since the first version of pcsc-lite but
1670+ nobody complained before.
1671+
1672+ Thanks to Thierry Fabre for the bug report.
1673+ * [r4951] src/pcscdaemon.c, src/winscard_clnt.c,
1674+ src/winscard_msg.c, src/winscard_msg.h, src/winscard_msg_srv.c,
1675+ src/winscard_svc.c: rename SHMfoobar() functions in foobar()
1676+ since we do not use shared memory (SHM) anymore
1677+
1678+2010-05-17 Ludovic Rousseau
1679+
1680+ * [r4949] src/hotplug_libusb.c: Add a synchronisation so that if
1681+ pcscd is auto started the initial reader list is available before
1682+ the server takes commands from clients.
1683+
1684+ Before the change early calls of SCardListReaders() returned an
1685+ empty list of readers even if a reader was connected.
1686+
1687+ Thanks to Patrice Angelini for the bug report
1688+ * [r4948] etc: Remove etc directory completely - serial readers are
1689+ rare => no need for /etc/reader.conf.d/ - pcscd now autostarts =>
1690+ no need for /etc/init.d/pcscd script or equivalent
1691+ * [r4947] Makefile.am, configure.in: Do not install files in /etc
1692+ any more. Serial drivers are rare now.
1693+ * [r4946] etc/Makefile.am: Use $(sysconfdir_exp) instead of
1694+ (removed) $(confdir_exp)
1695+
1696+ Fixes [#312498] Wrong installation path for reader.conf.d
1697+
1698+2010-05-11 Ludovic Rousseau
1699+
1700+ * [r4941] UnitaryTests/SCardConnect_DIRECT2.py: Unitary test for
1701+ bug fixed in revision 4940
1702+ * [r4940] src/winscard.c: SCardConnect() & SCardReconnect(): do not
1703+ reset the cardProtocol in SCARD_SHARE_DIRECT case since the card
1704+ have _not_ been reseted. A new PPS negociation would fail.
1705+
1706+ See SCardConnect_DIRECT2.py for a Unitary Test
1707+
1708+2010-05-05 Ludovic Rousseau
1709+
1710+ * [r4921] ChangeLog: update date and release for 1.6.0
1711+ * [r4920] ChangeLog, configure.in: release 1.6.0
1712+
1713+2010-05-04 Ludovic Rousseau
1714+
1715+ * [r4918] src/pcscdaemon.c: ExitValue default value is now
1716+ EXIT_FAILURE instead of EXIT_SUCCESS
1717+ * [r4917] src/pcscdaemon.c: main(): remove dead code "used" when no
1718+ reader.conf file is found
1719+
1720+2010-05-03 Ludovic Rousseau
1721+
1722+ * [r4913] src/winscard_clnt.c: SCardEstablishContext(): also log
1723+ the binary name if execl() fails
1724+ * [r4912] src/eventhandler.c: EHDestroyEventHandler(): use
1725+ pthread_cancel() only if it is present (not the case on Android)
1726+ * [r4911] configure.in: Add a check for pthread_cancel() (not
1727+ present on Android)
1728+ * [r4910] src/readerfactory.h: Add missing #include <pthread.h>
1729+
1730+ Compilation failed on Android but not on my Debian as the libC is
1731+ different on the two systems. On Debian sys/types.h defines
1732+ pthread types
1733+
1734+2010-04-29 Ludovic Rousseau
1735+
1736+ * [r4906] src/strlcpycat.h: #include <string.h> on plateform that
1737+ have strlcpy() to avoid a warning (Mac OS X and Android)
1738+
1739+ error.c: In function ‘pcsc_stringify_error’: error.c:64: warning:
1740+ implicit declaration of function ‘strlcpy’ error.c:64: warning:
1741+ nested extern declaration of ‘strlcpy’
1742+ * [r4905] src/hotplug_linux.c: #include <pthread.h>
1743+
1744+ Declare pthread_mutex_* functions
1745+ * [r4904] src/hotplug_linux.c: #include "utils.h"
1746+
1747+ Fix hotplug_linux.c:391: error: ‘THREAD_ATTR_DETACHED’ undeclared
1748+ (first use in this function)
1749+ * [r4903] src/hotplug_libusb.c: HPEstablishUSBNotifications(): do
1750+ not call RFReCheckReaderConf if USE_SERIAL is defined. The
1751+ function is not defined in this case.
1752+ * [r4901] configure.in, src/Makefile.am, src/hotplug_libhal.c,
1753+ src/pcscdaemon.c, src/readerfactory.c: Add --disable-serial and
1754+ --disable-usb options
1755+
1756+ --disable-serial removes support of /etc/reader.conf gain: 8.0kB
1757+ of .text (12%) and 160 bytes of .bss (4%) for pcscd
1758+
1759+ --disable-usb removes support of USB hotplug gain: 9.7kB of .text
1760+ (14%) and 960 bytes of .bss (23%) for pcscd
1761+
1762+ If you use both options (and use a static driver configuration)
1763+ gain: 17.7kB of .text (26%) and 1152 bytes of .bss (28%) for
1764+ pcscd
1765+ * [r4900] src/error.c: Define a minimal pcsc_stringify_error() if
1766+ NO_LOG is defined. Only the error code in hex is displayed in
1767+ this case.
1768+
1769+ Gain: 2kB of .text (10%) for libpcsclite
1770+ * [r4899] src/pcscdaemon.c: main(): fork() only in case of auto
1771+ exit to not detach from the terminal if launched in stand alone
1772+ forground mode ("pcscd -fda" for example)
1773+
1774+2010-04-22 Ludovic Rousseau
1775+
1776+ * [r4889] src/pcscdaemon.c: main(): always fork() so that pcscd
1777+ always return in --auto-exit mode but do not close stdout yet
1778+ since we may need to send logs
1779+ * [r4888] src/winscard_clnt.c: SCardEstablishContext(): call
1780+ waitpid() to avoid having a defunct pcscd process when pcscd is
1781+ auto started by the client.
1782+
1783+ The process becomes defunct because pcscd calls daemon() and
1784+ daemon() does fork() and exit() in the father. The father death
1785+ must then be reclaimed by libpcsclite.
1786+
1787+ Thanks to Patrice Angelini for the bug report
1788+
1789+2010-04-18 Ludovic Rousseau
1790+
1791+ * [r4885] src/Makefile.am, src/eventhandler.c,
1792+ src/hotplug_libhal.c, src/hotplug_libusb.c, src/hotplug_linux.c,
1793+ src/ifdwrapper.c, src/pcscdaemon.c, src/readerfactory.c,
1794+ src/readerfactory.h, src/thread_generic.h, src/thread_unix.c,
1795+ src/winscard.c, src/winscard_clnt.c, src/winscard_svc.c: Directly
1796+ use pthread_mutex_* fucntions instead of using wrappers Remove
1797+ thread_unix.c and thread_generic.h now useless
1798+ * [r4884] src/hotplug_libhal.c, src/hotplug_libusb.c,
1799+ src/hotplug_linux.c, src/hotplug_macosx.c, src/readerfactory.h,
1800+ src/utils.c, src/winscard_svc.c: Use pthread_t instead of
1801+ PCSCLITE_THREAD_T
1802+ * [r4883] src/thread_generic.h, src/utils.h: move thread related
1803+ definition from thread_generic.h to utils.h
1804+ * [r4882] src/eventhandler.c, src/hotplug_libhal.c,
1805+ src/hotplug_libusb.c, src/hotplug_linux.c, src/hotplug_macosx.c,
1806+ src/thread_generic.h, src/thread_unix.c, src/utils.c,
1807+ src/utils.h, src/winscard_svc.c: Directly use pthread_* instead
1808+ of SYS_Thread* indirection
1809+
1810+ Move SYS_ThreadCreate in utils.c. This function is not just one
1811+ pthread_* call
1812+
1813+2010-04-16 Ludovic Rousseau
1814+
1815+ * [r4877] src/thread_unix.c: SYS_ThreadExit(): remove dead code
1816+
1817+ From Sun Studio CC "thread_unix.c", line 108: warning: statement
1818+ not reached
1819+ * [r4875] bootstrap: update versions of autotools used
1820+
1821+2010-04-15 Ludovic Rousseau
1822+
1823+ * [r4874] src/simclist.c: remove ; at end of a { } block defined by
1824+ a macro. The Solaris compiler complains with: "simclist.c", line
1825+ 1317: warning: syntax error: empty declaration
1826+
1827+ Thanks to Jörg Schilling for the bug report
1828+ * [r4873] src/sys_unix.c: use fork(), close() and chdir() instead
1829+ of SYS_Fork(), SYS_CloseFile() and SYS_Chdir() in SYS_Daemon() if
1830+ HAVE_DAEMON is not defined (Solaris)
1831+
1832+ Thanks to Jörg Schilling for the bug report
1833+
1834+2010-04-09 Ludovic Rousseau
1835+
1836+ * [r4867] src/winscard_svc.c: Log the command return code using
1837+ DEBUG (SCARD_S_SUCCESS) or ERROR (every thing else) level
1838+
1839+2010-04-08 Ludovic Rousseau
1840+
1841+ * [r4866] UnitaryTests/reset_card.py: reset a card using
1842+ SCardDisconnect (default) or SCardReconnect (if an argument is
1843+ passed)
1844+ * [r4865] UnitaryTests/transmit_loop.py: call SCardTransmit in an
1845+ endless loop
1846+ * [r4864] src/winscard.c: SCardReconnect(): mimic the code from
1847+ SCardDisconnect() regarding card event state notifications
1848+ (changed in revision 4862).
1849+ * [r4863] UnitaryTests/Makefile: no more pcsc_demo target
1850+ * [r4862] src/winscard.c: SCardDisconnect(): Set the card event
1851+ state to SCARD_RESET _before_ doing the reset.
1852+
1853+ This will avoid an SCardTransmit from another application between
1854+ the card reset and the card event state change. In the
1855+ problematic case the SCardTransmit was sending an APDU in T=1 to
1856+ a reseted card but not yet configured (IFDHSetProtocolParameters
1857+ was not yet called) and still in T=0 (default)
1858+ * [r4861] src/winscard.c: SCardConnect() & SCardReconnect():
1859+ correctly log SCARD_PROTOCOL_RAW protocol instead of "unknown"
1860+
1861+2010-04-07 Ludovic Rousseau
1862+
1863+ * [r4859] src/winscard_msg.c, src/winscard_msg_srv.c: Fix copyright
1864+ name and date
1865+ * [r4858] src/winscard_msg.c: Doxygen: document SHMMessageReceive()
1866+ command argument added in revision 4718
1867+ * [r4857] src/winscard_clnt.c: Doxygen:
1868+ SCARD_ATTR_DEVICE_FRIENDLY_NAME is implemented by
1869+ SCardGetAttrib() if the IFD Handler (driver) returns
1870+ IFD_ERROR_TAG. pcsc-lite then returns the same reader name as
1871+ returned by SCardListReaders.
1872+
1873+2010-04-01 Ludovic Rousseau
1874+
1875+ * [r4851] src/PCSC/reader.h.in: Add PCSCv2_PART10_PROPERTY_*
1876+ defines
1877+
1878+2010-03-30 Ludovic Rousseau
1879+
1880+ * [r4845] src/winscard_clnt.c: SCardEstablishContext(): try to
1881+ relaunch pcscd if SCardCheckDaemonAvailability() succeeds but
1882+ SCardEstablishContextTH() fails. This happens if pcscd crashed
1883+ without cleaning /var/run/pcscd/pcscd.comm
1884+
1885+2010-03-26 Ludovic Rousseau
1886+
1887+ * [r4843] src/PCSC/reader.h.in: add FEATURE_GET_TLV_PROPERTIES and
1888+ FEATURE_CCID_ESC_COMMAND from PC/SC part 10 v2.02.07 March 2010
1889+
1890+2010-03-22 Ludovic Rousseau
1891+
1892+ * [r4839] src/pcscdaemon.c: Call at_exit() instead of exit() since
1893+ the libC of Android is bogus and atexit() does not work as it
1894+ should.
1895+
1896+ Thanks to Patrice Angelini for the bug report.
1897+ * [r4838] src/winscard_clnt.c: SCardCheckDaemonAvailability(): use
1898+ stat(2) instead of the now removed SYS_Stat()
1899+
1900+2010-03-19 Ludovic Rousseau
1901+
1902+ * [r4836] src/configfile.l, src/pcscdaemon.c, src/sys_generic.h,
1903+ src/sys_unix.c, src/winscard_msg.c, src/winscard_msg_srv.c,
1904+ src/winscard_svc.c: Remove the one line wrappers from sys_unix.c
1905+ and use directly the POSIX functions instead.
1906+
1907+2010-03-16 Ludovic Rousseau
1908+
1909+ * [r4825] src/Makefile.am: Install pcscd as suid so that autostart
1910+ works correctly (as root)
1911+ * [r4824] TODO: done: remove as much text messages (logs) as
1912+ possible
1913+ * [r4823] configure.in: Display PCSCLITE_FEATURES
1914+ * [r4822] configure.in: Add --enable-embedded (default is no) to
1915+ build pcsc-lite for an embedded system. This will activate the
1916+ NO_LOG option to disable logging and limit RAM and disk
1917+ consumption.
1918+ * [r4821] src/PCSC/debuglog.h, src/debug.c, src/debuglog.c,
1919+ src/hotplug_libhal.c, src/winscard_svc.c: If NO_LOG is defined
1920+ then no log are displayed. The idea is to limit the binaries size
1921+ on disk and RAM consumption at execution time.
1922+
1923+ With NO_LOG defined we gain 26% (17 kB) for the .text segment of
1924+ pcscd and 15% (4 kB) for the .text segment of libpcsclite.so (for
1925+ i386)
1926+ * [r4820] src/utils.c: Include config.h before the other header
1927+ files so the configuration set in config.h can be used in the
1928+ other header files (NO_LOG for example)
1929+ * [r4819] src/configfile.l: Include config.h before the other
1930+ header files so the configuration set in config.h can be used in
1931+ the other header files (NO_LOG for example)
1932+ * [r4818] src/Makefile.am, src/debug.c, src/debug.h,
1933+ src/dyn_hpux.c, src/dyn_macosx.c, src/dyn_unix.c, src/sys_unix.c,
1934+ src/tokenparser.l, src/utils.c, src/winscard_clnt.c,
1935+ src/winscard_msg.c: Remove debug.h and use debuglog.h instead.
1936+ They both define the same log API.
1937+
1938+2010-03-12 Ludovic Rousseau
1939+
1940+ * [r4813] UnitaryTests/ThreadSafe.py,
1941+ UnitaryTests/ThreadSafeConnect.py: revert change in revision 4812
1942+ since the problem is now solved in pyscard (revision 382)
1943+ * [r4812] UnitaryTests/ThreadSafe.py,
1944+ UnitaryTests/ThreadSafeConnect.py: do not initialise the library
1945+ in a thread as it crashed on Mac OS X
1946+
1947+2010-03-09 Ludovic Rousseau
1948+
1949+ * [r4809] src/winscard_svc.c: read only accesses to contextsList
1950+ list shall also be protected by a mutex
1951+ * [r4808] src/readerfactory.c: read only accesses to handlesList
1952+ list shall also be protected by a mutex
1953+ * [r4807] src/readerfactory.c, src/readerfactory.h: manipulations
1954+ of handlesList field of ReaderContext should now be thread safe
1955+ * [r4806] src/winscard_svc.c: MSGRemoveContext(): correctly indent
1956+ a line
1957+ * [r4805] src/winscard_svc.c: manipulations of cardsList should now
1958+ be thread safe
1959+ * [r4804] src/winscard_svc.c: remove extra tab
1960+ * [r4803] UnitaryTests/ThreadSafeConnect.py: add more logging
1961+ * [r4802] UnitaryTests/ThreadSafeConnect.py: stress thread safeness
1962+ of SCardConnect/SCardDisconnect
1963+ * [r4801] src/winscard_svc.c: manipulations of contextsList should
1964+ now be thread safe
1965+ * [r4800] UnitaryTests/ThreadSafe.py: stress thread safeness
1966+
1967+2010-03-04 Ludovic Rousseau
1968+
1969+ * [r4793] UnitaryTests/SCardBlockingBehaviourTest.py,
1970+ UnitaryTests/SCardExclusiveBehaviour.py: make pylint happier
1971+ * [r4792] UnitaryTests/MCT_ReaderDirect.py: make pylint happier
1972+ * [r4791] UnitaryTests/control_get_firmware.py: make pylint happy
1973+ * [r4790] UnitaryTests/control_get_firmware.py: remove useless
1974+ import
1975+ * [r4789] UnitaryTests/MCT_ReaderDirect.py,
1976+ UnitaryTests/control_get_firmware.py,
1977+ UnitaryTests/control_switch_interface.py: use list comprehension
1978+ instead of map() (more efficient and pylint does not like map())
1979+
1980+2010-03-03 Ludovic Rousseau
1981+
1982+ * [r4788] UnitaryTests/control_switch_interface.py: make pylint
1983+ happier
1984+
1985+2010-03-02 Ludovic Rousseau
1986+
1987+ * [r4784] src/debuglog.c: debuglog.c is only used by pcscd. So no
1988+ need to use #ifdef PCSCD
1989+
1990+2010-03-01 Ludovic Rousseau
1991+
1992+ * [r4783] TODO: fix typo
1993+
1994+2010-02-26 Ludovic Rousseau
1995+
1996+ * [r4779] configure.in, doc/Makefile.am,
1997+ doc/update-reader.conf.8.in, etc/Makefile.am,
1998+ etc/update-reader.conf.in, src/configfile.h, src/configfile.l,
1999+ src/readerfactory.c: Add the ability to parse all the
2000+ configuration files of a directory instead of just one
2001+ configuration file. update-reader.conf is then now obsolete.
2002+
2003+ See Debian bug #565896 http://bugs.debian.org/565896
2004+
2005+2010-02-25 Ludovic Rousseau
2006+
2007+ * [r4778] src/pcscdaemon.c: update copyright
2008+
2009+2010-02-23 Ludovic Rousseau
2010+
2011+ * [r4769] src/winscard_clnt.c: SCardEstablishContextTH() &
2012+ SCardGetStatusChange(): completly initialize structures sent to
2013+ the daemon to avoid a valgrind warning: Syscall param
2014+ socketcall.send(msg) points to uninitialised byte(s)
2015+ * [r4768] UnitaryTests/SCardBlockingBehaviourTest.py: As of
2016+ revision r4719 Linux is now Windows "compatible"
2017+
2018+2010-02-21 Ludovic Rousseau
2019+
2020+ * [r4766] src/misc.h: " The gcc on Solaris 10 combined with the Sun
2021+ loader appears to not handle the gcc visibility attribute
2022+ correctly. The sparc version says it is ignored, the x86 version
2023+ gives linker error. The attached patch sun.gcc.1.5.6-svn-477.txt
2024+ tries to test for gcc on Sun and not use the visibility
2025+ attribute. If on a sun and the compiler is not GCC, try and use
2026+ the Sun __global and __hidden instead. (I did not try the Sun
2027+ Studio compiler with this.) "
2028+
2029+ Thanks to Douglas E. Engert for the patch
2030+ http://archives.neohapsis.com/archives/dev/muscle/2010-q1/0127.html
2031+ * [r4765] doc/pcscd.8.in: use @sysconfdir_exp@ instead of (removed)
2032+ @confdir@
2033+
2034+2010-02-12 Ludovic Rousseau
2035+
2036+ * [r4758] src/readerfactory.c: RFStartSerialReaders(): typo in
2037+ comment
2038+ * [r4756] src/configfile.l, src/tokenparser.l: Fix 2 compilation
2039+ warnings
2040+
2041+ configfile.c:1151: warning: ‘input’ defined but not used
2042+ tokenparser.c:1167: warning: ‘input’ defined but not used
2043+ * [r4755] src/lassert.h: Fix splint error
2044+ src/pcsc-wirecheck-dist.c:19:164: Body of if clause of if
2045+ statement is empty
2046+ * [r4754] src/hotplug_libhal.c: HPAddDevice(): fix a memory leak
2047+ * [r4753] src/readerfactory.c: RFRemoveReader(): simplify/factorise
2048+ the resources deallocation
2049+
2050+2010-02-10 Ludovic Rousseau
2051+
2052+ * [r4751] etc/update-reader.conf.in: use @sysconfdir@ instead of
2053+ (the now removed) @confdir@
2054+
2055+ Thanks to Sébastien Lorquet for the bug report
2056+ http://archives.neohapsis.com/archives/dev/muscle/2010-q1/0098.html
2057+
2058+2010-02-09 Ludovic Rousseau
2059+
2060+ * [r4744] src/readerfactory.c, src/readerfactory.h: use a dynamic
2061+ instead of static allocation for lpcDevice
2062+ * [r4743] src/readerfactory.c: RFAddReader(): allocate an int
2063+ instead of a DWORD for pFeeds
2064+
2065+ The patch in revision 4741 was not complete
2066+ * [r4742] src/readerfactory.c, src/readerfactory.h: In struct
2067+ ReaderContext rename pdwMutex to pMutex and change type from
2068+ PDWORD to int *
2069+ * [r4741] src/readerfactory.c, src/readerfactory.h: In struct
2070+ ReaderContext rename pdwFeeds to pFeeds and change type from
2071+ PDWORD to int *
2072+ * [r4740] src/readerfactory.c, src/readerfactory.h: In struct
2073+ ReaderContext remove the now useless dwBlockStatus field
2074+ * [r4739] src/eventhandler.c, src/ifdwrapper.c,
2075+ src/readerfactory.c, src/readerfactory.h, src/winscard.c: In
2076+ struct ReaderContext rename dwSlot to slot and change type from
2077+ DWORD to int
2078+ * [r4738] src/ifdwrapper.c, src/readerfactory.c,
2079+ src/readerfactory.h, src/winscard.c: In struct ReaderContext
2080+ rename dwVersion to version and change type from DWORD to int
2081+ * [r4737] src/ifdwrapper.c, src/readerfactory.c,
2082+ src/readerfactory.h: In struct ReaderContext change dwPort from
2083+ DWORD to int and rename it to port
2084+
2085+ Fix a compiler warning readerfactory.c: In function
2086+ ‘RFReCheckReaderConf’: readerfactory.c:1393: warning: comparison
2087+ between signed and unsigned
2088+ * [r4736] src/tokenparser.l: Fix compiler warning
2089+
2090+ tokenparser.l: In function ‘tperrorCheck’: tokenparser.l:102:
2091+ warning: unused parameter ‘token_error’
2092+ * [r4735] src/configfile.l, src/readerfactory.c,
2093+ src/readerfactory.h: In struct SerialReader rename dwChannelId in
2094+ channelId since it is an int and no more a DWORD
2095+ * [r4734] src/eventhandler.c: Fix a compiler warning
2096+
2097+ eventhandler.c: In function ‘EHStatusHandlerThread’:
2098+ eventhandler.c:494: warning: comparison between signed and
2099+ unsigned
2100+ * [r4733] src/winscard_clnt.c: do not use the uint32_t rv structure
2101+ field but copy it into rv first to avoid a compiler warning
2102+
2103+ winscard_clnt.c: In function ?SCardReconnect?:
2104+ winscard_clnt.c:1035: warning: comparison between signed and
2105+ unsigned winscard_clnt.c: In function ?SCardBeginTransaction?:
2106+ winscard_clnt.c:1254: warning: comparison between signed and
2107+ unsigned winscard_clnt.c: In function ?SCardStatus?:
2108+ winscard_clnt.c:1657: warning: comparison between signed and
2109+ unsigned winscard_clnt.c: In function ?SCardTransmit?:
2110+ winscard_clnt.c:2939: warning: comparison between signed and
2111+ unsigned
2112+ * [r4732] src/PCSC/pcsclite.h.in: force the return codes SCARD_* to
2113+ be long since the SCard* functions return a LONG type
2114+ * [r4731] src/eventhandler.c, src/readerfactory.c,
2115+ src/readerfactory.h, src/winscard.c, src/winscard_svc.c: In
2116+ struct ReaderContext dwLockId is used to store a SCARDHANDLE so
2117+ change its type from DWORD to SCARDHANDLE and rename the field to
2118+ hLockId
2119+
2120+ Fix 2 compiler warning: winscard.c: In function
2121+ 'SCardDisconnect': winscard.c:847: warning: comparison between
2122+ signed and unsigned winscard_svc.c: In function
2123+ 'MSGRemoveContext': winscard_svc.c:807: warning: comparison
2124+ between signed and unsigned
2125+ * [r4730] src/winscard_msg.c: fix a compilation warning
2126+
2127+ winscard_msg.c: In function ‘SHMMessageReceive’:
2128+ winscard_msg.c:252: warning: unused parameter ‘command’
2129+ * [r4729] src/winscard_svc.c: fix 2 compilation warnings
2130+
2131+ winscard_svc.c: In function ‘MSGRemoveContext’:
2132+ winscard_svc.c:776: warning: comparison between signed and
2133+ unsigned winscard_svc.c: In function ‘MSGAddHandle’:
2134+ winscard_svc.c:848: warning: comparison between signed and
2135+ unsigned
2136+ * [r4728] src/eventhandler.h, src/winscard_clnt.c: Use READER_STATE
2137+ * instead of PREADER_STATE to make it explicit it is a pointer
2138+ * [r4727] src/eventhandler.c, src/eventhandler.h, src/ifdwrapper.c,
2139+ src/ifdwrapper.h, src/readerfactory.c, src/readerfactory.h,
2140+ src/winscard.c, src/winscard_svc.c: Use READER_CONTEXT * instead
2141+ of PREADER_CONTEXT to make it explicit it is a pointer
2142+ * [r4726] src/readerfactory.c: Fix a compilation warning
2143+
2144+ readerfactory.c: In function ‘RFAddReaderHandle’:
2145+ readerfactory.c:1125: warning: comparison between signed and
2146+ unsigned
2147+ * [r4725] src/eventhandler.c, src/readerfactory.c,
2148+ src/readerfactory.h, src/winscard.c: In struct ReaderContext
2149+ rename "dwContexts" to "contexts" since it is no more a DWORD but
2150+ a int32_t
2151+ * [r4724] src/winscard_clnt.c: Fix a compilation warning
2152+
2153+ winscard_clnt.c: In function ‘SCardListReaderGroups’:
2154+ winscard_clnt.c:3258: warning: comparison between signed and
2155+ unsigned
2156+ * [r4723] src/pcscd.h.in, src/readerfactory.c, src/readerfactory.h:
2157+ Use dynamic instead of static allocation for the driver library
2158+ filename. The filename is no more limited to 100 characters.
2159+
2160+ Closes: [#312332] MAX_LIBNAME too short?
2161+ * [r4722] src/pcscdaemon.c, src/winscard_svc.c, src/winscard_svc.h:
2162+ use int instead of unsigned int for customMaxThreadCounter,
2163+ customMaxReaderHandles and customMaxThreadCardHandles since
2164+ list_size() returns an int and we compare the two values (avoid
2165+ sign mismatch)
2166+ * [r4721] src/winscard_svc.c: fix 2 compilation warnings
2167+
2168+ winscard_svc.c: In function ‘CreateContextThread’:
2169+ winscard_svc.c:146: warning: comparison between signed and
2170+ unsigned winscard_svc.c: In function ‘MSGAddHandle’:
2171+ winscard_svc.c:856: warning: comparison between signed and
2172+ unsigned
2173+
2174+2010-02-08 Ludovic Rousseau
2175+
2176+ * [r4720] src/winscard_clnt.c: SCardGetStatusChange(): fix 4
2177+ compilation warnings
2178+
2179+ winscard_clnt.c: In function ‘SCardGetStatusChange’:
2180+ winscard_clnt.c:1864: warning: comparison between signed and
2181+ unsigned winscard_clnt.c:1875: warning: comparison between signed
2182+ and unsigned winscard_clnt.c:1911: warning: comparison between
2183+ signed and unsigned winscard_clnt.c:2189: warning: comparison
2184+ between signed and unsigned
2185+ * [r4719] src/winscard_clnt.c: Make SCardReconnect(), SCardStatus()
2186+ and SCardTransmit() block instead of returning
2187+ SCARD_E_SHARING_VIOLATION immediately. These functions will then
2188+ behave like on Windows.
2189+
2190+ This can happen if these functions are called when the reader is
2191+ locked by a PCSC transaction
2192+ (SCardBeginTransaction/SCardEndTransaction).
2193+
2194+ You can define the environment variable PCSCLITE_NO_BLOCKING to
2195+ use the old behavior.
2196+
2197+ Thanks to Jean-Luc Giraud for the patch.
2198+ http://archives.neohapsis.com/archives/dev/muscle/2010-q1/0041.html
2199+ * [r4718] src/winscard_clnt.c, src/winscard_msg.c,
2200+ src/winscard_msg.h, src/winscard_svc.c: add a command parameter
2201+ to SHMMessageReceive() to be able log the ongoing command in case
2202+ of problem
2203+
2204+2010-02-05 Ludovic Rousseau
2205+
2206+ * [r4717] UnitaryTests/SCardExclusiveBehaviour.py: Check the return
2207+ value of SCardConnect() on a reader already used in
2208+ SCARD_SHARE_EXCLUSIVE mode
2209+ * [r4716] src/winscard.c: fix a bug introduced by the previous
2210+ revision
2211+ * [r4715] src/winscard.c: SCardGetAttrib(): check for buffer
2212+ overflow with SCARD_ATTR_DEVICE_FRIENDLY_NAME
2213+
2214+ Thanks to Jean-Luc Giraud for complete
2215+ SCARD_ATTR_DEVICE_FRIENDLY_NAME patch
2216+
2217+2010-02-04 Ludovic Rousseau
2218+
2219+ * [r4710] src/PCSC/pcsclite.h.in, src/winscard_clnt.c: add a
2220+ copyright for Martin Paljak
2221+
2222+2010-02-03 Ludovic Rousseau
2223+
2224+ * [r4708] configure.in, src/pcscd.h.in: Use the standard
2225+ --sysconfdir=DIR ($prefix/etc by default) instead of
2226+ --enable-confdir=DIR for defining the directory containing
2227+ reader.conf
2228+ * [r4707] configure.in: sysconfdir_exp is a configuration directory
2229+ not configuration file
2230+
2231+2010-02-02 Ludovic Rousseau
2232+
2233+ * [r4705] src/winscard.c: SCardStatus(): returns
2234+ SCARD_E_SHARING_VIOLATION if the reader is already used More
2235+ conform to Windows
2236+ * [r4704] UnitaryTests/SCardBlockingBehaviourTest.py: allow to use
2237+ any reader and not just the first one
2238+ * [r4703] src/testpcsc.c: test SCARD_ATTR_DEVICE_FRIENDLY_NAME
2239+ * [r4702] src/winscard.c: SCardGetAttrib(): add support of
2240+ SCARD_ATTR_DEVICE_FRIENDLY_NAME as it is better implemented in
2241+ pcscd (it knows the friendly name)
2242+ * [r4701] src/winscard_clnt.c: SCardEstablishContext(): set
2243+ PCSCLITE_PCSCD_ARGS with the argument you want to pass to pcscd
2244+ in autostart Only one argument is passed. The space character is
2245+ not a separator. example: export PCSCLITE_PCSCD_ARGS=-dfa
2246+ * [r4700] src/pcscd.h.in, src/pcscdaemon.c, src/winscard_clnt.c,
2247+ src/winscard_svc.c: pcscd will suicide itself after 60 seconds of
2248+ inactivity if it is started using --auto-exit This is the default
2249+ behavior when pcscd is started by libpcsclite
2250+ * [r4699] src/pcscdaemon.c: do not ignore the SIGALRM signal any
2251+ more since we need it for the auto exit feature
2252+
2253+2010-01-22 Ludovic Rousseau
2254+
2255+ * [r4685] configure.in: add $host to the PCSCLITE_FEATURES
2256+ definition (available with "pcscd -v") to display the CPU
2257+ architecture host is something like x86_64-unknown-linux-gnu
2258+ * [r4683] configure.in: use LT_INIT(disable-static) instead of the
2259+ deprecated AM_DISABLE_STATIC
2260+
2261+ Thanks to Roumen Petrov
2262+
2263+2010-01-21 Ludovic Rousseau
2264+
2265+ * [r4682] UnitaryTests/MCT_ReaderDirect.py,
2266+ UnitaryTests/control_get_firmware.py,
2267+ UnitaryTests/control_switch_interface.py: do not try to reset the
2268+ card on exit. We are talking to the reader. A card may NOT be
2269+ present.
2270+ * [r4681] configure.in, src/Makefile.am: Do not completely disable
2271+ building the static version of the library but just disable it by
2272+ default
2273+
2274+ Use AM_DISABLE_STATIC in configure.in instead of -shared in
2275+ Makefile.am
2276+
2277+2010-01-16 Ludovic Rousseau
2278+
2279+ * [r4674] UnitaryTests/SCardBlockingBehaviourTest.py: Check the
2280+ behavior of PCSC functions when a PCSC transaction is ongoing
2281+
2282+ Thanks to Jean-Luc Giraud for the original code
2283+ * [r4673] src/Makefile.am: use -shared to only provide a shared
2284+ library. If you need to use the static .a library you just need
2285+ to remove -shared
2286+
2287+2010-01-15 Ludovic Rousseau
2288+
2289+ * [r4672] UnitaryTests/control_switch_interface.py: parse error
2290+ code
2291+ * [r4671] UnitaryTests/control_switch_interface.py: improve
2292+ documentation and output
2293+ * [r4670] src/winscard_clnt.c: Only call SCardCheckSameProcess() if
2294+ DO_CHECK_SAME_PROCESS is defined (default is not defined).
2295+
2296+ Some thread libraries (on embedded systems for example) have a
2297+ different pid for each thread of a same process. So the check
2298+ using getpid() is wrong and handles are invalidated when they
2299+ should not. The PC/SC function returned SCARD_E_INVALID_HANDLE
2300+ * [r4669] src/winscard_clnt.c: define and use the
2301+ CHECK_SAME_PROCESS macro instead of calling
2302+ SCardCheckSameProcess() directly
2303+
2304+2010-01-14 Ludovic Rousseau
2305+
2306+ * [r4668] src/winscard_clnt.c: Doxygen: update
2307+ SCardGetStatusChange() doc. The function returns on any events,
2308+ not just those specified in dwCurrentState
2309+ * [r4667] TODO: For embedded/constained systems
2310+
2311+ - remove as much text messages (logs) as possible to limit the
2312+ size of the binaries (pcscd and libpcsclite)
2313+
2314+ - use static driver instead of reader polling and dynamic driver
2315+ loading
2316+
2317+2010-01-08 Ludovic Rousseau
2318+
2319+ * [r4646] src/readerfactory.c: RFInitializeReader(): do not
2320+ dynamically load the driver if PCSCLITE_STATIC_DRIVER is defined
2321+ * [r4645] src/ifdwrapper.c: better support of
2322+ PCSCLITE_STATIC_DRIVER.
2323+
2324+ This is used to statically link the reader driver to pcscd. Since
2325+ the link is static you must define the IFDHandler API version at
2326+ compilation time. Either define IFDHANDLERv1, IFDHANDLERv2 or
2327+ IFDHANDLERv3
2328+ * [r4644] src/dyn_unix.c: fix a warning when compiling with
2329+ PCSCLITE_STATIC_DRIVER defined
2330+
2331+ dyn_unix.c: In function ‘DYN_CloseLibrary’: dyn_unix.c:47:
2332+ warning: unused variable ‘ret’
2333+
2334+2010-01-03 Ludovic Rousseau
2335+
2336+ * [r4635] src/hotplug_macosx.c: hotplug_macosx.c: In function
2337+ ‘HPDeviceAppeared’: hotplug_macosx.c:70: warning: unused
2338+ parameter ‘refCon’ hotplug_macosx.c: In function
2339+ ‘HPDeviceDisappeared’: hotplug_macosx.c:85: warning: unused
2340+ parameter ‘refCon’
2341+
2342+2010-01-02 Ludovic Rousseau
2343+
2344+ * [r4634] src/simclist.c: fix a compilation warning
2345+ simclist.c:1335: warning: unused parameter ‘el’
2346+ * [r4633] src/error.c: pcsc_stringify_error(): spelling error
2347+ (detected by lintian(1))
2348+
2349+2010-01-01 Ludovic Rousseau
2350+
2351+ * [r4630] src/ifdwrapper.c: add #include <unistd.h> to declare the
2352+ timeval structure
2353+
2354+ In file included from ifdwrapper.c:31: utils.h:26: warning:
2355+ ‘struct timeval’ declared inside parameter list utils.h:26:
2356+ warning: its scope is only this definition or declaration, which
2357+ is probably not what you want
2358+ * [r4629] src/dyn_unix.c, src/ifdwrapper.c, src/pcscdaemon.c:
2359+ better handling of PCSCLITE_STATIC_DRIVER as can be used on
2360+ plateforms using µClinux (without dynamic loader)
2361+
2362+ Thanks to Guo Wenxue for a proto-patch
2363+ * [r4628] src/hotplug_generic.c, src/hotplug_linux.c,
2364+ src/hotplug_macosx.c: ReCheckSerialReaders variable is not used
2365+ anymore
2366+ * [r4627] src/winscard_msg_srv.c: ReCheckSerialReaders variable
2367+ from hotplug_* is not used anymore
2368+
2369+2009-12-18 Ludovic Rousseau
2370+
2371+ * [r4621] src/winscard_svc.c: typo in log message
2372+
2373+2009-12-15 Ludovic Rousseau
2374+
2375+ * [r4616] src/atrhandler.c: ATRDecodeAtr(): reformat
2376+ * [r4615] src/atrhandler.c: ATRDecodeAtr(): check for TA2 (specific
2377+ mode) even if TD2 is not present "3F 80 10 01" was not parsed
2378+ correctly for example and T=0 was used instead of T=1 (specific
2379+ mode)
2380+ * [r4613] UnitaryTests/MCT_ReaderDirect.py: rename
2381+ FEATURE_MCT_READERDIRECT in FEATURE_MCT_READER_DIRECT
2382+ * [r4612] src/PCSC/reader.h.in: rename FEATURE_MCT_READERDIRECT in
2383+ FEATURE_MCT_READER_DIRECT to be conform with ch. 2.3 of PCSC v2
2384+ part 10
2385+
2386+2009-12-14 Ludovic Rousseau
2387+
2388+ * [r4611] UnitaryTests/SCard_fork.py: Unitary Test for fork()
2389+ detection
2390+
2391+2009-12-11 Ludovic Rousseau
2392+
2393+ * [r4608] src/winscard_clnt.c: Doxygen: add missing error codes
2394+ * [r4607] src/winscard_svc.c: ContextThread(): SCARD_CANCEL return
2395+ SCARD_E_INVALID_HANDLE instead of SCARD_E_INVALID_VALUE if the
2396+ handle is invalid
2397+ * [r4606] src/winscard_clnt.c: Doxygen: document 2 missing
2398+ SCARD_F_COMM_ERROR possible return values
2399+ * [r4605] src/winscard_clnt.c: Doxygen: document 3 missing error
2400+ codes for SCardConnect()
2401+ * [r4604] src/PCSC/pcsclite.h.in: reformat
2402+ * [r4603] src/winscard_clnt.c: use sizeof(SCARD_IO_REQUEST) instead
2403+ of 8 for the .cbPciLength field This is the correct value on
2404+ 64-bit system.
2405+ * [r4602] src/pcscdaemon.c, src/winscard.c: g_rgSCard*Pci are not
2406+ used on the server side
2407+ * [r4601] src/pcscdaemon.c: SIGHUP signal has already been set to
2408+ SIG_IGN. No need to quit on SIGHUP.
2409+ * [r4600] src/pcscdaemon.c: revert revision 4599 and remove the
2410+ second call to signal() instead of the first one. We need to
2411+ clean-up as soon as we created the files.
2412+ * [r4599] src/pcscdaemon.c: remove duplicate calls to signal()
2413+
2414+2009-12-03 Ludovic Rousseau
2415+
2416+ * [r4587] src/winscard_clnt.c: Doxygen: SCardConnect() value 0 for
2417+ dwPreferredProtocols valid only if dwShareMode is
2418+ SCARD_SHARE_DIRECT
2419+ * [r4585] src/winscard_clnt.c: use the more efficient
2420+ SCardCheckSameProcess() instead of SCardCheckDaemonAvailability()
2421+ to detect use of the API after a fork()
2422+
2423+2009-12-02 Ludovic Rousseau
2424+
2425+ * [r4583] src/winscard_clnt.c: Doxygen: SCardEstablishContext()
2426+ Each thread of an application shall use its own SCARDCONTEXT. On
2427+ Windows the same SCARDCONTEXT can be shared by different threads
2428+ of same application.
2429+
2430+2009-11-27 Ludovic Rousseau
2431+
2432+ * [r4580] src/winscard_clnt.c: SCardEstablishContext(): try to
2433+ start the pcscd daemon if not already running
2434+ * [r4579] configure.in: define PCSCD_BINARY
2435+ * [r4577] src/pcscdaemon.c: improve the checking of an already
2436+ running pcscd
2437+ * [r4576] src/winscard_clnt.c: Doxygen: For historical reasons the
2438+ value of SCARD_E_UNSUPPORTED_FEATURE is 0x8010001F in pcsc-lite
2439+ but 0x80100022 in Windows WinSCard
2440+ * [r4575] src/PCSC/pcsclite.h.in: SCARD_E_UNSUPPORTED_FEATURE is
2441+ not a PC/SC Lite specific extension, but its numerical value is
2442+ different on Windows
2443+
2444+2009-11-26 Ludovic Rousseau
2445+
2446+ * [r4574] src/PCSC/pcsclite.h.in, src/error.c: remove pcsc-lite
2447+ specific SCARD_W_INSERTED_CARD code
2448+
2449+ SCARD_W_INSERTED_CARD value 0x8010006A was also in collision with
2450+ SCARD_W_SECURITY_VIOLATION
2451+ * [r4573] src/error.c: reorder error codes
2452+
2453+2009-11-24 Ludovic Rousseau
2454+
2455+ * [r4570] src/winscard_clnt.c: do not declare the SCardUnload()
2456+ function removed in revision 4435
2457+ * [r4569] src/winscard_clnt.c: create a SCardInvalidateHandles()
2458+ function from SCardCheckDaemonAvailability() code
2459+ * [r4568] src/winscard_clnt.c: SCardCheckDaemonAvailability(): do
2460+ not delete the context since it is already done by
2461+ SCardCleanContext()
2462+ * [r4567] src/winscard_clnt.c: SCardCleanContext(): deallocate the
2463+ context memory
2464+
2465+2009-11-23 Ludovic Rousseau
2466+
2467+ * [r4566] src/winscard_clnt.c: Doxygen: update SCardControl() list
2468+ of possible error codes partly revert revision 4558
2469+
2470+ Thanks to Martin Paljak for the bug report
2471+ http://archives.neohapsis.com/archives/dev/muscle/2009-q4/0079.html
2472+
2473+2009-11-19 Ludovic Rousseau
2474+
2475+ * [r4562] src/eventhandler.c, src/readerfactory.c,
2476+ src/winscard_clnt.c, src/winscard_svc.c: use list_delete()
2477+ instead of list_locate() + list_delete_at()
2478+ * [r4561] src/simclist.c, src/simclist.h: add list_delete()
2479+ "expunge the first found given element from the list"
2480+
2481+2009-11-18 Ludovic Rousseau
2482+
2483+ * [r4560] UnitaryTests/MCT_ReaderDirect.py,
2484+ UnitaryTests/SCardBeginTransaction_Disconnect.py,
2485+ UnitaryTests/SCardCancel.py, UnitaryTests/SCardConnect_DIRECT.py,
2486+ UnitaryTests/SCardGetStatusChange/SCardGetStatusChange.py,
2487+ UnitaryTests/SCardGetStatusChange/SCardGetStatusChange_PnP.py,
2488+ UnitaryTests/SCardReconnect.py,
2489+ UnitaryTests/control_get_firmware.py,
2490+ UnitaryTests/control_switch_interface.py: reformat to make
2491+ pep8(1) happy
2492+ * [r4559] src/winscard_clnt.c: Doxygen improvement
2493+ * [r4558] src/winscard_clnt.c: Doxygen: update SCardControl() list
2494+ of possible error codes
2495+ * [r4554] src/readerfactory.c, src/winscard_clnt.c,
2496+ src/winscard_svc.c: add Jean-Luc Giraud in copyright holders
2497+ because of his patch in revision 4553
2498+
2499+2009-11-17 Ludovic Rousseau
2500+
2501+ * [r4553] src/Makefile.am, src/pcscd.h.in, src/pcscdaemon.c,
2502+ src/readerfactory.c, src/readerfactory.h, src/winscard_clnt.c,
2503+ src/winscard_svc.c, src/winscard_svc.h: Use lists instead of
2504+ fixed size arrays to store handles.
2505+
2506+ It is now possible to have: - 200 simultaneous PC/SC clients
2507+ instead of 16 - 200 SCardConnect per client instead of 16 - 200
2508+ clients per reader instead of 16
2509+
2510+ The default value of 200 can be changed by giving an argument to
2511+ pcscd --max-thread --max-card-handle-per-thread
2512+ --max-card-handle-per-reader
2513+
2514+ Thanks to Jean-Luc Giraud for the big patch
2515+ * [r4552] src/readerfactory.c: RFCreateReaderHandle(): add a
2516+ comment that a 16-bit random is not secure enough
2517+
2518+2009-11-16 Ludovic Rousseau
2519+
2520+ * [r4549] UnitaryTests/SCardReconnect.py: SCardReconnect() should
2521+ block instead of returning SCARD_E_SHARING_VIOLATION
2522+ * [r4548] UnitaryTests/SCardConnect_DIRECT.py: typo in text
2523+ * [r4547] src/winscard_svc.c: remove printf() for debug from
2524+ READ_BODY() macro
2525+
2526+2009-11-12 Ludovic Rousseau
2527+
2528+ * [r4544] UnitaryTests/BufferOverflow.c, src/PCSC/ifdhandler.h,
2529+ src/PCSC/pcsclite.h.in, src/PCSC/reader.h.in,
2530+ src/PCSC/winscard.h, src/PCSC/wintypes.h, src/atrhandler.c,
2531+ src/atrhandler.h, src/configfile.h, src/configfile.l,
2532+ src/debug.c, src/debug.h, src/debuglog.c, src/dyn_generic.h,
2533+ src/dyn_hpux.c, src/dyn_unix.c, src/error.c, src/eventhandler.c,
2534+ src/eventhandler.h, src/hotplug.h, src/hotplug_libhal.c,
2535+ src/hotplug_libusb.c, src/hotplug_linux.c, src/ifdwrapper.c,
2536+ src/ifdwrapper.h, src/lassert.h, src/misc.h, src/parser.h,
2537+ src/pcsc-wirecheck-gen.c, src/pcscd.h.in, src/pcscdaemon.c,
2538+ src/powermgt_generic.c, src/readerfactory.c, src/readerfactory.h,
2539+ src/strlcpycat.h, src/sys_generic.h, src/sys_unix.c,
2540+ src/thread_generic.h, src/thread_unix.c, src/tokenparser.l,
2541+ src/utils.c, src/utils.h, src/utils/formaticc.c,
2542+ src/utils/installifd.c, src/winscard.c, src/winscard_clnt.c,
2543+ src/winscard_msg.c, src/winscard_msg.h, src/winscard_msg_srv.c,
2544+ src/winscard_svc.c, src/winscard_svc.h: update copyright dates
2545+
2546+2009-11-07 Ludovic Rousseau
2547+
2548+ * [r4540] src/winscard_svc.c: remove ducplicate READ_BODY() and
2549+ WRITE_BODY() macros
2550+
2551+2009-11-06 Ludovic Rousseau
2552+
2553+ * [r4538] src/winscard_clnt.c: remove useless PCHANNEL_MAP type
2554+ definition
2555+ * [r4537] src/winscard_clnt.c: remove extra spaces at end of line
2556+ * [r4536] src/hotplug_libusb.c: reindent
2557+ * [r4535] src/hotplug_linux.c: reindent
2558+ * [r4534] src/ifdwrapper.c: reindent
2559+ * [r4533] src/readerfactory.c: RFAddReader(): make comment more
2560+ clear for TAG_IFD_SLOT_THREAD_SAFE
2561+ * [r4532] src/readerfactory.c: RFAddReader(): make comment more
2562+ clear for TAG_IFD_THREAD_SAFE
2563+
2564+2009-11-05 Ludovic Rousseau
2565+
2566+ * [r4531] src/winscard_msg.c, src/winscard_msg_srv.c: use PF_*
2567+ instead of AF_* for socket(2) argument
2568+
2569+ Thanks to Sébastien Lorquet for the bug report
2570+ http://archives.neohapsis.com/archives/dev/muscle/2009-q4/0039.html
2571+ * [r4530] src/winscard_msg.c, src/winscard_msg_srv.c: Revert change
2572+ in revision 4395. Solaris does not have (Posix) AF_LOCAL
2573+
2574+ Thanks to Douglas E. Engert for the bug report
2575+ http://archives.neohapsis.com/archives/dev/muscle/2009-q4/0038.html
2576+
2577+2009-11-03 Ludovic Rousseau
2578+
2579+ * [r4529] src/readerfactory.h: remove useless pointer types
2580+
2581+2009-11-02 Ludovic Rousseau
2582+
2583+ * [r4528] src/winscard_clnt.c: SCardConnect(), SCardDisconnect() &
2584+ SCardReleaseContext(): correctly handle error cases profiling
2585+
2586+2009-10-28 Ludovic Rousseau
2587+
2588+ * [r4527] src/readerfactory.h, src/thread_generic.h,
2589+ src/thread_unix.c, src/winscard_clnt.c: remove the type
2590+ PCSCLITE_MUTEX_T and use an explicit pointer type (PCSCLITE_MUTEX
2591+ *) instead
2592+
2593+ This should avoid bugs like the one corrected in revision 4525
2594+ * [r4525] src/eventhandler.c: correctly use the lock API for
2595+ ClientsWaitingForEvent_lock
2596+ * [r4524] src/pcscdaemon.c, src/readerfactory.c,
2597+ src/readerfactory.h: call exit() in SVCServiceRunLoop() instead
2598+ of RFCleanupReaders() and remove the RFCleanupReaders() parameter
2599+ * [r4523] src/readerfactory.c: use return() instead of exit() if
2600+ DYN_GetAddress() fails
2601+ * [r4522] src/eventhandler.c: explicitly use (void)fct() to ignore
2602+ the returned value
2603+
2604+2009-10-27 Ludovic Rousseau
2605+
2606+ * [r4520] src/eventhandler.c: EHStatusHandlerThread(): call
2607+ EHSignalEventToClients() _after_ logging "Card inserted into ..."
2608+ * [r4519] src/winscard_svc.c: ContextThread(): add the client ID to
2609+ the command log message
2610+ * [r4518] src/winscard_clnt.c: SCardGetStatusChange(): use
2611+ SCARD_*_CONTEXT constants instead of numerical values
2612+ * [r4517] src/eventhandler.h, src/winscard.c: move SCARD_*_CONTEXT
2613+ from winscard.c to eventhandler.h
2614+ * [r4516] src/winscard.c: remove useless SCARD_NO_LOCK define
2615+ * [r4515] src/eventhandler.c: update comment
2616+ * [r4514] src/winscard_clnt.c, src/winscard_msg.c,
2617+ src/winscard_svc.c: SHMMessageReceive() now returns -2 in case of
2618+ timeout and -1 in case of other error
2619+
2620+ This is used to correctly handle timeouts in
2621+ SCardGetStatusChange()
2622+ * [r4513] src/winscard_svc.c: ContextThread(): when a client dies
2623+ call EHTryToUnregisterClientForEvent() to unregister it if needed
2624+ * [r4512] src/eventhandler.c, src/eventhandler.h: add
2625+ EHTryToUnregisterClientForEvent()
2626+
2627+2009-10-18 Ludovic Rousseau
2628+
2629+ * [r4497] src/winscard_msg.c: SHMMessageSend(): document the use of
2630+ MSG_NOSIGNAL to ignore SIGPIPE signal
2631+
2632+2009-10-13 Ludovic Rousseau
2633+
2634+ * [r4491] src/Makefile.am: do not use PCSC_CLIENT_SRC variable
2635+ anymore since SCF support has been removed
2636+ * [r4490] src/Makefile.am: libpcsclite does not need to have
2637+ dyn_hpux.c, dyn_macosx.c or dyn_unix.c. These files define
2638+ DYN_LoadLibrary/DYN_CloseLibrary/DYN_GetAddress
2639+ * [r4489] pbx, pcsc.pbproj: remove Xcode files. Apple has its own
2640+ version of pcsc-lite for Mac OS X
2641+ * [r4488] src/winscard_clnt.c: Doxygen(): better documentation for
2642+ SCardCheckDaemonAvailability()
2643+ * [r4487] src/winscard_clnt.c: revert changeset 4485.
2644+ SCardCheckDaemonAvailability() is also used to invalidate the
2645+ PC/SC handles after a fork or a pcscd restart
2646+ * [r4486] configure.in, src/Makefile.am, src/winscard_scf.c: remove
2647+ SCF support (PC/SC over Smart Card Framework). I never used this
2648+ feature and SCF is now dead and replaced by JSR 268
2649+ (javax.smartcardio)
2650+
2651+2009-10-12 Ludovic Rousseau
2652+
2653+ * [r4485] src/winscard_clnt.c: SCardReleaseContext(),
2654+ SCardConnect(), SCardReconnect(), SCardDisconnect(),
2655+ SCardBeginTransaction(), SCardEndTransaction(),
2656+ SCardCancelTransaction(), SCardStatus(), SCardGetStatusChange(),
2657+ SCardControl(), SCardGetSetAttrib(), SCardTransmit(),
2658+ SCardListReaders(), SCardFreeMemory()SCardListReaderGroups(),
2659+ SCardIsValidContext(): do not SCardCheckDaemonAvailability()
2660+ since we will try to talk to the server later. Any communication
2661+ problem will be reported by SHMMessageSendWithHeader()
2662+ * [r4484] src/winscard_clnt.c: SCardDisconnect(): factorize exit
2663+ code
2664+ * [r4483] src/winscard_clnt.c: SCardReconnect(): factorize exit
2665+ code
2666+ * [r4482] src/winscard_clnt.c: SCardConnect(): factorize exit code
2667+ * [r4481] src/winscard_clnt.c: SCardReleaseContext(): release
2668+ context even if communication with the server fails
2669+ * [r4480] src/winscard_msg.c: SHMMessageSend(): use send(...,
2670+ MSG_NOSIGNAL) instead of write(...) to avoid receiving a SIGPIPE
2671+ signal if pcscd has exited. We just get EPIPE as return value
2672+ * [r4479] src/winscard_clnt.c: SCardReconnect(),
2673+ SCardBeginTransaction(), SCardEndTransaction(),
2674+ SCardCancelTransaction(), SCardControl(), SCardGetSetAttrib() and
2675+ SCardTransmit(): do not "synchronize reader states with daemon"
2676+ since reader availability checks are done on the server side.
2677+
2678+2009-10-09 Ludovic Rousseau
2679+
2680+ * [r4476] src/winscard_clnt.c: Doxygen improvement
2681+ * [r4474] src/PCSC/ifdhandler.h: Doxygen: define an IFDHandler
2682+ group
2683+ * [r4473] src/PCSC/ifdhandler.h: Add Doxygen documentation of the
2684+ IFD Handler API
2685+ * [r4472] src/PCSC/ifdhandler.h: remove IFD_Handler 1.0 functions
2686+ prototypes
2687+ * [r4471] src/winscard_clnt.c: Doxygen: use @param[in,out] for in
2688+ and out parameters
2689+
2690+2009-10-08 Ludovic Rousseau
2691+
2692+ * [r4468] doc/example/pcsc_demo.c: cleanly exits in case of unknown
2693+ protocol
2694+ * [r4467] doc/example/pcsc_demo.c: use SCARD_AUTOALLOCATE for
2695+ SCardListReaders()
2696+ * [r4466] src/simclist.c, src/simclist.h: remove svn:executable
2697+ property on source files
2698+ * [r4465] src/sys_generic.h, src/sys_unix.c: Define SYS_Fork() only
2699+ if used (if HAVE_DAEMON is not set)
2700+ * [r4464] src/sys_generic.h, src/sys_unix.c: Remove useless
2701+ SYS_GetPageSize(), SYS_MemoryMap(), SYS_PublicMemoryMap(),
2702+ SYS_PublicMemoryUnmap() and SYS_MMapSynchronize()
2703+ * [r4463] src/sys_generic.h, src/sys_unix.c: Remove useless
2704+ SYS_ReadFile()
2705+ * [r4462] src/sys_generic.h, src/sys_unix.c: Remove useless
2706+ SYS_SeekFile()
2707+ * [r4461] src/sys_generic.h: Remove SYS_ChangePermissions()
2708+ prototype (the function is NOT defined anywhere)
2709+ * [r4460] src/sys_generic.h, src/sys_unix.c: Remove useless
2710+ SYS_GetUID() & SYS_GetGID()
2711+ * [r4459] src/sys_generic.h, src/sys_unix.c: Remove useless
2712+ SYS_GetPID()
2713+ * [r4458] src/sys_generic.h, src/sys_unix.c, src/winscard_clnt.c:
2714+ SYS_Initialize() does nothing. Remove it.
2715+ * [r4457] src/readerfactory.c: Comment out RFSuspendAllReaders()
2716+ and RFAwakeAllReaders(). We do not yet support suspend/resume on
2717+ Linux
2718+ * [r4456] src/readerfactory.c, src/readerfactory.h: remove useless
2719+ RFListReaders()
2720+ * [r4455] src/readerfactory.c, src/readerfactory.h: remove useless
2721+ RFUnblockContext()
2722+ * [r4454] src/readerfactory.c, src/readerfactory.h, src/winscard.c:
2723+ remove useless RFUnblockReader()
2724+ * [r4453] src/pcscd.h.in, src/readerfactory.c, src/winscard_clnt.c:
2725+ do not use contextBlockStatus tpo block/unblock a context. We now
2726+ use SCardCancel() on the server side to unblock
2727+ SCardGetStatusChange()
2728+ * [r4452] doc/Makefile.am, doc/pcsc-lite.bib, doc/pcsc-lite.tex:
2729+ The .tex documentation is no more maintained. The reference
2730+ WinSCard API documentation is from Doxygen now.
2731+ * [r4451] UnitaryTests/SCardConnect_DIRECT.py: add documentation
2732+ * [r4447] src/ifdwrapper.c: IFDControl(): return
2733+ SCARD_E_INSUFFICIENT_BUFFER if the driver returns
2734+ IFD_ERROR_INSUFFICIENT_BUFFER
2735+ * [r4445] src/winscard.c: SCardGetAttrib(): return
2736+ SCARD_E_INSUFFICIENT_BUFFER if the driver returns
2737+ IFD_ERROR_INSUFFICIENT_BUFFER
2738+
2739+ Thanks to Emmanuel Deloget for the bug report
2740+ http://archives.neohapsis.com/archives/dev/muscle/2009-q4/0003.html
2741+ * [r4444] src/PCSC/ifdhandler.h: add IFD_ERROR_INSUFFICIENT_BUFFER
2742+ * [r4443] src/winscard.c: SCardReconnect(): log the selected
2743+ protocol (as done in SCardConnect())
2744+ * [r4442] src/winscard_clnt.c: SCardReconnect(): return
2745+ SCARD_E_SHARING_VIOLATION instead of blocking if the reader
2746+ cannot be shared.
2747+
2748+ This change was made in revision 2475 but I don't remember why.
2749+
2750+ Thanks to Paul Klissner for the bug report
2751+ http://archives.neohapsis.com/archives/dev/muscle/2009-q3/0106.html
2752+
2753+2009-10-06 Ludovic Rousseau
2754+
2755+ * [r4438] src/winscard_clnt.c, src/winscard_msg.h: remove typedefs
2756+ and explicitly use struct for structures
2757+ * [r4437] src/pcsc-wirecheck-gen.c: update to the new client/server
2758+ ABI
2759+ * [r4436] src/utils.c, src/utils.h: remove now useless
2760+ StatSynchronize() and StatSynchronizeContext()
2761+ * [r4435] src/winscard_clnt.c: remove now useless SCardUnload()
2762+ * [r4434] src/eventhandler.c, src/pcscd.h.in, src/pcscdaemon.c,
2763+ src/readerfactory.c, src/winscard.c, src/winscard_clnt.c,
2764+ src/winscard_msg.c, src/winscard_msg.h, src/winscard_msg_srv.c,
2765+ src/winscard_svc.c: redesign the client/server communication: -
2766+ no more shared memory used (allow pcscd and libpcsclite1.so to be
2767+ on different computer and talk over a network) - no more
2768+ difference between short and extended APDU - no more use of a
2769+ /var/run/pcscd/pcscd.events/ directory. events are sent through
2770+ the socket - simpler command format between client and server
2771+
2772+ The side effect is that you are not able to mix an old pcscd with
2773+ a new libpcsclite1.so or the reverse. SCardEstablishContext()
2774+ will fail unless you update both sides of the communication.
2775+ * [r4433] src/winscard_msg.c: reformat comment
2776+ * [r4432] src/winscard_svc.c, src/winscard_svc.h: add
2777+ MSGSignalClient()
2778+ * [r4431] src/winscard_msg.h: add struct wait_reader_state_change
2779+ * [r4430] src/pcscd.h.in: add PCSCLITE_WRITE_TIMEOUT and
2780+ PCSCLITE_READ_TIMEOUT
2781+ * [r4429] src/winscard_msg.c: reformat comments
2782+ * [r4428] src/eventhandler.c, src/eventhandler.h: add
2783+ EHRegisterClientForEvent(), EHUnregisterClientForEvent() and
2784+ EHSignalEventToClients()
2785+ * [r4427] src/Makefile.am: add simclist.{c,h} to pcscd dependencies
2786+ * [r4426] src/simclist.c, src/simclist.h: Library to manage lists
2787+ Fetched from http://mij.oltrelinux.com/devel/simclist/
2788+
2789+2009-10-05 Ludovic Rousseau
2790+
2791+ * [r4425] UnitaryTests/SCardCancel.py: display return values even
2792+ if no error returned
2793+
2794+2009-10-03 Ludovic Rousseau
2795+
2796+ * [r4419] src/winscard_clnt.c: Doxygen document SCardConnect()
2797+ difference with Windows for SCARD_SHARE_DIRECT
2798+
2799+2009-10-02 Ludovic Rousseau
2800+
2801+ * [r4418] src/winscard_clnt.c: add Doxygen section: Known
2802+ differences with Microsoft Windows WinSCard implementation
2803+
2804+2009-09-29 Ludovic Rousseau
2805+
2806+ * [r4408] src/pcscdaemon.c: main(): check RFAllocateReaderSpace()
2807+ returned value
2808+ * [r4407] src/winscard_clnt.c: SCardGetStatusChange(): Calling with
2809+ cReaders == 0 will now just return SCARD_S_SUCCESS
2810+
2811+ Use the special reader name "\\?PnP?\Notification" to wait for a
2812+ reader event notification
2813+ * [r4406] src/pcscd.h.in: remove comment about PCSCLITE_MAX_READERS
2814+ * [r4405] src/pcscd.h.in: remove useless PCSCLITE_MAX_THREADS
2815+ definition
2816+ * [r4404] src/pcscd.h.in: remove useless
2817+ PCSCLITE_TRANSACTION_TIMEOUT definition
2818+ * [r4403] src/utils.c, src/utils.h, src/winscard.c,
2819+ src/winscard_clnt.c: move time_sub() in utils.c
2820+ * [r4402] src/pcsc-wirecheck-gen.c, src/pcscd.h.in,
2821+ src/winscard_msg.c, src/winscard_msg.h: remove useless
2822+ key[PCSCLITE_MSG_KEY_LEN] field
2823+
2824+2009-09-28 Ludovic Rousseau
2825+
2826+ * [r4400] src/winscard.c: SCardTransmit(): do not limit the minimum
2827+ size of an APDU to 4 bytes. non ISO 7816-4 compliant cards (like
2828+ Mifare DESFIRE) may use shorter commands
2829+
2830+ Thanks to Björn Kupfer for the bug report
2831+ * [r4399] src/winscard.c: SCardTransmit(): call IFDControl_v2
2832+ instead of IFDTransmit only if dwProtocol == SCARD_PROTOCOL_RAW
2833+ _and_ ifdhandler is v2.0
2834+
2835+ Thanks to Björn Kupfer for the patch
2836+
2837+2009-09-23 Ludovic Rousseau
2838+
2839+ * [r4395] src/winscard_msg.c, src/winscard_msg_srv.c: use the POSIX
2840+ name AF_LOCAL instead of AF_UNIX
2841+
2842+2009-09-21 Ludovic Rousseau
2843+
2844+ * [r4388] src/pcscd.h.in: remove unsuned #define
2845+ PCSCLITE_RW_ATTEMPTS
2846+
2847+2009-09-17 Ludovic Rousseau
2848+
2849+ * [r4387] src/winscard_clnt.c: typo in Doxygen comment
2850+
2851+2009-09-15 Ludovic Rousseau
2852+
2853+ * [r4386] src/winscard_clnt.c: SCardReleaseContext(),
2854+ SCardControl(), SCardTransmit() and SCardListReaders(): add a
2855+ call to PROFILE_END() before exiting with SCARD_E_INVALID_HANDLE
2856+ error code to have a better profiling output
2857+ * [r4385] src/winscard.c:
2858+ SCardEstablishContext()/SCardReleaseContext(): log context value
2859+ in hexadecimal instead of decimal
2860+ * [r4384] src/winscard_msg.c: rename argument blockAmount in
2861+ timeOut to better reflect its function
2862+
2863+2009-09-08 Ludovic Rousseau
2864+
2865+ * [r4378] src/PCSC/reader.h.in: update sruct
2866+ PIN_PROPERTIES_STRUCTURE to be conform with Revision 2.02.06,
2867+ April 2009 of PCSCv2 part 10
2868+
2869+ Fields wLcdMaxCharacters and wLcdMaxLines have been removed
2870+
2871+2009-09-01 Ludovic Rousseau
2872+
2873+ * [r4375] src/pcscdaemon.c: signal_reload(): reenable the signal
2874+ handler. This is needed on Solaris and HPUX.
2875+
2876+ Thanks to Douglas E. Engert for the patch
2877+ http://archives.neohapsis.com/archives/dev/muscle/2009-q3/0061.html
2878+
2879+2009-08-31 Ludovic Rousseau
2880+
2881+ * [r4374] src/ifdwrapper.c, src/winscard.c: typo in comments
2882+
2883+2009-08-28 Ludovic Rousseau
2884+
2885+ * [r4371] src/hotplug_libhal.c, src/hotplug_libusb.c,
2886+ src/hotplug_linux.c, src/pcscdaemon.c: move definition of
2887+ usbNotifierMutex in the underlying layers where it is used
2888+
2889+2009-08-27 Ludovic Rousseau
2890+
2891+ * [r4367] src/ifdwrapper.c: IFDControl(): return
2892+ SCARD_E_UNSUPPORTED_FEATURE if the driver returned
2893+ IFD_ERROR_NOT_SUPPORTED or IFD_NOT_SUPPORTED
2894+
2895+ This is used to separate an unsupported value of ControlCode from
2896+ a general error
2897+
2898+2009-07-31 Ludovic Rousseau
2899+
2900+ * [r4359] UnitaryTests/control_switch_interface.py: switch
2901+ interface on the GemProx DU
2902+ * [r4357] UnitaryTests/control_get_firmware.py: get firmware
2903+ version of Gemalto readers
2904+
2905+2009-07-30 Ludovic Rousseau
2906+
2907+ * [r4354] src/ifdwrapper.c: remove extra spaces at end of line
2908+ * [r4353] src/configfile.l: reformat
2909+ * [r4352] src/configfile.l: remove extra spaces
2910+
2911 2009-07-28 Ludovic Rousseau
2912
2913 * [r4349] ChangeLog, configure.in: release 1.5.5
2914
2915=== modified file 'Makefile.am'
2916--- Makefile.am 2010-07-10 11:15:59 +0000
2917+++ Makefile.am 2011-03-19 11:52:23 +0000
2918@@ -1,4 +1,7 @@
2919-SUBDIRS = m4 src etc doc
2920+SUBDIRS = m4 src doc
2921+
2922+fix-rights:
2923+ $(MAKE) -C src $@
2924
2925 ACLOCAL_AMFLAGS = -I m4
2926
2927
2928=== modified file 'Makefile.in'
2929--- Makefile.in 2010-07-10 11:15:59 +0000
2930+++ Makefile.in 2011-03-19 11:52:23 +0000
2931@@ -1,8 +1,9 @@
2932-# Makefile.in generated by automake 1.10.2 from Makefile.am.
2933+# Makefile.in generated by automake 1.11.1 from Makefile.am.
2934 # @configure_input@
2935
2936 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
2937-# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
2938+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
2939+# Inc.
2940 # This Makefile.in is free software; the Free Software Foundation
2941 # gives unlimited permission to copy and/or distribute it,
2942 # with or without modifications, as long as this notice is preserved.
2943@@ -15,8 +16,9 @@
2944 @SET_MAKE@
2945 VPATH = @srcdir@
2946 pkgdatadir = $(datadir)/@PACKAGE@
2947+pkgincludedir = $(includedir)/@PACKAGE@
2948 pkglibdir = $(libdir)/@PACKAGE@
2949-pkgincludedir = $(includedir)/@PACKAGE@
2950+pkglibexecdir = $(libexecdir)/@PACKAGE@
2951 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
2952 install_sh_DATA = $(install_sh) -c -m 644
2953 install_sh_PROGRAM = $(install_sh) -c
2954@@ -35,9 +37,9 @@
2955 DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
2956 $(srcdir)/Makefile.in $(srcdir)/config.h.in \
2957 $(top_srcdir)/configure $(top_srcdir)/src/PCSC/pcsclite.h.in \
2958- $(top_srcdir)/src/PCSC/reader.h.in AUTHORS COPYING ChangeLog \
2959- INSTALL NEWS TODO compile config.guess config.sub depcomp \
2960- install-sh ltmain.sh missing ylwrap
2961+ AUTHORS COPYING ChangeLog INSTALL NEWS TODO compile \
2962+ config.guess config.sub depcomp install-sh ltmain.sh missing \
2963+ ylwrap
2964 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
2965 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_pthread.m4 \
2966 $(top_srcdir)/m4/as-ac-expand.m4 $(top_srcdir)/m4/libtool.m4 \
2967@@ -50,7 +52,8 @@
2968 configure.lineno config.status.lineno
2969 mkinstalldirs = $(install_sh) -d
2970 CONFIG_HEADER = config.h
2971-CONFIG_CLEAN_FILES = src/PCSC/pcsclite.h src/PCSC/reader.h
2972+CONFIG_CLEAN_FILES = src/PCSC/pcsclite.h
2973+CONFIG_CLEAN_VPATH_FILES =
2974 SOURCES =
2975 DIST_SOURCES =
2976 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
2977@@ -62,6 +65,9 @@
2978 ps-recursive uninstall-recursive
2979 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
2980 distclean-recursive maintainer-clean-recursive
2981+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
2982+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
2983+ distdir dist dist-all distcheck
2984 ETAGS = etags
2985 CTAGS = ctags
2986 DIST_SUBDIRS = $(SUBDIRS)
2987@@ -69,9 +75,34 @@
2988 distdir = $(PACKAGE)-$(VERSION)
2989 top_distdir = $(distdir)
2990 am__remove_distdir = \
2991- { test ! -d $(distdir) \
2992- || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
2993- && rm -fr $(distdir); }; }
2994+ { test ! -d "$(distdir)" \
2995+ || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
2996+ && rm -fr "$(distdir)"; }; }
2997+am__relativize = \
2998+ dir0=`pwd`; \
2999+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
3000+ sed_rest='s,^[^/]*/*,,'; \
3001+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
3002+ sed_butlast='s,/*[^/]*$$,,'; \
3003+ while test -n "$$dir1"; do \
3004+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
3005+ if test "$$first" != "."; then \
3006+ if test "$$first" = ".."; then \
3007+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
3008+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
3009+ else \
3010+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
3011+ if test "$$first2" = "$$first"; then \
3012+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
3013+ else \
3014+ dir2="../$$dir2"; \
3015+ fi; \
3016+ dir0="$$dir0"/"$$first"; \
3017+ fi; \
3018+ fi; \
3019+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
3020+ done; \
3021+ reldir="$$dir2"
3022 GZIP_ENV = --best
3023 DIST_ARCHIVES = $(distdir).tar.bz2
3024 distuninstallcheck_listfiles = find . -type f -print
3025@@ -113,12 +144,11 @@
3026 LEXLIB = @LEXLIB@
3027 LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
3028 LIBDL = @LIBDL@
3029-LIBHAL_CFLAGS = @LIBHAL_CFLAGS@
3030-LIBHAL_LIBS = @LIBHAL_LIBS@
3031 LIBOBJS = @LIBOBJS@
3032 LIBS = @LIBS@
3033-LIBSMARTCARD = @LIBSMARTCARD@
3034 LIBTOOL = @LIBTOOL@
3035+LIBUDEV_CFLAGS = @LIBUDEV_CFLAGS@
3036+LIBUDEV_LIBS = @LIBUDEV_LIBS@
3037 LIBUSBCONFIG = @LIBUSBCONFIG@
3038 LIBUSB_CFLAGS = @LIBUSB_CFLAGS@
3039 LIBUSB_LIBS = @LIBUSB_LIBS@
3040@@ -139,9 +169,13 @@
3041 PACKAGE_NAME = @PACKAGE_NAME@
3042 PACKAGE_STRING = @PACKAGE_STRING@
3043 PACKAGE_TARNAME = @PACKAGE_TARNAME@
3044+PACKAGE_URL = @PACKAGE_URL@
3045 PACKAGE_VERSION = @PACKAGE_VERSION@
3046 PATH_SEPARATOR = @PATH_SEPARATOR@
3047+PCSCLITE_CONFIG_DIR = @PCSCLITE_CONFIG_DIR@
3048 PKG_CONFIG = @PKG_CONFIG@
3049+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
3050+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
3051 PTHREAD_CC = @PTHREAD_CC@
3052 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
3053 PTHREAD_LIBS = @PTHREAD_LIBS@
3054@@ -171,7 +205,6 @@
3055 build_os = @build_os@
3056 build_vendor = @build_vendor@
3057 builddir = @builddir@
3058-confdir = @confdir@
3059 confdir_exp = @confdir_exp@
3060 datadir = @datadir@
3061 datarootdir = @datarootdir@
3062@@ -208,13 +241,13 @@
3063 sharedstatedir = @sharedstatedir@
3064 srcdir = @srcdir@
3065 sysconfdir = @sysconfdir@
3066-sysconfdir_exp = @sysconfdir_exp@
3067 target_alias = @target_alias@
3068 top_build_prefix = @top_build_prefix@
3069 top_builddir = @top_builddir@
3070 top_srcdir = @top_srcdir@
3071 usbdropdir = @usbdropdir@
3072-SUBDIRS = m4 src etc doc
3073+usbdropdir_exp = @usbdropdir_exp@
3074+SUBDIRS = m4 src doc
3075 ACLOCAL_AMFLAGS = -I m4
3076 EXTRA_DIST = DRIVERS SECURITY bootstrap HELP ChangeLog.svn
3077 DISTCLEANFILES = ChangeLog.svn
3078@@ -228,15 +261,15 @@
3079 @for dep in $?; do \
3080 case '$(am__configure_deps)' in \
3081 *$$dep*) \
3082- echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
3083- cd $(srcdir) && $(AUTOMAKE) --gnu \
3084+ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
3085+ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
3086 && exit 0; \
3087 exit 1;; \
3088 esac; \
3089 done; \
3090- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
3091- cd $(top_srcdir) && \
3092- $(AUTOMAKE) --gnu Makefile
3093+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
3094+ $(am__cd) $(top_srcdir) && \
3095+ $(AUTOMAKE) --gnu Makefile
3096 .PRECIOUS: Makefile
3097 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
3098 @case '$?' in \
3099@@ -252,9 +285,10 @@
3100 $(SHELL) ./config.status --recheck
3101
3102 $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
3103- cd $(srcdir) && $(AUTOCONF)
3104+ $(am__cd) $(srcdir) && $(AUTOCONF)
3105 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
3106- cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
3107+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
3108+$(am__aclocal_m4_deps):
3109
3110 config.h: stamp-h1
3111 @if test ! -f $@; then \
3112@@ -266,7 +300,7 @@
3113 @rm -f stamp-h1
3114 cd $(top_builddir) && $(SHELL) ./config.status config.h
3115 $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
3116- cd $(top_srcdir) && $(AUTOHEADER)
3117+ ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
3118 rm -f stamp-h1
3119 touch $@
3120
3121@@ -274,8 +308,6 @@
3122 -rm -f config.h stamp-h1
3123 src/PCSC/pcsclite.h: $(top_builddir)/config.status $(top_srcdir)/src/PCSC/pcsclite.h.in
3124 cd $(top_builddir) && $(SHELL) ./config.status $@
3125-src/PCSC/reader.h: $(top_builddir)/config.status $(top_srcdir)/src/PCSC/reader.h.in
3126- cd $(top_builddir) && $(SHELL) ./config.status $@
3127
3128 mostlyclean-libtool:
3129 -rm -f *.lo
3130@@ -293,7 +325,7 @@
3131 # (which will cause the Makefiles to be regenerated when you run `make');
3132 # (2) otherwise, pass the desired values on the `make' command line.
3133 $(RECURSIVE_TARGETS):
3134- @failcom='exit 1'; \
3135+ @fail= failcom='exit 1'; \
3136 for f in x $$MAKEFLAGS; do \
3137 case $$f in \
3138 *=* | --[!k]*);; \
3139@@ -310,7 +342,7 @@
3140 else \
3141 local_target="$$target"; \
3142 fi; \
3143- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
3144+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
3145 || eval $$failcom; \
3146 done; \
3147 if test "$$dot_seen" = "no"; then \
3148@@ -318,7 +350,7 @@
3149 fi; test -z "$$fail"
3150
3151 $(RECURSIVE_CLEAN_TARGETS):
3152- @failcom='exit 1'; \
3153+ @fail= failcom='exit 1'; \
3154 for f in x $$MAKEFLAGS; do \
3155 case $$f in \
3156 *=* | --[!k]*);; \
3157@@ -344,16 +376,16 @@
3158 else \
3159 local_target="$$target"; \
3160 fi; \
3161- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
3162+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
3163 || eval $$failcom; \
3164 done && test -z "$$fail"
3165 tags-recursive:
3166 list='$(SUBDIRS)'; for subdir in $$list; do \
3167- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
3168+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
3169 done
3170 ctags-recursive:
3171 list='$(SUBDIRS)'; for subdir in $$list; do \
3172- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
3173+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
3174 done
3175
3176 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
3177@@ -368,7 +400,7 @@
3178
3179 TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
3180 $(TAGS_FILES) $(LISP)
3181- tags=; \
3182+ set x; \
3183 here=`pwd`; \
3184 if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
3185 include_option=--etags-include; \
3186@@ -380,7 +412,7 @@
3187 list='$(SUBDIRS)'; for subdir in $$list; do \
3188 if test "$$subdir" = .; then :; else \
3189 test ! -f $$subdir/TAGS || \
3190- tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
3191+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
3192 fi; \
3193 done; \
3194 list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
3195@@ -389,36 +421,41 @@
3196 done | \
3197 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
3198 END { if (nonempty) { for (i in files) print i; }; }'`; \
3199- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
3200+ shift; \
3201+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
3202 test -n "$$unique" || unique=$$empty_fix; \
3203- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
3204- $$tags $$unique; \
3205+ if test $$# -gt 0; then \
3206+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
3207+ "$$@" $$unique; \
3208+ else \
3209+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
3210+ $$unique; \
3211+ fi; \
3212 fi
3213 ctags: CTAGS
3214 CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
3215 $(TAGS_FILES) $(LISP)
3216- tags=; \
3217 list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
3218 unique=`for i in $$list; do \
3219 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
3220 done | \
3221 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
3222 END { if (nonempty) { for (i in files) print i; }; }'`; \
3223- test -z "$(CTAGS_ARGS)$$tags$$unique" \
3224+ test -z "$(CTAGS_ARGS)$$unique" \
3225 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
3226- $$tags $$unique
3227+ $$unique
3228
3229 GTAGS:
3230 here=`$(am__cd) $(top_builddir) && pwd` \
3231- && cd $(top_srcdir) \
3232- && gtags -i $(GTAGS_ARGS) $$here
3233+ && $(am__cd) $(top_srcdir) \
3234+ && gtags -i $(GTAGS_ARGS) "$$here"
3235
3236 distclean-tags:
3237 -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
3238
3239 distdir: $(DISTFILES)
3240 $(am__remove_distdir)
3241- test -d $(distdir) || mkdir $(distdir)
3242+ test -d "$(distdir)" || mkdir "$(distdir)"
3243 @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
3244 topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
3245 list='$(DISTFILES)'; \
3246@@ -434,38 +471,55 @@
3247 if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
3248 if test -d $$d/$$file; then \
3249 dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
3250+ if test -d "$(distdir)/$$file"; then \
3251+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
3252+ fi; \
3253 if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
3254- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
3255+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
3256+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
3257 fi; \
3258- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
3259+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
3260 else \
3261- test -f $(distdir)/$$file \
3262- || cp -p $$d/$$file $(distdir)/$$file \
3263+ test -f "$(distdir)/$$file" \
3264+ || cp -p $$d/$$file "$(distdir)/$$file" \
3265 || exit 1; \
3266 fi; \
3267 done
3268- list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
3269+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
3270 if test "$$subdir" = .; then :; else \
3271 test -d "$(distdir)/$$subdir" \
3272 || $(MKDIR_P) "$(distdir)/$$subdir" \
3273 || exit 1; \
3274- distdir=`$(am__cd) $(distdir) && pwd`; \
3275- top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
3276- (cd $$subdir && \
3277+ fi; \
3278+ done
3279+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
3280+ if test "$$subdir" = .; then :; else \
3281+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
3282+ $(am__relativize); \
3283+ new_distdir=$$reldir; \
3284+ dir1=$$subdir; dir2="$(top_distdir)"; \
3285+ $(am__relativize); \
3286+ new_top_distdir=$$reldir; \
3287+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
3288+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
3289+ ($(am__cd) $$subdir && \
3290 $(MAKE) $(AM_MAKEFLAGS) \
3291- top_distdir="$$top_distdir" \
3292- distdir="$$distdir/$$subdir" \
3293+ top_distdir="$$new_top_distdir" \
3294+ distdir="$$new_distdir" \
3295 am__remove_distdir=: \
3296 am__skip_length_check=: \
3297+ am__skip_mode_fix=: \
3298 distdir) \
3299 || exit 1; \
3300 fi; \
3301 done
3302- -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
3303+ -test -n "$(am__skip_mode_fix)" \
3304+ || find "$(distdir)" -type d ! -perm -755 \
3305+ -exec chmod u+rwx,go+rx {} \; -o \
3306 ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
3307 ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
3308 ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
3309- || chmod -R a+r $(distdir)
3310+ || chmod -R a+r "$(distdir)"
3311 dist-gzip: distdir
3312 tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
3313 $(am__remove_distdir)
3314@@ -477,6 +531,10 @@
3315 tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
3316 $(am__remove_distdir)
3317
3318+dist-xz: distdir
3319+ tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
3320+ $(am__remove_distdir)
3321+
3322 dist-tarZ: distdir
3323 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
3324 $(am__remove_distdir)
3325@@ -500,15 +558,17 @@
3326 distcheck: dist
3327 case '$(DIST_ARCHIVES)' in \
3328 *.tar.gz*) \
3329- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
3330+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
3331 *.tar.bz2*) \
3332- bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
3333+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
3334 *.tar.lzma*) \
3335- unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
3336+ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
3337+ *.tar.xz*) \
3338+ xz -dc $(distdir).tar.xz | $(am__untar) ;;\
3339 *.tar.Z*) \
3340 uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
3341 *.shar.gz*) \
3342- GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
3343+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
3344 *.zip*) \
3345 unzip $(distdir).zip ;;\
3346 esac
3347@@ -516,9 +576,11 @@
3348 mkdir $(distdir)/_build
3349 mkdir $(distdir)/_inst
3350 chmod a-w $(distdir)
3351+ test -d $(distdir)/_build || exit 0; \
3352 dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
3353 && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
3354- && cd $(distdir)/_build \
3355+ && am__cwd=`pwd` \
3356+ && $(am__cd) $(distdir)/_build \
3357 && ../configure --srcdir=.. --prefix="$$dc_install_base" \
3358 $(DISTCHECK_CONFIGURE_FLAGS) \
3359 && $(MAKE) $(AM_MAKEFLAGS) \
3360@@ -540,13 +602,15 @@
3361 && rm -rf "$$dc_destdir" \
3362 && $(MAKE) $(AM_MAKEFLAGS) dist \
3363 && rm -rf $(DIST_ARCHIVES) \
3364- && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
3365+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
3366+ && cd "$$am__cwd" \
3367+ || exit 1
3368 $(am__remove_distdir)
3369 @(echo "$(distdir) archives ready for distribution: "; \
3370 list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
3371 sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
3372 distuninstallcheck:
3373- @cd $(distuninstallcheck_dir) \
3374+ @$(am__cd) '$(distuninstallcheck_dir)' \
3375 && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
3376 || { echo "ERROR: files left after uninstall:" ; \
3377 if test -n "$(DESTDIR)"; then \
3378@@ -588,6 +652,7 @@
3379
3380 distclean-generic:
3381 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
3382+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
3383 -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
3384
3385 maintainer-clean-generic:
3386@@ -609,6 +674,8 @@
3387
3388 html: html-recursive
3389
3390+html-am:
3391+
3392 info: info-recursive
3393
3394 info-am:
3395@@ -617,18 +684,28 @@
3396
3397 install-dvi: install-dvi-recursive
3398
3399+install-dvi-am:
3400+
3401 install-exec-am:
3402
3403 install-html: install-html-recursive
3404
3405+install-html-am:
3406+
3407 install-info: install-info-recursive
3408
3409+install-info-am:
3410+
3411 install-man:
3412
3413 install-pdf: install-pdf-recursive
3414
3415+install-pdf-am:
3416+
3417 install-ps: install-ps-recursive
3418
3419+install-ps-am:
3420+
3421 installcheck-am:
3422
3423 maintainer-clean: maintainer-clean-recursive
3424@@ -651,25 +728,28 @@
3425
3426 uninstall-am:
3427
3428-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
3429- install-strip
3430+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
3431+ ctags-recursive install-am install-strip tags-recursive
3432
3433 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
3434 all all-am am--refresh check check-am clean clean-generic \
3435 clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
3436- dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \
3437- distclean distclean-generic distclean-hdr distclean-libtool \
3438- distclean-tags distcleancheck distdir distuninstallcheck dvi \
3439- dvi-am html html-am info info-am install install-am \
3440- install-data install-data-am install-dvi install-dvi-am \
3441- install-exec install-exec-am install-html install-html-am \
3442- install-info install-info-am install-man install-pdf \
3443- install-pdf-am install-ps install-ps-am install-strip \
3444- installcheck installcheck-am installdirs installdirs-am \
3445- maintainer-clean maintainer-clean-generic mostlyclean \
3446- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
3447- tags tags-recursive uninstall uninstall-am
3448-
3449+ dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
3450+ distcheck distclean distclean-generic distclean-hdr \
3451+ distclean-libtool distclean-tags distcleancheck distdir \
3452+ distuninstallcheck dvi dvi-am html html-am info info-am \
3453+ install install-am install-data install-data-am install-dvi \
3454+ install-dvi-am install-exec install-exec-am install-html \
3455+ install-html-am install-info install-info-am install-man \
3456+ install-pdf install-pdf-am install-ps install-ps-am \
3457+ install-strip installcheck installcheck-am installdirs \
3458+ installdirs-am maintainer-clean maintainer-clean-generic \
3459+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
3460+ ps ps-am tags tags-recursive uninstall uninstall-am
3461+
3462+
3463+fix-rights:
3464+ $(MAKE) -C src $@
3465
3466 ChangeLog.svn:
3467 -svn2cl --group-by-day --stdout --include-rev --reparagraph | perl -pe \
3468@@ -683,6 +763,7 @@
3469 s/ aet-guest/ Antti Tapaninen/; \
3470 s/ sauveron-guest/ Damien Sauveron/; \
3471 s+trunk/PCSC/++g;' > $@
3472+
3473 # Tell versions [3.59,3.63) of GNU make to not export all variables.
3474 # Otherwise a system limit (for SysV at least) may be exceeded.
3475 .NOEXPORT:
3476
3477=== modified file 'TODO'
3478--- TODO 2009-06-02 16:58:01 +0000
3479+++ TODO 2011-03-19 11:52:23 +0000
3480@@ -1,10 +1,5 @@
3481 - include Apple patches and improvements (if possible/needed)
3482
3483-- power on the card _only_ if an application requests a connection
3484- see Alioth bug #301965
3485- That could be implemented by polling the reader only if an application
3486- requests it.
3487-
3488 - allow to have pcscd and libpcsclite on two different machines.
3489 That would be needed to support remote PAM login.
3490 Maybe use unix2tcp (http://dizzy.roedu.net/unix2tcp/)
3491@@ -25,4 +20,9 @@
3492 mode.
3493 http://www.opensc-project.org/pipermail/opensc-devel/2009-February/011801.html
3494
3495-February 2009
3496+
3497+For embedded/constrained systems
3498+
3499+- use static driver instead of reader polling and dynamic driver loading
3500+
3501+October 2010
3502
3503=== modified file 'aclocal.m4'
3504--- aclocal.m4 2010-07-10 11:15:59 +0000
3505+++ aclocal.m4 2011-03-19 11:52:23 +0000
3506@@ -1,7 +1,7 @@
3507-# generated automatically by aclocal 1.10.2 -*- Autoconf -*-
3508+# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
3509
3510 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
3511-# 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
3512+# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
3513 # This file is free software; the Free Software Foundation
3514 # gives unlimited permission to copy and/or distribute it,
3515 # with or without modifications, as long as this notice is preserved.
3516@@ -13,13 +13,14 @@
3517
3518 m4_ifndef([AC_AUTOCONF_VERSION],
3519 [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
3520-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],,
3521-[m4_warning([this file was generated for autoconf 2.63.
3522+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.67],,
3523+[m4_warning([this file was generated for autoconf 2.67.
3524 You have another version of autoconf. It may work, but is not guaranteed to.
3525 If you have problems, you may need to regenerate the build system entirely.
3526 To do so, use the procedure documented by the package, typically `autoreconf'.])])
3527
3528 # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
3529+# serial 1 (pkg-config-0.24)
3530 #
3531 # Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
3532 #
3533@@ -47,7 +48,10 @@
3534 AC_DEFUN([PKG_PROG_PKG_CONFIG],
3535 [m4_pattern_forbid([^_?PKG_[A-Z_]+$])
3536 m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
3537-AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
3538+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
3539+AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
3540+AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
3541+
3542 if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
3543 AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
3544 fi
3545@@ -60,7 +64,6 @@
3546 AC_MSG_RESULT([no])
3547 PKG_CONFIG=""
3548 fi
3549-
3550 fi[]dnl
3551 ])# PKG_PROG_PKG_CONFIG
3552
3553@@ -69,34 +72,31 @@
3554 # Check to see whether a particular set of modules exists. Similar
3555 # to PKG_CHECK_MODULES(), but does not set variables or print errors.
3556 #
3557-#
3558-# Similar to PKG_CHECK_MODULES, make sure that the first instance of
3559-# this or PKG_CHECK_MODULES is called, or make sure to call
3560-# PKG_CHECK_EXISTS manually
3561+# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
3562+# only at the first occurence in configure.ac, so if the first place
3563+# it's called might be skipped (such as if it is within an "if", you
3564+# have to call PKG_CHECK_EXISTS manually
3565 # --------------------------------------------------------------
3566 AC_DEFUN([PKG_CHECK_EXISTS],
3567 [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
3568 if test -n "$PKG_CONFIG" && \
3569 AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
3570- m4_ifval([$2], [$2], [:])
3571+ m4_default([$2], [:])
3572 m4_ifvaln([$3], [else
3573 $3])dnl
3574 fi])
3575
3576-
3577 # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
3578 # ---------------------------------------------
3579 m4_define([_PKG_CONFIG],
3580-[if test -n "$PKG_CONFIG"; then
3581- if test -n "$$1"; then
3582- pkg_cv_[]$1="$$1"
3583- else
3584- PKG_CHECK_EXISTS([$3],
3585- [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
3586- [pkg_failed=yes])
3587- fi
3588-else
3589- pkg_failed=untried
3590+[if test -n "$$1"; then
3591+ pkg_cv_[]$1="$$1"
3592+ elif test -n "$PKG_CONFIG"; then
3593+ PKG_CHECK_EXISTS([$3],
3594+ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
3595+ [pkg_failed=yes])
3596+ else
3597+ pkg_failed=untried
3598 fi[]dnl
3599 ])# _PKG_CONFIG
3600
3601@@ -138,16 +138,17 @@
3602 See the pkg-config man page for more details.])
3603
3604 if test $pkg_failed = yes; then
3605+ AC_MSG_RESULT([no])
3606 _PKG_SHORT_ERRORS_SUPPORTED
3607 if test $_pkg_short_errors_supported = yes; then
3608- $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"`
3609+ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1`
3610 else
3611- $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
3612+ $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1`
3613 fi
3614 # Put the nasty error message in config.log where it belongs
3615 echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
3616
3617- ifelse([$4], , [AC_MSG_ERROR(dnl
3618+ m4_default([$4], [AC_MSG_ERROR(
3619 [Package requirements ($2) were not met:
3620
3621 $$1_PKG_ERRORS
3622@@ -155,25 +156,24 @@
3623 Consider adjusting the PKG_CONFIG_PATH environment variable if you
3624 installed software in a non-standard prefix.
3625
3626-_PKG_TEXT
3627-])],
3628- [AC_MSG_RESULT([no])
3629- $4])
3630+_PKG_TEXT])[]dnl
3631+ ])
3632 elif test $pkg_failed = untried; then
3633- ifelse([$4], , [AC_MSG_FAILURE(dnl
3634+ AC_MSG_RESULT([no])
3635+ m4_default([$4], [AC_MSG_FAILURE(
3636 [The pkg-config script could not be found or is too old. Make sure it
3637 is in your PATH or set the PKG_CONFIG environment variable to the full
3638 path to pkg-config.
3639
3640 _PKG_TEXT
3641
3642-To get pkg-config, see <http://pkg-config.freedesktop.org/>.])],
3643- [$4])
3644+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
3645+ ])
3646 else
3647 $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
3648 $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
3649 AC_MSG_RESULT([yes])
3650- ifelse([$3], , :, [$3])
3651+ $3
3652 fi[]dnl
3653 ])# PKG_CHECK_MODULES
3654
3655@@ -189,10 +189,10 @@
3656 # generated from the m4 files accompanying Automake X.Y.
3657 # (This private macro should not be called outside this file.)
3658 AC_DEFUN([AM_AUTOMAKE_VERSION],
3659-[am__api_version='1.10'
3660+[am__api_version='1.11'
3661 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
3662 dnl require some minimum version. Point them to the right macro.
3663-m4_if([$1], [1.10.2], [],
3664+m4_if([$1], [1.11.1], [],
3665 [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
3666 ])
3667
3668@@ -208,7 +208,7 @@
3669 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
3670 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
3671 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
3672-[AM_AUTOMAKE_VERSION([1.10.2])dnl
3673+[AM_AUTOMAKE_VERSION([1.11.1])dnl
3674 m4_ifndef([AC_AUTOCONF_VERSION],
3675 [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
3676 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
3677@@ -268,14 +268,14 @@
3678
3679 # AM_CONDITIONAL -*- Autoconf -*-
3680
3681-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
3682+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
3683 # Free Software Foundation, Inc.
3684 #
3685 # This file is free software; the Free Software Foundation
3686 # gives unlimited permission to copy and/or distribute it,
3687 # with or without modifications, as long as this notice is preserved.
3688
3689-# serial 8
3690+# serial 9
3691
3692 # AM_CONDITIONAL(NAME, SHELL-CONDITION)
3693 # -------------------------------------
3694@@ -288,6 +288,7 @@
3695 AC_SUBST([$1_FALSE])dnl
3696 _AM_SUBST_NOTMAKE([$1_TRUE])dnl
3697 _AM_SUBST_NOTMAKE([$1_FALSE])dnl
3698+m4_define([_AM_COND_VALUE_$1], [$2])dnl
3699 if $2; then
3700 $1_TRUE=
3701 $1_FALSE='#'
3702@@ -301,14 +302,14 @@
3703 Usually this means the macro was only invoked conditionally.]])
3704 fi])])
3705
3706-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
3707+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
3708 # Free Software Foundation, Inc.
3709 #
3710 # This file is free software; the Free Software Foundation
3711 # gives unlimited permission to copy and/or distribute it,
3712 # with or without modifications, as long as this notice is preserved.
3713
3714-# serial 9
3715+# serial 10
3716
3717 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
3718 # written in clear, in which case automake, when reading aclocal.m4,
3719@@ -365,6 +366,16 @@
3720 if test "$am_compiler_list" = ""; then
3721 am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
3722 fi
3723+ am__universal=false
3724+ m4_case([$1], [CC],
3725+ [case " $depcc " in #(
3726+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
3727+ esac],
3728+ [CXX],
3729+ [case " $depcc " in #(
3730+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
3731+ esac])
3732+
3733 for depmode in $am_compiler_list; do
3734 # Setup a source with many dependencies, because some compilers
3735 # like to wrap large dependency lists on column 80 (with \), and
3736@@ -382,7 +393,17 @@
3737 done
3738 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
3739
3740+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
3741+ # mode. It turns out that the SunPro C++ compiler does not properly
3742+ # handle `-M -o', and we need to detect this. Also, some Intel
3743+ # versions had trouble with output in subdirs
3744+ am__obj=sub/conftest.${OBJEXT-o}
3745+ am__minus_obj="-o $am__obj"
3746 case $depmode in
3747+ gcc)
3748+ # This depmode causes a compiler race in universal mode.
3749+ test "$am__universal" = false || continue
3750+ ;;
3751 nosideeffect)
3752 # after this tag, mechanisms are not by side-effect, so they'll
3753 # only be used when explicitly requested
3754@@ -392,19 +413,23 @@
3755 break
3756 fi
3757 ;;
3758+ msvisualcpp | msvcmsys)
3759+ # This compiler won't grok `-c -o', but also, the minuso test has
3760+ # not run yet. These depmodes are late enough in the game, and
3761+ # so weak that their functioning should not be impacted.
3762+ am__obj=conftest.${OBJEXT-o}
3763+ am__minus_obj=
3764+ ;;
3765 none) break ;;
3766 esac
3767- # We check with `-c' and `-o' for the sake of the "dashmstdout"
3768- # mode. It turns out that the SunPro C++ compiler does not properly
3769- # handle `-M -o', and we need to detect this.
3770 if depmode=$depmode \
3771- source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
3772+ source=sub/conftest.c object=$am__obj \
3773 depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
3774- $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
3775+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
3776 >/dev/null 2>conftest.err &&
3777 grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
3778 grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
3779- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
3780+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
3781 ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
3782 # icc doesn't choke on unknown options, it will just issue warnings
3783 # or remarks (even with -Werror). So we grep stderr for any message
3784@@ -468,59 +493,61 @@
3785 # gives unlimited permission to copy and/or distribute it,
3786 # with or without modifications, as long as this notice is preserved.
3787
3788-#serial 4
3789+#serial 5
3790
3791 # _AM_OUTPUT_DEPENDENCY_COMMANDS
3792 # ------------------------------
3793 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
3794-[# Autoconf 2.62 quotes --file arguments for eval, but not when files
3795-# are listed without --file. Let's play safe and only enable the eval
3796-# if we detect the quoting.
3797-case $CONFIG_FILES in
3798-*\'*) eval set x "$CONFIG_FILES" ;;
3799-*) set x $CONFIG_FILES ;;
3800-esac
3801-shift
3802-for mf
3803-do
3804- # Strip MF so we end up with the name of the file.
3805- mf=`echo "$mf" | sed -e 's/:.*$//'`
3806- # Check whether this is an Automake generated Makefile or not.
3807- # We used to match only the files named `Makefile.in', but
3808- # some people rename them; so instead we look at the file content.
3809- # Grep'ing the first line is not enough: some people post-process
3810- # each Makefile.in and add a new line on top of each file to say so.
3811- # Grep'ing the whole file is not good either: AIX grep has a line
3812- # limit of 2048, but all sed's we know have understand at least 4000.
3813- if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
3814- dirpart=`AS_DIRNAME("$mf")`
3815- else
3816- continue
3817- fi
3818- # Extract the definition of DEPDIR, am__include, and am__quote
3819- # from the Makefile without running `make'.
3820- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
3821- test -z "$DEPDIR" && continue
3822- am__include=`sed -n 's/^am__include = //p' < "$mf"`
3823- test -z "am__include" && continue
3824- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
3825- # When using ansi2knr, U may be empty or an underscore; expand it
3826- U=`sed -n 's/^U = //p' < "$mf"`
3827- # Find all dependency output files, they are included files with
3828- # $(DEPDIR) in their names. We invoke sed twice because it is the
3829- # simplest approach to changing $(DEPDIR) to its actual value in the
3830- # expansion.
3831- for file in `sed -n "
3832- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
3833- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
3834- # Make sure the directory exists.
3835- test -f "$dirpart/$file" && continue
3836- fdir=`AS_DIRNAME(["$file"])`
3837- AS_MKDIR_P([$dirpart/$fdir])
3838- # echo "creating $dirpart/$file"
3839- echo '# dummy' > "$dirpart/$file"
3840+[{
3841+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
3842+ # are listed without --file. Let's play safe and only enable the eval
3843+ # if we detect the quoting.
3844+ case $CONFIG_FILES in
3845+ *\'*) eval set x "$CONFIG_FILES" ;;
3846+ *) set x $CONFIG_FILES ;;
3847+ esac
3848+ shift
3849+ for mf
3850+ do
3851+ # Strip MF so we end up with the name of the file.
3852+ mf=`echo "$mf" | sed -e 's/:.*$//'`
3853+ # Check whether this is an Automake generated Makefile or not.
3854+ # We used to match only the files named `Makefile.in', but
3855+ # some people rename them; so instead we look at the file content.
3856+ # Grep'ing the first line is not enough: some people post-process
3857+ # each Makefile.in and add a new line on top of each file to say so.
3858+ # Grep'ing the whole file is not good either: AIX grep has a line
3859+ # limit of 2048, but all sed's we know have understand at least 4000.
3860+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
3861+ dirpart=`AS_DIRNAME("$mf")`
3862+ else
3863+ continue
3864+ fi
3865+ # Extract the definition of DEPDIR, am__include, and am__quote
3866+ # from the Makefile without running `make'.
3867+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
3868+ test -z "$DEPDIR" && continue
3869+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
3870+ test -z "am__include" && continue
3871+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
3872+ # When using ansi2knr, U may be empty or an underscore; expand it
3873+ U=`sed -n 's/^U = //p' < "$mf"`
3874+ # Find all dependency output files, they are included files with
3875+ # $(DEPDIR) in their names. We invoke sed twice because it is the
3876+ # simplest approach to changing $(DEPDIR) to its actual value in the
3877+ # expansion.
3878+ for file in `sed -n "
3879+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
3880+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
3881+ # Make sure the directory exists.
3882+ test -f "$dirpart/$file" && continue
3883+ fdir=`AS_DIRNAME(["$file"])`
3884+ AS_MKDIR_P([$dirpart/$fdir])
3885+ # echo "creating $dirpart/$file"
3886+ echo '# dummy' > "$dirpart/$file"
3887+ done
3888 done
3889-done
3890+}
3891 ])# _AM_OUTPUT_DEPENDENCY_COMMANDS
3892
3893
3894@@ -552,13 +579,13 @@
3895 # Do all the work for Automake. -*- Autoconf -*-
3896
3897 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
3898-# 2005, 2006, 2008 Free Software Foundation, Inc.
3899+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
3900 #
3901 # This file is free software; the Free Software Foundation
3902 # gives unlimited permission to copy and/or distribute it,
3903 # with or without modifications, as long as this notice is preserved.
3904
3905-# serial 13
3906+# serial 16
3907
3908 # This macro actually does too much. Some checks are only needed if
3909 # your package does certain things. But this isn't really a big deal.
3910@@ -575,7 +602,7 @@
3911 # arguments mandatory, and then we can depend on a new Autoconf
3912 # release and drop the old call support.
3913 AC_DEFUN([AM_INIT_AUTOMAKE],
3914-[AC_PREREQ([2.60])dnl
3915+[AC_PREREQ([2.62])dnl
3916 dnl Autoconf wants to disallow AM_ names. We explicitly allow
3917 dnl the ones we care about.
3918 m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
3919@@ -626,8 +653,8 @@
3920 AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
3921 AM_MISSING_PROG(AUTOHEADER, autoheader)
3922 AM_MISSING_PROG(MAKEINFO, makeinfo)
3923-AM_PROG_INSTALL_SH
3924-AM_PROG_INSTALL_STRIP
3925+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
3926+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
3927 AC_REQUIRE([AM_PROG_MKDIR_P])dnl
3928 # We need awk for the "check" target. The system "awk" is bad on
3929 # some platforms.
3930@@ -635,23 +662,36 @@
3931 AC_REQUIRE([AC_PROG_MAKE_SET])dnl
3932 AC_REQUIRE([AM_SET_LEADING_DOT])dnl
3933 _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
3934- [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
3935- [_AM_PROG_TAR([v7])])])
3936+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
3937+ [_AM_PROG_TAR([v7])])])
3938 _AM_IF_OPTION([no-dependencies],,
3939 [AC_PROVIDE_IFELSE([AC_PROG_CC],
3940- [_AM_DEPENDENCIES(CC)],
3941- [define([AC_PROG_CC],
3942- defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
3943+ [_AM_DEPENDENCIES(CC)],
3944+ [define([AC_PROG_CC],
3945+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
3946 AC_PROVIDE_IFELSE([AC_PROG_CXX],
3947- [_AM_DEPENDENCIES(CXX)],
3948- [define([AC_PROG_CXX],
3949- defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
3950+ [_AM_DEPENDENCIES(CXX)],
3951+ [define([AC_PROG_CXX],
3952+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
3953 AC_PROVIDE_IFELSE([AC_PROG_OBJC],
3954- [_AM_DEPENDENCIES(OBJC)],
3955- [define([AC_PROG_OBJC],
3956- defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
3957-])
3958-])
3959+ [_AM_DEPENDENCIES(OBJC)],
3960+ [define([AC_PROG_OBJC],
3961+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
3962+])
3963+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
3964+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
3965+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
3966+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
3967+AC_CONFIG_COMMANDS_PRE(dnl
3968+[m4_provide_if([_AM_COMPILER_EXEEXT],
3969+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
3970+])
3971+
3972+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
3973+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
3974+dnl mangled by Autoconf and run in a shell conditional statement.
3975+m4_define([_AC_COMPILER_EXEEXT],
3976+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
3977
3978
3979 # When config.status generates a header, we must update the stamp-h file.
3980@@ -675,7 +715,7 @@
3981 done
3982 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
3983
3984-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
3985+# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
3986 #
3987 # This file is free software; the Free Software Foundation
3988 # gives unlimited permission to copy and/or distribute it,
3989@@ -686,7 +726,14 @@
3990 # Define $install_sh.
3991 AC_DEFUN([AM_PROG_INSTALL_SH],
3992 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
3993-install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
3994+if test x"${install_sh}" != xset; then
3995+ case $am_aux_dir in
3996+ *\ * | *\ *)
3997+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
3998+ *)
3999+ install_sh="\${SHELL} $am_aux_dir/install-sh"
4000+ esac
4001+fi
4002 AC_SUBST(install_sh)])
4003
4004 # Copyright (C) 2003, 2005 Free Software Foundation, Inc.
4005@@ -734,27 +781,38 @@
4006 # Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
4007 # From Jim Meyering
4008
4009-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
4010+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008
4011 # Free Software Foundation, Inc.
4012 #
4013 # This file is free software; the Free Software Foundation
4014 # gives unlimited permission to copy and/or distribute it,
4015 # with or without modifications, as long as this notice is preserved.
4016
4017-# serial 4
4018+# serial 5
4019
4020+# AM_MAINTAINER_MODE([DEFAULT-MODE])
4021+# ----------------------------------
4022+# Control maintainer-specific portions of Makefiles.
4023+# Default is to disable them, unless `enable' is passed literally.
4024+# For symmetry, `disable' may be passed as well. Anyway, the user
4025+# can override the default with the --enable/--disable switch.
4026 AC_DEFUN([AM_MAINTAINER_MODE],
4027-[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
4028- dnl maintainer-mode is disabled by default
4029- AC_ARG_ENABLE(maintainer-mode,
4030-[ --enable-maintainer-mode enable make rules and dependencies not useful
4031+[m4_case(m4_default([$1], [disable]),
4032+ [enable], [m4_define([am_maintainer_other], [disable])],
4033+ [disable], [m4_define([am_maintainer_other], [enable])],
4034+ [m4_define([am_maintainer_other], [enable])
4035+ m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
4036+AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
4037+ dnl maintainer-mode's default is 'disable' unless 'enable' is passed
4038+ AC_ARG_ENABLE([maintainer-mode],
4039+[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful
4040 (and sometimes confusing) to the casual installer],
4041- USE_MAINTAINER_MODE=$enableval,
4042- USE_MAINTAINER_MODE=no)
4043+ [USE_MAINTAINER_MODE=$enableval],
4044+ [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
4045 AC_MSG_RESULT([$USE_MAINTAINER_MODE])
4046- AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
4047+ AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
4048 MAINT=$MAINTAINER_MODE_TRUE
4049- AC_SUBST(MAINT)dnl
4050+ AC_SUBST([MAINT])dnl
4051 ]
4052 )
4053
4054@@ -762,13 +820,13 @@
4055
4056 # Check to see how 'make' treats includes. -*- Autoconf -*-
4057
4058-# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
4059+# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
4060 #
4061 # This file is free software; the Free Software Foundation
4062 # gives unlimited permission to copy and/or distribute it,
4063 # with or without modifications, as long as this notice is preserved.
4064
4065-# serial 3
4066+# serial 4
4067
4068 # AM_MAKE_INCLUDE()
4069 # -----------------
4070@@ -777,7 +835,7 @@
4071 [am_make=${MAKE-make}
4072 cat > confinc << 'END'
4073 am__doit:
4074- @echo done
4075+ @echo this is the am__doit target
4076 .PHONY: am__doit
4077 END
4078 # If we don't find an include directive, just comment out the code.
4079@@ -787,24 +845,24 @@
4080 _am_result=none
4081 # First try GNU make style include.
4082 echo "include confinc" > confmf
4083-# We grep out `Entering directory' and `Leaving directory'
4084-# messages which can occur if `w' ends up in MAKEFLAGS.
4085-# In particular we don't look at `^make:' because GNU make might
4086-# be invoked under some other name (usually "gmake"), in which
4087-# case it prints its new name instead of `make'.
4088-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
4089- am__include=include
4090- am__quote=
4091- _am_result=GNU
4092-fi
4093+# Ignore all kinds of additional output from `make'.
4094+case `$am_make -s -f confmf 2> /dev/null` in #(
4095+*the\ am__doit\ target*)
4096+ am__include=include
4097+ am__quote=
4098+ _am_result=GNU
4099+ ;;
4100+esac
4101 # Now try BSD make style include.
4102 if test "$am__include" = "#"; then
4103 echo '.include "confinc"' > confmf
4104- if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
4105- am__include=.include
4106- am__quote="\""
4107- _am_result=BSD
4108- fi
4109+ case `$am_make -s -f confmf 2> /dev/null` in #(
4110+ *the\ am__doit\ target*)
4111+ am__include=.include
4112+ am__quote="\""
4113+ _am_result=BSD
4114+ ;;
4115+ esac
4116 fi
4117 AC_SUBST([am__include])
4118 AC_SUBST([am__quote])
4119@@ -849,14 +907,14 @@
4120
4121 # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
4122
4123-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
4124+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
4125 # Free Software Foundation, Inc.
4126 #
4127 # This file is free software; the Free Software Foundation
4128 # gives unlimited permission to copy and/or distribute it,
4129 # with or without modifications, as long as this notice is preserved.
4130
4131-# serial 5
4132+# serial 6
4133
4134 # AM_MISSING_PROG(NAME, PROGRAM)
4135 # ------------------------------
4136@@ -873,7 +931,14 @@
4137 AC_DEFUN([AM_MISSING_HAS_RUN],
4138 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
4139 AC_REQUIRE_AUX_FILE([missing])dnl
4140-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
4141+if test x"${MISSING+set}" != xset; then
4142+ case $am_aux_dir in
4143+ *\ * | *\ *)
4144+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
4145+ *)
4146+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
4147+ esac
4148+fi
4149 # Use eval to expand $SHELL
4150 if eval "$MISSING --run true"; then
4151 am_missing_run="$MISSING --run "
4152@@ -944,14 +1009,14 @@
4153
4154 # Check to make sure that the build environment is sane. -*- Autoconf -*-
4155
4156-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
4157+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
4158 # Free Software Foundation, Inc.
4159 #
4160 # This file is free software; the Free Software Foundation
4161 # gives unlimited permission to copy and/or distribute it,
4162 # with or without modifications, as long as this notice is preserved.
4163
4164-# serial 4
4165+# serial 5
4166
4167 # AM_SANITY_CHECK
4168 # ---------------
4169@@ -960,16 +1025,29 @@
4170 # Just in case
4171 sleep 1
4172 echo timestamp > conftest.file
4173+# Reject unsafe characters in $srcdir or the absolute working directory
4174+# name. Accept space and tab only in the latter.
4175+am_lf='
4176+'
4177+case `pwd` in
4178+ *[[\\\"\#\$\&\'\`$am_lf]]*)
4179+ AC_MSG_ERROR([unsafe absolute working directory name]);;
4180+esac
4181+case $srcdir in
4182+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
4183+ AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
4184+esac
4185+
4186 # Do `set' in a subshell so we don't clobber the current shell's
4187 # arguments. Must try -L first in case configure is actually a
4188 # symlink; some systems play weird games with the mod time of symlinks
4189 # (eg FreeBSD returns the mod time of the symlink's containing
4190 # directory).
4191 if (
4192- set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
4193+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
4194 if test "$[*]" = "X"; then
4195 # -L didn't work.
4196- set X `ls -t $srcdir/configure conftest.file`
4197+ set X `ls -t "$srcdir/configure" conftest.file`
4198 fi
4199 rm -f conftest.file
4200 if test "$[*]" != "X $srcdir/configure conftest.file" \
4201@@ -1022,18 +1100,25 @@
4202 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
4203 AC_SUBST([INSTALL_STRIP_PROGRAM])])
4204
4205-# Copyright (C) 2006 Free Software Foundation, Inc.
4206+# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
4207 #
4208 # This file is free software; the Free Software Foundation
4209 # gives unlimited permission to copy and/or distribute it,
4210 # with or without modifications, as long as this notice is preserved.
4211
4212+# serial 2
4213+
4214 # _AM_SUBST_NOTMAKE(VARIABLE)
4215 # ---------------------------
4216 # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
4217 # This macro is traced by Automake.
4218 AC_DEFUN([_AM_SUBST_NOTMAKE])
4219
4220+# AM_SUBST_NOTMAKE(VARIABLE)
4221+# ---------------------------
4222+# Public sister of _AM_SUBST_NOTMAKE.
4223+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
4224+
4225 # Check how to create a tarball. -*- Autoconf -*-
4226
4227 # Copyright (C) 2004, 2005 Free Software Foundation, Inc.
4228
4229=== modified file 'bootstrap'
4230--- bootstrap 2008-07-12 13:34:52 +0000
4231+++ bootstrap 2011-03-19 11:52:23 +0000
4232@@ -1,9 +1,9 @@
4233 #!/bin/sh
4234
4235 # I use
4236-# - autoconf (GNU Autoconf) 2.59
4237-# - automake (GNU automake) 1.7.9
4238-# - libtool (GNU libtool) 1.5.6 (1.1220.2.95 2004/04/11 05:50:42)
4239+# - autoconf (GNU Autoconf) 2.64
4240+# - automake (GNU automake) 1.11
4241+# - libtool (GNU libtool) 2.2.6
4242
4243 set -e
4244 set -x
4245
4246=== modified file 'config.guess'
4247--- config.guess 2010-07-10 11:15:59 +0000
4248+++ config.guess 2011-03-19 11:52:23 +0000
4249@@ -1,10 +1,10 @@
4250 #! /bin/sh
4251 # Attempt to guess a canonical system name.
4252 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4253-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
4254+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
4255 # Free Software Foundation, Inc.
4256
4257-timestamp='2009-04-27'
4258+timestamp='2009-12-30'
4259
4260 # This file is free software; you can redistribute it and/or modify it
4261 # under the terms of the GNU General Public License as published by
4262@@ -27,16 +27,16 @@
4263 # the same distribution terms that you use for the rest of that program.
4264
4265
4266-# Originally written by Per Bothner <per@bothner.com>.
4267-# Please send patches to <config-patches@gnu.org>. Submit a context
4268-# diff and a properly formatted ChangeLog entry.
4269+# Originally written by Per Bothner. Please send patches (context
4270+# diff format) to <config-patches@gnu.org> and include a ChangeLog
4271+# entry.
4272 #
4273 # This script attempts to guess a canonical system name similar to
4274 # config.sub. If it succeeds, it prints the system name on stdout, and
4275 # exits with 0. Otherwise, it exits with 1.
4276 #
4277-# The plan is that this can be called by configure scripts if you
4278-# don't specify an explicit build system type.
4279+# You can get the latest version of this script from:
4280+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
4281
4282 me=`echo "$0" | sed -e 's,.*/,,'`
4283
4284@@ -56,8 +56,9 @@
4285 GNU config.guess ($timestamp)
4286
4287 Originally written by Per Bothner.
4288-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
4289-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
4290+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
4291+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
4292+Software Foundation, Inc.
4293
4294 This is free software; see the source for copying conditions. There is NO
4295 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
4296@@ -170,7 +171,7 @@
4297 arm*|i386|m68k|ns32k|sh3*|sparc|vax)
4298 eval $set_cc_for_build
4299 if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
4300- | grep __ELF__ >/dev/null
4301+ | grep -q __ELF__
4302 then
4303 # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
4304 # Return netbsd for either. FIX?
4305@@ -333,6 +334,9 @@
4306 sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
4307 echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
4308 exit ;;
4309+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
4310+ echo i386-pc-auroraux${UNAME_RELEASE}
4311+ exit ;;
4312 i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
4313 eval $set_cc_for_build
4314 SUN_ARCH="i386"
4315@@ -656,7 +660,7 @@
4316 # => hppa64-hp-hpux11.23
4317
4318 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
4319- grep __LP64__ >/dev/null
4320+ grep -q __LP64__
4321 then
4322 HP_ARCH="hppa2.0w"
4323 else
4324@@ -807,12 +811,12 @@
4325 i*:PW*:*)
4326 echo ${UNAME_MACHINE}-pc-pw32
4327 exit ;;
4328- *:Interix*:[3456]*)
4329+ *:Interix*:*)
4330 case ${UNAME_MACHINE} in
4331 x86)
4332 echo i586-pc-interix${UNAME_RELEASE}
4333 exit ;;
4334- EM64T | authenticamd | genuineintel)
4335+ authenticamd | genuineintel | EM64T)
4336 echo x86_64-unknown-interix${UNAME_RELEASE}
4337 exit ;;
4338 IA64)
4339@@ -822,6 +826,9 @@
4340 [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
4341 echo i${UNAME_MACHINE}-pc-mks
4342 exit ;;
4343+ 8664:Windows_NT:*)
4344+ echo x86_64-pc-mks
4345+ exit ;;
4346 i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
4347 # How do we know it's Interix rather than the generic POSIX subsystem?
4348 # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
4349@@ -851,6 +858,20 @@
4350 i*86:Minix:*:*)
4351 echo ${UNAME_MACHINE}-pc-minix
4352 exit ;;
4353+ alpha:Linux:*:*)
4354+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
4355+ EV5) UNAME_MACHINE=alphaev5 ;;
4356+ EV56) UNAME_MACHINE=alphaev56 ;;
4357+ PCA56) UNAME_MACHINE=alphapca56 ;;
4358+ PCA57) UNAME_MACHINE=alphapca56 ;;
4359+ EV6) UNAME_MACHINE=alphaev6 ;;
4360+ EV67) UNAME_MACHINE=alphaev67 ;;
4361+ EV68*) UNAME_MACHINE=alphaev68 ;;
4362+ esac
4363+ objdump --private-headers /bin/sh | grep -q ld.so.1
4364+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
4365+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
4366+ exit ;;
4367 arm*:Linux:*:*)
4368 eval $set_cc_for_build
4369 if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
4370@@ -873,6 +894,17 @@
4371 frv:Linux:*:*)
4372 echo frv-unknown-linux-gnu
4373 exit ;;
4374+ i*86:Linux:*:*)
4375+ LIBC=gnu
4376+ eval $set_cc_for_build
4377+ sed 's/^ //' << EOF >$dummy.c
4378+ #ifdef __dietlibc__
4379+ LIBC=dietlibc
4380+ #endif
4381+EOF
4382+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
4383+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
4384+ exit ;;
4385 ia64:Linux:*:*)
4386 echo ${UNAME_MACHINE}-unknown-linux-gnu
4387 exit ;;
4388@@ -882,78 +914,34 @@
4389 m68*:Linux:*:*)
4390 echo ${UNAME_MACHINE}-unknown-linux-gnu
4391 exit ;;
4392- mips:Linux:*:*)
4393- eval $set_cc_for_build
4394- sed 's/^ //' << EOF >$dummy.c
4395- #undef CPU
4396- #undef mips
4397- #undef mipsel
4398- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
4399- CPU=mipsel
4400- #else
4401- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
4402- CPU=mips
4403- #else
4404- CPU=
4405- #endif
4406- #endif
4407-EOF
4408- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
4409- /^CPU/{
4410- s: ::g
4411- p
4412- }'`"
4413- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
4414- ;;
4415- mips64:Linux:*:*)
4416- eval $set_cc_for_build
4417- sed 's/^ //' << EOF >$dummy.c
4418- #undef CPU
4419- #undef mips64
4420- #undef mips64el
4421- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
4422- CPU=mips64el
4423- #else
4424- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
4425- CPU=mips64
4426- #else
4427- CPU=
4428- #endif
4429- #endif
4430-EOF
4431- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
4432- /^CPU/{
4433- s: ::g
4434- p
4435- }'`"
4436+ mips:Linux:*:* | mips64:Linux:*:*)
4437+ eval $set_cc_for_build
4438+ sed 's/^ //' << EOF >$dummy.c
4439+ #undef CPU
4440+ #undef ${UNAME_MACHINE}
4441+ #undef ${UNAME_MACHINE}el
4442+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
4443+ CPU=${UNAME_MACHINE}el
4444+ #else
4445+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
4446+ CPU=${UNAME_MACHINE}
4447+ #else
4448+ CPU=
4449+ #endif
4450+ #endif
4451+EOF
4452+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
4453 test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
4454 ;;
4455 or32:Linux:*:*)
4456 echo or32-unknown-linux-gnu
4457 exit ;;
4458- ppc:Linux:*:*)
4459- echo powerpc-unknown-linux-gnu
4460- exit ;;
4461- ppc64:Linux:*:*)
4462- echo powerpc64-unknown-linux-gnu
4463- exit ;;
4464- alpha:Linux:*:*)
4465- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
4466- EV5) UNAME_MACHINE=alphaev5 ;;
4467- EV56) UNAME_MACHINE=alphaev56 ;;
4468- PCA56) UNAME_MACHINE=alphapca56 ;;
4469- PCA57) UNAME_MACHINE=alphapca56 ;;
4470- EV6) UNAME_MACHINE=alphaev6 ;;
4471- EV67) UNAME_MACHINE=alphaev67 ;;
4472- EV68*) UNAME_MACHINE=alphaev68 ;;
4473- esac
4474- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
4475- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
4476- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
4477- exit ;;
4478 padre:Linux:*:*)
4479 echo sparc-unknown-linux-gnu
4480 exit ;;
4481+ parisc64:Linux:*:* | hppa64:Linux:*:*)
4482+ echo hppa64-unknown-linux-gnu
4483+ exit ;;
4484 parisc:Linux:*:* | hppa:Linux:*:*)
4485 # Look for CPU level
4486 case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
4487@@ -962,8 +950,11 @@
4488 *) echo hppa-unknown-linux-gnu ;;
4489 esac
4490 exit ;;
4491- parisc64:Linux:*:* | hppa64:Linux:*:*)
4492- echo hppa64-unknown-linux-gnu
4493+ ppc64:Linux:*:*)
4494+ echo powerpc64-unknown-linux-gnu
4495+ exit ;;
4496+ ppc:Linux:*:*)
4497+ echo powerpc-unknown-linux-gnu
4498 exit ;;
4499 s390:Linux:*:* | s390x:Linux:*:*)
4500 echo ${UNAME_MACHINE}-ibm-linux
4501@@ -986,66 +977,6 @@
4502 xtensa*:Linux:*:*)
4503 echo ${UNAME_MACHINE}-unknown-linux-gnu
4504 exit ;;
4505- i*86:Linux:*:*)
4506- # The BFD linker knows what the default object file format is, so
4507- # first see if it will tell us. cd to the root directory to prevent
4508- # problems with other programs or directories called `ld' in the path.
4509- # Set LC_ALL=C to ensure ld outputs messages in English.
4510- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
4511- | sed -ne '/supported targets:/!d
4512- s/[ ][ ]*/ /g
4513- s/.*supported targets: *//
4514- s/ .*//
4515- p'`
4516- case "$ld_supported_targets" in
4517- elf32-i386)
4518- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
4519- ;;
4520- a.out-i386-linux)
4521- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
4522- exit ;;
4523- "")
4524- # Either a pre-BFD a.out linker (linux-gnuoldld) or
4525- # one that does not give us useful --help.
4526- echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
4527- exit ;;
4528- esac
4529- # Determine whether the default compiler is a.out or elf
4530- eval $set_cc_for_build
4531- sed 's/^ //' << EOF >$dummy.c
4532- #include <features.h>
4533- #ifdef __ELF__
4534- # ifdef __GLIBC__
4535- # if __GLIBC__ >= 2
4536- LIBC=gnu
4537- # else
4538- LIBC=gnulibc1
4539- # endif
4540- # else
4541- LIBC=gnulibc1
4542- # endif
4543- #else
4544- #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
4545- LIBC=gnu
4546- #else
4547- LIBC=gnuaout
4548- #endif
4549- #endif
4550- #ifdef __dietlibc__
4551- LIBC=dietlibc
4552- #endif
4553-EOF
4554- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
4555- /^LIBC/{
4556- s: ::g
4557- p
4558- }'`"
4559- test x"${LIBC}" != x && {
4560- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
4561- exit
4562- }
4563- test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
4564- ;;
4565 i*86:DYNIX/ptx:4*:*)
4566 # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
4567 # earlier versions are messed up and put the nodename in both
4568@@ -1074,7 +1005,7 @@
4569 i*86:syllable:*:*)
4570 echo ${UNAME_MACHINE}-pc-syllable
4571 exit ;;
4572- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
4573+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
4574 echo i386-unknown-lynxos${UNAME_RELEASE}
4575 exit ;;
4576 i*86:*DOS:*:*)
4577@@ -1182,7 +1113,7 @@
4578 rs6000:LynxOS:2.*:*)
4579 echo rs6000-unknown-lynxos${UNAME_RELEASE}
4580 exit ;;
4581- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
4582+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
4583 echo powerpc-unknown-lynxos${UNAME_RELEASE}
4584 exit ;;
4585 SM[BE]S:UNIX_SV:*:*)
4586@@ -1275,6 +1206,16 @@
4587 *:Darwin:*:*)
4588 UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
4589 case $UNAME_PROCESSOR in
4590+ i386)
4591+ eval $set_cc_for_build
4592+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
4593+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
4594+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
4595+ grep IS_64BIT_ARCH >/dev/null
4596+ then
4597+ UNAME_PROCESSOR="x86_64"
4598+ fi
4599+ fi ;;
4600 unknown) UNAME_PROCESSOR=powerpc ;;
4601 esac
4602 echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
4603
4604=== modified file 'config.h.in'
4605--- config.h.in 2010-07-10 11:15:59 +0000
4606+++ config.h.in 2011-03-19 11:52:23 +0000
4607@@ -33,15 +33,18 @@
4608 /* Define to 1 if you have the <inttypes.h> header file. */
4609 #undef HAVE_INTTYPES_H
4610
4611-/* Libhal is available */
4612-#undef HAVE_LIBHAL
4613+/* Libudev is available */
4614+#undef HAVE_LIBUDEV
4615
4616-/* Define to 1 if you have the <libhal.h> header file. */
4617-#undef HAVE_LIBHAL_H
4618+/* Define to 1 if you have the <libudev.h> header file. */
4619+#undef HAVE_LIBUDEV_H
4620
4621 /* Libusb is available */
4622 #undef HAVE_LIBUSB
4623
4624+/* Define to 1 if you have the <libusb.h> header file. */
4625+#undef HAVE_LIBUSB_H
4626+
4627 /* Define to 1 if you have the <memory.h> header file. */
4628 #undef HAVE_MEMORY_H
4629
4630@@ -51,6 +54,9 @@
4631 /* Define if you have POSIX threads libraries and header files. */
4632 #undef HAVE_PTHREAD
4633
4634+/* Define to 1 if you have the `pthread_cancel' function. */
4635+#undef HAVE_PTHREAD_CANCEL
4636+
4637 /* Define to 1 if `stat' has the bug that it succeeds when given the
4638 zero-length file name argument. */
4639 #undef HAVE_STAT_EMPTY_STRING_BUG
4640@@ -94,9 +100,6 @@
4641 /* Define to 1 if you have the <unistd.h> header file. */
4642 #undef HAVE_UNISTD_H
4643
4644-/* Define to 1 if you have the <usb.h> header file. */
4645-#undef HAVE_USB_H
4646-
4647 /* Define to 1 if you have the `vprintf' function. */
4648 #undef HAVE_VPRINTF
4649
4650@@ -111,6 +114,9 @@
4651 */
4652 #undef LT_OBJDIR
4653
4654+/* Disable logging support */
4655+#undef NO_LOG
4656+
4657 /* Define to 1 if your C compiler doesn't accept -c and -o together. */
4658 #undef NO_MINUS_C_MINUS_O
4659
4660@@ -129,9 +135,15 @@
4661 /* Define to the one symbol short name of this package. */
4662 #undef PACKAGE_TARNAME
4663
4664+/* Define to the home page for this package. */
4665+#undef PACKAGE_URL
4666+
4667 /* Define to the version of this package. */
4668 #undef PACKAGE_VERSION
4669
4670+/* pcscd filename */
4671+#undef PCSCD_BINARY
4672+
4673 /* Enabled PC/SC lite features */
4674 #undef PCSCLITE_FEATURES
4675
4676@@ -154,6 +166,12 @@
4677 /* directory containing IPC files */
4678 #undef USE_IPCDIR
4679
4680+/* Use serial conf file mechanism */
4681+#undef USE_SERIAL
4682+
4683+/* Use USB hotplug mechanism */
4684+#undef USE_USB
4685+
4686 /* Version number of package */
4687 #undef VERSION
4688
4689
4690=== modified file 'config.sub'
4691--- config.sub 2010-07-10 11:15:59 +0000
4692+++ config.sub 2011-03-19 11:52:23 +0000
4693@@ -1,10 +1,10 @@
4694 #! /bin/sh
4695 # Configuration validation subroutine script.
4696 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4697-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
4698+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
4699 # Free Software Foundation, Inc.
4700
4701-timestamp='2009-04-17'
4702+timestamp='2010-01-22'
4703
4704 # This file is (in principle) common to ALL GNU software.
4705 # The presence of a machine in this file suggests that SOME GNU software
4706@@ -32,13 +32,16 @@
4707
4708
4709 # Please send patches to <config-patches@gnu.org>. Submit a context
4710-# diff and a properly formatted ChangeLog entry.
4711+# diff and a properly formatted GNU ChangeLog entry.
4712 #
4713 # Configuration subroutine to validate and canonicalize a configuration type.
4714 # Supply the specified configuration type as an argument.
4715 # If it is invalid, we print an error message on stderr and exit with code 1.
4716 # Otherwise, we print the canonical config type on stdout and succeed.
4717
4718+# You can get the latest version of this script from:
4719+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
4720+
4721 # This file is supposed to be the same for all GNU packages
4722 # and recognize all the CPU types, system types and aliases
4723 # that are meaningful with *any* GNU software.
4724@@ -72,8 +75,9 @@
4725 version="\
4726 GNU config.sub ($timestamp)
4727
4728-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
4729-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
4730+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
4731+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
4732+Software Foundation, Inc.
4733
4734 This is free software; see the source for copying conditions. There is NO
4735 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
4736@@ -149,10 +153,13 @@
4737 -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
4738 -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
4739 -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
4740- -apple | -axis | -knuth | -cray)
4741+ -apple | -axis | -knuth | -cray | -microblaze)
4742 os=
4743 basic_machine=$1
4744 ;;
4745+ -bluegene*)
4746+ os=-cnk
4747+ ;;
4748 -sim | -cisco | -oki | -wec | -winbond)
4749 os=
4750 basic_machine=$1
4751@@ -281,6 +288,7 @@
4752 | pdp10 | pdp11 | pj | pjl \
4753 | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
4754 | pyramid \
4755+ | rx \
4756 | score \
4757 | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
4758 | sh64 | sh64le \
4759@@ -288,13 +296,14 @@
4760 | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
4761 | spu | strongarm \
4762 | tahoe | thumb | tic4x | tic80 | tron \
4763+ | ubicom32 \
4764 | v850 | v850e \
4765 | we32k \
4766 | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
4767 | z8k | z80)
4768 basic_machine=$basic_machine-unknown
4769 ;;
4770- m6811 | m68hc11 | m6812 | m68hc12)
4771+ m6811 | m68hc11 | m6812 | m68hc12 | picochip)
4772 # Motorola 68HC11/12.
4773 basic_machine=$basic_machine-unknown
4774 os=-none
4775@@ -337,7 +346,7 @@
4776 | lm32-* \
4777 | m32c-* | m32r-* | m32rle-* \
4778 | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
4779- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
4780+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
4781 | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
4782 | mips16-* \
4783 | mips64-* | mips64el-* \
4784@@ -365,15 +374,17 @@
4785 | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
4786 | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
4787 | pyramid-* \
4788- | romp-* | rs6000-* \
4789+ | romp-* | rs6000-* | rx-* \
4790 | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
4791 | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
4792 | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
4793 | sparclite-* \
4794 | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
4795 | tahoe-* | thumb-* \
4796- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
4797+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
4798+ | tile-* | tilegx-* \
4799 | tron-* \
4800+ | ubicom32-* \
4801 | v850-* | v850e-* | vax-* \
4802 | we32k-* \
4803 | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
4804@@ -467,6 +478,10 @@
4805 basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
4806 os=-linux
4807 ;;
4808+ bluegene*)
4809+ basic_machine=powerpc-ibm
4810+ os=-cnk
4811+ ;;
4812 c90)
4813 basic_machine=c90-cray
4814 os=-unicos
4815@@ -719,6 +734,9 @@
4816 basic_machine=ns32k-utek
4817 os=-sysv
4818 ;;
4819+ microblaze)
4820+ basic_machine=microblaze-xilinx
4821+ ;;
4822 mingw32)
4823 basic_machine=i386-pc
4824 os=-mingw32
4825@@ -1069,6 +1087,11 @@
4826 basic_machine=tic6x-unknown
4827 os=-coff
4828 ;;
4829+ # This must be matched before tile*.
4830+ tilegx*)
4831+ basic_machine=tilegx-unknown
4832+ os=-linux-gnu
4833+ ;;
4834 tile*)
4835 basic_machine=tile-unknown
4836 os=-linux-gnu
4837@@ -1240,6 +1263,9 @@
4838 # First match some system type aliases
4839 # that might get confused with valid system types.
4840 # -solaris* is a basic system type, with this one exception.
4841+ -auroraux)
4842+ os=-auroraux
4843+ ;;
4844 -solaris1 | -solaris1.*)
4845 os=`echo $os | sed -e 's|solaris1|sunos4|'`
4846 ;;
4847@@ -1260,9 +1286,9 @@
4848 # Each alternative MUST END IN A *, to match a version number.
4849 # -sysv* is not here because it comes later, after sysvr4.
4850 -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
4851- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
4852- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
4853- | -kopensolaris* \
4854+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
4855+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
4856+ | -sym* | -kopensolaris* \
4857 | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
4858 | -aos* | -aros* \
4859 | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
4860@@ -1283,7 +1309,7 @@
4861 | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
4862 | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
4863 | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
4864- | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
4865+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
4866 # Remember, each alternative MUST END IN *, to match a version number.
4867 ;;
4868 -qnx*)
4869@@ -1416,6 +1442,8 @@
4870 -dicos*)
4871 os=-dicos
4872 ;;
4873+ -nacl*)
4874+ ;;
4875 -none)
4876 ;;
4877 *)
4878@@ -1613,7 +1641,7 @@
4879 -sunos*)
4880 vendor=sun
4881 ;;
4882- -aix*)
4883+ -cnk*|-aix*)
4884 vendor=ibm
4885 ;;
4886 -beos*)
4887
4888=== modified file 'configure'
4889--- configure 2010-07-10 11:15:59 +0000
4890+++ configure 2011-03-19 11:52:23 +0000
4891@@ -1,18 +1,22 @@
4892 #! /bin/sh
4893 # Guess values for system-dependent variables and create Makefiles.
4894-# Generated by GNU Autoconf 2.63 for pcsc-lite 1.5.5.
4895+# Generated by GNU Autoconf 2.67 for pcsc-lite 1.7.0.
4896+#
4897 #
4898 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
4899-# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
4900+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
4901+# Foundation, Inc.
4902+#
4903+#
4904 # This configure script is free software; the Free Software Foundation
4905 # gives unlimited permission to copy, distribute and modify it.
4906-## --------------------- ##
4907-## M4sh Initialization. ##
4908-## --------------------- ##
4909+## -------------------- ##
4910+## M4sh Initialization. ##
4911+## -------------------- ##
4912
4913 # Be more Bourne compatible
4914 DUALCASE=1; export DUALCASE # for MKS sh
4915-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
4916+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
4917 emulate sh
4918 NULLCMD=:
4919 # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
4920@@ -20,23 +24,15 @@
4921 alias -g '${1+"$@"}'='"$@"'
4922 setopt NO_GLOB_SUBST
4923 else
4924- case `(set -o) 2>/dev/null` in
4925- *posix*) set -o posix ;;
4926+ case `(set -o) 2>/dev/null` in #(
4927+ *posix*) :
4928+ set -o posix ;; #(
4929+ *) :
4930+ ;;
4931 esac
4932-
4933 fi
4934
4935
4936-
4937-
4938-# PATH needs CR
4939-# Avoid depending upon Character Ranges.
4940-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
4941-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
4942-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
4943-as_cr_digits='0123456789'
4944-as_cr_alnum=$as_cr_Letters$as_cr_digits
4945-
4946 as_nl='
4947 '
4948 export as_nl
4949@@ -44,7 +40,13 @@
4950 as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
4951 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
4952 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
4953-if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
4954+# Prefer a ksh shell builtin over an external printf program on Solaris,
4955+# but without wasting forks for bash or zsh.
4956+if test -z "$BASH_VERSION$ZSH_VERSION" \
4957+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
4958+ as_echo='print -r --'
4959+ as_echo_n='print -rn --'
4960+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
4961 as_echo='printf %s\n'
4962 as_echo_n='printf %s'
4963 else
4964@@ -55,7 +57,7 @@
4965 as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
4966 as_echo_n_body='eval
4967 arg=$1;
4968- case $arg in
4969+ case $arg in #(
4970 *"$as_nl"*)
4971 expr "X$arg" : "X\\(.*\\)$as_nl";
4972 arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
4973@@ -78,13 +80,6 @@
4974 }
4975 fi
4976
4977-# Support unset when possible.
4978-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
4979- as_unset=unset
4980-else
4981- as_unset=false
4982-fi
4983-
4984
4985 # IFS
4986 # We need space, tab and new line, in precisely that order. Quoting is
4987@@ -94,15 +89,15 @@
4988 IFS=" "" $as_nl"
4989
4990 # Find who we are. Look in the path if we contain no directory separator.
4991-case $0 in
4992+case $0 in #((
4993 *[\\/]* ) as_myself=$0 ;;
4994 *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4995 for as_dir in $PATH
4996 do
4997 IFS=$as_save_IFS
4998 test -z "$as_dir" && as_dir=.
4999- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
5000-done
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches