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

Proposed by Nicolas DERIVE
Status: Rejected
Rejected by: Martin Pitt
Proposed branch: lp:~kalon33/ubuntu/natty/pcsc-lite/merge-from-unstable
Merge into: lp:ubuntu/natty/pcsc-lite
Diff against target: 52854 lines
To merge this branch: bzr merge lp:~kalon33/ubuntu/natty/pcsc-lite/merge-from-unstable
Reviewer Review Type Date Requested Status
Martin Pitt Disapprove
Colin Watson reviewing changes for "need fixing" Pending
Review via email: mp+53142@code.launchpad.net

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

Description of the change

Merge new upstream version from Debian Unstable, as ours is pretty old, and keep Ubuntu changes. This proposal includes corrections as requested by cjwatson.

To post a comment you must log in.
Revision history for this message
Colin Watson (cjwatson) wrote : Posted in a previous version of this proposal

Thanks for your contribution to Ubuntu!

This branch removes all the previous Ubuntu entries from debian/changelog. Please don't do this; you should keep them until such time as we can sync the package completely with Debian.

In several places, where there are colliding changes to the same few lines on the Debian side and the Ubuntu side, you have not resolved the conflict correctly. For instance, the previous Debian->Ubuntu diff had:

-Depends: libccid | pcsc-ifd-handler, ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6), hal
+Depends: libccid | pcsc-ifd-handler, ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6)
 Conflicts: libccid (<= 1.0.0-1)

Your new Debian->Ubuntu diff has:

-Depends: libccid (>= 1.4.1~) | pcsc-ifd-handler, ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6), hal
+Depends: libccid | pcsc-ifd-handler, ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6)
+Conflicts: libccid (<= 1.0.0-1)

This is definitely not how the merge conflict should be resolved. What you should end up with is the same as the Debian side but with ", hal" removed.

-Conflicts: libpcsclite-dev (<< ${binary:Version})
-Depends: ${shlibs:Depends}, ${misc:Depends}, pcscd (= ${binary:Version})
+Conflicts: libpcsclite-dev (<< ${binary:Version}), pcscd (<< ${binary:Version})
+Depends: ${shlibs:Depends}, ${misc:Depends}, pcscd

Could you explain this new Debian->Ubuntu diff? It isn't mentioned in the changelog.

Your debian/rules merge completely reverts the new tiny dh rules, using the previous rules instead. We don't do this in Ubuntu - can you please figure out how to make the change corresponding to the previous Debian->Ubuntu diff using the new rules style? Feel free to ask if you need help with this.

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

@Colin: I think I figure out how to fix debian/control (I completely forgotten to remove remaining hal depends, sorry it's my first commit to Ubuntu and it's impressive to me).

For debian/changelog, do you want I merge both changelog from Debian and Ubuntu, or reusing Ubuntu one adding the new release ?

For debian/rules, I'm pretty new to that stuff, and I don't know how to pass configure options with new rules style, this is why I use the old one. Could you help me on this?

The last Debian/Ubuntu diff :

-Conflicts: libpcsclite-dev (<< ${binary:Version})
-Depends: ${shlibs:Depends}, ${misc:Depends}, pcscd (= ${binary:Version})
+Conflicts: libpcsclite-dev (<< ${binary:Version}), pcscd (<< ${binary:Version})
+Depends: ${shlibs:Depends}, ${misc:Depends}, pcscd

 is a mistake, I will fix it.

Thanks a lot.

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

Hello cjwatson,

I made some corrections taking your remarks into account. (It was a bit empirical for dh tiny rules, but I hope it's the way to do this, if not, please explain this to me, as dh tiny rules are really new to me!)

It that the way you want me to fix this?

Thanks for your review.

> Thanks for your contribution to Ubuntu!
>
> This branch removes all the previous Ubuntu entries from debian/changelog.
> Please don't do this; you should keep them until such time as we can sync the
> package completely with Debian.
>
> In several places, where there are colliding changes to the same few lines on
> the Debian side and the Ubuntu side, you have not resolved the conflict
> correctly. For instance, the previous Debian->Ubuntu diff had:
>
> -Depends: libccid | pcsc-ifd-handler, ${shlibs:Depends}, ${misc:Depends}, lsb-
> base (>= 3.0-6), hal
> +Depends: libccid | pcsc-ifd-handler, ${shlibs:Depends}, ${misc:Depends}, lsb-
> base (>= 3.0-6)
> Conflicts: libccid (<= 1.0.0-1)
>
> Your new Debian->Ubuntu diff has:
>
> -Depends: libccid (>= 1.4.1~) | pcsc-ifd-handler, ${shlibs:Depends},
> ${misc:Depends}, lsb-base (>= 3.0-6), hal
> +Depends: libccid | pcsc-ifd-handler, ${shlibs:Depends}, ${misc:Depends}, lsb-
> base (>= 3.0-6)
> +Conflicts: libccid (<= 1.0.0-1)
>
> This is definitely not how the merge conflict should be resolved. What you
> should end up with is the same as the Debian side but with ", hal" removed.
>
> -Conflicts: libpcsclite-dev (<< ${binary:Version})
> -Depends: ${shlibs:Depends}, ${misc:Depends}, pcscd (= ${binary:Version})
> +Conflicts: libpcsclite-dev (<< ${binary:Version}), pcscd (<<
> ${binary:Version})
> +Depends: ${shlibs:Depends}, ${misc:Depends}, pcscd
>
> Could you explain this new Debian->Ubuntu diff? It isn't mentioned in the
> changelog.
>
> Your debian/rules merge completely reverts the new tiny dh rules, using the
> previous rules instead. We don't do this in Ubuntu - can you please figure
> out how to make the change corresponding to the previous Debian->Ubuntu diff
> using the new rules style? Feel free to ask if you need help with this.

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

Unmerged revisions

37. By Nicolas DERIVE

REALLY wipe out hal depends (was remaining in pcscd deps)

36. By Nicolas DERIVE

debian/rules: Keep our configure options, using dh tiny rules,
especially --disable-libhal, as requested by cjwatson.

35. By Nicolas DERIVE

Change debian/changelog and debian/control taking into account cjwatson corrections.

34. By Nicolas DERIVE

Something from merging was remaining in debian/changelog. Adopt same solution as for the previous one.

33. By Nicolas DERIVE

REALLY update debian/control using the file from Debian packaging, to make sure it is not messed up anymore because of the merge.

32. By Nicolas DERIVE

Fix another merging trace in debian/control

31. By Nicolas DERIVE

fix a forgotten merging trace in debian/control

30. By Nicolas DERIVE

Merge from Debian Unstable (LP: #723016). Remaining changes:

29. By Nicolas DERIVE

Commit to resolve merging conflicts and keep Ubuntu changes:

* Merge from debian unstable. Remaining changes:
  - Move runtime libraries to /lib, for the benefit of wpasupplicant.
  - disable hal support. LP: #506908
  - add build-dep on libusb-1.0-0-dev, fixes FTBFS
* debian/control: Drop libhal-dev build dependency, as we already configure
  with --disable-libhal. Using libusb-1.0-0 instead.
* New upstream release
* Fix "missing dependency for libccid > 1.4" pcscd now depends on version
  >= 1.4.1~ of libccid. Previous versions of libccid do not have the udev
  rule file to set the device permissions so the reader is not usable with
  the pcscd when run as NON root (Closes: #613404)
* Fix "missing dependecy for libpcsclite1 in fiting version" libpcsclite1
  now depends on the exact same version of pcscd instead of just conflicting
  with a previous version of pcscd (Closes: #613405)
* upload to unstable
* pcscd.dirs: remove usr/share/lintian/overrides since the override file was
  removed in 1.6.5-1
* New upstream release
* Fix "Regression: My card{,-reader} fails with 1.6.5-1" bug fixed upstream
  (Closes: #606121)
* Fix "pcscd - Unneeded high privileges" pcscd is now running as a normal
  user in the pcscd group (Closes: #606142)
  See http://ludovicrousseau.blogspot.com/2010/09/pcscd-auto-start.html
  The driver package shall privide a udev rule file to set the correct
  permissions on the device. libccid does that.
* New upstream release
* debian/rules: do not install pcscd suid root
* debian/pcscd.lintian-overrides: removed since no more lintian warnings
* debian/pcscd.init: create $IPCDIR with correct access rights
* debian/pcscd.postinst: create the pcscd group and setgid pcscd to it
* debian/pcscd.README.Debian: remove outdated "pscsd starts before usbmgr"
  section and add "pscsd sgid pcscd" section
* New upstream release
* debian/rules: install pcscd suid root. This was broken in previous
  packages.
* debian/control: remove Conflicts: libccid (<= 1.0.0-1)
  stable (lenny) already has libccid 1.3.8
  lintian complained that Breaks should be used instead
* New upstream release
* New upstream release
* debian/rules: use the minimal dh rules
* debian/control: Standards-Version: 3.8.4 -> 3.9.1. No change needed.
* Fix "depends on pcscd which is priority: extra". The 3 packages are now
  priority "optional" (Closes: #591151)
* New upstream release
* install an /etc/init.d/pcscd file again but with the daemon disabled.
  This should ease upgrades and allow users to still start the daemon on
  startup if needed.
* New upstream release
* debian/libpcsclite-dev.install: do not install libpcsclite.a since it is
  no more built upstream.
* configure pcscd to use --enable-confdir=/etc/reader.conf.d instead of
  /var/lib/pcscd since pcscd can now parse a directory and each file in it.
  . Also remove update-reader.conf(8) script and related files since it is
  now useless.
  . pcscd.postinst now removes the unused files instead of calling
  update-reader.conf. This script can be removed for squeeze+1
* debian/source/format: use "3.0 (quilt)" format
* debian/rules: add --sysconfdir=/etc
* do not start pcscd at startup any more. pcscd is started by libpcsclite.so
  when needed. But install pcscd as setuid root now. You can restrict the
  access rights of pcscd to limit its use to a particular group if needed.
* debian/control: libpcsclite1 now Depends: instead of Suggests: on pcscd
  The daemon is not started at boot time but only on request so the CPU cost
  is zero if not used.
* Fix CVE-2010-4531: buffer overflow in the ATRDecodeAtr function in the
  Answer-to-Reset (ATR) Handler (atrhandler.c)
* Closes: #607781 "pcsc-lite: buffer overflow"
* Initial Release.
* Modified rpc/Makefile.linux to install pcscd under sbin/
* Closes: bug#90184

28. By Nicolas DERIVE

Merging shared upstream rev into target branch.

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

Subscribers

People subscribed via source and target branches