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
=== modified file 'ChangeLog'
--- ChangeLog 2010-07-10 11:15:59 +0000
+++ ChangeLog 2011-03-12 18:37:00 +0000
@@ -1,3 +1,244 @@
1pcsc-lite-1.6.7: Ludovic Rousseau
222 February 2011
3- better Mac OS X support
4- Fix Alioth bug [#312960] SCardDisconnect when other context has transaction
5- add support of multi-interfaces readers with libusb and not just libhal
6- add a API tracing feature in the client side (#define DO_TRACE)
7- allow the use of tracing and profiling features from different
8 application threads
9- fix a problem with a multi-slots reader
10- fix minor problems detected by the clang tool
11- some other minor improvements and bug corrections
12
13
14pcsc-lite-1.6.6: Ludovic Rousseau
1512 December 2010
16- SCardGetStatusChange(): fix a bug on 64-bits systems
17- Fix another bug because of a regression in internal list manager
18
19
20pcsc-lite-1.6.5: Ludovic Rousseau
213 December 2010
22- Power on the card _only_ if an application requests a connection.
23 You can disable the feature using DISABLE_ON_DEMAND_POWER_ON in
24 src/pcscd.h.in
25 If DISABLE_AUTO_POWER_ON is defined then do not automatically power on
26 the card. The card will be powered on on the first SCardConnect()
27 See http://ludovicrousseau.blogspot.com/2010/10/card-auto-power-on-and-off.html
28- SCardReconnect(): return SCARD_E_NO_SMARTCARD when card is removed and
29 SCARD_W_UNRESPONSIVE_CARD when card is unresponsive instead of
30 SCARD_E_PROTO_MISMATCH
31- Install pcscd as sgid pcscd instead of suid root
32 See http://ludovicrousseau.blogspot.com/2010/09/pcscd-auto-start.html
33- SCardSetTimeout() is no more provided. This function is not provided
34 by Microsoft and is deprecated since 2004 in pcsc-lite.
35- SCardCancelTransaction() is no more provided. This function is not
36 provided by Microsoft and is deprecated since 2005 in pcsc-lite.
37- Parsing the CCID Info.plist (159 readers supported) was, on a i386
38 machine, done in 264306 µs and is now done 5547 µs => gain x47 or 4600%
39 See http://ludovicrousseau.blogspot.com/2010/08/ram-and-cpu-improvements-in-pcsc-lite.html
40- It is now possible to configure the local socket name to use using the
41 environment variable PCSCLITE_CSOCK_NAME
42 See http://ludovicrousseau.blogspot.com/2010/11/pcsc-client-and-server-on-two-different.html
43- Wait until all connected readers have a chance to power up a possibly
44 inserted card before accepting clients.
45- restrict pcscd features when not run by root (so using suid): APDU
46 logging or setting parameters are disabled for example
47- fix compilation problem on kfreebsd-* systems
48- PCSC/reader.h: HOST_TO_CCID_16() and HOST_TO_CCID_32() are now
49 identity functions
50 Since libccid 1.4.1 (revision 5252) the byte order is no more important
51- If you want to use IFDHCreateChannel() instead of
52 IFDHCreateChannelByName() then do not use any DEVICENAME line in the
53 configuration file. IFDHCreateChannel() will then be called with the
54 CHANNELID parameter.
55- the CHANNELID parameter can also be a decimal number.
56- Remove the support of IFDHandler v1 API. I don't know any driver using
57 this API.
58 See http://ludovicrousseau.blogspot.com/2010/10/ifdhandler-version-1-support-removed.html
59- avoids a buffer overflow with badly formed ATR
60- some other minor improvements and bug corrections
61
62
63pcsc-lite-1.6.4: Ludovic Rousseau
6415 August 2010
65- Do not use sysconfdir as configuration directory but
66 "${sysconfdir}/reader.conf.d" instead.
67 Use --enable-confdir=DIR if you want to set a specific value without
68 the "reader.conf.d" appended.
69
70
71pcsc-lite-1.6.3: Ludovic Rousseau
7215 August 2010
73- "/reader.conf.d" is only appended to sysconfdir if no value of
74 sysconfdir is provided
75- Define LPSCARD_READERSTATE since this is used in the MSDN prototype.
76 Use LPSCARD_READERSTATE in winscard.h instead of (SCARD_READERSTATE *)
77 to mimic the MSDN API.
78- fix a pcscd crash when the application uses a PCSC handle after a
79 fork. The crash was with openvpn.
80- some other minor improvements and bug corrections
81
82pcsc-lite-1.6.2: Ludovic Rousseau
834 August 2010
84- implement a "Forced suicide" mechanism.
85 After 3 Ctrl-C without much reaction from pcscd (in fact the drivers)
86 we force the suicide. Sometimes libusb is blocked in a kind of
87 dead-lock and kill -9 was the only option.
88- Add support of TAG_IFD_STOP_POLLING_THREAD to request the stop of the
89 driver polling function.
90- Avoid a division by 0. Closes [#312555] "simclist bug in pcsc-lite"
91- if pcscd is stared by libpcsclite then close all file handles except
92 stdin, stdout and stderr so that pcscd does not confiscate ressources
93 allocated by the application
94- in case of auto exit create a new session so that Ctrl-C on the
95 application will not also quit pcscd
96- src/hotplug_libusb.c: port from libusb-0.1 to libusb-1.0
97- default configuration is now $sysconfdir/reader.conf.d
98- fix crash with empty config dir
99- src/PCSC/winscard.h: Remove definitions of SCARD_READERSTATE_A
100 PSCARD_READERSTATE_A and LPSCARD_READERSTATE_A types
101- some other minor improvements and bug corrections
102
103
104pcsc-lite-1.6.1: Ludovic Rousseau
1054 June 2010
106- SCardControl(): do not check for card events since we are talking to
107 the reader not the card. A smart card removal should not make
108 SCardControl() fail with SCARD_W_REMOVED_CARD
109- pcscd do not timeout any more after 2 minutes of inactivity. If the
110 other side of the socket dies we will get an error from the kernel.
111 The problem was that if a client does nothing during
112 PCSCLITE_READ_TIMEOUT (120 seconds by default) then pcscd considers it
113 as a dead client and closes the connection. I guess this problem was
114 present since the first version of pcsc-lite but nobody complained
115 before.
116- pcscd: do not return before most of the initialisation are done
117 correctly. The idea is that pcscd can return an error code if the
118 daemon fails to start correctly (hald not started for example).
119 Before the patch pcscd became a daemon, then returned 0 (success) and
120 then continued with the initialisation. If the initialisation failed
121 it was too late to return an error code. The /etc/init.d/pcscd script
122 was not aware of the failure.
123 Closes https://bugzilla.redhat.com/show_bug.cgi?id=580321
124 "/usr/sbin/pcscd exit codes broken"
125- src/hotplug_libusb.c: Add a synchronisation so that if pcscd is auto
126 started the initial reader list is available before the server takes
127 commands from clients.
128 Before the change early calls of SCardListReaders() returned an empty
129 list of readers even if a reader was connected.
130 Thanks to Patrice Angelini for the bug report
131- SCardConnect() & SCardReconnect(): do not reset the cardProtocol in
132 SCARD_SHARE_DIRECT case since the card have _not_ been reseted. A new
133 PPS negociation would fail.
134- Do not install files in /etc any more. Serial drivers are rare now.
135- Avoids a crash if a client sends a unknown command.
136 Thanks to Martin Vogt for the bug report
137- some other minor improvements and bug corrections
138
139
140pcsc-lite-1.6.0: Ludovic Rousseau
1415 May 2010
142- redesign the client/server communication:
143 * no more shared memory used (allow pcscd and libpcsclite1.so to be on
144 different computer and talk over a network)
145 * no more difference between short and extended APDU
146 * no more use of a /var/run/pcscd/pcscd.events/ directory. events are
147 sent through the socket
148 * simpler command format between client and server
149 The side effect is that you are not able to mix an old pcscd with a
150 new libpcsclite1.so or the reverse. SCardEstablishContext() will fail
151 unless you update both sides of the communication.
152- Use lists instead of fixed size arrays to store handles.
153 It is now possible to have:
154 - 200 simultaneous PC/SC clients instead of 16
155 - 200 SCardConnect per client instead of 16
156 - 200 clients per reader instead of 16
157 The default value of 200 can be changed by giving an argument to pcscd
158 --max-thread --max-card-handle-per-thread --max-card-handle-per-reader
159 Thanks to Jean-Luc Giraud for the big patch
160- Make SCardReconnect(), SCardStatus() and SCardTransmit() block instead
161 of returning SCARD_E_SHARING_VIOLATION immediately. These functions
162 will then behave like on Windows.
163 This can happen if these functions are called when the reader is
164 locked by a PCSC transaction
165 (SCardBeginTransaction/SCardEndTransaction).
166 You can define the environment variable PCSCLITE_NO_BLOCKING to use
167 the old behavior.
168 Thanks to Jean-Luc Giraud for the patch.
169 http://archives.neohapsis.com/archives/dev/muscle/2010-q1/0041.html
170- SCardEstablishContext(): try to start the pcscd daemon if not already
171 running.
172 . pcscd will suicide itself after 60 seconds of inactivity if it is
173 started using --auto-exit. This is the default behavior when pcscd is
174 started by libpcsclite
175 . Set PCSCLITE_PCSCD_ARGS with the argument you want to pass to pcscd in
176 autostart Only one argument is passed. The space character is not a
177 separator. example: export PCSCLITE_PCSCD_ARGS=-dfa
178- SCardListReaders(): can use SCARD_AUTOALLOCATE
179- SCardGetAttrib(): return SCARD_E_INSUFFICIENT_BUFFER if the driver
180 returns IFD_ERROR_INSUFFICIENT_BUFFER
181 . add support of SCARD_ATTR_DEVICE_FRIENDLY_NAME as it is better
182 implemented in pcscd (it knows the friendly name)
183- SCardGetStatusChange(): Calling with cReaders == 0 will now just
184 return SCARD_S_SUCCESS
185 . Use the special reader name "\\?PnP?\Notification" to wait for a
186 reader event notification
187- SCardTransmit(): do not limit the minimum size of an APDU to 4 bytes.
188 non ISO 7816-4 compliant cards (like Mifare DESFIRE) may use shorter
189 commands
190- SCardStatus(): returns SCARD_E_SHARING_VIOLATION if the reader is
191 already used More conform to Windows
192- PCSC/reader.h: update sruct PIN_PROPERTIES_STRUCTURE to be conform
193 with Revision 2.02.06, April 2009 of PCSCv2 part 10 Fields
194 wLcdMaxCharacters and wLcdMaxLines have been removed
195 . rename FEATURE_MCT_READERDIRECT in FEATURE_MCT_READER_DIRECT to be
196 conform with ch. 2.3 of PCSC v2 part 10
197 . add FEATURE_GET_TLV_PROPERTIES and FEATURE_CCID_ESC_COMMAND from
198 PC/SC part 10 v2.02.07 March 2010
199 . Add PCSCv2_PART10_PROPERTY_* defines
200- SCardControl() return SCARD_E_UNSUPPORTED_FEATURE if the driver
201 returned IFD_ERROR_NOT_SUPPORTED or IFD_NOT_SUPPORTED This is used to
202 separate an unsupported value of ControlCode from a general error
203- Use the standard --sysconfdir=DIR ($prefix/etc by default) instead of
204 --enable-confdir=DIR for defining the directory containing reader.conf
205- remove SCF support (PC/SC over Smart Card Framework). I never used
206 this feature and SCF is now dead and replaced by JSR 268
207 (javax.smartcardio)
208- Better handling of PCSCLITE_STATIC_DRIVER as can be used on platforms
209 using µClinux (without dynamic loader). This is used to statically
210 link the reader driver to pcscd. Since the link is static you must
211 define the IFDHandler API version at compilation time. Either define
212 IFDHANDLERv1, IFDHANDLERv2 or IFDHANDLERv3
213- Use dynamic instead of static allocation for the driver library
214 filename. The filename is no more limited to 100 characters.
215 Closes: [#312332] MAX_LIBNAME too short?
216- force the return codes SCARD_* to be long since the SCard* functions
217 return a LONG type
218- Add the ability to parse all the configuration files of a directory
219 instead of just one configuration file. update-reader.conf is then now
220 obsolete.
221- Add --enable-embedded (default is no) to build pcsc-lite for an
222 embedded system. This will activate the NO_LOG option to disable
223 logging and limit RAM and disk consumption.
224- If NO_LOG is defined then no log are displayed. The idea is to limit
225 the binaries size on disk and RAM consumption at execution time.
226 With NO_LOG defined we gain 26% (17 kB) for the .text segment of pcscd
227 and 15% (4 kB) for the .text segment of libpcsclite.so (for i386)
228- Define a minimal pcsc_stringify_error() if NO_LOG is defined. Only the
229 error code in hex is displayed in this case.
230 Gain: 2kB of .text (10%) for libpcsclite
231- Add --disable-serial and --disable-usb options
232 --disable-serial removes support of /etc/reader.conf gain: 8.0kB of
233 .text (12%) and 160 bytes of .bss (4%) for pcscd
234 --disable-usb removes support of USB hotplug gain: 9.7kB of .text
235 (14%) and 960 bytes of .bss (23%) for pcscd
236 If you use both options (and use a static driver configuration) gain:
237 17.7kB of .text (26%) and 1152 bytes of .bss (28%) for pcscd
238- Better support of Android
239- some other minor improvements and bug corrections
240
241
1pcsc-lite-1.5.5: Ludovic Rousseau242pcsc-lite-1.5.5: Ludovic Rousseau
228 July 200924328 July 2009
3- add the reader interface name if provided by the device244- add the reader interface name if provided by the device
@@ -40,7 +281,7 @@
40- reader.h: add PIN_PROPERTIES_STRUCTURE structure and FEATURE_IFD_PIN_PROPERTIES281- reader.h: add PIN_PROPERTIES_STRUCTURE structure and FEATURE_IFD_PIN_PROPERTIES
41 Thanks to Martin Paljak for the patch282 Thanks to Martin Paljak for the patch
42- remove powermgt_macosx.c since it is using APSL version 1.1 instead of283- remove powermgt_macosx.c since it is using APSL version 1.1 instead of
43 the BSD-like licence like the other files 284 the BSD-like licence like the other files
44 Thanks to Stanislav Brabec for the bug report285 Thanks to Stanislav Brabec for the bug report
45- avoid a possible crash due to a race condition286- avoid a possible crash due to a race condition
46 Thanks to Matheus Ribeiro for the patch287 Thanks to Matheus Ribeiro for the patch
@@ -65,7 +306,7 @@
65- log TxBuffer and RxBuffer if the SCardControl() command failed.306- log TxBuffer and RxBuffer if the SCardControl() command failed.
66 Closes: [#311376] PCSC_LOG_VERBOSE via -dd; print details of "Card not307 Closes: [#311376] PCSC_LOG_VERBOSE via -dd; print details of "Card not
67 transacted"308 transacted"
68- add a mutex to avoid a race condition 309- add a mutex to avoid a race condition
69 Closes: [#311377] Race condition in SCardBeginTransaction310 Closes: [#311377] Race condition in SCardBeginTransaction
70- SCardGetStatusChange() may not return if the reader was removed.311- SCardGetStatusChange() may not return if the reader was removed.
71- some other minor improvements and bug corrections312- some other minor improvements and bug corrections
@@ -105,7 +346,7 @@
105346
106pcsc-lite-1.4.102: Ludovic Rousseau347pcsc-lite-1.4.102: Ludovic Rousseau
10727 June 200834827 June 2008
108- pcscd -v now displays the enabled features 349- pcscd -v now displays the enabled features
109- add support of SCARD_AUTOALLOCATE in SCardListReaders(),350- add support of SCARD_AUTOALLOCATE in SCardListReaders(),
110 SCardListReaderGroups() and SCardGetAttrib351 SCardListReaderGroups() and SCardGetAttrib
111- add SCardFreeMemory()352- add SCardFreeMemory()
@@ -148,7 +389,7 @@
148 in case of "PCSC Not Running" or "PCSC restarted" so that nothing is389 in case of "PCSC Not Running" or "PCSC restarted" so that nothing is
149 logged by default. PCSCLITE_DEBUG can be defined to see the message.390 logged by default. PCSCLITE_DEBUG can be defined to see the message.
150 Programs linked with libpcsclite will not display anything if pcscd is391 Programs linked with libpcsclite will not display anything if pcscd is
151 not running. Solves Red Hat bug 428299. 392 not running. Solves Red Hat bug 428299.
152- default log level is PCSC_LOG_CRITICAL+1 so that NO log is sent to393- default log level is PCSC_LOG_CRITICAL+1 so that NO log is sent to
153 stderr by default. You need to explicitly set PCSCLITE_DEBUG to have394 stderr by default. You need to explicitly set PCSCLITE_DEBUG to have
154 logs. (in a library stderr(2) can be any file opened with fd=2 so395 logs. (in a library stderr(2) can be any file opened with fd=2 so
155396
=== modified file 'ChangeLog.svn'
--- ChangeLog.svn 2010-07-10 11:15:59 +0000
+++ ChangeLog.svn 2011-03-12 18:37:00 +0000
@@ -1,3 +1,2603 @@
12011-02-22 Ludovic Rousseau
2
3 * [r5628] ChangeLog, configure.in: release 1.6.7
4
52011-02-21 Ludovic Rousseau
6
7 * [r5621] src/hotplug_libusb.c: If a device has more than one CCID
8 interface the "libhal:" naming scheme (with the interface number
9 included) is used instead of "libusb:".
10
11 The new mechanism allows to use multi-interfaces devices like the
12 Gemalto ProxDU also with hotplug_libusb. libhal is deprecated and
13 may not be available everywhere.
14
15 Thanks to Diego Elio Pettenò for the patch (for Gentoo)
16
172011-02-10 Ludovic Rousseau
18
19 * [r5589] src/winscard_clnt.c: Move the definition of DO_TRACE,
20 DO_PROFILE, and DO_CHECK_SAME_PROCESS at the top of the file, and
21 add documentation.
22
232011-02-09 Ludovic Rousseau
24
25 * [r5587] src/Makefile.am: Do not create empty directories
26 .../pcsc/drivers and .../pcsc/services any more. The needed
27 directory is created by the driver instead.
28
292011-02-04 Ludovic Rousseau
30
31 * [r5584] UnitaryTests/ThreadSafe.py, UnitaryTests/stress_apdu.py:
32 Fix PEP8 warnings
33 * [r5583] UnitaryTests/ThreadSafe.py: Display the thread id and
34 iterations
35 * [r5582] UnitaryTests/SCard_fork.py: Better documentation and
36 debug
37 * [r5581] src/winscard_clnt.c: Add a missing variable declaration
38 used if DO_CHECK_SAME_PROCESS is defined
39 * [r5580] UnitaryTests/SCardConnect_DIRECT.py: Test the behavior as
40 documented in revision 5579
41 * [r5579] src/winscard_clnt.c: Doxygen: CardConnect() &
42 SCardReconnect() pdwActiveProtocol is not set to
43 SCARD_PROTOCOL_UNDEFINED if SCARD_SHARE_DIRECT is used but the
44 card has already negociated its protocol
45
462011-02-01 Ludovic Rousseau
47
48 * [r5575] UnitaryTests/SCardBeginTransaction_ExclusiceMode.py:
49 Unitary test for Alioth bug [#312960] SCardDisconnect when other
50 context has transaction
51 * [r5574] src/winscard.c: SCardDisconnect(): RFUnlockAllSharing()
52 may fail with SCARD_E_SHARING_VIOLATION if a transaction is on
53 going on another card context and dwDisposition ==
54 SCARD_LEAVE_CARD. We should not stop and continue disconnecting
55 the card.
56
57 Fixes Alioth bug [#312960] SCardDisconnect when other context has
58 transaction
59 * [r5573] UnitaryTests/SCardConnect_DIRECT2.py: Use the protocol
60 negociated by SCardConnect() instead of hard coding SCARD_PCI_T1
61 * [r5572] src/winscard_clnt.c: SCardDisconnect(): remove the card
62 handle only if SCARD_DISCONNECT command succeeded on the server
63
64 Related to alioth bug [#312960] SCardDisconnect when other
65 context has transaction If a first SCardDisconnect() fails with
66 SCARD_E_SHARING_VIOLATION it is now possible to try again
67 SCardDisconnect(). Before the patch the second call to
68 SCardDisconnect() returned SCARD_E_INVALID_HANDLE but the
69 connection was still "in use".
70
712011-01-29 Ludovic Rousseau
72
73 * [r5569] src/PCSC/ifdhandler.h, src/readerfactory.h: Revert
74 revision 5568 since it has side effect on driver compilation
75 (like libccid fails to build)
76 * [r5568] src/PCSC/ifdhandler.h, src/readerfactory.h: Move #include
77 "pcsclite.h" from PCSC/ifdhandler.h to readerfactory.h so that
78 ifdhandler.h can be used as-is on Mac OS X (for handler_test.c)
79 * [r5567] src/eventhandler.c, src/ifdwrapper.c, src/prothandler.c,
80 src/readerfactory.c: Remove useless #include "ifdhandler.h"
81
822011-01-27 Ludovic Rousseau
83
84 * [r5560] src/winscard_clnt.c: SCardSetAttrib(): add profiling
85 calls
86 * [r5559] src/winscard_clnt.c: SCardGetSetAttrib(): remove a call
87 to PROFILE_END() since this is already done in SCardGetAttrib()
88 * [r5558] src/winscard_clnt.c: profiling: compare threads using
89 pthread_equal() instead of == to make the code more portable.
90 * [r5557] src/winscard_clnt.c: SCardGetAttrib(): Always exit from
91 the same point so that profiling does work even in case of error
92 * [r5556] src/winscard_clnt.c: profile_end(): add a missing \n in
93 the warning message
94 * [r5555] src/winscard_clnt.c: Send API traces do stderr instead of
95 stdout
96
972011-01-25 Ludovic Rousseau
98
99 * [r5550] src/winscard_clnt.c: SCardReleaseContext(): Always exit
100 from the same point so that profiling does work even in case of
101 error
102 * [r5549] src/winscard_clnt.c: SCardCancel(): Always exit from the
103 same point so that profiling does work even in case of error
104 * [r5548] src/winscard_clnt.c: Profiling: allow to support up to
105 MAX_THREADS simultaneous calls
106
107 For example SCardCancel() is called from another thread when
108 SCardGetStatusChange() is running. This was not supported.
109 * [r5547] src/winscard_clnt.c: Use color names macros
110 * [r5546] src/winscard_clnt.c: Add API tracing with arguments
111 display
112 * [r5545] src/winscard_clnt.c: SCardGetStatusChange(): Always exit
113 from the same point so that profiling does work even in case of
114 error
115 * [r5544] src/winscard_clnt.c: SCardDisconnect(): Always exit from
116 the same point so that profiling does work even in case of error
117
1182011-01-21 Ludovic Rousseau
119
120 * [r5543] src/configfile.l: Display the correct line number if
121 garbage is found in the configuration file
122
1232011-01-20 Ludovic Rousseau
124
125 * [r5539] src/winscard_svc.c: contextsListhContext_seeker(): avoid
126 a potential crash if NULL values are used
127
128 src/winscard_svc.c:90:22: warning: Dereference of null pointer if
129 (currentContext->hContext == *(int32_t *)key) ^
130 src/winscard_svc.c:90:34: warning: Dereference of null pointer if
131 (currentContext->hContext == *(int32_t *)key) ^
132 * [r5538] src/winscard_clnt.c: SCardStatus(): initialize a dummy
133 variable to avoid warnings
134
135 src/winscard_clnt.c:1451:2: warning: Assigned value is garbage or
136 undefined dwReaderLen = *pcchReaderLen; ^ ~~~~~~~~~~~~~~
137 src/winscard_clnt.c:1452:2: warning: Assigned value is garbage or
138 undefined dwAtrLen = *pcbAtrLen; ^ ~~~~~~~~~~
139 * [r5537] src/winscard_clnt.c: Avoid a potential crash if NULL
140 values are used
141
142 src/winscard_clnt.c:226:27: warning: Dereference of null pointer
143 if (channelMap->hCard == *(SCARDHANDLE *)key) ^
144 src/winscard_clnt.c:226:18: warning: Dereference of null pointer
145 if (channelMap->hCard == *(SCARDHANDLE *)key) ^
146 src/winscard_clnt.c:260:18: warning: Dereference of null pointer
147 if (contextMap->hContext == *(SCARDCONTEXT *) key) ^
148 src/winscard_clnt.c:260:30: warning: Dereference of null pointer
149 if (contextMap->hContext == *(SCARDCONTEXT *) key) ^
150 * [r5536] src/winscard_clnt.c: SCardEstablishContext(): remove
151 useless affectation
152
153 src/winscard_clnt.c:439:5: warning: Value stored to 'ret' is
154 never read ...ret = execl(PCSCD_BINARY, "pcscd", "--auto-exit",
155 param, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
156 * [r5535] src/winscard_clnt.c: SCardEndTransaction(): remove
157 useless code
158
159 src/winscard_clnt.c:1269:2: warning: Value stored to 'randnum' is
160 never read randnum = 0; ^
161 * [r5534] src/winscard.c: remove unused affectations
162
163 src/winscard.c:565:4: warning: Value stored to 'rv' is never read
164 rv = IFDPowerICC(rContext, IFD_POWER_DOWN, NULL, NULL); ^
165 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
166 src/winscard.c:835:4: warning: Value stored to 'rv' is never read
167 rv = IFDPowerICC(rContext, IFD_POWER_DOWN, NULL, NULL); ^
168 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
169 src/winscard.c:1095:4: warning: Value stored to 'rv' is never
170 read rv = IFDPowerICC(rContext, IFD_POWER_DOWN, NULL, NULL); ^
171 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
172 * [r5533] clang-analyze.sh: Do not analyze tokenparser.c since it
173 is generated by flex
174 * [r5532] src/readerfactory.c: RDR_CLIHANDLES_seeker(): avoid a
175 potential crash if NULL values are used
176
177 src/readerfactory.c:72:30: warning: Dereference of null pointer
178 if (rdrCliHandles->hCard == *(SCARDHANDLE *)key) ^
179 src/readerfactory.c:72:21: warning: Dereference of null pointer
180 if (rdrCliHandles->hCard == *(SCARDHANDLE *)key) ^
181 * [r5531] src/readerfactory.c: RFAddReader(): remove unused
182 affectation
183
184 src/readerfactory.c:344:4: warning: Value stored to 'rv' is never
185 read rv = RFRemoveReader(readerName, port); ^
186 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
187 * [r5530] src/readerfactory.c: RFAddReaderHandle(): return the
188 error code if any
189
190 src/readerfactory.c:1116:3: warning: Value stored to 'rv' is
191 never read rv = SCARD_E_NO_MEMORY; ^ ~~~~~~~~~~~~~~~~~
192 src/readerfactory.c:1103:3: warning: Value stored to 'rv' is
193 never read rv = SCARD_E_NO_MEMORY; ^ ~~~~~~~~~~~~~~~~~
194 src/readerfactory.c:1095:3: warning: Value stored to 'rv' is
195 never read rv = SCARD_E_NO_MEMORY; ^ ~~~~~~~~~~~~~~~~~
196
1972011-01-18 Ludovic Rousseau
198
199 * [r5525] src/pcscdaemon.c: Remove useless code
200
201 src/pcscdaemon.c:85:2: warning: Value stored to 'rv' is never
202 read rv = 0; ^ ~ src/pcscdaemon.c:175:2: warning: Value stored to
203 'rv' is never read rv = 0; ^ ~
204 * [r5524] src/ifdwrapper.c: IFDPowerICC(): remove useless code
205
206 src/ifdwrapper.c:294:2: warning: Value stored to 'ret' is never
207 read ret = ATRDecodeAtr(&sSmartCard, pucAtr, *pdwAtrLen); ^
208 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
209 src/ifdwrapper.c:268:2: warning: Value stored to 'rv' is never
210 read rv = IFD_SUCCESS; ^ ~~~~~~~~~~~
211 * [r5523] src/eventhandler.c: EHStatusHandlerThread(): check the
212 return value of IFDStatusICC()
213
214 Thanks to clang(1) for the warning src/eventhandler.c:235:2:
215 warning: Value stored to 'rv' is never read rv =
216 IFDStatusICC(rContext, &dwStatus); ^
217 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
218 * [r5522] src/eventhandler.c: EHStatusHandlerThread(): remove
219 unused code
220
221 src/eventhandler.c:233:2: warning: Value stored to
222 'dwCurrentState' is never read dwCurrentState = 0; ^ ~
223 src/eventhandler.c:232:2: warning: Value stored to
224 'readerSharing' is never read readerSharing = 0; ^ ~
225 * [r5521] src/atrhandler.c: ATRDecodeAtr(): remove unused code
226
227 src/atrhandler.c:55:2: warning: Value stored to 'p' is never read
228 p = K = TCK = Y1i = T = 0; ^ ~~~~~~~~~~~~~~~~~~~~~
229 src/atrhandler.c:55:6: warning: Although the value stored to 'K'
230 is used in the enclosing expression, the value is never actually
231 read from 'K' p = K = TCK = Y1i = T = 0; ^ ~~~~~~~~~~~~~~~~~
232 src/atrhandler.c:55:10: warning: Although the value stored to
233 'TCK' is used in the enclosing expression, the value is never
234 actually read from 'TCK' p = K = TCK = Y1i = T = 0; ^ ~~~~~~~~~~~
235 src/atrhandler.c:55:16: warning: Although the value stored to
236 'Y1i' is used in the enclosing expression, the value is never
237 actually read from 'Y1i' p = K = TCK = Y1i = T = 0; ^ ~~~~~
238 src/atrhandler.c:55:22: warning: Although the value stored to 'T'
239 is used in the enclosing expression, the value is never actually
240 read from 'T' p = K = TCK = Y1i = T = 0; ^ ~
241 * [r5520] clang-analyze.sh: script to call clang --analyze
242 * [r5519] splint.sh: No more scf files since revision 4486
243 * [r5518] src/winscard_clnt.c: SCardGetStatusChange(): avoids a
244 compiler warning
245
246 winscard_clnt.c:1875:33: warning: comparison of integers of
247 different signs: 'uint32_t' (aka 'unsigned int') and 'int'
248 [-Wsign-compare] ...if (rContext->eventCounter != currentCounter)
249 ~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~
250 * [r5517] src/readerfactory.c: Add an explicit cast to avoid a
251 compiler warning
252
253 readerfactory.c:1033:45: warning: comparison of integers of
254 different signs: 'unsigned long' and 'SCARDHANDLE' (aka 'long')
255 [-Wsign-compare] if ((rContext->dwIdentity + randHandle) ==
256 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
257
2582011-01-14 Ludovic Rousseau
259
260 * [r5509]
261 UnitaryTests/SCardGetStatusChange/SCardGetStatusChange_PnP.py:
262 Also initialize the state of the PnP special reader (For Mac OS
263 X)
264 * [r5508] src/hotplug_macosx.c: HPSearchHotPluggables(): use the
265 same naming convention as used by Apple PC/SC layer on Leopard
266 (and later). The reader friendly name is used instead of
267 "usb:%04x/%04x" as documented in IFDHandler v3 API at
268 http://pcsclite.alioth.debian.org/api/group__IFDHandler.html#gabb9fe35a68fa080ce9397f0b830b1e7e
269
270 The same driver source code can be used by Apple PC/SC layer and
271 by this pcsc-lite.
272 * [r5507] src/hotplug_macosx.c: Fix compiler warning
273
274 hotplug_macosx.c: In function ‘HPDriversGetFromDirectory’:
275 hotplug_macosx.c:150: warning: comparison between signed and
276 unsigned
277 * [r5506] c.sh: Remove commented CFLAGS definition
278 * [r5505] src/PCSC/pcsclite.h.in, src/PCSC/wintypes.h: Mac OS X
279 "port" - Define Windows types as they are defined on Mac OS X in
280 /System/Library/Frameworks/PCSC.framework/Headers/wintypes.h -
281 Pack structures as they are packed on Mac OS X in
282 /System/Library/Frameworks/PCSC.framework/Headers/pcsclite.h
283
284 With these changes it is possible to build this pcsc-lite on Mac
285 OS X and use it with an application built using the PCSC
286 Framework headers provided by Apple.
287
288 One application is to temporarily replace the Apple PCSC layer by
289 a better/working one.
290 * [r5504] src/PCSC/pcsclite.h.in: Use LONG instead of long for
291 SCARDCONTEXT and SCARDHANDLE so that the exact type can be easily
292 changed by editing PCSC/wintypes.h
293
294 By default: typedef long LONG; so no change
295
2962011-01-13 Ludovic Rousseau
297
298 * [r5501] doc/pcscd.8.in: Remove references to a init.d/pcscd
299 script since pcscd is autostarted by default now.
300 * [r5500] doc/reader.conf.5.in: Use @confdir_exp@ instead of
301 (removed) @confdir@
302
3032011-01-12 Ludovic Rousseau
304
305 * [r5498] doc/pcscd.8.in: Use @confdir_exp@ instead of
306 @sysconfdir_exp@
307
308 Closes [#312929] @sysconfdir_exp@ not expanded in manual page
309
3102011-01-07 Ludovic Rousseau
311
312 * [r5496] src/readerfactory.c: RFAddReader(): correctly initialize
313 the pthCardEvent field for the other slots. The bug occured with
314 a multi slot reader and a driver with no
315 TAG_IFD_POLLING_THREAD_WITH_TIMEOUT function (as is the case with
316 my CCID driver since revision 5495)
317
3182011-01-06 Ludovic Rousseau
319
320 * [r5491] UnitaryTests/SCardConnect_DIRECT2.py: Add comments
321 * [r5490] src/winscard.c: SCardDisconnect(): Switch to
322 POWER_STATE_GRACE_PERIOD unless the card was not powered
323
324 In the previous implementation the state was changed to
325 POWER_STATE_GRACE_PERIOD only if the previous state was
326 POWER_STATE_INUSE. So if a SCARD_SHARE_DIRECT connection was used
327 the card state was not set POWER_STATE_INUSE and a power off
328 action was immediate at the SCardDisconnect(). Not nice if the
329 card is reused just after.
330
3312011-01-04 Ludovic Rousseau
332
333 * [r5478] src/winscard_svc.c: ContextThread(): in command
334 CMD_GET_READERS_STATE, wait until all the readers are ready (ATR
335 available) before sending the reader states.
336
337 The problem arrives when you connect two readers at the same time
338 (and one of them is slow to get the ATR). SCardGetStatusChange()
339 must not exit with one reader in state READER_NOT_INITIALIZED (as
340 implemented in revision 5217)
341
3422010-12-12 Ludovic Rousseau
343
344 * [r5442] ChangeLog, configure.in: release 1.6.6
345 * [r5441] src/simclist.c: Reapply change in revision 4986 since the
346 problem was not corrected in version 1.5 of simclist.
347
3482010-12-11 Ludovic Rousseau
349
350 * [r5440] src/winscard_msg.c: Use LONG instead of int to store
351 PC/SC return codes like SCARD_E_*
352
353 The problem comes from sign extenstion from int to LONG int rv =
354 SCARD_E_TIMEOUT; /* 0x8010000A */ is (sign) extended into a LONG
355 = 0xFFFFFFFF8010000A
356
357 So the line in winscard_clnt.c if (SCARD_E_TIMEOUT == rv) is
358 never true on a 64-bits system because rv has been extended from
359 int to LONG. The comparison is then between 0x8010000A and
360 0xFFFFFFFF8010000A
361
3622010-12-08 Ludovic Rousseau
363
364 * [r5434] src/PCSC/debuglog.h, src/PCSC/ifdhandler.h,
365 src/atrhandler.h, src/dyn_generic.h, src/eventhandler.h,
366 src/hotplug.h, src/ifdwrapper.h, src/misc.h, src/parser.h,
367 src/powermgt_generic.h, src/prothandler.h, src/readerfactory.h,
368 src/sys_generic.h, src/winscard_msg.h, src/winscard_svc.h: Do not
369 use extern "C" since we are in C and not C++
370
371 Follow rule 13 of "On C Library Implementation" by Rusty Russell
372 http://rusty.ozlabs.org/?p=140
373
3742010-12-03 Ludovic Rousseau
375
376 * [r5429] src/configfile.l: Fix configfile.l: In function
377 'evaluatetoken': configfile.l:205: warning: assignment discards
378 qualifiers from pointer target type
379 * [r5427] ChangeLog, configure.in: release 1.6.5
380
3812010-11-26 Ludovic Rousseau
382
383 * [r5420] src/simclist.c: From SimCList version 1.5
384 http://mij.oltrelinux.com/devel/simclist/
385
3862010-11-23 Ludovic Rousseau
387
388 * [r5415] src/eventhandler.c, src/readerfactory.c,
389 src/readerfactory.h, src/winscard.c: Add a mutex to make the test
390 and set of the powerState field atomic.
391
3922010-11-22 Ludovic Rousseau
393
394 * [r5414] src/eventhandler.c, src/winscard.c: Log the new
395 powerState value at DEBUG level
396 * [r5412] src/readerfactory.c: Remove dead code
397
3982010-11-16 Ludovic Rousseau
399
400 * [r5402] src/winscard.c: SCardDisconnect(): change powerState to
401 POWER_STATE_GRACE_PERIOD only if the previous state was
402 POWER_STATE_INUSE
403
404 If the powerState was POWER_STATE_UNPOWERED then do NOT change to
405 POWER_STATE_GRACE_PERIOD. POWER_STATE_GRACE_PERIOD indicates that
406 the card is powered on. That is the case if mode is
407 SCARD_SHARE_DIRECT at SCardConnect()
408 * [r5401] src/winscard.c: SCardConnect(): change the power state to
409 POWER_STATE_INUSE only if the card has been powered on. The card
410 is NOT powered on if mode is SCARD_SHARE_DIRECT
411 * [r5400] src/eventhandler.c, src/readerfactory.c: Move the zeroing
412 of the reader context from EHDestroyEventHandler() to
413 RFUnInitializeReader() where it is more appropriate.
414
415 The reader context shall be valid until the reader is
416 uninitialized in RFUnInitializeReader() and most importantly
417 after IFDCloseIFD() is called.
418 * [r5399] src/readerfactory.c: RFInitializeReader(): if
419 IFDOpenIFD() fails just mark the reader as "not correctly
420 started". This will present a call to IFDCloseIFD() in
421 RFUnInitializeReader() (revision 5393)
422
4232010-11-09 Ludovic Rousseau
424
425 * [r5393] src/readerfactory.c: RFUnInitializeReader(): Do not close
426 a reader if IFDOpenIFD() failed in RFInitializeReader()
427 * [r5392] src/readerfactory.c: RFRemoveReader(): destroy the event
428 handler only if it exists already
429
4302010-11-08 Ludovic Rousseau
431
432 * [r5391] src/winscard_msg_srv.c: ProcessCommonChannelRequest(): no
433 need to define serv_adr as static. Free a few bytes of memory.
434 * [r5390] src/winscard_msg.c, src/winscard_msg.h,
435 src/winscard_msg_srv.c: Remove CleanupSharedSegment() and do not
436 call it anymore
437
438 The function is not about shared segment any more The file
439 PCSCLITE_CSOCK_NAME will be removed in clean_temp_files() at exit
440 anyway
441 * [r5388] src/winscard_msg.c: MessageSend(): return
442 SCARD_E_NO_SERVICE instead of SCARD_F_COMM_ERROR if the daemon
443 died and we reveice a EPIPE error.
444 * [r5387] src/winscard_msg.c: MessageSendWithHeader(): do not send
445 a 0 length buffer.
446
447 Some commands only have a header and no data like
448 CMD_GET_READERS_STATE
449 * [r5386] src/winscard_clnt.c, src/winscard_msg.c,
450 src/winscard_msg.h, src/winscard_svc.c: MessageReceiveTimeout(),
451 MessageSendWithHeader(), MessageSend() and MessageReceive() now
452 returns a PC/SC error code instead of an internal value. So the
453 callers can just return the error code to the application with no
454 transcoding.
455 * [r5385] src/winscard_clnt.c: Move SCardInvalidateHandles() in the
456 same #ifdef DO_CHECK_SAME_PROCESS as SCardCheckSameProcess()
457 since it is only used in this case.
458 * [r5384] src/winscard_clnt.c: No need to check the server pid
459 anymore. If the server is restarted the socket communication will
460 fail and an "RPC transport error" SCARD_F_COMM_ERROR error will
461 be returned
462
463 This check was needed when the readers state was stored in
464 /var/run/pcscd/pcscd.pub. But that is no more the case. Every
465 command now uses the client/server Unix socket.
466
4672010-11-05 Ludovic Rousseau
468
469 * [r5379] src/winscard_msg.h: InitializeSocket() and
470 ProcessEventsServer() are used by the server side so must be
471 declared in the #ifdef PCSCD part of the header file
472 * [r5378] src/winscard_msg.h: Add missing getSocketName()
473 declaration used by winscard_clnt.c and winscard_msg.c
474 * [r5377] src/winscard_msg.h: Reorder the function definitions as
475 they are in winscard_msg.c in revision 5371
476 * [r5376] src/readerfactory.h: Remove definition of FctMap_V1 now
477 useless since revision 5321
478 * [r5375] src/atrhandler.c, src/atrhandler.h: Remove typedef of
479 PSMARTCARD_EXTENSION and use SMARTCARD_EXTENSION * instead
480
4812010-11-04 Ludovic Rousseau
482
483 * [r5373] src/winscard_clnt.c, src/winscard_msg.c: It is now
484 possible to configure the local socket name to use using the
485 environment variable PCSCLITE_CSOCK_NAME
486
487 This is used by Estobuntu LTSP to redirect the smart card reader
488 on the light terminal display to the application running on the
489 server. They use a patched SSH version to redirect
490 /var/run/pcscd/pcscd.comm on the client to ~/.pcscd.comm on the
491 server.
492 * [r5372] src/winscard_msg.c: MessageReceiveTimeout(): remove pcscd
493 specific code inside a function used only by libpcsclite
494 * [r5371] src/winscard_msg.c: reorganize the functions in 3
495 categories: - functions used by pcscd only:
496 CleanupSharedSegment() - functions used by libpcsclite only:
497 ClientSetupSession(), ClientCloseSession(),
498 MessageReceiveTimeout(), MessageSendWithHeader() - functions used
499 by pcscd and libpcsclite: MessageSend(), MessageReceive()
500
501 We gain on the code size: 1104 bytes for pcscd and 101 bytes for
502 libpcsclite
503
5042010-11-03 Ludovic Rousseau
505
506 * [r5370] src/atrhandler.c: ATRDecodeAtr(): avoids a buffer
507 overflow with badly formed ATR like 3B FF 11 22 33 F0 11 22 33 F0
508 11 22 33 F0 11 22 33 F0 11 22 33 F0 11 22 33 F0 11 22 33 00 11 22
509 33
510
511 Thanks to Rafael Dominguez Vega for the bug report
512
5132010-10-28 Ludovic Rousseau
514
515 * [r5368] src/winscard.c: Move declaration of dwAtrLen closer to
516 where it is used.
517 * [r5367] src/winscard.c: SCardConnect(): log the ATR in case of
518 auto power on
519
520 The ATR may be different from the previous one if the card has a
521 cold and a warm ATR.
522
5232010-10-26 Ludovic Rousseau
524
525 * [r5364] src/winscard.c: SCardDisconnect(): check for card removal
526 in case DISABLE_AUTO_POWER_ON
527 * [r5359] src/winscard.c: Doxygen documentation is done on the
528 client side (winscard_clnt.c) so remove documentation of
529 SCardEstablishContext()
530 * [r5358] src/winscard.c: SCardTransmit(): do not check for NULL
531 pointers since we are called from ContextThread() with correct
532 values
533 * [r5357] src/winscard.c: SCardReconnect(): do not check for
534 pdwActiveProtocol NULL pointer since we are called from
535 ContextThread() with a correct value
536 * [r5356] src/winscard.c: SCardConnect(): do not check for NULL
537 pointers since we are called from ContextThread() with correct
538 values
539 * [r5355] src/winscard.c: SCardEstablishContext(): do not check for
540 phContext NULL pointer since we are called from ContextThread()
541 with a correct value
542
5432010-10-25 Ludovic Rousseau
544
545 * [r5354] src/winscard.c: SCardConnect(): test for not
546 SCARD_POWERED instead of SCARD_SWALLOWED
547 * [r5351] src/hotplug_linux.c: Use the new bundle parser code
548 * [r5350] src/winscard.c: SCardConnect(): log an error if auto
549 power on failed
550 * [r5349] Makefile.am: Add a fix-rights rule at the top level to
551 call the fix-rights rule in src/
552
5532010-10-23 Ludovic Rousseau
554
555 * [r5348] src/winscard.c: SCardConnect(): check the returned value
556 of IFDPowerICC() to change the readerState if power up succeeded
557 * [r5347] src/winscard.c: SCardConnect(): power up the card before
558 checking for its SCARD_SWALLOWED state.
559
560 If a card fails to power up on card insertion a new power up will
561 be tried on SCardConnect().
562
5632010-10-22 Ludovic Rousseau
564
565 * [r5346] src/winscard_clnt.c: Remove the "This function " in the
566 Doxygen brief line
567 * [r5345] UnitaryTests/SCardCancel2.py: SCardCancel() should do
568 nothing if no cancellable call is ongoing bug fixed in revision
569 5344
570 * [r5344] src/winscard_clnt.c: Only SCardGetStatusChange() can be
571 cancelled using SCardCancel()
572
573 Thanks to Jan Rochat for the bug report
574 https://bugs.launchpad.net/ubuntu/+source/pcsc-lite/+bug/647545
575 * [r5343] src/eventhandler.c, src/eventhandler.h,
576 src/hotplug_libhal.c, src/hotplug_macosx.c, src/ifdwrapper.c,
577 src/misc.h, src/pcscdaemon.c, src/winscard.c,
578 src/winscard_clnt.c, src/winscard_msg.c: Remove spaces and tabs
579 at end of line
580 * [r5342] src/winscard_svc.c: Reformat
581 * [r5341] src/PCSC/winscard.h, src/winscard.c, src/winscard_clnt.c,
582 src/winscard_msg.h, src/winscard_svc.c: SCardCancelTransaction()
583 is no more provided. This function is not provided by Microsoft
584 and is deprecated since 2005 in pcsc-lite.
585 * [r5340] src/winscard.c: Reindent
586 * [r5339] src/winscard_clnt.c: Reformat
587 * [r5338] src/PCSC/winscard.h, src/winscard_clnt.c:
588 SCardSetTimeout() is no more provided. This function is not
589 provided by Microsoft and is deprecated since 2004 in pcsc-lite.
590 * [r5337] src/winscard.c: SCardSetTimeout() is implemented (and
591 deprecated) on the client side
592 * [r5336] src/winscard.c: SCardListReaders() and SCardCancel() are
593 implemented on the client side
594 * [r5335] src/winscard.c: SCardDisconnect(): if
595 DISABLE_AUTO_POWER_ON is defined then do not power on the card if
596 SCARD_UNPOWER_CARD is used.
597 * [r5334] src/eventhandler.c, src/pcscd.h.in: Move
598 DISABLE_ON_DEMAND_POWER_ON and DISABLE_AUTO_POWER_ON defines from
599 eventhandler.c to pcscd.h.in so they are visible by all the .c
600 files
601 * [r5333] src/winscard.c: SCardConnect(): remove debug log
602
6032010-10-21 Ludovic Rousseau
604
605 * [r5332] src/eventhandler.c: If DISABLE_AUTO_POWER_ON is defined
606 then do not automatically power on the card. The card will be
607 powered on on the first SCardConnect()
608 * [r5331] src/readerfactory.c: Remove extra parenthesis We are
609 using C not Lisp :-)
610 * [r5328] TODO, src/PCSC/ifdhandler.h, src/eventhandler.c,
611 src/eventhandler.h, src/pcscd.h.in, src/readerfactory.c,
612 src/readerfactory.h, src/winscard.c: Power on the card _only_ if
613 an application requests a connection see Alioth bug #301965
614
615 You can disable the feature using DISABLE_ON_DEMAND_POWER_ON in
616 src/eventhandler.c
617
6182010-10-17 Ludovic Rousseau
619
620 * [r5324] src/Makefile.am: PCSC/reader.h is no more generated from
621 PCSC/reader.h.in Directly use the filename in
622 nobase_include_HEADERS
623
6242010-10-15 Ludovic Rousseau
625
626 * [r5323] UnitaryTests/SCardStatus.py: Add a call to
627 SCardDisconnect() before SCardReleaseContext()
628 * [r5322] src/eventhandler.h, src/winscard.c, src/winscard_clnt.c:
629 Rename the sharing states unsing the PCSCLITE_SHARING_ prefix
630 Doxygen: document the READER_STATE structure
631 * [r5321] src/PCSC/ifdhandler.h, src/eventhandler.c,
632 src/ifdwrapper.c, src/ifdwrapper.h, src/readerfactory.c,
633 src/readerfactory.h: Remove the support of IFDHandler v1 API. I
634 don't know any driver using this API.
635
636 We can now simplify the API of IFDStatusICC() and remove the ATR
637 related parameters. These paremeters were only used by the
638 IFDHandler v1 API.
639
640 diffstat says: 6 files changed, 51 insertions(+), 335
641 deletions(-)
642
6432010-10-14 Ludovic Rousseau
644
645 * [r5317] src/hotplug_libhal.c: ifdCapabilities driver feature is
646 not used with libhal (and has never been). Remove dead/unused
647 code.
648
6492010-10-13 Ludovic Rousseau
650
651 * [r5316] src/winscard.c: Reformat
652 * [r5315] src/readerfactory.c, src/winscard.c: Use the simpler form
653 of IFDPowerICC(..., IFD_POWER_DOWN, ...) introduced in revision
654 5314
655 * [r5314] src/ifdwrapper.c: IFDPowerICC(): allow to use NULL for
656 pucAtr and pdwAtrLen to make power down easy with
657 IFDPowerICC(rContext, IFD_POWER_DOWN, NULL, NULL);
658 * [r5313] src/winscard.c: Correctly set dwAtrLen to the sizeof the
659 ATR array before calling IFDPowerICC().
660
661 Some drivers do not write more that dwAtrLen bytes in cardAtr
662 array.
663
6642010-10-12 Ludovic Rousseau
665
666 * [r5308] src/winscard_msg.h: Doxygen: SCARD_GET_STATUS_CHANGE is
667 not used anymore
668 * [r5307] src/winscard.c: Remove SCardStatus() (dead code) on the
669 server side.
670 * [r5306] src/winscard.c: SCardEndTransaction(): use the same code
671 to reset a card as in revision 5301
672 * [r5305] src/winscard.c: SCardReconnect(), SCardDisconnect() and
673 SCardEndTransaction(): reset the value of dwAtrLen before the
674 second call to IFDPowerICC() so that the driver gets a correct
675 value if the first call to IFDPowerICC(IFD_POWER_DOWN) set
676 dwAtrLen=0
677
678 Thanks to Frank Morgner for the bug report Closes: [#312754]
679 IFDHPowerICC is called with IFD_POWER_UP and *AtrLength==0
680 * [r5304] src/pcsc-wirecheck-gen.c, src/winscard.c,
681 src/winscard_clnt.c, src/winscard_msg.h, src/winscard_svc.c: A
682 large part of SCardStatus() is done on the client side using
683 readerStates[]. So remove a few lines of dead code on the server
684 side.
685 * [r5303] UnitaryTests/SCardStatus.py: Call SCardStatus() a second
686 time after a keypress
687 * [r5302] UnitaryTests/SCardStatus.py: Unit test for SCardStatus()
688 * [r5301] src/winscard.c: SCardReconnect(): Reorganize the code to
689 manage ATR and readerState after a power up. Remove a call to
690 IFDStatusICC() to know if a card is present or not since
691 IFDPowerICC() already gives us this information.
692
693 SCardDisconnect(): Use the same code as above
694 * [r5300] src/eventhandler.c, src/winscard.c, src/winscard_clnt.c:
695 Use uint32_t readerState instead of DWORD dwStatus to store the
696 state of the reader. DWORD and uint32_t may be different.
697 * [r5299] src/winscard.c: SCardReconnect(): return
698 SCARD_E_NO_SMARTCARD when card is removed and
699 SCARD_W_UNRESPONSIVE_CARD when card is unresponsive instead of
700 SCARD_E_PROTO_MISMATCH
701 * [r5298] src/winscard_msg.h: Increment minor version because of
702 changes in revision 5290
703 * [r5297] doc/Makefile.am, doc/ifdhandler-3.tex: Remove the
704 deprecated LaTeX version of IFDHandler documentation
705
7062010-10-11 Ludovic Rousseau
707
708 * [r5296] src/configfile.l: evaluatetoken(): the CHANNELID
709 parameter can also be a decimal number.
710 * [r5294] src/PCSC/ifdhandler.h, src/configfile.l: reader.conf
711 configuration: If you want to use IFDHCreateChannel() instead of
712 IFDHCreateChannelByName() then do not use any DEVICENAME line in
713 the configuration file. IFDHCreateChannel() will then be called
714 with the CHANNELID parameter.
715
716 Closes: [#312749] Should call IFDHCreateChannel for serial driver
717 with DEVICENAME /dev/null
718 * [r5293] src/readerfactory.c, src/winscard_clnt.c,
719 src/winscard_svc.c: list_* functions return an decimal integer so
720 use %d insteaf of %X to log the error value.
721 * [r5292] src/readerfactory.c: Add a "0x" before hex displays
722
7232010-10-10 Ludovic Rousseau
724
725 * [r5291] src/winscard_clnt.c: Doxygen SCardStatus(): *pdwState
726 also contains a number of events
727 * [r5290] src/eventhandler.c, src/eventhandler.h,
728 src/winscard_clnt.c: Split the card event counter out of the card
729 event state on the pcscd side to simplify the code in
730 EHStatusHandlerThread()
731
732 The two information are combined on the client side in
733 SCardGetStatusChange() and SCardStatus()
734 * [r5289]
735 UnitaryTests/SCardGetStatusChange/SCardGetStatusChange_loop.py:
736 Exit the endless loop in case of error
737 * [r5288] src/PCSC/pcsclite.h.in: struct SCARD_READERSTATE: use
738 "DWORD" instead of "unsigned long" type for the fields
739 dwCurrentState, dwEventState and cbAtr
740
741 This is compliant to the Windows definition and allows to
742 redefine DWORD to something other than unsigned long, like
743 uint32_t
744 * [r5287] src/PCSC/pcsclite.h.in, src/error.c:
745 pcsc_stringify_error(): Use "LONG" instead of "long" as parameter
746 type to reflect the return type from winscard.h
747
748 The LONG type may be redefined in PCSC/wintypes.h to int32_t for
749 example
750
7512010-10-05 Ludovic Rousseau
752
753 * [r5281] src/winscard_clnt.c: Doxygen: do not document unused
754 SCARD_STATE_ATRMATCH and SCARD_STATE_PRESENT states in
755 SCardGetStatusChange()
756
757 Thanks to Martin Paljak for the patch
758 * [r5280]
759 UnitaryTests/SCardGetStatusChange/SCardGetStatusChange_loop.py:
760 Call SCardGetStatusChange() in a endless loop
761 * [r5279] src/tokenparser.l: Doxygen: fix documentation of
762 LTPBundleFindValueWithKey()
763 * [r5278] src/winscard_clnt.c: SCardGetStatusChange(): include the
764 event counter in dwEventState even if dwCurrentState contains a
765 counter at 0 (default).
766 * [r5277] doc/doxygen.conf.in: Update from Doxygen 1.5.5 to 1.7.1
767
768 warning: Tag `DETAILS_AT_TOP' at line 163 of file
769 doc/doxygen.conf has become obsolete. To avoid this warning
770 please update your configuration file using "doxygen -u"
771
7722010-10-01 Ludovic Rousseau
773
774 * [r5275] src/pcscdaemon.c: main(): do not limit rights if run as
775 root
776
7772010-09-19 Ludovic Rousseau
778
779 * [r5262] src/Makefile.am: Do not change the access rights of pcscd
780 in the install rule but in another one. This is needed when
781 building the package in a system without the pcscd group.
782
7832010-09-14 Ludovic Rousseau
784
785 * [r5256] configure.in: Do not generate src/PCSC/reader.h from
786 src/PCSC/reader.h.in any more
787 * [r5255] src/PCSC/reader.h: HOST_TO_CCID_16() and
788 HOST_TO_CCID_32() are now identity functions
789
790 Since CCID 1.4.1 (revision 5252) the byte order is no more
791 important
792 * [r5254] src/PCSC/reader.h, src/PCSC/reader.h.in: Rename
793 reader.h.in in reader.h
794
7952010-09-04 Ludovic Rousseau
796
797 * [r5245] src/Makefile.am: Install pcscd as sgid pcscd instead of
798 suid root
799 * [r5241] src/hotplug_libhal.c: HPReadBundleValues(): do not fail
800 if the key "CFBundleName" is not found in a driver Info.plist.
801 This key should only be defined for the CCID class driver.
802
8032010-09-03 Ludovic Rousseau
804
805 * [r5231] src/winscard_msg.c: Doxygen: remove documentation about
806 the (now removed) timeOut parameter of MessageSend() and
807 MessageSendWithHeader()
808
8092010-09-02 Ludovic Rousseau
810
811 * [r5227] src/winscard_clnt.c: Doxygen: clarify the use of one
812 different SCARDCONTEXT per thread and the expection for
813 SCardCancel()
814 * [r5226] src/winscard_svc.c: Remove protocol_major, protocol_minor
815 fields from struct _psContext since they are not used.
816 * [r5225] src/winscard_msg.h: update PROTOCOL_VERSION_MINOR since
817 struct pubReaderStatesList changed (readerID removed)
818 * [r5224] src/winscard_svc.c: ContextThread(): check that the
819 procotol major.minor is the same for the daemon and lib. If not
820 just fail. We are not backward compatible.
821 * [r5219] src/winscard_clnt.c: Complete change in revision 5212
822
823 SCardGetStatusChange() and SCardListReaders() were broken.
824 * [r5218] src/ifdwrapper.c, src/readerfactory.c,
825 src/readerfactory.h: Rename lpcLibrary in library and lpcDevice
826 in device
827 * [r5217] src/eventhandler.c, src/eventhandler.h, src/pcscdaemon.c,
828 src/readerfactory.c, src/readerfactory.h: Wait until all
829 connected readers have a chance to power up a possibly inserted
830 card.
831
832 This is needed when auto start is used and a card is already
833 present in a USB reader. The reader presence is correctly
834 reported to libpcsclite but the power up has not yet happen. So
835 the ATR is not yet available.
836 * [r5216] src/eventhandler.c, src/readerfactory.c,
837 src/readerfactory.h, src/winscard_clnt.c: Rename lpcReaderName in
838 readerName and use (char *) instead of LPSTR
839 * [r5215] src/eventhandler.c, src/readerfactory.c,
840 src/readerfactory.h, src/winscard.c: Get rid of the lpcReader[]
841 field in struct ReaderContext
842
843 The reader name is already present in readerState->readerName
844 linked from struct ReaderContext
845
846 Gain: MAX_READERNAME*PCSCLITE_MAX_READERS_CONTEXTS = 100*16 =
847 1600 bytes fo RAM on pcscd
848 * [r5214] src/winscard.c: SCardStatus(): remove a useless test
849
850 lpcReader can't be larger than MAX_BUFFER_SIZE (264) since its
851 buffer is only MAX_READERNAME (100) bytes long. And I don't see
852 why we need this test anyway.
853 * [r5213] src/eventhandler.c, src/winscard.c: Complete change
854 started in revision 5212
855
856 rContext->readerState is never NULL now. So do not even check its
857 value.
858 * [r5212] src/eventhandler.c, src/eventhandler.h,
859 src/pcsc-wirecheck-gen.c, src/readerfactory.c,
860 src/winscard_clnt.c: Get rid of the readerID field in struct
861 pubReaderStatesList
862 * [r5211] src/readerfactory.c, src/readerfactory.h: Remove unused
863 RFSuspendAllReaders() and RFAwakeAllReaders()
864
8652010-08-31 Ludovic Rousseau
866
867 * [r5204] src/eventhandler.c: Reformat
868
8692010-08-30 Ludovic Rousseau
870
871 * [r5202] src/winscard_msg_srv.c: InitializeSocket(): do not set
872 the execution bit on the socket file. It is useless.
873
8742010-08-27 Ludovic Rousseau
875
876 * [r5196] src/debug.c, src/error.c, src/utils.c, src/utils.h: svn
877 propset svn:keywords 'Author Date Id Revision'
878 * [r5195] src/utils.c: GetDaemonPid(): use open(3) instead of
879 fopen(3) to avoid an internal malloc() call and gain some CPU
880 cycles
881 * [r5194] src/hotplug_libhal.c: HPAddDevice(): wait 1 millisecond
882 instead of 1 second until the device is visible to libusb/etc.
883
8842010-08-25 Ludovic Rousseau
885
886 * [r5183] src/winscard_clnt.c: Doxygen:
887 SCardCheckDaemonAvailability() do not invalidate handles after a
888 fork() any more
889
8902010-08-23 Ludovic Rousseau
891
892 * [r5179] src/hotplug_libusb.c: HPReadBundleValues(): use the new
893 Info.plist parsing API.
894
895 Parsing the CCID Info.plist (159 readers supported) was on a ARM9
896 machine 13193049 µs and is now 258262 µs => gain x51 or 5008%
897 * [r5178] src/readerfactory.c: RFBindFunctions(): rename rv in rvl
898 to avoid warnings warning: declaration of ‘rv’ shadows a previous
899 local
900
901 Also change type from DWORD to int since DYN_GetAddress() returns
902 an int
903 * [r5177] src/readerfactory.c: RFLoadReader(): optimize the
904 detection of Ifd Handler version by checking for
905 "IFDHCreateChannelByName", "IFDHCreateChannel" and then
906 "IO_Create_Channel" instead of the 3 symbols at once.
907
908 Also suppress the error message suppression. Ifd handler v2 or v1
909 will display one or two errors for symbols not found.
910 * [r5175] src/hotplug_libhal.c: HPReadBundleValues(): duplicate the
911 readerName and CFBundleName strings since the originals are
912 destroyed by bundleRelease() later
913
914 The reader names were corrupted.
915
9162010-08-18 Ludovic Rousseau
917
918 * [r5160] ChangeLog: Fix typo
919
9202010-08-17 Ludovic Rousseau
921
922 * [r5157] src/hotplug_libhal.c: HPReadBundleValues(): use the new
923 Info.plist parsing API.
924
925 Parsing the CCID Info.plist (159 readers supported) was on a i386
926 machine 264306 µs and is now 5547 µs => gain x47 or 4600%
927 * [r5156] src/parser.h, src/tokenparser.l: parse the Info.plist
928 file only once and generate a list of key/values
929 * [r5152] src/hotplug_libusb.c: HPSearchHotPluggables(): create the
930 synchronisation pipe only if the HPEstablishUSBNotifications
931 thread is created. Avoids to leak resources.
932 * [r5151] src/hotplug_libusb.c: HPSearchHotPluggables(): wait for
933 initial readers to setup only if HPEstablishUSBNotifications is
934 created. Otherwise the process is blocked for ever.
935 * [r5150] src/hotplug_libhal.c: HPRegisterForHotplugEvents():
936 having no bundle for USB readers is not an error. USB
937 support/hotplug is just disabled.
938 * [r5149] src/pcscdaemon.c: main(): Log a message if
939 HPRegisterForHotplugEvents() fails
940 * [r5148] src/hotplug_libusb.c: Do not hardcode the libusb-1.0
941 include header path (remove the libusb-1.0/ part)
942
9432010-08-16 Ludovic Rousseau
944
945 * [r5147] configure.in: Do not hardcode the libusb.h path.
946
947 See Debian bug #591782 ccid: FTBFS on kfreebsd-*: configure:
948 error: libusb.h not found
949 * [r5146] c.sh: add --sysconfdir=/etc
950 * [r5145] src/pcscdaemon.c: Do not allow restricting defaults
951 values of --max-thread, --max-card-handle-per-thread or
952 --max-card-handle-per-reader when restricted
953 * [r5144] src/pcscdaemon.c: Do not allow APDU logging when
954 restricted
955 * [r5143] src/pcscdaemon.c: If the process is setuid or setgid it
956 may have some restrictions
957
958 Do not allow to specify a configuration file when restricted
959
9602010-08-15 Ludovic Rousseau
961
962 * [r5138] ChangeLog, configure.in: release 1.6.4
963 * [r5137] configure.in: Do not use sysconfdir as configuration
964 directory but ${sysconfdir}/reader.conf.d instead.
965
966 Use --enable-confdir=DIR if you want to set a specific value
967 without the reader.conf.d appended.
968
969 Thanks to Kalev Lember for the bug report
970 http://archives.neohapsis.com/archives/dev/muscle/2010-q3/0150.html
971 * [r5135] ChangeLog, configure.in: release 1.6.3
972 * [r5134] src/PCSC/pcsclite.h.in, src/PCSC/winscard.h: Define
973 LPSCARD_READERSTATE since this is used in the MSDN prototype.
974
975 Use LPSCARD_READERSTATE in winscard.h instead of
976 (SCARD_READERSTATE *) to mimic the MSDN API.
977
978 This partly reverts changeset 5096
979
9802010-08-13 Ludovic Rousseau
981
982 * [r5130] UnitaryTests/SCard_fork.py: Also call SCardDisconnect()
983 and SCardReleaseContext() in the forked process
984 * [r5129] src/winscard_svc.c: ContextThread(): goto exit if
985 MSGCheckHandleAssociation() fails instead of just returning no
986 error.
987
988 Something wrong happened on the client side (like a fork) and the
989 client needs to call SCardEstablishContext() to create a new
990 connection.
991 * [r5128] src/winscard_svc.c: ContextThread(): fix goto label when
992 it _is_ an overflow
993 * [r5127] src/winscard_svc.c: ContextThread(): fix goto label when
994 it is not an overflow
995 * [r5126] src/winscard_clnt.c: Revert changeset 5102 to add
996 profiling on the client side again.
997
998 ltrace(1) can't be used with a dynamically loaded (dlopen(3))
999 library like it is the case with the majority of PKCS#11 client
1000 application.
1001 * [r5125] src/simclist.c: Reset mid field when the list is empty to
1002 avoid assert() errors
1003 * [r5124] src/winscard_svc.c: MSGCheckHandleAssociation(): check
1004 that the context handle is still valid. Calling a PC/SC function
1005 after SCardReleaseContext() is not supported.
1006 * [r5123] src/eventhandler.c: Fix typo in comment
1007
10082010-08-05 Ludovic Rousseau
1009
1010 * [r5118] configure.in: remove debug line
1011 * [r5117] configure.in: "/reader.conf.d" is only appended to
1012 sysconfdir if no value of sysconfdir is provided
1013
1014 Thanks to Patrice Angelini for the bug report
1015 * [r5114] src/hotplug_libusb.c: HPAddHotPluggable(): do not use
1016 libusb_strerror() since it is not yet available in current stable
1017 libusb (1.0.8)
1018 * [r5113] src/ifdwrapper.c: Fix compilation warnings
1019 ifdwrapper.c:166:7: warning: "IFDHANDLERv2" is not defined
1020 ifdwrapper.c:589:7: warning: "IFDHANDLERv2" is not defined
1021 ifdwrapper.c:640:7: warning: "IFDHANDLERv3" is not defined
1022 * [r5112] src/ifdwrapper.c: Check that either IFDHANDLERv1,
1023 IFDHANDLERv2 or IFDHANDLERv3 is defined if PCSCLITE_STATIC_DRIVER
1024 is used
1025 * [r5111] c.sh: No need to use -D_REENTRANT. It was needed for
1026 LinuxThreads but we do not use LinuxThreads since a long time.
1027
1028 See Debian bug #475101 "Remove obsolete -D_REENTRANT requirement"
1029
10302010-08-04 Ludovic Rousseau
1031
1032 * [r5107] ChangeLog, configure.in: release 1.6.2
1033 * [r5106] src/Makefile.am: Remove useless $(COREFOUNDATION) from
1034 libpcsclite_la_LIBADD The library has no Mac OS X specific code.
1035 * [r5105] src/Makefile.am: Remove undefined $(LIBSMARTCARD) from
1036 libpcsclite_la_LIBADD
1037 * [r5104] src/Makefile.am: libpcsclite does not use dlopen() so no
1038 need to link with $(LIBDL)
1039
10402010-08-03 Ludovic Rousseau
1041
1042 * [r5102] src/winscard_clnt.c: Remove client side profiling since
1043 we can use ltrace(1) with better results
1044 * [r5098] configure.in: Remove 2 debug traces
1045
10462010-08-02 Ludovic Rousseau
1047
1048 * [r5097] src/PCSC/winscard.h, src/winscard.c, src/winscard_clnt.c:
1049 Use "SCARD_IO_REQUEST *" instead of LPSCARD_IO_REQUEST and "const
1050 SCARD_IO_REQUEST *" instead of "LPCSCARD_IO_REQUEST
1051
1052 Should make the code more easy to read
1053 * [r5096] doc/example/pcsc_demo.c, src/PCSC/pcsclite.h.in,
1054 src/PCSC/winscard.h, src/testpcsc.c, src/utils/formaticc.c,
1055 src/winscard.c, src/winscard_clnt.c: Use SCARD_READERSTATE
1056 instead of SCARD_READERSTATE_A
1057
1058 Remove definitions of SCARD_READERSTATE_A PSCARD_READERSTATE_A
1059 and LPSCARD_READERSTATE_A types
1060 * [r5093] configure.in: Use $libdir instead of $prefix/lib to set
1061 the default value of usbdropdir
1062
1063 " Fedora uses /usr/lib on 32 bit and /usr/lib64 on 64 bit
1064 multilib platforms. "
1065
1066 Thanks to Kalev Lember for the idea.
1067 http://archives.neohapsis.com/archives/dev/muscle/2010-q3/0108.html
1068 * [r5092] c.sh: sysconfdir=/etc by default if prefix=/usr so remove
1069 the --sysconfdir line
1070 * [r5091] UnitaryTests/SCardBeginTransaction_Disconnect.py,
1071 UnitaryTests/SCardConnect_DIRECT.py,
1072 UnitaryTests/SCardConnect_DIRECT2.py,
1073 UnitaryTests/SCardExclusiveBehaviour.py,
1074 UnitaryTests/SCardReconnect.py, UnitaryTests/reset_card.py: Do
1075 not duplicate the reader index to avoids problems when I want to
1076 change it.
1077
10782010-08-01 Ludovic Rousseau
1079
1080 * [r5082] configure.in: Set sysconfdir to /etc if prefix=/usr
1081
1082 You should have a default working configuration only with
1083 --prefix=/usr
1084
10852010-07-31 Ludovic Rousseau
1086
1087 * [r5081] c.sh: --enable-muscledropdir is no more supported by
1088 pcsc-lite since a long time. So remove the line.
1089 * [r5080] c.sh: --enable-usbdropdir=/usr/lib/pcsc/drivers is now
1090 the default value. So remove the line.
1091 * [r5079] configure.in: Default value of usbdropdir is now
1092 $prefix/lib/pcsc/drivers instead of $prefix/pcsc/drivers
1093
1094 The new path is the path used on Debian (with prefix-/usr). So no
1095 need to change the default value.
1096
10972010-07-27 Ludovic Rousseau
1098
1099 * [r5073] src/Makefile.am: Create empty directories used by drivers
1100
1101 Thanks to Kalev Lember for the patch
1102 http://archives.neohapsis.com/archives/dev/muscle/2010-q3/0065.html
1103
11042010-07-26 Ludovic Rousseau
1105
1106 * [r5071] src/hotplug_libhal.c, src/pcscdaemon.c, src/utils.c,
1107 src/winscard.c: Do not affect and check a variable on the same
1108 line
1109 * [r5070] src/readerfactory.c: reformat
1110 * [r5069] src/winscard.c: Get the value of rContext before its use.
1111 A simple call to SCardTransmit() crashed with a NULL pointer.
1112
11132010-07-08 Ludovic Rousseau
1114
1115 * [r5066] src/readerfactory.c: fix crash with empty config dir
1116
1117 Thanks to Kalev Lember for the patch
1118 http://archives.neohapsis.com/archives/dev/muscle/2010-q3/0017.html
1119
1120 pcscd attempts to read uninitialized memory and free an invalid
1121 pointer when its configuration directory is empty.
1122
1123 The patch fixes this by initializing reader_list to NULL.
1124
1125 ==2658== Conditional jump or move depends on uninitialised
1126 value(s) ==2658== at 0x40A2EF: RFStartSerialReaders
1127 (readerfactory.c:1324) ==2658== by 0x40743F: main
1128 (pcscdaemon.c:522) ==2658== ==2658== Use of uninitialised value
1129 of size 8 ==2658== at 0x40A2F5: RFStartSerialReaders
1130 (readerfactory.c:1327) ==2658== by 0x40743F: main
1131 (pcscdaemon.c:522) ==2658== ==2658== Conditional jump or move
1132 depends on uninitialised value(s) ==2658== at 0x4C26D25: free
1133 (vg_replace_malloc.c:325) ==2658== by 0x40A404:
1134 RFStartSerialReaders (readerfactory.c:1348) ==2658== by 0x40743F:
1135 main (pcscdaemon.c:522) ==2658== ==2658== Invalid free() / delete
1136 / delete[] ==2658== at 0x4C26D72: free (vg_replace_malloc.c:325)
1137 ==2658== by 0x40A404: RFStartSerialReaders (readerfactory.c:1348)
1138 ==2658== by 0x40743F: main (pcscdaemon.c:522) ==2658== Address
1139 0x4222148 is not stack'd, malloc'd or (recently) free'd
1140
1141 --- pcsc-lite-1.6.1/src/readerfactory.c.orig2010-07-04
1142 23:42:14.000000000 +0300 +++
1143 pcsc-lite-1.6.1/src/readerfactory.configuration2010-07-04
1144 23:42:23.000000000 +0300 @@ -1312,7 +1312,7 @@ void
1145 RFCleanupReaders(void) #ifdef USE_SERIAL int
1146 RFStartSerialReaders(const char *readerconf) {
1147 -readerconfSerialReader *reader_list; +reader_listSerialReader
1148 *reader_list = NULL; int i, rv; /* remember the configuration
1149 filename for * RFReCheckReaderConf() */
1150 * [r5065] c.sh, configure.in, src/pcscd.h.in: more idiomatic
1151 sysconfdir usage
1152
1153 Thanks to Kalev Lember for the patch
1154 http://archives.neohapsis.com/archives/dev/muscle/2010-q3/0015.html
1155
1156 > URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=5060 > Log:
1157 set --sysconfdir=/etc/reader.conf.d so that we parse any file in
1158 > this directory > > [...] > - --sysconfdir=/etc \ > +
1159 --sysconfdir=/etc/reader.conf.d \
1160
1161 It's more common to set sysconfdir to /etc and have configure
1162 script figure out the subdirectory. The configure script should
1163 always default to sane values when no arguments are specified.
1164 The default value for sysconfdir is /usr/local/etc; so the
1165 configure script should just append /reader.conf.d to that. Right
1166 now if the user doesn't override sysconfdir, pcsc will try to go
1167 through every .conf file in /usr/local/etc, and I don't think
1168 anything good will come out of that.
1169
1170 I have a patch attached which should make it more idiomatic:
1171 default to $sysconfdir/reader.conf.d directory.
1172
11732010-07-02 Ludovic Rousseau
1174
1175 * [r5062] src/pcscd.h.in: remove PCSCLITE_READER_CONFIG now useless
1176 * [r5061] src/pcscdaemon.c: main(): use PCSCLITE_CONFIG_DIR instead
1177 of PCSCLITE_READER_CONFIG to use the directory configured using
1178 --sysconfdir=...
1179 * [r5060] c.sh: set --sysconfdir=/etc/reader.conf.d so that we
1180 parse any file in this directory
1181 * [r5059] src/configfile.l: DBGetReaderListDir(): add a log line
1182 when parsing a directory (containing config files)
1183 * [r5058] src/readerfactory.c, src/readerfactory.h, src/winscard.c:
1184 RFCheckSharing(), RFLockSharing(), RFUnlockSharing() &
1185 RFUnlockAllSharing(): add the READER_CONTEXT * rContext parameter
1186 to avoid recomputing it internally (gain a few CPU cycles)
1187
11882010-06-29 Ludovic Rousseau
1189
1190 * [r5047] src/configfile.h, src/configfile.l, src/debuglog.c,
1191 src/dyn_hpux.c, src/dyn_macosx.c, src/dyn_unix.c,
1192 src/eventhandler.c, src/eventhandler.h, src/hotplug_generic.c,
1193 src/hotplug_libhal.c, src/hotplug_libusb.c, src/hotplug_linux.c,
1194 src/hotplug_macosx.c, src/ifdwrapper.c, src/ifdwrapper.h,
1195 src/pcscdaemon.c, src/readerfactory.c, src/readerfactory.h,
1196 src/sys_generic.h, src/sys_unix.c, src/testpcsc.c,
1197 src/winscard.c, src/winscard_clnt.c, src/winscard_msg.h,
1198 src/winscard_svc.c, src/winscard_svc.h: update copyright date
1199 * [r5046] src/hotplug_libusb.c: Remove declaration of 3 static
1200 functions since they are defined before use. Declaration is then
1201 useless.
1202 * [r5045] configure.in: check for libusb-1.0 instead of libusb-0.1
1203 * [r5044] src/hotplug_libusb.c: port from libusb-0.1 to libusb-1.0
1204
12052010-06-25 Ludovic Rousseau
1206
1207 * [r5040] UnitaryTests/MCT_ReaderDirect.py,
1208 UnitaryTests/control_get_firmware.py,
1209 UnitaryTests/control_switch_interface.py,
1210 UnitaryTests/stress_get_firmware.py: use readers() from
1211 smartcard.System instead of smartcard.pcsc.PCSCReader
1212
1213 readers() method is now a staticmethod of the PCSCReader class
1214 since pyscard subversion revision 500.
1215
12162010-06-24 Ludovic Rousseau
1217
1218 * [r5039] src/pcscdaemon.c: signal_trap(): implement a "Forced
1219 suicide" mechanism.
1220
1221 After 3 Ctrl-C without much reaction from pcscd (in fact the
1222 drivers) we force the suicide. Sometimes libusb is blocked in a
1223 kind of dead-lock and kill -9 was the only option.
1224 * [r5038] UnitaryTests/stress_apdu.py,
1225 UnitaryTests/stress_get_firmware.py: - better display the list of
1226 available readers - display the command duration and log to
1227 stderr if the duration is more than 1 second indicating a problem
1228 * [r5037] UnitaryTests/stress_get_firmware.py: get firmware version
1229 of Gemalto readers in loop
1230 * [r5036] UnitaryTests/stress_apdu.py: send an apdu in loop
1231
12322010-06-22 Ludovic Rousseau
1233
1234 * [r5032] src/PCSC/debuglog.h: Add Log5() function
1235 * [r5031] src/PCSC/ifdhandler.h: fix a comment
1236 * [r5029] src/PCSC/ifdhandler.h, src/eventhandler.c: Add support of
1237 TAG_IFD_STOP_POLLING_THREAD to request the stop of the driver
1238 polling function.
1239
12402010-06-21 Ludovic Rousseau
1241
1242 * [r5023] configure.in: Use AC_CHECK_FUNCS() instead of
1243 AC_CHECK_FUNC() to have HAVE_PTHREAD_CANCEL defined when needed.
1244
1245 AC_CHECK_FUNC() defined nothing so HAVE_PTHREAD_CANCEL was not
1246 defined even if pthread_cancel() was available.
1247
12482010-06-17 Ludovic Rousseau
1249
1250 * [r5009] src/pcscdaemon.c: main(): in case of auto exit create a
1251 new session so that Ctrl-C on the application will not also quit
1252 pcscd
1253
1254 Thanks to Thierry Fabre for reporting the bug
1255
12562010-06-13 Ludovic Rousseau
1257
1258 * [r4992] src/winscard_msg.h: typo in comment
1259
12602010-06-12 Ludovic Rousseau
1261
1262 * [r4991] UnitaryTests/SCardBeginTransaction_Disconnect.py,
1263 UnitaryTests/SCardBlockingBehaviourTest.py,
1264 UnitaryTests/SCardCancel.py, UnitaryTests/SCardConnect_DIRECT.py,
1265 UnitaryTests/SCardConnect_DIRECT2.py,
1266 UnitaryTests/SCardExclusiveBehaviour.py,
1267 UnitaryTests/SCardGetAttrib.py, UnitaryTests/SCardReconnect.py,
1268 UnitaryTests/SCard_fork.py, UnitaryTests/ThreadSafe.py,
1269 UnitaryTests/ThreadSafeConnect.py, UnitaryTests/reset_card.py:
1270 return exception from smartcard.pcsc.PCSCExceptions when
1271 appropriate
1272
12732010-06-09 Ludovic Rousseau
1274
1275 * [r4986] src/simclist.c: Avoid a division by 0. Closes [#312555]
1276 simclist bug in pcsc-lite
1277 * [r4985] src/simclist.c, src/simclist.h: update to version version
1278 1.4.4rc4 Apr 2010
1279
12802010-06-07 Ludovic Rousseau
1281
1282 * [r4983] src/winscard_clnt.c: SCardEstablishContext(): if pcscd is
1283 stared by libpcsclite then close all file handles except stdin,
1284 stdout and stderr so that pcscd does not confiscate ressources
1285 allocated by the application
1286
1287 Thanks to Thierry Fabre for the bug report
1288
12892010-06-04 Ludovic Rousseau
1290
1291 * [r4978] configure.in: release 1.6.1
1292 * [r4977] ChangeLog: release 1.6.1
1293
12942010-06-01 Ludovic Rousseau
1295
1296 * [r4974] src/misc.h, src/strlcpycat.h, src/tokenparser.l: update
1297 copyright date
1298 * [r4969] src/pcscdaemon.c, src/sys_unix.c: pcscd: do not return
1299 before most of the initialisation are done correctly. The idea is
1300 that pcscd can return an error code if the daemon fails to start
1301 correctly (hald not started for example).
1302
1303 Before the patch pcscd became a daemon, then returned 0 (success)
1304 and then continued with the initialisation. If the initialisation
1305 failed it was too late to return an error code. The
1306 /etc/init.d/pcscd script was not aware of the failure.
1307
1308 Closes https://bugzilla.redhat.com/show_bug.cgi?id=580321
1309 "/usr/sbin/pcscd exit codes broken"
1310
13112010-05-31 Ludovic Rousseau
1312
1313 * [r4968] src/pcscdaemon.c: main(): return EXIT_FAILURE instead of
1314 EXIT_SUCCESS if a unknown argument is passed
1315
13162010-05-29 Ludovic Rousseau
1317
1318 * [r4967] src/winscard_msg.h, src/winscard_svc.c: Avoids a crash if
1319 a client sends a unknown command.
1320
1321 Thanks to Martin Vogt for the bug report
1322 http://archives.neohapsis.com/archives/dev/muscle/2010-q2/0096.html
1323
13242010-05-27 Ludovic Rousseau
1325
1326 * [r4964] src/winscard.c: SCardControl(): do not check for card
1327 events since we are talking to the reader not the card. A smart
1328 card removal should not make SCardControl() fail with
1329 SCARD_W_REMOVED_CARD
1330
13312010-05-20 Ludovic Rousseau
1332
1333 * [r4957] UnitaryTests/SCardGetAttrib.py: get
1334 SCARD_ATTR_VENDOR_IFD_SERIAL_NO PC/SC attribute
1335
13362010-05-18 Ludovic Rousseau
1337
1338 * [r4954] src/PCSC/reader.h.in: Add
1339 PCSCv2_PART10_PROPERTY_bPPDUSupport
1340 * [r4953]
1341 UnitaryTests/SCardGetStatusChange/SCardGetStatusChange.py,
1342 UnitaryTests/SCardGetStatusChange/SCardGetStatusChange_PnP.py:
1343 Also display the return value of SCardReleaseContext()
1344 * [r4952] src/pcscd.h.in, src/winscard_clnt.c, src/winscard_msg.c,
1345 src/winscard_msg.h, src/winscard_svc.c: MessageSend(),
1346 MessageReceive() & MessageSendWithHeader() do not timeout any
1347 more. If the other side of the socket dies we will get an error
1348 from the kernel.
1349
1350 Add a new MessageReceiveTimeout() to implement
1351 SCardGetStatusChange() with a timeout.
1352
1353 The constants PCSCLITE_WRITE_TIMEOUT & PCSCLITE_READ_TIMEOUT are
1354 now also removed.
1355
1356 The problem was that if a client does nothing during
1357 PCSCLITE_READ_TIMEOUT (120 seconds by default) then pcscd
1358 considers it as a dead client and closes the connection. I guess
1359 this problem was present since the first version of pcsc-lite but
1360 nobody complained before.
1361
1362 Thanks to Thierry Fabre for the bug report.
1363 * [r4951] src/pcscdaemon.c, src/winscard_clnt.c,
1364 src/winscard_msg.c, src/winscard_msg.h, src/winscard_msg_srv.c,
1365 src/winscard_svc.c: rename SHMfoobar() functions in foobar()
1366 since we do not use shared memory (SHM) anymore
1367
13682010-05-17 Ludovic Rousseau
1369
1370 * [r4949] src/hotplug_libusb.c: Add a synchronisation so that if
1371 pcscd is auto started the initial reader list is available before
1372 the server takes commands from clients.
1373
1374 Before the change early calls of SCardListReaders() returned an
1375 empty list of readers even if a reader was connected.
1376
1377 Thanks to Patrice Angelini for the bug report
1378 * [r4948] etc: Remove etc directory completely - serial readers are
1379 rare => no need for /etc/reader.conf.d/ - pcscd now autostarts =>
1380 no need for /etc/init.d/pcscd script or equivalent
1381 * [r4947] Makefile.am, configure.in: Do not install files in /etc
1382 any more. Serial drivers are rare now.
1383 * [r4946] etc/Makefile.am: Use $(sysconfdir_exp) instead of
1384 (removed) $(confdir_exp)
1385
1386 Fixes [#312498] Wrong installation path for reader.conf.d
1387
13882010-05-11 Ludovic Rousseau
1389
1390 * [r4941] UnitaryTests/SCardConnect_DIRECT2.py: Unitary test for
1391 bug fixed in revision 4940
1392 * [r4940] src/winscard.c: SCardConnect() & SCardReconnect(): do not
1393 reset the cardProtocol in SCARD_SHARE_DIRECT case since the card
1394 have _not_ been reseted. A new PPS negociation would fail.
1395
1396 See SCardConnect_DIRECT2.py for a Unitary Test
1397
13982010-05-05 Ludovic Rousseau
1399
1400 * [r4921] ChangeLog: update date and release for 1.6.0
1401 * [r4920] ChangeLog, configure.in: release 1.6.0
1402
14032010-05-04 Ludovic Rousseau
1404
1405 * [r4918] src/pcscdaemon.c: ExitValue default value is now
1406 EXIT_FAILURE instead of EXIT_SUCCESS
1407 * [r4917] src/pcscdaemon.c: main(): remove dead code "used" when no
1408 reader.conf file is found
1409
14102010-05-03 Ludovic Rousseau
1411
1412 * [r4913] src/winscard_clnt.c: SCardEstablishContext(): also log
1413 the binary name if execl() fails
1414 * [r4912] src/eventhandler.c: EHDestroyEventHandler(): use
1415 pthread_cancel() only if it is present (not the case on Android)
1416 * [r4911] configure.in: Add a check for pthread_cancel() (not
1417 present on Android)
1418 * [r4910] src/readerfactory.h: Add missing #include <pthread.h>
1419
1420 Compilation failed on Android but not on my Debian as the libC is
1421 different on the two systems. On Debian sys/types.h defines
1422 pthread types
1423
14242010-04-29 Ludovic Rousseau
1425
1426 * [r4906] src/strlcpycat.h: #include <string.h> on plateform that
1427 have strlcpy() to avoid a warning (Mac OS X and Android)
1428
1429 error.c: In function ‘pcsc_stringify_error’: error.c:64: warning:
1430 implicit declaration of function ‘strlcpy’ error.c:64: warning:
1431 nested extern declaration of ‘strlcpy’
1432 * [r4905] src/hotplug_linux.c: #include <pthread.h>
1433
1434 Declare pthread_mutex_* functions
1435 * [r4904] src/hotplug_linux.c: #include "utils.h"
1436
1437 Fix hotplug_linux.c:391: error: ‘THREAD_ATTR_DETACHED’ undeclared
1438 (first use in this function)
1439 * [r4903] src/hotplug_libusb.c: HPEstablishUSBNotifications(): do
1440 not call RFReCheckReaderConf if USE_SERIAL is defined. The
1441 function is not defined in this case.
1442 * [r4901] configure.in, src/Makefile.am, src/hotplug_libhal.c,
1443 src/pcscdaemon.c, src/readerfactory.c: Add --disable-serial and
1444 --disable-usb options
1445
1446 --disable-serial removes support of /etc/reader.conf gain: 8.0kB
1447 of .text (12%) and 160 bytes of .bss (4%) for pcscd
1448
1449 --disable-usb removes support of USB hotplug gain: 9.7kB of .text
1450 (14%) and 960 bytes of .bss (23%) for pcscd
1451
1452 If you use both options (and use a static driver configuration)
1453 gain: 17.7kB of .text (26%) and 1152 bytes of .bss (28%) for
1454 pcscd
1455 * [r4900] src/error.c: Define a minimal pcsc_stringify_error() if
1456 NO_LOG is defined. Only the error code in hex is displayed in
1457 this case.
1458
1459 Gain: 2kB of .text (10%) for libpcsclite
1460 * [r4899] src/pcscdaemon.c: main(): fork() only in case of auto
1461 exit to not detach from the terminal if launched in stand alone
1462 forground mode ("pcscd -fda" for example)
1463
14642010-04-22 Ludovic Rousseau
1465
1466 * [r4889] src/pcscdaemon.c: main(): always fork() so that pcscd
1467 always return in --auto-exit mode but do not close stdout yet
1468 since we may need to send logs
1469 * [r4888] src/winscard_clnt.c: SCardEstablishContext(): call
1470 waitpid() to avoid having a defunct pcscd process when pcscd is
1471 auto started by the client.
1472
1473 The process becomes defunct because pcscd calls daemon() and
1474 daemon() does fork() and exit() in the father. The father death
1475 must then be reclaimed by libpcsclite.
1476
1477 Thanks to Patrice Angelini for the bug report
1478
14792010-04-18 Ludovic Rousseau
1480
1481 * [r4885] src/Makefile.am, src/eventhandler.c,
1482 src/hotplug_libhal.c, src/hotplug_libusb.c, src/hotplug_linux.c,
1483 src/ifdwrapper.c, src/pcscdaemon.c, src/readerfactory.c,
1484 src/readerfactory.h, src/thread_generic.h, src/thread_unix.c,
1485 src/winscard.c, src/winscard_clnt.c, src/winscard_svc.c: Directly
1486 use pthread_mutex_* fucntions instead of using wrappers Remove
1487 thread_unix.c and thread_generic.h now useless
1488 * [r4884] src/hotplug_libhal.c, src/hotplug_libusb.c,
1489 src/hotplug_linux.c, src/hotplug_macosx.c, src/readerfactory.h,
1490 src/utils.c, src/winscard_svc.c: Use pthread_t instead of
1491 PCSCLITE_THREAD_T
1492 * [r4883] src/thread_generic.h, src/utils.h: move thread related
1493 definition from thread_generic.h to utils.h
1494 * [r4882] src/eventhandler.c, src/hotplug_libhal.c,
1495 src/hotplug_libusb.c, src/hotplug_linux.c, src/hotplug_macosx.c,
1496 src/thread_generic.h, src/thread_unix.c, src/utils.c,
1497 src/utils.h, src/winscard_svc.c: Directly use pthread_* instead
1498 of SYS_Thread* indirection
1499
1500 Move SYS_ThreadCreate in utils.c. This function is not just one
1501 pthread_* call
1502
15032010-04-16 Ludovic Rousseau
1504
1505 * [r4877] src/thread_unix.c: SYS_ThreadExit(): remove dead code
1506
1507 From Sun Studio CC "thread_unix.c", line 108: warning: statement
1508 not reached
1509 * [r4875] bootstrap: update versions of autotools used
1510
15112010-04-15 Ludovic Rousseau
1512
1513 * [r4874] src/simclist.c: remove ; at end of a { } block defined by
1514 a macro. The Solaris compiler complains with: "simclist.c", line
1515 1317: warning: syntax error: empty declaration
1516
1517 Thanks to Jörg Schilling for the bug report
1518 * [r4873] src/sys_unix.c: use fork(), close() and chdir() instead
1519 of SYS_Fork(), SYS_CloseFile() and SYS_Chdir() in SYS_Daemon() if
1520 HAVE_DAEMON is not defined (Solaris)
1521
1522 Thanks to Jörg Schilling for the bug report
1523
15242010-04-09 Ludovic Rousseau
1525
1526 * [r4867] src/winscard_svc.c: Log the command return code using
1527 DEBUG (SCARD_S_SUCCESS) or ERROR (every thing else) level
1528
15292010-04-08 Ludovic Rousseau
1530
1531 * [r4866] UnitaryTests/reset_card.py: reset a card using
1532 SCardDisconnect (default) or SCardReconnect (if an argument is
1533 passed)
1534 * [r4865] UnitaryTests/transmit_loop.py: call SCardTransmit in an
1535 endless loop
1536 * [r4864] src/winscard.c: SCardReconnect(): mimic the code from
1537 SCardDisconnect() regarding card event state notifications
1538 (changed in revision 4862).
1539 * [r4863] UnitaryTests/Makefile: no more pcsc_demo target
1540 * [r4862] src/winscard.c: SCardDisconnect(): Set the card event
1541 state to SCARD_RESET _before_ doing the reset.
1542
1543 This will avoid an SCardTransmit from another application between
1544 the card reset and the card event state change. In the
1545 problematic case the SCardTransmit was sending an APDU in T=1 to
1546 a reseted card but not yet configured (IFDHSetProtocolParameters
1547 was not yet called) and still in T=0 (default)
1548 * [r4861] src/winscard.c: SCardConnect() & SCardReconnect():
1549 correctly log SCARD_PROTOCOL_RAW protocol instead of "unknown"
1550
15512010-04-07 Ludovic Rousseau
1552
1553 * [r4859] src/winscard_msg.c, src/winscard_msg_srv.c: Fix copyright
1554 name and date
1555 * [r4858] src/winscard_msg.c: Doxygen: document SHMMessageReceive()
1556 command argument added in revision 4718
1557 * [r4857] src/winscard_clnt.c: Doxygen:
1558 SCARD_ATTR_DEVICE_FRIENDLY_NAME is implemented by
1559 SCardGetAttrib() if the IFD Handler (driver) returns
1560 IFD_ERROR_TAG. pcsc-lite then returns the same reader name as
1561 returned by SCardListReaders.
1562
15632010-04-01 Ludovic Rousseau
1564
1565 * [r4851] src/PCSC/reader.h.in: Add PCSCv2_PART10_PROPERTY_*
1566 defines
1567
15682010-03-30 Ludovic Rousseau
1569
1570 * [r4845] src/winscard_clnt.c: SCardEstablishContext(): try to
1571 relaunch pcscd if SCardCheckDaemonAvailability() succeeds but
1572 SCardEstablishContextTH() fails. This happens if pcscd crashed
1573 without cleaning /var/run/pcscd/pcscd.comm
1574
15752010-03-26 Ludovic Rousseau
1576
1577 * [r4843] src/PCSC/reader.h.in: add FEATURE_GET_TLV_PROPERTIES and
1578 FEATURE_CCID_ESC_COMMAND from PC/SC part 10 v2.02.07 March 2010
1579
15802010-03-22 Ludovic Rousseau
1581
1582 * [r4839] src/pcscdaemon.c: Call at_exit() instead of exit() since
1583 the libC of Android is bogus and atexit() does not work as it
1584 should.
1585
1586 Thanks to Patrice Angelini for the bug report.
1587 * [r4838] src/winscard_clnt.c: SCardCheckDaemonAvailability(): use
1588 stat(2) instead of the now removed SYS_Stat()
1589
15902010-03-19 Ludovic Rousseau
1591
1592 * [r4836] src/configfile.l, src/pcscdaemon.c, src/sys_generic.h,
1593 src/sys_unix.c, src/winscard_msg.c, src/winscard_msg_srv.c,
1594 src/winscard_svc.c: Remove the one line wrappers from sys_unix.c
1595 and use directly the POSIX functions instead.
1596
15972010-03-16 Ludovic Rousseau
1598
1599 * [r4825] src/Makefile.am: Install pcscd as suid so that autostart
1600 works correctly (as root)
1601 * [r4824] TODO: done: remove as much text messages (logs) as
1602 possible
1603 * [r4823] configure.in: Display PCSCLITE_FEATURES
1604 * [r4822] configure.in: Add --enable-embedded (default is no) to
1605 build pcsc-lite for an embedded system. This will activate the
1606 NO_LOG option to disable logging and limit RAM and disk
1607 consumption.
1608 * [r4821] src/PCSC/debuglog.h, src/debug.c, src/debuglog.c,
1609 src/hotplug_libhal.c, src/winscard_svc.c: If NO_LOG is defined
1610 then no log are displayed. The idea is to limit the binaries size
1611 on disk and RAM consumption at execution time.
1612
1613 With NO_LOG defined we gain 26% (17 kB) for the .text segment of
1614 pcscd and 15% (4 kB) for the .text segment of libpcsclite.so (for
1615 i386)
1616 * [r4820] src/utils.c: Include config.h before the other header
1617 files so the configuration set in config.h can be used in the
1618 other header files (NO_LOG for example)
1619 * [r4819] src/configfile.l: Include config.h before the other
1620 header files so the configuration set in config.h can be used in
1621 the other header files (NO_LOG for example)
1622 * [r4818] src/Makefile.am, src/debug.c, src/debug.h,
1623 src/dyn_hpux.c, src/dyn_macosx.c, src/dyn_unix.c, src/sys_unix.c,
1624 src/tokenparser.l, src/utils.c, src/winscard_clnt.c,
1625 src/winscard_msg.c: Remove debug.h and use debuglog.h instead.
1626 They both define the same log API.
1627
16282010-03-12 Ludovic Rousseau
1629
1630 * [r4813] UnitaryTests/ThreadSafe.py,
1631 UnitaryTests/ThreadSafeConnect.py: revert change in revision 4812
1632 since the problem is now solved in pyscard (revision 382)
1633 * [r4812] UnitaryTests/ThreadSafe.py,
1634 UnitaryTests/ThreadSafeConnect.py: do not initialise the library
1635 in a thread as it crashed on Mac OS X
1636
16372010-03-09 Ludovic Rousseau
1638
1639 * [r4809] src/winscard_svc.c: read only accesses to contextsList
1640 list shall also be protected by a mutex
1641 * [r4808] src/readerfactory.c: read only accesses to handlesList
1642 list shall also be protected by a mutex
1643 * [r4807] src/readerfactory.c, src/readerfactory.h: manipulations
1644 of handlesList field of ReaderContext should now be thread safe
1645 * [r4806] src/winscard_svc.c: MSGRemoveContext(): correctly indent
1646 a line
1647 * [r4805] src/winscard_svc.c: manipulations of cardsList should now
1648 be thread safe
1649 * [r4804] src/winscard_svc.c: remove extra tab
1650 * [r4803] UnitaryTests/ThreadSafeConnect.py: add more logging
1651 * [r4802] UnitaryTests/ThreadSafeConnect.py: stress thread safeness
1652 of SCardConnect/SCardDisconnect
1653 * [r4801] src/winscard_svc.c: manipulations of contextsList should
1654 now be thread safe
1655 * [r4800] UnitaryTests/ThreadSafe.py: stress thread safeness
1656
16572010-03-04 Ludovic Rousseau
1658
1659 * [r4793] UnitaryTests/SCardBlockingBehaviourTest.py,
1660 UnitaryTests/SCardExclusiveBehaviour.py: make pylint happier
1661 * [r4792] UnitaryTests/MCT_ReaderDirect.py: make pylint happier
1662 * [r4791] UnitaryTests/control_get_firmware.py: make pylint happy
1663 * [r4790] UnitaryTests/control_get_firmware.py: remove useless
1664 import
1665 * [r4789] UnitaryTests/MCT_ReaderDirect.py,
1666 UnitaryTests/control_get_firmware.py,
1667 UnitaryTests/control_switch_interface.py: use list comprehension
1668 instead of map() (more efficient and pylint does not like map())
1669
16702010-03-03 Ludovic Rousseau
1671
1672 * [r4788] UnitaryTests/control_switch_interface.py: make pylint
1673 happier
1674
16752010-03-02 Ludovic Rousseau
1676
1677 * [r4784] src/debuglog.c: debuglog.c is only used by pcscd. So no
1678 need to use #ifdef PCSCD
1679
16802010-03-01 Ludovic Rousseau
1681
1682 * [r4783] TODO: fix typo
1683
16842010-02-26 Ludovic Rousseau
1685
1686 * [r4779] configure.in, doc/Makefile.am,
1687 doc/update-reader.conf.8.in, etc/Makefile.am,
1688 etc/update-reader.conf.in, src/configfile.h, src/configfile.l,
1689 src/readerfactory.c: Add the ability to parse all the
1690 configuration files of a directory instead of just one
1691 configuration file. update-reader.conf is then now obsolete.
1692
1693 See Debian bug #565896 http://bugs.debian.org/565896
1694
16952010-02-25 Ludovic Rousseau
1696
1697 * [r4778] src/pcscdaemon.c: update copyright
1698
16992010-02-23 Ludovic Rousseau
1700
1701 * [r4769] src/winscard_clnt.c: SCardEstablishContextTH() &
1702 SCardGetStatusChange(): completly initialize structures sent to
1703 the daemon to avoid a valgrind warning: Syscall param
1704 socketcall.send(msg) points to uninitialised byte(s)
1705 * [r4768] UnitaryTests/SCardBlockingBehaviourTest.py: As of
1706 revision r4719 Linux is now Windows "compatible"
1707
17082010-02-21 Ludovic Rousseau
1709
1710 * [r4766] src/misc.h: " The gcc on Solaris 10 combined with the Sun
1711 loader appears to not handle the gcc visibility attribute
1712 correctly. The sparc version says it is ignored, the x86 version
1713 gives linker error. The attached patch sun.gcc.1.5.6-svn-477.txt
1714 tries to test for gcc on Sun and not use the visibility
1715 attribute. If on a sun and the compiler is not GCC, try and use
1716 the Sun __global and __hidden instead. (I did not try the Sun
1717 Studio compiler with this.) "
1718
1719 Thanks to Douglas E. Engert for the patch
1720 http://archives.neohapsis.com/archives/dev/muscle/2010-q1/0127.html
1721 * [r4765] doc/pcscd.8.in: use @sysconfdir_exp@ instead of (removed)
1722 @confdir@
1723
17242010-02-12 Ludovic Rousseau
1725
1726 * [r4758] src/readerfactory.c: RFStartSerialReaders(): typo in
1727 comment
1728 * [r4756] src/configfile.l, src/tokenparser.l: Fix 2 compilation
1729 warnings
1730
1731 configfile.c:1151: warning: ‘input’ defined but not used
1732 tokenparser.c:1167: warning: ‘input’ defined but not used
1733 * [r4755] src/lassert.h: Fix splint error
1734 src/pcsc-wirecheck-dist.c:19:164: Body of if clause of if
1735 statement is empty
1736 * [r4754] src/hotplug_libhal.c: HPAddDevice(): fix a memory leak
1737 * [r4753] src/readerfactory.c: RFRemoveReader(): simplify/factorise
1738 the resources deallocation
1739
17402010-02-10 Ludovic Rousseau
1741
1742 * [r4751] etc/update-reader.conf.in: use @sysconfdir@ instead of
1743 (the now removed) @confdir@
1744
1745 Thanks to Sébastien Lorquet for the bug report
1746 http://archives.neohapsis.com/archives/dev/muscle/2010-q1/0098.html
1747
17482010-02-09 Ludovic Rousseau
1749
1750 * [r4744] src/readerfactory.c, src/readerfactory.h: use a dynamic
1751 instead of static allocation for lpcDevice
1752 * [r4743] src/readerfactory.c: RFAddReader(): allocate an int
1753 instead of a DWORD for pFeeds
1754
1755 The patch in revision 4741 was not complete
1756 * [r4742] src/readerfactory.c, src/readerfactory.h: In struct
1757 ReaderContext rename pdwMutex to pMutex and change type from
1758 PDWORD to int *
1759 * [r4741] src/readerfactory.c, src/readerfactory.h: In struct
1760 ReaderContext rename pdwFeeds to pFeeds and change type from
1761 PDWORD to int *
1762 * [r4740] src/readerfactory.c, src/readerfactory.h: In struct
1763 ReaderContext remove the now useless dwBlockStatus field
1764 * [r4739] src/eventhandler.c, src/ifdwrapper.c,
1765 src/readerfactory.c, src/readerfactory.h, src/winscard.c: In
1766 struct ReaderContext rename dwSlot to slot and change type from
1767 DWORD to int
1768 * [r4738] src/ifdwrapper.c, src/readerfactory.c,
1769 src/readerfactory.h, src/winscard.c: In struct ReaderContext
1770 rename dwVersion to version and change type from DWORD to int
1771 * [r4737] src/ifdwrapper.c, src/readerfactory.c,
1772 src/readerfactory.h: In struct ReaderContext change dwPort from
1773 DWORD to int and rename it to port
1774
1775 Fix a compiler warning readerfactory.c: In function
1776 ‘RFReCheckReaderConf’: readerfactory.c:1393: warning: comparison
1777 between signed and unsigned
1778 * [r4736] src/tokenparser.l: Fix compiler warning
1779
1780 tokenparser.l: In function ‘tperrorCheck’: tokenparser.l:102:
1781 warning: unused parameter ‘token_error’
1782 * [r4735] src/configfile.l, src/readerfactory.c,
1783 src/readerfactory.h: In struct SerialReader rename dwChannelId in
1784 channelId since it is an int and no more a DWORD
1785 * [r4734] src/eventhandler.c: Fix a compiler warning
1786
1787 eventhandler.c: In function ‘EHStatusHandlerThread’:
1788 eventhandler.c:494: warning: comparison between signed and
1789 unsigned
1790 * [r4733] src/winscard_clnt.c: do not use the uint32_t rv structure
1791 field but copy it into rv first to avoid a compiler warning
1792
1793 winscard_clnt.c: In function ?SCardReconnect?:
1794 winscard_clnt.c:1035: warning: comparison between signed and
1795 unsigned winscard_clnt.c: In function ?SCardBeginTransaction?:
1796 winscard_clnt.c:1254: warning: comparison between signed and
1797 unsigned winscard_clnt.c: In function ?SCardStatus?:
1798 winscard_clnt.c:1657: warning: comparison between signed and
1799 unsigned winscard_clnt.c: In function ?SCardTransmit?:
1800 winscard_clnt.c:2939: warning: comparison between signed and
1801 unsigned
1802 * [r4732] src/PCSC/pcsclite.h.in: force the return codes SCARD_* to
1803 be long since the SCard* functions return a LONG type
1804 * [r4731] src/eventhandler.c, src/readerfactory.c,
1805 src/readerfactory.h, src/winscard.c, src/winscard_svc.c: In
1806 struct ReaderContext dwLockId is used to store a SCARDHANDLE so
1807 change its type from DWORD to SCARDHANDLE and rename the field to
1808 hLockId
1809
1810 Fix 2 compiler warning: winscard.c: In function
1811 'SCardDisconnect': winscard.c:847: warning: comparison between
1812 signed and unsigned winscard_svc.c: In function
1813 'MSGRemoveContext': winscard_svc.c:807: warning: comparison
1814 between signed and unsigned
1815 * [r4730] src/winscard_msg.c: fix a compilation warning
1816
1817 winscard_msg.c: In function ‘SHMMessageReceive’:
1818 winscard_msg.c:252: warning: unused parameter ‘command’
1819 * [r4729] src/winscard_svc.c: fix 2 compilation warnings
1820
1821 winscard_svc.c: In function ‘MSGRemoveContext’:
1822 winscard_svc.c:776: warning: comparison between signed and
1823 unsigned winscard_svc.c: In function ‘MSGAddHandle’:
1824 winscard_svc.c:848: warning: comparison between signed and
1825 unsigned
1826 * [r4728] src/eventhandler.h, src/winscard_clnt.c: Use READER_STATE
1827 * instead of PREADER_STATE to make it explicit it is a pointer
1828 * [r4727] src/eventhandler.c, src/eventhandler.h, src/ifdwrapper.c,
1829 src/ifdwrapper.h, src/readerfactory.c, src/readerfactory.h,
1830 src/winscard.c, src/winscard_svc.c: Use READER_CONTEXT * instead
1831 of PREADER_CONTEXT to make it explicit it is a pointer
1832 * [r4726] src/readerfactory.c: Fix a compilation warning
1833
1834 readerfactory.c: In function ‘RFAddReaderHandle’:
1835 readerfactory.c:1125: warning: comparison between signed and
1836 unsigned
1837 * [r4725] src/eventhandler.c, src/readerfactory.c,
1838 src/readerfactory.h, src/winscard.c: In struct ReaderContext
1839 rename "dwContexts" to "contexts" since it is no more a DWORD but
1840 a int32_t
1841 * [r4724] src/winscard_clnt.c: Fix a compilation warning
1842
1843 winscard_clnt.c: In function ‘SCardListReaderGroups’:
1844 winscard_clnt.c:3258: warning: comparison between signed and
1845 unsigned
1846 * [r4723] src/pcscd.h.in, src/readerfactory.c, src/readerfactory.h:
1847 Use dynamic instead of static allocation for the driver library
1848 filename. The filename is no more limited to 100 characters.
1849
1850 Closes: [#312332] MAX_LIBNAME too short?
1851 * [r4722] src/pcscdaemon.c, src/winscard_svc.c, src/winscard_svc.h:
1852 use int instead of unsigned int for customMaxThreadCounter,
1853 customMaxReaderHandles and customMaxThreadCardHandles since
1854 list_size() returns an int and we compare the two values (avoid
1855 sign mismatch)
1856 * [r4721] src/winscard_svc.c: fix 2 compilation warnings
1857
1858 winscard_svc.c: In function ‘CreateContextThread’:
1859 winscard_svc.c:146: warning: comparison between signed and
1860 unsigned winscard_svc.c: In function ‘MSGAddHandle’:
1861 winscard_svc.c:856: warning: comparison between signed and
1862 unsigned
1863
18642010-02-08 Ludovic Rousseau
1865
1866 * [r4720] src/winscard_clnt.c: SCardGetStatusChange(): fix 4
1867 compilation warnings
1868
1869 winscard_clnt.c: In function ‘SCardGetStatusChange’:
1870 winscard_clnt.c:1864: warning: comparison between signed and
1871 unsigned winscard_clnt.c:1875: warning: comparison between signed
1872 and unsigned winscard_clnt.c:1911: warning: comparison between
1873 signed and unsigned winscard_clnt.c:2189: warning: comparison
1874 between signed and unsigned
1875 * [r4719] src/winscard_clnt.c: Make SCardReconnect(), SCardStatus()
1876 and SCardTransmit() block instead of returning
1877 SCARD_E_SHARING_VIOLATION immediately. These functions will then
1878 behave like on Windows.
1879
1880 This can happen if these functions are called when the reader is
1881 locked by a PCSC transaction
1882 (SCardBeginTransaction/SCardEndTransaction).
1883
1884 You can define the environment variable PCSCLITE_NO_BLOCKING to
1885 use the old behavior.
1886
1887 Thanks to Jean-Luc Giraud for the patch.
1888 http://archives.neohapsis.com/archives/dev/muscle/2010-q1/0041.html
1889 * [r4718] src/winscard_clnt.c, src/winscard_msg.c,
1890 src/winscard_msg.h, src/winscard_svc.c: add a command parameter
1891 to SHMMessageReceive() to be able log the ongoing command in case
1892 of problem
1893
18942010-02-05 Ludovic Rousseau
1895
1896 * [r4717] UnitaryTests/SCardExclusiveBehaviour.py: Check the return
1897 value of SCardConnect() on a reader already used in
1898 SCARD_SHARE_EXCLUSIVE mode
1899 * [r4716] src/winscard.c: fix a bug introduced by the previous
1900 revision
1901 * [r4715] src/winscard.c: SCardGetAttrib(): check for buffer
1902 overflow with SCARD_ATTR_DEVICE_FRIENDLY_NAME
1903
1904 Thanks to Jean-Luc Giraud for complete
1905 SCARD_ATTR_DEVICE_FRIENDLY_NAME patch
1906
19072010-02-04 Ludovic Rousseau
1908
1909 * [r4710] src/PCSC/pcsclite.h.in, src/winscard_clnt.c: add a
1910 copyright for Martin Paljak
1911
19122010-02-03 Ludovic Rousseau
1913
1914 * [r4708] configure.in, src/pcscd.h.in: Use the standard
1915 --sysconfdir=DIR ($prefix/etc by default) instead of
1916 --enable-confdir=DIR for defining the directory containing
1917 reader.conf
1918 * [r4707] configure.in: sysconfdir_exp is a configuration directory
1919 not configuration file
1920
19212010-02-02 Ludovic Rousseau
1922
1923 * [r4705] src/winscard.c: SCardStatus(): returns
1924 SCARD_E_SHARING_VIOLATION if the reader is already used More
1925 conform to Windows
1926 * [r4704] UnitaryTests/SCardBlockingBehaviourTest.py: allow to use
1927 any reader and not just the first one
1928 * [r4703] src/testpcsc.c: test SCARD_ATTR_DEVICE_FRIENDLY_NAME
1929 * [r4702] src/winscard.c: SCardGetAttrib(): add support of
1930 SCARD_ATTR_DEVICE_FRIENDLY_NAME as it is better implemented in
1931 pcscd (it knows the friendly name)
1932 * [r4701] src/winscard_clnt.c: SCardEstablishContext(): set
1933 PCSCLITE_PCSCD_ARGS with the argument you want to pass to pcscd
1934 in autostart Only one argument is passed. The space character is
1935 not a separator. example: export PCSCLITE_PCSCD_ARGS=-dfa
1936 * [r4700] src/pcscd.h.in, src/pcscdaemon.c, src/winscard_clnt.c,
1937 src/winscard_svc.c: pcscd will suicide itself after 60 seconds of
1938 inactivity if it is started using --auto-exit This is the default
1939 behavior when pcscd is started by libpcsclite
1940 * [r4699] src/pcscdaemon.c: do not ignore the SIGALRM signal any
1941 more since we need it for the auto exit feature
1942
19432010-01-22 Ludovic Rousseau
1944
1945 * [r4685] configure.in: add $host to the PCSCLITE_FEATURES
1946 definition (available with "pcscd -v") to display the CPU
1947 architecture host is something like x86_64-unknown-linux-gnu
1948 * [r4683] configure.in: use LT_INIT(disable-static) instead of the
1949 deprecated AM_DISABLE_STATIC
1950
1951 Thanks to Roumen Petrov
1952
19532010-01-21 Ludovic Rousseau
1954
1955 * [r4682] UnitaryTests/MCT_ReaderDirect.py,
1956 UnitaryTests/control_get_firmware.py,
1957 UnitaryTests/control_switch_interface.py: do not try to reset the
1958 card on exit. We are talking to the reader. A card may NOT be
1959 present.
1960 * [r4681] configure.in, src/Makefile.am: Do not completely disable
1961 building the static version of the library but just disable it by
1962 default
1963
1964 Use AM_DISABLE_STATIC in configure.in instead of -shared in
1965 Makefile.am
1966
19672010-01-16 Ludovic Rousseau
1968
1969 * [r4674] UnitaryTests/SCardBlockingBehaviourTest.py: Check the
1970 behavior of PCSC functions when a PCSC transaction is ongoing
1971
1972 Thanks to Jean-Luc Giraud for the original code
1973 * [r4673] src/Makefile.am: use -shared to only provide a shared
1974 library. If you need to use the static .a library you just need
1975 to remove -shared
1976
19772010-01-15 Ludovic Rousseau
1978
1979 * [r4672] UnitaryTests/control_switch_interface.py: parse error
1980 code
1981 * [r4671] UnitaryTests/control_switch_interface.py: improve
1982 documentation and output
1983 * [r4670] src/winscard_clnt.c: Only call SCardCheckSameProcess() if
1984 DO_CHECK_SAME_PROCESS is defined (default is not defined).
1985
1986 Some thread libraries (on embedded systems for example) have a
1987 different pid for each thread of a same process. So the check
1988 using getpid() is wrong and handles are invalidated when they
1989 should not. The PC/SC function returned SCARD_E_INVALID_HANDLE
1990 * [r4669] src/winscard_clnt.c: define and use the
1991 CHECK_SAME_PROCESS macro instead of calling
1992 SCardCheckSameProcess() directly
1993
19942010-01-14 Ludovic Rousseau
1995
1996 * [r4668] src/winscard_clnt.c: Doxygen: update
1997 SCardGetStatusChange() doc. The function returns on any events,
1998 not just those specified in dwCurrentState
1999 * [r4667] TODO: For embedded/constained systems
2000
2001 - remove as much text messages (logs) as possible to limit the
2002 size of the binaries (pcscd and libpcsclite)
2003
2004 - use static driver instead of reader polling and dynamic driver
2005 loading
2006
20072010-01-08 Ludovic Rousseau
2008
2009 * [r4646] src/readerfactory.c: RFInitializeReader(): do not
2010 dynamically load the driver if PCSCLITE_STATIC_DRIVER is defined
2011 * [r4645] src/ifdwrapper.c: better support of
2012 PCSCLITE_STATIC_DRIVER.
2013
2014 This is used to statically link the reader driver to pcscd. Since
2015 the link is static you must define the IFDHandler API version at
2016 compilation time. Either define IFDHANDLERv1, IFDHANDLERv2 or
2017 IFDHANDLERv3
2018 * [r4644] src/dyn_unix.c: fix a warning when compiling with
2019 PCSCLITE_STATIC_DRIVER defined
2020
2021 dyn_unix.c: In function ‘DYN_CloseLibrary’: dyn_unix.c:47:
2022 warning: unused variable ‘ret’
2023
20242010-01-03 Ludovic Rousseau
2025
2026 * [r4635] src/hotplug_macosx.c: hotplug_macosx.c: In function
2027 ‘HPDeviceAppeared’: hotplug_macosx.c:70: warning: unused
2028 parameter ‘refCon’ hotplug_macosx.c: In function
2029 ‘HPDeviceDisappeared’: hotplug_macosx.c:85: warning: unused
2030 parameter ‘refCon’
2031
20322010-01-02 Ludovic Rousseau
2033
2034 * [r4634] src/simclist.c: fix a compilation warning
2035 simclist.c:1335: warning: unused parameter ‘el’
2036 * [r4633] src/error.c: pcsc_stringify_error(): spelling error
2037 (detected by lintian(1))
2038
20392010-01-01 Ludovic Rousseau
2040
2041 * [r4630] src/ifdwrapper.c: add #include <unistd.h> to declare the
2042 timeval structure
2043
2044 In file included from ifdwrapper.c:31: utils.h:26: warning:
2045 ‘struct timeval’ declared inside parameter list utils.h:26:
2046 warning: its scope is only this definition or declaration, which
2047 is probably not what you want
2048 * [r4629] src/dyn_unix.c, src/ifdwrapper.c, src/pcscdaemon.c:
2049 better handling of PCSCLITE_STATIC_DRIVER as can be used on
2050 plateforms using µClinux (without dynamic loader)
2051
2052 Thanks to Guo Wenxue for a proto-patch
2053 * [r4628] src/hotplug_generic.c, src/hotplug_linux.c,
2054 src/hotplug_macosx.c: ReCheckSerialReaders variable is not used
2055 anymore
2056 * [r4627] src/winscard_msg_srv.c: ReCheckSerialReaders variable
2057 from hotplug_* is not used anymore
2058
20592009-12-18 Ludovic Rousseau
2060
2061 * [r4621] src/winscard_svc.c: typo in log message
2062
20632009-12-15 Ludovic Rousseau
2064
2065 * [r4616] src/atrhandler.c: ATRDecodeAtr(): reformat
2066 * [r4615] src/atrhandler.c: ATRDecodeAtr(): check for TA2 (specific
2067 mode) even if TD2 is not present "3F 80 10 01" was not parsed
2068 correctly for example and T=0 was used instead of T=1 (specific
2069 mode)
2070 * [r4613] UnitaryTests/MCT_ReaderDirect.py: rename
2071 FEATURE_MCT_READERDIRECT in FEATURE_MCT_READER_DIRECT
2072 * [r4612] src/PCSC/reader.h.in: rename FEATURE_MCT_READERDIRECT in
2073 FEATURE_MCT_READER_DIRECT to be conform with ch. 2.3 of PCSC v2
2074 part 10
2075
20762009-12-14 Ludovic Rousseau
2077
2078 * [r4611] UnitaryTests/SCard_fork.py: Unitary Test for fork()
2079 detection
2080
20812009-12-11 Ludovic Rousseau
2082
2083 * [r4608] src/winscard_clnt.c: Doxygen: add missing error codes
2084 * [r4607] src/winscard_svc.c: ContextThread(): SCARD_CANCEL return
2085 SCARD_E_INVALID_HANDLE instead of SCARD_E_INVALID_VALUE if the
2086 handle is invalid
2087 * [r4606] src/winscard_clnt.c: Doxygen: document 2 missing
2088 SCARD_F_COMM_ERROR possible return values
2089 * [r4605] src/winscard_clnt.c: Doxygen: document 3 missing error
2090 codes for SCardConnect()
2091 * [r4604] src/PCSC/pcsclite.h.in: reformat
2092 * [r4603] src/winscard_clnt.c: use sizeof(SCARD_IO_REQUEST) instead
2093 of 8 for the .cbPciLength field This is the correct value on
2094 64-bit system.
2095 * [r4602] src/pcscdaemon.c, src/winscard.c: g_rgSCard*Pci are not
2096 used on the server side
2097 * [r4601] src/pcscdaemon.c: SIGHUP signal has already been set to
2098 SIG_IGN. No need to quit on SIGHUP.
2099 * [r4600] src/pcscdaemon.c: revert revision 4599 and remove the
2100 second call to signal() instead of the first one. We need to
2101 clean-up as soon as we created the files.
2102 * [r4599] src/pcscdaemon.c: remove duplicate calls to signal()
2103
21042009-12-03 Ludovic Rousseau
2105
2106 * [r4587] src/winscard_clnt.c: Doxygen: SCardConnect() value 0 for
2107 dwPreferredProtocols valid only if dwShareMode is
2108 SCARD_SHARE_DIRECT
2109 * [r4585] src/winscard_clnt.c: use the more efficient
2110 SCardCheckSameProcess() instead of SCardCheckDaemonAvailability()
2111 to detect use of the API after a fork()
2112
21132009-12-02 Ludovic Rousseau
2114
2115 * [r4583] src/winscard_clnt.c: Doxygen: SCardEstablishContext()
2116 Each thread of an application shall use its own SCARDCONTEXT. On
2117 Windows the same SCARDCONTEXT can be shared by different threads
2118 of same application.
2119
21202009-11-27 Ludovic Rousseau
2121
2122 * [r4580] src/winscard_clnt.c: SCardEstablishContext(): try to
2123 start the pcscd daemon if not already running
2124 * [r4579] configure.in: define PCSCD_BINARY
2125 * [r4577] src/pcscdaemon.c: improve the checking of an already
2126 running pcscd
2127 * [r4576] src/winscard_clnt.c: Doxygen: For historical reasons the
2128 value of SCARD_E_UNSUPPORTED_FEATURE is 0x8010001F in pcsc-lite
2129 but 0x80100022 in Windows WinSCard
2130 * [r4575] src/PCSC/pcsclite.h.in: SCARD_E_UNSUPPORTED_FEATURE is
2131 not a PC/SC Lite specific extension, but its numerical value is
2132 different on Windows
2133
21342009-11-26 Ludovic Rousseau
2135
2136 * [r4574] src/PCSC/pcsclite.h.in, src/error.c: remove pcsc-lite
2137 specific SCARD_W_INSERTED_CARD code
2138
2139 SCARD_W_INSERTED_CARD value 0x8010006A was also in collision with
2140 SCARD_W_SECURITY_VIOLATION
2141 * [r4573] src/error.c: reorder error codes
2142
21432009-11-24 Ludovic Rousseau
2144
2145 * [r4570] src/winscard_clnt.c: do not declare the SCardUnload()
2146 function removed in revision 4435
2147 * [r4569] src/winscard_clnt.c: create a SCardInvalidateHandles()
2148 function from SCardCheckDaemonAvailability() code
2149 * [r4568] src/winscard_clnt.c: SCardCheckDaemonAvailability(): do
2150 not delete the context since it is already done by
2151 SCardCleanContext()
2152 * [r4567] src/winscard_clnt.c: SCardCleanContext(): deallocate the
2153 context memory
2154
21552009-11-23 Ludovic Rousseau
2156
2157 * [r4566] src/winscard_clnt.c: Doxygen: update SCardControl() list
2158 of possible error codes partly revert revision 4558
2159
2160 Thanks to Martin Paljak for the bug report
2161 http://archives.neohapsis.com/archives/dev/muscle/2009-q4/0079.html
2162
21632009-11-19 Ludovic Rousseau
2164
2165 * [r4562] src/eventhandler.c, src/readerfactory.c,
2166 src/winscard_clnt.c, src/winscard_svc.c: use list_delete()
2167 instead of list_locate() + list_delete_at()
2168 * [r4561] src/simclist.c, src/simclist.h: add list_delete()
2169 "expunge the first found given element from the list"
2170
21712009-11-18 Ludovic Rousseau
2172
2173 * [r4560] UnitaryTests/MCT_ReaderDirect.py,
2174 UnitaryTests/SCardBeginTransaction_Disconnect.py,
2175 UnitaryTests/SCardCancel.py, UnitaryTests/SCardConnect_DIRECT.py,
2176 UnitaryTests/SCardGetStatusChange/SCardGetStatusChange.py,
2177 UnitaryTests/SCardGetStatusChange/SCardGetStatusChange_PnP.py,
2178 UnitaryTests/SCardReconnect.py,
2179 UnitaryTests/control_get_firmware.py,
2180 UnitaryTests/control_switch_interface.py: reformat to make
2181 pep8(1) happy
2182 * [r4559] src/winscard_clnt.c: Doxygen improvement
2183 * [r4558] src/winscard_clnt.c: Doxygen: update SCardControl() list
2184 of possible error codes
2185 * [r4554] src/readerfactory.c, src/winscard_clnt.c,
2186 src/winscard_svc.c: add Jean-Luc Giraud in copyright holders
2187 because of his patch in revision 4553
2188
21892009-11-17 Ludovic Rousseau
2190
2191 * [r4553] src/Makefile.am, src/pcscd.h.in, src/pcscdaemon.c,
2192 src/readerfactory.c, src/readerfactory.h, src/winscard_clnt.c,
2193 src/winscard_svc.c, src/winscard_svc.h: Use lists instead of
2194 fixed size arrays to store handles.
2195
2196 It is now possible to have: - 200 simultaneous PC/SC clients
2197 instead of 16 - 200 SCardConnect per client instead of 16 - 200
2198 clients per reader instead of 16
2199
2200 The default value of 200 can be changed by giving an argument to
2201 pcscd --max-thread --max-card-handle-per-thread
2202 --max-card-handle-per-reader
2203
2204 Thanks to Jean-Luc Giraud for the big patch
2205 * [r4552] src/readerfactory.c: RFCreateReaderHandle(): add a
2206 comment that a 16-bit random is not secure enough
2207
22082009-11-16 Ludovic Rousseau
2209
2210 * [r4549] UnitaryTests/SCardReconnect.py: SCardReconnect() should
2211 block instead of returning SCARD_E_SHARING_VIOLATION
2212 * [r4548] UnitaryTests/SCardConnect_DIRECT.py: typo in text
2213 * [r4547] src/winscard_svc.c: remove printf() for debug from
2214 READ_BODY() macro
2215
22162009-11-12 Ludovic Rousseau
2217
2218 * [r4544] UnitaryTests/BufferOverflow.c, src/PCSC/ifdhandler.h,
2219 src/PCSC/pcsclite.h.in, src/PCSC/reader.h.in,
2220 src/PCSC/winscard.h, src/PCSC/wintypes.h, src/atrhandler.c,
2221 src/atrhandler.h, src/configfile.h, src/configfile.l,
2222 src/debug.c, src/debug.h, src/debuglog.c, src/dyn_generic.h,
2223 src/dyn_hpux.c, src/dyn_unix.c, src/error.c, src/eventhandler.c,
2224 src/eventhandler.h, src/hotplug.h, src/hotplug_libhal.c,
2225 src/hotplug_libusb.c, src/hotplug_linux.c, src/ifdwrapper.c,
2226 src/ifdwrapper.h, src/lassert.h, src/misc.h, src/parser.h,
2227 src/pcsc-wirecheck-gen.c, src/pcscd.h.in, src/pcscdaemon.c,
2228 src/powermgt_generic.c, src/readerfactory.c, src/readerfactory.h,
2229 src/strlcpycat.h, src/sys_generic.h, src/sys_unix.c,
2230 src/thread_generic.h, src/thread_unix.c, src/tokenparser.l,
2231 src/utils.c, src/utils.h, src/utils/formaticc.c,
2232 src/utils/installifd.c, src/winscard.c, src/winscard_clnt.c,
2233 src/winscard_msg.c, src/winscard_msg.h, src/winscard_msg_srv.c,
2234 src/winscard_svc.c, src/winscard_svc.h: update copyright dates
2235
22362009-11-07 Ludovic Rousseau
2237
2238 * [r4540] src/winscard_svc.c: remove ducplicate READ_BODY() and
2239 WRITE_BODY() macros
2240
22412009-11-06 Ludovic Rousseau
2242
2243 * [r4538] src/winscard_clnt.c: remove useless PCHANNEL_MAP type
2244 definition
2245 * [r4537] src/winscard_clnt.c: remove extra spaces at end of line
2246 * [r4536] src/hotplug_libusb.c: reindent
2247 * [r4535] src/hotplug_linux.c: reindent
2248 * [r4534] src/ifdwrapper.c: reindent
2249 * [r4533] src/readerfactory.c: RFAddReader(): make comment more
2250 clear for TAG_IFD_SLOT_THREAD_SAFE
2251 * [r4532] src/readerfactory.c: RFAddReader(): make comment more
2252 clear for TAG_IFD_THREAD_SAFE
2253
22542009-11-05 Ludovic Rousseau
2255
2256 * [r4531] src/winscard_msg.c, src/winscard_msg_srv.c: use PF_*
2257 instead of AF_* for socket(2) argument
2258
2259 Thanks to Sébastien Lorquet for the bug report
2260 http://archives.neohapsis.com/archives/dev/muscle/2009-q4/0039.html
2261 * [r4530] src/winscard_msg.c, src/winscard_msg_srv.c: Revert change
2262 in revision 4395. Solaris does not have (Posix) AF_LOCAL
2263
2264 Thanks to Douglas E. Engert for the bug report
2265 http://archives.neohapsis.com/archives/dev/muscle/2009-q4/0038.html
2266
22672009-11-03 Ludovic Rousseau
2268
2269 * [r4529] src/readerfactory.h: remove useless pointer types
2270
22712009-11-02 Ludovic Rousseau
2272
2273 * [r4528] src/winscard_clnt.c: SCardConnect(), SCardDisconnect() &
2274 SCardReleaseContext(): correctly handle error cases profiling
2275
22762009-10-28 Ludovic Rousseau
2277
2278 * [r4527] src/readerfactory.h, src/thread_generic.h,
2279 src/thread_unix.c, src/winscard_clnt.c: remove the type
2280 PCSCLITE_MUTEX_T and use an explicit pointer type (PCSCLITE_MUTEX
2281 *) instead
2282
2283 This should avoid bugs like the one corrected in revision 4525
2284 * [r4525] src/eventhandler.c: correctly use the lock API for
2285 ClientsWaitingForEvent_lock
2286 * [r4524] src/pcscdaemon.c, src/readerfactory.c,
2287 src/readerfactory.h: call exit() in SVCServiceRunLoop() instead
2288 of RFCleanupReaders() and remove the RFCleanupReaders() parameter
2289 * [r4523] src/readerfactory.c: use return() instead of exit() if
2290 DYN_GetAddress() fails
2291 * [r4522] src/eventhandler.c: explicitly use (void)fct() to ignore
2292 the returned value
2293
22942009-10-27 Ludovic Rousseau
2295
2296 * [r4520] src/eventhandler.c: EHStatusHandlerThread(): call
2297 EHSignalEventToClients() _after_ logging "Card inserted into ..."
2298 * [r4519] src/winscard_svc.c: ContextThread(): add the client ID to
2299 the command log message
2300 * [r4518] src/winscard_clnt.c: SCardGetStatusChange(): use
2301 SCARD_*_CONTEXT constants instead of numerical values
2302 * [r4517] src/eventhandler.h, src/winscard.c: move SCARD_*_CONTEXT
2303 from winscard.c to eventhandler.h
2304 * [r4516] src/winscard.c: remove useless SCARD_NO_LOCK define
2305 * [r4515] src/eventhandler.c: update comment
2306 * [r4514] src/winscard_clnt.c, src/winscard_msg.c,
2307 src/winscard_svc.c: SHMMessageReceive() now returns -2 in case of
2308 timeout and -1 in case of other error
2309
2310 This is used to correctly handle timeouts in
2311 SCardGetStatusChange()
2312 * [r4513] src/winscard_svc.c: ContextThread(): when a client dies
2313 call EHTryToUnregisterClientForEvent() to unregister it if needed
2314 * [r4512] src/eventhandler.c, src/eventhandler.h: add
2315 EHTryToUnregisterClientForEvent()
2316
23172009-10-18 Ludovic Rousseau
2318
2319 * [r4497] src/winscard_msg.c: SHMMessageSend(): document the use of
2320 MSG_NOSIGNAL to ignore SIGPIPE signal
2321
23222009-10-13 Ludovic Rousseau
2323
2324 * [r4491] src/Makefile.am: do not use PCSC_CLIENT_SRC variable
2325 anymore since SCF support has been removed
2326 * [r4490] src/Makefile.am: libpcsclite does not need to have
2327 dyn_hpux.c, dyn_macosx.c or dyn_unix.c. These files define
2328 DYN_LoadLibrary/DYN_CloseLibrary/DYN_GetAddress
2329 * [r4489] pbx, pcsc.pbproj: remove Xcode files. Apple has its own
2330 version of pcsc-lite for Mac OS X
2331 * [r4488] src/winscard_clnt.c: Doxygen(): better documentation for
2332 SCardCheckDaemonAvailability()
2333 * [r4487] src/winscard_clnt.c: revert changeset 4485.
2334 SCardCheckDaemonAvailability() is also used to invalidate the
2335 PC/SC handles after a fork or a pcscd restart
2336 * [r4486] configure.in, src/Makefile.am, src/winscard_scf.c: remove
2337 SCF support (PC/SC over Smart Card Framework). I never used this
2338 feature and SCF is now dead and replaced by JSR 268
2339 (javax.smartcardio)
2340
23412009-10-12 Ludovic Rousseau
2342
2343 * [r4485] src/winscard_clnt.c: SCardReleaseContext(),
2344 SCardConnect(), SCardReconnect(), SCardDisconnect(),
2345 SCardBeginTransaction(), SCardEndTransaction(),
2346 SCardCancelTransaction(), SCardStatus(), SCardGetStatusChange(),
2347 SCardControl(), SCardGetSetAttrib(), SCardTransmit(),
2348 SCardListReaders(), SCardFreeMemory()SCardListReaderGroups(),
2349 SCardIsValidContext(): do not SCardCheckDaemonAvailability()
2350 since we will try to talk to the server later. Any communication
2351 problem will be reported by SHMMessageSendWithHeader()
2352 * [r4484] src/winscard_clnt.c: SCardDisconnect(): factorize exit
2353 code
2354 * [r4483] src/winscard_clnt.c: SCardReconnect(): factorize exit
2355 code
2356 * [r4482] src/winscard_clnt.c: SCardConnect(): factorize exit code
2357 * [r4481] src/winscard_clnt.c: SCardReleaseContext(): release
2358 context even if communication with the server fails
2359 * [r4480] src/winscard_msg.c: SHMMessageSend(): use send(...,
2360 MSG_NOSIGNAL) instead of write(...) to avoid receiving a SIGPIPE
2361 signal if pcscd has exited. We just get EPIPE as return value
2362 * [r4479] src/winscard_clnt.c: SCardReconnect(),
2363 SCardBeginTransaction(), SCardEndTransaction(),
2364 SCardCancelTransaction(), SCardControl(), SCardGetSetAttrib() and
2365 SCardTransmit(): do not "synchronize reader states with daemon"
2366 since reader availability checks are done on the server side.
2367
23682009-10-09 Ludovic Rousseau
2369
2370 * [r4476] src/winscard_clnt.c: Doxygen improvement
2371 * [r4474] src/PCSC/ifdhandler.h: Doxygen: define an IFDHandler
2372 group
2373 * [r4473] src/PCSC/ifdhandler.h: Add Doxygen documentation of the
2374 IFD Handler API
2375 * [r4472] src/PCSC/ifdhandler.h: remove IFD_Handler 1.0 functions
2376 prototypes
2377 * [r4471] src/winscard_clnt.c: Doxygen: use @param[in,out] for in
2378 and out parameters
2379
23802009-10-08 Ludovic Rousseau
2381
2382 * [r4468] doc/example/pcsc_demo.c: cleanly exits in case of unknown
2383 protocol
2384 * [r4467] doc/example/pcsc_demo.c: use SCARD_AUTOALLOCATE for
2385 SCardListReaders()
2386 * [r4466] src/simclist.c, src/simclist.h: remove svn:executable
2387 property on source files
2388 * [r4465] src/sys_generic.h, src/sys_unix.c: Define SYS_Fork() only
2389 if used (if HAVE_DAEMON is not set)
2390 * [r4464] src/sys_generic.h, src/sys_unix.c: Remove useless
2391 SYS_GetPageSize(), SYS_MemoryMap(), SYS_PublicMemoryMap(),
2392 SYS_PublicMemoryUnmap() and SYS_MMapSynchronize()
2393 * [r4463] src/sys_generic.h, src/sys_unix.c: Remove useless
2394 SYS_ReadFile()
2395 * [r4462] src/sys_generic.h, src/sys_unix.c: Remove useless
2396 SYS_SeekFile()
2397 * [r4461] src/sys_generic.h: Remove SYS_ChangePermissions()
2398 prototype (the function is NOT defined anywhere)
2399 * [r4460] src/sys_generic.h, src/sys_unix.c: Remove useless
2400 SYS_GetUID() & SYS_GetGID()
2401 * [r4459] src/sys_generic.h, src/sys_unix.c: Remove useless
2402 SYS_GetPID()
2403 * [r4458] src/sys_generic.h, src/sys_unix.c, src/winscard_clnt.c:
2404 SYS_Initialize() does nothing. Remove it.
2405 * [r4457] src/readerfactory.c: Comment out RFSuspendAllReaders()
2406 and RFAwakeAllReaders(). We do not yet support suspend/resume on
2407 Linux
2408 * [r4456] src/readerfactory.c, src/readerfactory.h: remove useless
2409 RFListReaders()
2410 * [r4455] src/readerfactory.c, src/readerfactory.h: remove useless
2411 RFUnblockContext()
2412 * [r4454] src/readerfactory.c, src/readerfactory.h, src/winscard.c:
2413 remove useless RFUnblockReader()
2414 * [r4453] src/pcscd.h.in, src/readerfactory.c, src/winscard_clnt.c:
2415 do not use contextBlockStatus tpo block/unblock a context. We now
2416 use SCardCancel() on the server side to unblock
2417 SCardGetStatusChange()
2418 * [r4452] doc/Makefile.am, doc/pcsc-lite.bib, doc/pcsc-lite.tex:
2419 The .tex documentation is no more maintained. The reference
2420 WinSCard API documentation is from Doxygen now.
2421 * [r4451] UnitaryTests/SCardConnect_DIRECT.py: add documentation
2422 * [r4447] src/ifdwrapper.c: IFDControl(): return
2423 SCARD_E_INSUFFICIENT_BUFFER if the driver returns
2424 IFD_ERROR_INSUFFICIENT_BUFFER
2425 * [r4445] src/winscard.c: SCardGetAttrib(): return
2426 SCARD_E_INSUFFICIENT_BUFFER if the driver returns
2427 IFD_ERROR_INSUFFICIENT_BUFFER
2428
2429 Thanks to Emmanuel Deloget for the bug report
2430 http://archives.neohapsis.com/archives/dev/muscle/2009-q4/0003.html
2431 * [r4444] src/PCSC/ifdhandler.h: add IFD_ERROR_INSUFFICIENT_BUFFER
2432 * [r4443] src/winscard.c: SCardReconnect(): log the selected
2433 protocol (as done in SCardConnect())
2434 * [r4442] src/winscard_clnt.c: SCardReconnect(): return
2435 SCARD_E_SHARING_VIOLATION instead of blocking if the reader
2436 cannot be shared.
2437
2438 This change was made in revision 2475 but I don't remember why.
2439
2440 Thanks to Paul Klissner for the bug report
2441 http://archives.neohapsis.com/archives/dev/muscle/2009-q3/0106.html
2442
24432009-10-06 Ludovic Rousseau
2444
2445 * [r4438] src/winscard_clnt.c, src/winscard_msg.h: remove typedefs
2446 and explicitly use struct for structures
2447 * [r4437] src/pcsc-wirecheck-gen.c: update to the new client/server
2448 ABI
2449 * [r4436] src/utils.c, src/utils.h: remove now useless
2450 StatSynchronize() and StatSynchronizeContext()
2451 * [r4435] src/winscard_clnt.c: remove now useless SCardUnload()
2452 * [r4434] src/eventhandler.c, src/pcscd.h.in, src/pcscdaemon.c,
2453 src/readerfactory.c, src/winscard.c, src/winscard_clnt.c,
2454 src/winscard_msg.c, src/winscard_msg.h, src/winscard_msg_srv.c,
2455 src/winscard_svc.c: redesign the client/server communication: -
2456 no more shared memory used (allow pcscd and libpcsclite1.so to be
2457 on different computer and talk over a network) - no more
2458 difference between short and extended APDU - no more use of a
2459 /var/run/pcscd/pcscd.events/ directory. events are sent through
2460 the socket - simpler command format between client and server
2461
2462 The side effect is that you are not able to mix an old pcscd with
2463 a new libpcsclite1.so or the reverse. SCardEstablishContext()
2464 will fail unless you update both sides of the communication.
2465 * [r4433] src/winscard_msg.c: reformat comment
2466 * [r4432] src/winscard_svc.c, src/winscard_svc.h: add
2467 MSGSignalClient()
2468 * [r4431] src/winscard_msg.h: add struct wait_reader_state_change
2469 * [r4430] src/pcscd.h.in: add PCSCLITE_WRITE_TIMEOUT and
2470 PCSCLITE_READ_TIMEOUT
2471 * [r4429] src/winscard_msg.c: reformat comments
2472 * [r4428] src/eventhandler.c, src/eventhandler.h: add
2473 EHRegisterClientForEvent(), EHUnregisterClientForEvent() and
2474 EHSignalEventToClients()
2475 * [r4427] src/Makefile.am: add simclist.{c,h} to pcscd dependencies
2476 * [r4426] src/simclist.c, src/simclist.h: Library to manage lists
2477 Fetched from http://mij.oltrelinux.com/devel/simclist/
2478
24792009-10-05 Ludovic Rousseau
2480
2481 * [r4425] UnitaryTests/SCardCancel.py: display return values even
2482 if no error returned
2483
24842009-10-03 Ludovic Rousseau
2485
2486 * [r4419] src/winscard_clnt.c: Doxygen document SCardConnect()
2487 difference with Windows for SCARD_SHARE_DIRECT
2488
24892009-10-02 Ludovic Rousseau
2490
2491 * [r4418] src/winscard_clnt.c: add Doxygen section: Known
2492 differences with Microsoft Windows WinSCard implementation
2493
24942009-09-29 Ludovic Rousseau
2495
2496 * [r4408] src/pcscdaemon.c: main(): check RFAllocateReaderSpace()
2497 returned value
2498 * [r4407] src/winscard_clnt.c: SCardGetStatusChange(): Calling with
2499 cReaders == 0 will now just return SCARD_S_SUCCESS
2500
2501 Use the special reader name "\\?PnP?\Notification" to wait for a
2502 reader event notification
2503 * [r4406] src/pcscd.h.in: remove comment about PCSCLITE_MAX_READERS
2504 * [r4405] src/pcscd.h.in: remove useless PCSCLITE_MAX_THREADS
2505 definition
2506 * [r4404] src/pcscd.h.in: remove useless
2507 PCSCLITE_TRANSACTION_TIMEOUT definition
2508 * [r4403] src/utils.c, src/utils.h, src/winscard.c,
2509 src/winscard_clnt.c: move time_sub() in utils.c
2510 * [r4402] src/pcsc-wirecheck-gen.c, src/pcscd.h.in,
2511 src/winscard_msg.c, src/winscard_msg.h: remove useless
2512 key[PCSCLITE_MSG_KEY_LEN] field
2513
25142009-09-28 Ludovic Rousseau
2515
2516 * [r4400] src/winscard.c: SCardTransmit(): do not limit the minimum
2517 size of an APDU to 4 bytes. non ISO 7816-4 compliant cards (like
2518 Mifare DESFIRE) may use shorter commands
2519
2520 Thanks to Björn Kupfer for the bug report
2521 * [r4399] src/winscard.c: SCardTransmit(): call IFDControl_v2
2522 instead of IFDTransmit only if dwProtocol == SCARD_PROTOCOL_RAW
2523 _and_ ifdhandler is v2.0
2524
2525 Thanks to Björn Kupfer for the patch
2526
25272009-09-23 Ludovic Rousseau
2528
2529 * [r4395] src/winscard_msg.c, src/winscard_msg_srv.c: use the POSIX
2530 name AF_LOCAL instead of AF_UNIX
2531
25322009-09-21 Ludovic Rousseau
2533
2534 * [r4388] src/pcscd.h.in: remove unsuned #define
2535 PCSCLITE_RW_ATTEMPTS
2536
25372009-09-17 Ludovic Rousseau
2538
2539 * [r4387] src/winscard_clnt.c: typo in Doxygen comment
2540
25412009-09-15 Ludovic Rousseau
2542
2543 * [r4386] src/winscard_clnt.c: SCardReleaseContext(),
2544 SCardControl(), SCardTransmit() and SCardListReaders(): add a
2545 call to PROFILE_END() before exiting with SCARD_E_INVALID_HANDLE
2546 error code to have a better profiling output
2547 * [r4385] src/winscard.c:
2548 SCardEstablishContext()/SCardReleaseContext(): log context value
2549 in hexadecimal instead of decimal
2550 * [r4384] src/winscard_msg.c: rename argument blockAmount in
2551 timeOut to better reflect its function
2552
25532009-09-08 Ludovic Rousseau
2554
2555 * [r4378] src/PCSC/reader.h.in: update sruct
2556 PIN_PROPERTIES_STRUCTURE to be conform with Revision 2.02.06,
2557 April 2009 of PCSCv2 part 10
2558
2559 Fields wLcdMaxCharacters and wLcdMaxLines have been removed
2560
25612009-09-01 Ludovic Rousseau
2562
2563 * [r4375] src/pcscdaemon.c: signal_reload(): reenable the signal
2564 handler. This is needed on Solaris and HPUX.
2565
2566 Thanks to Douglas E. Engert for the patch
2567 http://archives.neohapsis.com/archives/dev/muscle/2009-q3/0061.html
2568
25692009-08-31 Ludovic Rousseau
2570
2571 * [r4374] src/ifdwrapper.c, src/winscard.c: typo in comments
2572
25732009-08-28 Ludovic Rousseau
2574
2575 * [r4371] src/hotplug_libhal.c, src/hotplug_libusb.c,
2576 src/hotplug_linux.c, src/pcscdaemon.c: move definition of
2577 usbNotifierMutex in the underlying layers where it is used
2578
25792009-08-27 Ludovic Rousseau
2580
2581 * [r4367] src/ifdwrapper.c: IFDControl(): return
2582 SCARD_E_UNSUPPORTED_FEATURE if the driver returned
2583 IFD_ERROR_NOT_SUPPORTED or IFD_NOT_SUPPORTED
2584
2585 This is used to separate an unsupported value of ControlCode from
2586 a general error
2587
25882009-07-31 Ludovic Rousseau
2589
2590 * [r4359] UnitaryTests/control_switch_interface.py: switch
2591 interface on the GemProx DU
2592 * [r4357] UnitaryTests/control_get_firmware.py: get firmware
2593 version of Gemalto readers
2594
25952009-07-30 Ludovic Rousseau
2596
2597 * [r4354] src/ifdwrapper.c: remove extra spaces at end of line
2598 * [r4353] src/configfile.l: reformat
2599 * [r4352] src/configfile.l: remove extra spaces
2600
12009-07-28 Ludovic Rousseau26012009-07-28 Ludovic Rousseau
22602
3 * [r4349] ChangeLog, configure.in: release 1.5.52603 * [r4349] ChangeLog, configure.in: release 1.5.5
42604
=== modified file 'Makefile.am'
--- Makefile.am 2010-07-10 11:15:59 +0000
+++ Makefile.am 2011-03-12 18:37:00 +0000
@@ -1,4 +1,7 @@
1SUBDIRS = m4 src etc doc1SUBDIRS = m4 src doc
2
3fix-rights:
4 $(MAKE) -C src $@
25
3ACLOCAL_AMFLAGS = -I m46ACLOCAL_AMFLAGS = -I m4
47
58
=== modified file 'Makefile.in'
--- Makefile.in 2010-07-10 11:15:59 +0000
+++ Makefile.in 2011-03-12 18:37:00 +0000
@@ -1,8 +1,9 @@
1# Makefile.in generated by automake 1.10.2 from Makefile.am.1# Makefile.in generated by automake 1.11.1 from Makefile.am.
2# @configure_input@2# @configure_input@
33
4# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,4# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
5# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.5# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
6# Inc.
6# This Makefile.in is free software; the Free Software Foundation7# This Makefile.in is free software; the Free Software Foundation
7# gives unlimited permission to copy and/or distribute it,8# gives unlimited permission to copy and/or distribute it,
8# with or without modifications, as long as this notice is preserved.9# with or without modifications, as long as this notice is preserved.
@@ -15,8 +16,9 @@
15@SET_MAKE@16@SET_MAKE@
16VPATH = @srcdir@17VPATH = @srcdir@
17pkgdatadir = $(datadir)/@PACKAGE@18pkgdatadir = $(datadir)/@PACKAGE@
19pkgincludedir = $(includedir)/@PACKAGE@
18pkglibdir = $(libdir)/@PACKAGE@20pkglibdir = $(libdir)/@PACKAGE@
19pkgincludedir = $(includedir)/@PACKAGE@21pkglibexecdir = $(libexecdir)/@PACKAGE@
20am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd22am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
21install_sh_DATA = $(install_sh) -c -m 64423install_sh_DATA = $(install_sh) -c -m 644
22install_sh_PROGRAM = $(install_sh) -c24install_sh_PROGRAM = $(install_sh) -c
@@ -35,9 +37,9 @@
35DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \37DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
36 $(srcdir)/Makefile.in $(srcdir)/config.h.in \38 $(srcdir)/Makefile.in $(srcdir)/config.h.in \
37 $(top_srcdir)/configure $(top_srcdir)/src/PCSC/pcsclite.h.in \39 $(top_srcdir)/configure $(top_srcdir)/src/PCSC/pcsclite.h.in \
38 $(top_srcdir)/src/PCSC/reader.h.in AUTHORS COPYING ChangeLog \40 AUTHORS COPYING ChangeLog INSTALL NEWS TODO compile \
39 INSTALL NEWS TODO compile config.guess config.sub depcomp \41 config.guess config.sub depcomp install-sh ltmain.sh missing \
40 install-sh ltmain.sh missing ylwrap42 ylwrap
41ACLOCAL_M4 = $(top_srcdir)/aclocal.m443ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
42am__aclocal_m4_deps = $(top_srcdir)/m4/acx_pthread.m4 \44am__aclocal_m4_deps = $(top_srcdir)/m4/acx_pthread.m4 \
43 $(top_srcdir)/m4/as-ac-expand.m4 $(top_srcdir)/m4/libtool.m4 \45 $(top_srcdir)/m4/as-ac-expand.m4 $(top_srcdir)/m4/libtool.m4 \
@@ -50,7 +52,8 @@
50 configure.lineno config.status.lineno52 configure.lineno config.status.lineno
51mkinstalldirs = $(install_sh) -d53mkinstalldirs = $(install_sh) -d
52CONFIG_HEADER = config.h54CONFIG_HEADER = config.h
53CONFIG_CLEAN_FILES = src/PCSC/pcsclite.h src/PCSC/reader.h55CONFIG_CLEAN_FILES = src/PCSC/pcsclite.h
56CONFIG_CLEAN_VPATH_FILES =
54SOURCES =57SOURCES =
55DIST_SOURCES =58DIST_SOURCES =
56RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \59RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -62,6 +65,9 @@
62 ps-recursive uninstall-recursive65 ps-recursive uninstall-recursive
63RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \66RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
64 distclean-recursive maintainer-clean-recursive67 distclean-recursive maintainer-clean-recursive
68AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
69 $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
70 distdir dist dist-all distcheck
65ETAGS = etags71ETAGS = etags
66CTAGS = ctags72CTAGS = ctags
67DIST_SUBDIRS = $(SUBDIRS)73DIST_SUBDIRS = $(SUBDIRS)
@@ -69,9 +75,34 @@
69distdir = $(PACKAGE)-$(VERSION)75distdir = $(PACKAGE)-$(VERSION)
70top_distdir = $(distdir)76top_distdir = $(distdir)
71am__remove_distdir = \77am__remove_distdir = \
72 { test ! -d $(distdir) \78 { test ! -d "$(distdir)" \
73 || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \79 || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
74 && rm -fr $(distdir); }; }80 && rm -fr "$(distdir)"; }; }
81am__relativize = \
82 dir0=`pwd`; \
83 sed_first='s,^\([^/]*\)/.*$$,\1,'; \
84 sed_rest='s,^[^/]*/*,,'; \
85 sed_last='s,^.*/\([^/]*\)$$,\1,'; \
86 sed_butlast='s,/*[^/]*$$,,'; \
87 while test -n "$$dir1"; do \
88 first=`echo "$$dir1" | sed -e "$$sed_first"`; \
89 if test "$$first" != "."; then \
90 if test "$$first" = ".."; then \
91 dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
92 dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
93 else \
94 first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
95 if test "$$first2" = "$$first"; then \
96 dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
97 else \
98 dir2="../$$dir2"; \
99 fi; \
100 dir0="$$dir0"/"$$first"; \
101 fi; \
102 fi; \
103 dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
104 done; \
105 reldir="$$dir2"
75GZIP_ENV = --best106GZIP_ENV = --best
76DIST_ARCHIVES = $(distdir).tar.bz2107DIST_ARCHIVES = $(distdir).tar.bz2
77distuninstallcheck_listfiles = find . -type f -print108distuninstallcheck_listfiles = find . -type f -print
@@ -117,7 +148,6 @@
117LIBHAL_LIBS = @LIBHAL_LIBS@148LIBHAL_LIBS = @LIBHAL_LIBS@
118LIBOBJS = @LIBOBJS@149LIBOBJS = @LIBOBJS@
119LIBS = @LIBS@150LIBS = @LIBS@
120LIBSMARTCARD = @LIBSMARTCARD@
121LIBTOOL = @LIBTOOL@151LIBTOOL = @LIBTOOL@
122LIBUSBCONFIG = @LIBUSBCONFIG@152LIBUSBCONFIG = @LIBUSBCONFIG@
123LIBUSB_CFLAGS = @LIBUSB_CFLAGS@153LIBUSB_CFLAGS = @LIBUSB_CFLAGS@
@@ -139,9 +169,13 @@
139PACKAGE_NAME = @PACKAGE_NAME@169PACKAGE_NAME = @PACKAGE_NAME@
140PACKAGE_STRING = @PACKAGE_STRING@170PACKAGE_STRING = @PACKAGE_STRING@
141PACKAGE_TARNAME = @PACKAGE_TARNAME@171PACKAGE_TARNAME = @PACKAGE_TARNAME@
172PACKAGE_URL = @PACKAGE_URL@
142PACKAGE_VERSION = @PACKAGE_VERSION@173PACKAGE_VERSION = @PACKAGE_VERSION@
143PATH_SEPARATOR = @PATH_SEPARATOR@174PATH_SEPARATOR = @PATH_SEPARATOR@
175PCSCLITE_CONFIG_DIR = @PCSCLITE_CONFIG_DIR@
144PKG_CONFIG = @PKG_CONFIG@176PKG_CONFIG = @PKG_CONFIG@
177PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
178PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
145PTHREAD_CC = @PTHREAD_CC@179PTHREAD_CC = @PTHREAD_CC@
146PTHREAD_CFLAGS = @PTHREAD_CFLAGS@180PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
147PTHREAD_LIBS = @PTHREAD_LIBS@181PTHREAD_LIBS = @PTHREAD_LIBS@
@@ -171,7 +205,6 @@
171build_os = @build_os@205build_os = @build_os@
172build_vendor = @build_vendor@206build_vendor = @build_vendor@
173builddir = @builddir@207builddir = @builddir@
174confdir = @confdir@
175confdir_exp = @confdir_exp@208confdir_exp = @confdir_exp@
176datadir = @datadir@209datadir = @datadir@
177datarootdir = @datarootdir@210datarootdir = @datarootdir@
@@ -208,13 +241,13 @@
208sharedstatedir = @sharedstatedir@241sharedstatedir = @sharedstatedir@
209srcdir = @srcdir@242srcdir = @srcdir@
210sysconfdir = @sysconfdir@243sysconfdir = @sysconfdir@
211sysconfdir_exp = @sysconfdir_exp@
212target_alias = @target_alias@244target_alias = @target_alias@
213top_build_prefix = @top_build_prefix@245top_build_prefix = @top_build_prefix@
214top_builddir = @top_builddir@246top_builddir = @top_builddir@
215top_srcdir = @top_srcdir@247top_srcdir = @top_srcdir@
216usbdropdir = @usbdropdir@248usbdropdir = @usbdropdir@
217SUBDIRS = m4 src etc doc249usbdropdir_exp = @usbdropdir_exp@
250SUBDIRS = m4 src doc
218ACLOCAL_AMFLAGS = -I m4251ACLOCAL_AMFLAGS = -I m4
219EXTRA_DIST = DRIVERS SECURITY bootstrap HELP ChangeLog.svn252EXTRA_DIST = DRIVERS SECURITY bootstrap HELP ChangeLog.svn
220DISTCLEANFILES = ChangeLog.svn253DISTCLEANFILES = ChangeLog.svn
@@ -228,15 +261,15 @@
228 @for dep in $?; do \261 @for dep in $?; do \
229 case '$(am__configure_deps)' in \262 case '$(am__configure_deps)' in \
230 *$$dep*) \263 *$$dep*) \
231 echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \264 echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
232 cd $(srcdir) && $(AUTOMAKE) --gnu \265 $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
233 && exit 0; \266 && exit 0; \
234 exit 1;; \267 exit 1;; \
235 esac; \268 esac; \
236 done; \269 done; \
237 echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \270 echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
238 cd $(top_srcdir) && \271 $(am__cd) $(top_srcdir) && \
239 $(AUTOMAKE) --gnu Makefile272 $(AUTOMAKE) --gnu Makefile
240.PRECIOUS: Makefile273.PRECIOUS: Makefile
241Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status274Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
242 @case '$?' in \275 @case '$?' in \
@@ -252,9 +285,10 @@
252 $(SHELL) ./config.status --recheck285 $(SHELL) ./config.status --recheck
253286
254$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)287$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
255 cd $(srcdir) && $(AUTOCONF)288 $(am__cd) $(srcdir) && $(AUTOCONF)
256$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)289$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
257 cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)290 $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
291$(am__aclocal_m4_deps):
258292
259config.h: stamp-h1293config.h: stamp-h1
260 @if test ! -f $@; then \294 @if test ! -f $@; then \
@@ -266,7 +300,7 @@
266 @rm -f stamp-h1300 @rm -f stamp-h1
267 cd $(top_builddir) && $(SHELL) ./config.status config.h301 cd $(top_builddir) && $(SHELL) ./config.status config.h
268$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 302$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
269 cd $(top_srcdir) && $(AUTOHEADER)303 ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
270 rm -f stamp-h1304 rm -f stamp-h1
271 touch $@305 touch $@
272306
@@ -274,8 +308,6 @@
274 -rm -f config.h stamp-h1308 -rm -f config.h stamp-h1
275src/PCSC/pcsclite.h: $(top_builddir)/config.status $(top_srcdir)/src/PCSC/pcsclite.h.in309src/PCSC/pcsclite.h: $(top_builddir)/config.status $(top_srcdir)/src/PCSC/pcsclite.h.in
276 cd $(top_builddir) && $(SHELL) ./config.status $@310 cd $(top_builddir) && $(SHELL) ./config.status $@
277src/PCSC/reader.h: $(top_builddir)/config.status $(top_srcdir)/src/PCSC/reader.h.in
278 cd $(top_builddir) && $(SHELL) ./config.status $@
279311
280mostlyclean-libtool:312mostlyclean-libtool:
281 -rm -f *.lo313 -rm -f *.lo
@@ -293,7 +325,7 @@
293# (which will cause the Makefiles to be regenerated when you run `make');325# (which will cause the Makefiles to be regenerated when you run `make');
294# (2) otherwise, pass the desired values on the `make' command line.326# (2) otherwise, pass the desired values on the `make' command line.
295$(RECURSIVE_TARGETS):327$(RECURSIVE_TARGETS):
296 @failcom='exit 1'; \328 @fail= failcom='exit 1'; \
297 for f in x $$MAKEFLAGS; do \329 for f in x $$MAKEFLAGS; do \
298 case $$f in \330 case $$f in \
299 *=* | --[!k]*);; \331 *=* | --[!k]*);; \
@@ -310,7 +342,7 @@
310 else \342 else \
311 local_target="$$target"; \343 local_target="$$target"; \
312 fi; \344 fi; \
313 (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \345 ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
314 || eval $$failcom; \346 || eval $$failcom; \
315 done; \347 done; \
316 if test "$$dot_seen" = "no"; then \348 if test "$$dot_seen" = "no"; then \
@@ -318,7 +350,7 @@
318 fi; test -z "$$fail"350 fi; test -z "$$fail"
319351
320$(RECURSIVE_CLEAN_TARGETS):352$(RECURSIVE_CLEAN_TARGETS):
321 @failcom='exit 1'; \353 @fail= failcom='exit 1'; \
322 for f in x $$MAKEFLAGS; do \354 for f in x $$MAKEFLAGS; do \
323 case $$f in \355 case $$f in \
324 *=* | --[!k]*);; \356 *=* | --[!k]*);; \
@@ -344,16 +376,16 @@
344 else \376 else \
345 local_target="$$target"; \377 local_target="$$target"; \
346 fi; \378 fi; \
347 (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \379 ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
348 || eval $$failcom; \380 || eval $$failcom; \
349 done && test -z "$$fail"381 done && test -z "$$fail"
350tags-recursive:382tags-recursive:
351 list='$(SUBDIRS)'; for subdir in $$list; do \383 list='$(SUBDIRS)'; for subdir in $$list; do \
352 test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \384 test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
353 done385 done
354ctags-recursive:386ctags-recursive:
355 list='$(SUBDIRS)'; for subdir in $$list; do \387 list='$(SUBDIRS)'; for subdir in $$list; do \
356 test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \388 test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
357 done389 done
358390
359ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)391ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -368,7 +400,7 @@
368400
369TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \401TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
370 $(TAGS_FILES) $(LISP)402 $(TAGS_FILES) $(LISP)
371 tags=; \403 set x; \
372 here=`pwd`; \404 here=`pwd`; \
373 if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \405 if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
374 include_option=--etags-include; \406 include_option=--etags-include; \
@@ -380,7 +412,7 @@
380 list='$(SUBDIRS)'; for subdir in $$list; do \412 list='$(SUBDIRS)'; for subdir in $$list; do \
381 if test "$$subdir" = .; then :; else \413 if test "$$subdir" = .; then :; else \
382 test ! -f $$subdir/TAGS || \414 test ! -f $$subdir/TAGS || \
383 tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \415 set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
384 fi; \416 fi; \
385 done; \417 done; \
386 list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \418 list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
@@ -389,36 +421,41 @@
389 done | \421 done | \
390 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \422 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
391 END { if (nonempty) { for (i in files) print i; }; }'`; \423 END { if (nonempty) { for (i in files) print i; }; }'`; \
392 if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \424 shift; \
425 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
393 test -n "$$unique" || unique=$$empty_fix; \426 test -n "$$unique" || unique=$$empty_fix; \
394 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \427 if test $$# -gt 0; then \
395 $$tags $$unique; \428 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
429 "$$@" $$unique; \
430 else \
431 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
432 $$unique; \
433 fi; \
396 fi434 fi
397ctags: CTAGS435ctags: CTAGS
398CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \436CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
399 $(TAGS_FILES) $(LISP)437 $(TAGS_FILES) $(LISP)
400 tags=; \
401 list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \438 list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
402 unique=`for i in $$list; do \439 unique=`for i in $$list; do \
403 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \440 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
404 done | \441 done | \
405 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \442 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
406 END { if (nonempty) { for (i in files) print i; }; }'`; \443 END { if (nonempty) { for (i in files) print i; }; }'`; \
407 test -z "$(CTAGS_ARGS)$$tags$$unique" \444 test -z "$(CTAGS_ARGS)$$unique" \
408 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \445 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
409 $$tags $$unique446 $$unique
410447
411GTAGS:448GTAGS:
412 here=`$(am__cd) $(top_builddir) && pwd` \449 here=`$(am__cd) $(top_builddir) && pwd` \
413 && cd $(top_srcdir) \450 && $(am__cd) $(top_srcdir) \
414 && gtags -i $(GTAGS_ARGS) $$here451 && gtags -i $(GTAGS_ARGS) "$$here"
415452
416distclean-tags:453distclean-tags:
417 -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags454 -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
418455
419distdir: $(DISTFILES)456distdir: $(DISTFILES)
420 $(am__remove_distdir)457 $(am__remove_distdir)
421 test -d $(distdir) || mkdir $(distdir)458 test -d "$(distdir)" || mkdir "$(distdir)"
422 @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \459 @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
423 topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \460 topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
424 list='$(DISTFILES)'; \461 list='$(DISTFILES)'; \
@@ -434,38 +471,55 @@
434 if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \471 if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
435 if test -d $$d/$$file; then \472 if test -d $$d/$$file; then \
436 dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \473 dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
474 if test -d "$(distdir)/$$file"; then \
475 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
476 fi; \
437 if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \477 if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
438 cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \478 cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
479 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
439 fi; \480 fi; \
440 cp -pR $$d/$$file $(distdir)$$dir || exit 1; \481 cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
441 else \482 else \
442 test -f $(distdir)/$$file \483 test -f "$(distdir)/$$file" \
443 || cp -p $$d/$$file $(distdir)/$$file \484 || cp -p $$d/$$file "$(distdir)/$$file" \
444 || exit 1; \485 || exit 1; \
445 fi; \486 fi; \
446 done487 done
447 list='$(DIST_SUBDIRS)'; for subdir in $$list; do \488 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
448 if test "$$subdir" = .; then :; else \489 if test "$$subdir" = .; then :; else \
449 test -d "$(distdir)/$$subdir" \490 test -d "$(distdir)/$$subdir" \
450 || $(MKDIR_P) "$(distdir)/$$subdir" \491 || $(MKDIR_P) "$(distdir)/$$subdir" \
451 || exit 1; \492 || exit 1; \
452 distdir=`$(am__cd) $(distdir) && pwd`; \493 fi; \
453 top_distdir=`$(am__cd) $(top_distdir) && pwd`; \494 done
454 (cd $$subdir && \495 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
496 if test "$$subdir" = .; then :; else \
497 dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
498 $(am__relativize); \
499 new_distdir=$$reldir; \
500 dir1=$$subdir; dir2="$(top_distdir)"; \
501 $(am__relativize); \
502 new_top_distdir=$$reldir; \
503 echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
504 echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
505 ($(am__cd) $$subdir && \
455 $(MAKE) $(AM_MAKEFLAGS) \506 $(MAKE) $(AM_MAKEFLAGS) \
456 top_distdir="$$top_distdir" \507 top_distdir="$$new_top_distdir" \
457 distdir="$$distdir/$$subdir" \508 distdir="$$new_distdir" \
458 am__remove_distdir=: \509 am__remove_distdir=: \
459 am__skip_length_check=: \510 am__skip_length_check=: \
511 am__skip_mode_fix=: \
460 distdir) \512 distdir) \
461 || exit 1; \513 || exit 1; \
462 fi; \514 fi; \
463 done515 done
464 -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \516 -test -n "$(am__skip_mode_fix)" \
517 || find "$(distdir)" -type d ! -perm -755 \
518 -exec chmod u+rwx,go+rx {} \; -o \
465 ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \519 ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
466 ! -type d ! -perm -400 -exec chmod a+r {} \; -o \520 ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
467 ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \521 ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
468 || chmod -R a+r $(distdir)522 || chmod -R a+r "$(distdir)"
469dist-gzip: distdir523dist-gzip: distdir
470 tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz524 tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
471 $(am__remove_distdir)525 $(am__remove_distdir)
@@ -477,6 +531,10 @@
477 tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma531 tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
478 $(am__remove_distdir)532 $(am__remove_distdir)
479533
534dist-xz: distdir
535 tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
536 $(am__remove_distdir)
537
480dist-tarZ: distdir538dist-tarZ: distdir
481 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z539 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
482 $(am__remove_distdir)540 $(am__remove_distdir)
@@ -500,15 +558,17 @@
500distcheck: dist558distcheck: dist
501 case '$(DIST_ARCHIVES)' in \559 case '$(DIST_ARCHIVES)' in \
502 *.tar.gz*) \560 *.tar.gz*) \
503 GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\561 GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
504 *.tar.bz2*) \562 *.tar.bz2*) \
505 bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\563 bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
506 *.tar.lzma*) \564 *.tar.lzma*) \
507 unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\565 lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
566 *.tar.xz*) \
567 xz -dc $(distdir).tar.xz | $(am__untar) ;;\
508 *.tar.Z*) \568 *.tar.Z*) \
509 uncompress -c $(distdir).tar.Z | $(am__untar) ;;\569 uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
510 *.shar.gz*) \570 *.shar.gz*) \
511 GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\571 GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
512 *.zip*) \572 *.zip*) \
513 unzip $(distdir).zip ;;\573 unzip $(distdir).zip ;;\
514 esac574 esac
@@ -516,9 +576,11 @@
516 mkdir $(distdir)/_build576 mkdir $(distdir)/_build
517 mkdir $(distdir)/_inst577 mkdir $(distdir)/_inst
518 chmod a-w $(distdir)578 chmod a-w $(distdir)
579 test -d $(distdir)/_build || exit 0; \
519 dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \580 dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
520 && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \581 && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
521 && cd $(distdir)/_build \582 && am__cwd=`pwd` \
583 && $(am__cd) $(distdir)/_build \
522 && ../configure --srcdir=.. --prefix="$$dc_install_base" \584 && ../configure --srcdir=.. --prefix="$$dc_install_base" \
523 $(DISTCHECK_CONFIGURE_FLAGS) \585 $(DISTCHECK_CONFIGURE_FLAGS) \
524 && $(MAKE) $(AM_MAKEFLAGS) \586 && $(MAKE) $(AM_MAKEFLAGS) \
@@ -540,13 +602,15 @@
540 && rm -rf "$$dc_destdir" \602 && rm -rf "$$dc_destdir" \
541 && $(MAKE) $(AM_MAKEFLAGS) dist \603 && $(MAKE) $(AM_MAKEFLAGS) dist \
542 && rm -rf $(DIST_ARCHIVES) \604 && rm -rf $(DIST_ARCHIVES) \
543 && $(MAKE) $(AM_MAKEFLAGS) distcleancheck605 && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
606 && cd "$$am__cwd" \
607 || exit 1
544 $(am__remove_distdir)608 $(am__remove_distdir)
545 @(echo "$(distdir) archives ready for distribution: "; \609 @(echo "$(distdir) archives ready for distribution: "; \
546 list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \610 list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
547 sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'611 sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
548distuninstallcheck:612distuninstallcheck:
549 @cd $(distuninstallcheck_dir) \613 @$(am__cd) '$(distuninstallcheck_dir)' \
550 && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \614 && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
551 || { echo "ERROR: files left after uninstall:" ; \615 || { echo "ERROR: files left after uninstall:" ; \
552 if test -n "$(DESTDIR)"; then \616 if test -n "$(DESTDIR)"; then \
@@ -588,6 +652,7 @@
588652
589distclean-generic:653distclean-generic:
590 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)654 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
655 -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
591 -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)656 -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
592657
593maintainer-clean-generic:658maintainer-clean-generic:
@@ -609,6 +674,8 @@
609674
610html: html-recursive675html: html-recursive
611676
677html-am:
678
612info: info-recursive679info: info-recursive
613680
614info-am:681info-am:
@@ -617,18 +684,28 @@
617684
618install-dvi: install-dvi-recursive685install-dvi: install-dvi-recursive
619686
687install-dvi-am:
688
620install-exec-am:689install-exec-am:
621690
622install-html: install-html-recursive691install-html: install-html-recursive
623692
693install-html-am:
694
624install-info: install-info-recursive695install-info: install-info-recursive
625696
697install-info-am:
698
626install-man:699install-man:
627700
628install-pdf: install-pdf-recursive701install-pdf: install-pdf-recursive
629702
703install-pdf-am:
704
630install-ps: install-ps-recursive705install-ps: install-ps-recursive
631706
707install-ps-am:
708
632installcheck-am:709installcheck-am:
633710
634maintainer-clean: maintainer-clean-recursive711maintainer-clean: maintainer-clean-recursive
@@ -651,25 +728,28 @@
651728
652uninstall-am:729uninstall-am:
653730
654.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \731.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
655 install-strip732 ctags-recursive install-am install-strip tags-recursive
656733
657.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \734.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
658 all all-am am--refresh check check-am clean clean-generic \735 all all-am am--refresh check check-am clean clean-generic \
659 clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \736 clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
660 dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \737 dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
661 distclean distclean-generic distclean-hdr distclean-libtool \738 distcheck distclean distclean-generic distclean-hdr \
662 distclean-tags distcleancheck distdir distuninstallcheck dvi \739 distclean-libtool distclean-tags distcleancheck distdir \
663 dvi-am html html-am info info-am install install-am \740 distuninstallcheck dvi dvi-am html html-am info info-am \
664 install-data install-data-am install-dvi install-dvi-am \741 install install-am install-data install-data-am install-dvi \
665 install-exec install-exec-am install-html install-html-am \742 install-dvi-am install-exec install-exec-am install-html \
666 install-info install-info-am install-man install-pdf \743 install-html-am install-info install-info-am install-man \
667 install-pdf-am install-ps install-ps-am install-strip \744 install-pdf install-pdf-am install-ps install-ps-am \
668 installcheck installcheck-am installdirs installdirs-am \745 install-strip installcheck installcheck-am installdirs \
669 maintainer-clean maintainer-clean-generic mostlyclean \746 installdirs-am maintainer-clean maintainer-clean-generic \
670 mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \747 mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
671 tags tags-recursive uninstall uninstall-am748 ps ps-am tags tags-recursive uninstall uninstall-am
672749
750
751fix-rights:
752 $(MAKE) -C src $@
673753
674ChangeLog.svn:754ChangeLog.svn:
675 -svn2cl --group-by-day --stdout --include-rev --reparagraph | perl -pe \755 -svn2cl --group-by-day --stdout --include-rev --reparagraph | perl -pe \
@@ -683,6 +763,7 @@
683 s/ aet-guest/ Antti Tapaninen/; \763 s/ aet-guest/ Antti Tapaninen/; \
684 s/ sauveron-guest/ Damien Sauveron/; \764 s/ sauveron-guest/ Damien Sauveron/; \
685 s+trunk/PCSC/++g;' > $@765 s+trunk/PCSC/++g;' > $@
766
686# Tell versions [3.59,3.63) of GNU make to not export all variables.767# Tell versions [3.59,3.63) of GNU make to not export all variables.
687# Otherwise a system limit (for SysV at least) may be exceeded.768# Otherwise a system limit (for SysV at least) may be exceeded.
688.NOEXPORT:769.NOEXPORT:
689770
=== modified file 'TODO'
--- TODO 2009-06-02 16:58:01 +0000
+++ TODO 2011-03-12 18:37:00 +0000
@@ -1,10 +1,5 @@
1- include Apple patches and improvements (if possible/needed)1- include Apple patches and improvements (if possible/needed)
22
3- power on the card _only_ if an application requests a connection
4 see Alioth bug #301965
5 That could be implemented by polling the reader only if an application
6 requests it.
7
8- allow to have pcscd and libpcsclite on two different machines.3- allow to have pcscd and libpcsclite on two different machines.
9 That would be needed to support remote PAM login.4 That would be needed to support remote PAM login.
10 Maybe use unix2tcp (http://dizzy.roedu.net/unix2tcp/)5 Maybe use unix2tcp (http://dizzy.roedu.net/unix2tcp/)
@@ -25,4 +20,9 @@
25 mode.20 mode.
26 http://www.opensc-project.org/pipermail/opensc-devel/2009-February/011801.html21 http://www.opensc-project.org/pipermail/opensc-devel/2009-February/011801.html
2722
28February 200923
24For embedded/constrained systems
25
26- use static driver instead of reader polling and dynamic driver loading
27
28October 2010
2929
=== modified file 'aclocal.m4'
--- aclocal.m4 2010-07-10 11:15:59 +0000
+++ aclocal.m4 2011-03-12 18:37:00 +0000
@@ -1,7 +1,7 @@
1# generated automatically by aclocal 1.10.2 -*- Autoconf -*-1# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
22
3# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,3# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
4# 2005, 2006, 2007, 2008 Free Software Foundation, Inc.4# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
5# This file is free software; the Free Software Foundation5# This file is free software; the Free Software Foundation
6# gives unlimited permission to copy and/or distribute it,6# gives unlimited permission to copy and/or distribute it,
7# with or without modifications, as long as this notice is preserved.7# with or without modifications, as long as this notice is preserved.
@@ -13,13 +13,14 @@
1313
14m4_ifndef([AC_AUTOCONF_VERSION],14m4_ifndef([AC_AUTOCONF_VERSION],
15 [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl15 [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
16m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],,16m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.67],,
17[m4_warning([this file was generated for autoconf 2.63.17[m4_warning([this file was generated for autoconf 2.67.
18You have another version of autoconf. It may work, but is not guaranteed to.18You have another version of autoconf. It may work, but is not guaranteed to.
19If you have problems, you may need to regenerate the build system entirely.19If you have problems, you may need to regenerate the build system entirely.
20To do so, use the procedure documented by the package, typically `autoreconf'.])])20To do so, use the procedure documented by the package, typically `autoreconf'.])])
2121
22# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-22# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
23# serial 1 (pkg-config-0.24)
23# 24#
24# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.25# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
25#26#
@@ -47,7 +48,10 @@
47AC_DEFUN([PKG_PROG_PKG_CONFIG],48AC_DEFUN([PKG_PROG_PKG_CONFIG],
48[m4_pattern_forbid([^_?PKG_[A-Z_]+$])49[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
49m4_pattern_allow([^PKG_CONFIG(_PATH)?$])50m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
50AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl51AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
52AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
53AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
54
51if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then55if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
52 AC_PATH_TOOL([PKG_CONFIG], [pkg-config])56 AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
53fi57fi
@@ -60,7 +64,6 @@
60 AC_MSG_RESULT([no])64 AC_MSG_RESULT([no])
61 PKG_CONFIG=""65 PKG_CONFIG=""
62 fi66 fi
63
64fi[]dnl67fi[]dnl
65])# PKG_PROG_PKG_CONFIG68])# PKG_PROG_PKG_CONFIG
6669
@@ -69,34 +72,31 @@
69# Check to see whether a particular set of modules exists. Similar72# Check to see whether a particular set of modules exists. Similar
70# to PKG_CHECK_MODULES(), but does not set variables or print errors.73# to PKG_CHECK_MODULES(), but does not set variables or print errors.
71#74#
72#75# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
73# Similar to PKG_CHECK_MODULES, make sure that the first instance of76# only at the first occurence in configure.ac, so if the first place
74# this or PKG_CHECK_MODULES is called, or make sure to call77# it's called might be skipped (such as if it is within an "if", you
75# PKG_CHECK_EXISTS manually78# have to call PKG_CHECK_EXISTS manually
76# --------------------------------------------------------------79# --------------------------------------------------------------
77AC_DEFUN([PKG_CHECK_EXISTS],80AC_DEFUN([PKG_CHECK_EXISTS],
78[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl81[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
79if test -n "$PKG_CONFIG" && \82if test -n "$PKG_CONFIG" && \
80 AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then83 AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
81 m4_ifval([$2], [$2], [:])84 m4_default([$2], [:])
82m4_ifvaln([$3], [else85m4_ifvaln([$3], [else
83 $3])dnl86 $3])dnl
84fi])87fi])
8588
86
87# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])89# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
88# ---------------------------------------------90# ---------------------------------------------
89m4_define([_PKG_CONFIG],91m4_define([_PKG_CONFIG],
90[if test -n "$PKG_CONFIG"; then92[if test -n "$$1"; then
91 if test -n "$$1"; then93 pkg_cv_[]$1="$$1"
92 pkg_cv_[]$1="$$1"94 elif test -n "$PKG_CONFIG"; then
93 else95 PKG_CHECK_EXISTS([$3],
94 PKG_CHECK_EXISTS([$3],96 [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
95 [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],97 [pkg_failed=yes])
96 [pkg_failed=yes])98 else
97 fi99 pkg_failed=untried
98else
99 pkg_failed=untried
100fi[]dnl100fi[]dnl
101])# _PKG_CONFIG101])# _PKG_CONFIG
102102
@@ -138,16 +138,17 @@
138See the pkg-config man page for more details.])138See the pkg-config man page for more details.])
139139
140if test $pkg_failed = yes; then140if test $pkg_failed = yes; then
141 AC_MSG_RESULT([no])
141 _PKG_SHORT_ERRORS_SUPPORTED142 _PKG_SHORT_ERRORS_SUPPORTED
142 if test $_pkg_short_errors_supported = yes; then143 if test $_pkg_short_errors_supported = yes; then
143 $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"`144 $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1`
144 else 145 else
145 $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`146 $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1`
146 fi147 fi
147 # Put the nasty error message in config.log where it belongs148 # Put the nasty error message in config.log where it belongs
148 echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD149 echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
149150
150 ifelse([$4], , [AC_MSG_ERROR(dnl151 m4_default([$4], [AC_MSG_ERROR(
151[Package requirements ($2) were not met:152[Package requirements ($2) were not met:
152153
153$$1_PKG_ERRORS154$$1_PKG_ERRORS
@@ -155,25 +156,24 @@
155Consider adjusting the PKG_CONFIG_PATH environment variable if you156Consider adjusting the PKG_CONFIG_PATH environment variable if you
156installed software in a non-standard prefix.157installed software in a non-standard prefix.
157158
158_PKG_TEXT159_PKG_TEXT])[]dnl
159])],160 ])
160 [AC_MSG_RESULT([no])
161 $4])
162elif test $pkg_failed = untried; then161elif test $pkg_failed = untried; then
163 ifelse([$4], , [AC_MSG_FAILURE(dnl162 AC_MSG_RESULT([no])
163 m4_default([$4], [AC_MSG_FAILURE(
164[The pkg-config script could not be found or is too old. Make sure it164[The pkg-config script could not be found or is too old. Make sure it
165is in your PATH or set the PKG_CONFIG environment variable to the full165is in your PATH or set the PKG_CONFIG environment variable to the full
166path to pkg-config.166path to pkg-config.
167167
168_PKG_TEXT168_PKG_TEXT
169169
170To get pkg-config, see <http://pkg-config.freedesktop.org/>.])],170To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
171 [$4])171 ])
172else172else
173 $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS173 $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
174 $1[]_LIBS=$pkg_cv_[]$1[]_LIBS174 $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
175 AC_MSG_RESULT([yes])175 AC_MSG_RESULT([yes])
176 ifelse([$3], , :, [$3])176 $3
177fi[]dnl177fi[]dnl
178])# PKG_CHECK_MODULES178])# PKG_CHECK_MODULES
179179
@@ -189,10 +189,10 @@
189# generated from the m4 files accompanying Automake X.Y.189# generated from the m4 files accompanying Automake X.Y.
190# (This private macro should not be called outside this file.)190# (This private macro should not be called outside this file.)
191AC_DEFUN([AM_AUTOMAKE_VERSION],191AC_DEFUN([AM_AUTOMAKE_VERSION],
192[am__api_version='1.10'192[am__api_version='1.11'
193dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to193dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
194dnl require some minimum version. Point them to the right macro.194dnl require some minimum version. Point them to the right macro.
195m4_if([$1], [1.10.2], [],195m4_if([$1], [1.11.1], [],
196 [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl196 [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
197])197])
198198
@@ -208,7 +208,7 @@
208# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.208# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
209# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.209# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
210AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],210AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
211[AM_AUTOMAKE_VERSION([1.10.2])dnl211[AM_AUTOMAKE_VERSION([1.11.1])dnl
212m4_ifndef([AC_AUTOCONF_VERSION],212m4_ifndef([AC_AUTOCONF_VERSION],
213 [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl213 [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
214_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])214_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
@@ -268,14 +268,14 @@
268268
269# AM_CONDITIONAL -*- Autoconf -*-269# AM_CONDITIONAL -*- Autoconf -*-
270270
271# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006271# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
272# Free Software Foundation, Inc.272# Free Software Foundation, Inc.
273#273#
274# This file is free software; the Free Software Foundation274# This file is free software; the Free Software Foundation
275# gives unlimited permission to copy and/or distribute it,275# gives unlimited permission to copy and/or distribute it,
276# with or without modifications, as long as this notice is preserved.276# with or without modifications, as long as this notice is preserved.
277277
278# serial 8278# serial 9
279279
280# AM_CONDITIONAL(NAME, SHELL-CONDITION)280# AM_CONDITIONAL(NAME, SHELL-CONDITION)
281# -------------------------------------281# -------------------------------------
@@ -288,6 +288,7 @@
288AC_SUBST([$1_FALSE])dnl288AC_SUBST([$1_FALSE])dnl
289_AM_SUBST_NOTMAKE([$1_TRUE])dnl289_AM_SUBST_NOTMAKE([$1_TRUE])dnl
290_AM_SUBST_NOTMAKE([$1_FALSE])dnl290_AM_SUBST_NOTMAKE([$1_FALSE])dnl
291m4_define([_AM_COND_VALUE_$1], [$2])dnl
291if $2; then292if $2; then
292 $1_TRUE=293 $1_TRUE=
293 $1_FALSE='#'294 $1_FALSE='#'
@@ -301,14 +302,14 @@
301Usually this means the macro was only invoked conditionally.]])302Usually this means the macro was only invoked conditionally.]])
302fi])])303fi])])
303304
304# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006305# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
305# Free Software Foundation, Inc.306# Free Software Foundation, Inc.
306#307#
307# This file is free software; the Free Software Foundation308# This file is free software; the Free Software Foundation
308# gives unlimited permission to copy and/or distribute it,309# gives unlimited permission to copy and/or distribute it,
309# with or without modifications, as long as this notice is preserved.310# with or without modifications, as long as this notice is preserved.
310311
311# serial 9312# serial 10
312313
313# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be314# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
314# written in clear, in which case automake, when reading aclocal.m4,315# written in clear, in which case automake, when reading aclocal.m4,
@@ -365,6 +366,16 @@
365 if test "$am_compiler_list" = ""; then366 if test "$am_compiler_list" = ""; then
366 am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`367 am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
367 fi368 fi
369 am__universal=false
370 m4_case([$1], [CC],
371 [case " $depcc " in #(
372 *\ -arch\ *\ -arch\ *) am__universal=true ;;
373 esac],
374 [CXX],
375 [case " $depcc " in #(
376 *\ -arch\ *\ -arch\ *) am__universal=true ;;
377 esac])
378
368 for depmode in $am_compiler_list; do379 for depmode in $am_compiler_list; do
369 # Setup a source with many dependencies, because some compilers380 # Setup a source with many dependencies, because some compilers
370 # like to wrap large dependency lists on column 80 (with \), and381 # like to wrap large dependency lists on column 80 (with \), and
@@ -382,7 +393,17 @@
382 done393 done
383 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf394 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
384395
396 # We check with `-c' and `-o' for the sake of the "dashmstdout"
397 # mode. It turns out that the SunPro C++ compiler does not properly
398 # handle `-M -o', and we need to detect this. Also, some Intel
399 # versions had trouble with output in subdirs
400 am__obj=sub/conftest.${OBJEXT-o}
401 am__minus_obj="-o $am__obj"
385 case $depmode in402 case $depmode in
403 gcc)
404 # This depmode causes a compiler race in universal mode.
405 test "$am__universal" = false || continue
406 ;;
386 nosideeffect)407 nosideeffect)
387 # after this tag, mechanisms are not by side-effect, so they'll408 # after this tag, mechanisms are not by side-effect, so they'll
388 # only be used when explicitly requested409 # only be used when explicitly requested
@@ -392,19 +413,23 @@
392 break413 break
393 fi414 fi
394 ;;415 ;;
416 msvisualcpp | msvcmsys)
417 # This compiler won't grok `-c -o', but also, the minuso test has
418 # not run yet. These depmodes are late enough in the game, and
419 # so weak that their functioning should not be impacted.
420 am__obj=conftest.${OBJEXT-o}
421 am__minus_obj=
422 ;;
395 none) break ;;423 none) break ;;
396 esac424 esac
397 # We check with `-c' and `-o' for the sake of the "dashmstdout"
398 # mode. It turns out that the SunPro C++ compiler does not properly
399 # handle `-M -o', and we need to detect this.
400 if depmode=$depmode \425 if depmode=$depmode \
401 source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \426 source=sub/conftest.c object=$am__obj \
402 depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \427 depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
403 $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \428 $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
404 >/dev/null 2>conftest.err &&429 >/dev/null 2>conftest.err &&
405 grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&430 grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
406 grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&431 grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
407 grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&432 grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
408 ${MAKE-make} -s -f confmf > /dev/null 2>&1; then433 ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
409 # icc doesn't choke on unknown options, it will just issue warnings434 # icc doesn't choke on unknown options, it will just issue warnings
410 # or remarks (even with -Werror). So we grep stderr for any message435 # or remarks (even with -Werror). So we grep stderr for any message
@@ -468,59 +493,61 @@
468# gives unlimited permission to copy and/or distribute it,493# gives unlimited permission to copy and/or distribute it,
469# with or without modifications, as long as this notice is preserved.494# with or without modifications, as long as this notice is preserved.
470495
471#serial 4496#serial 5
472497
473# _AM_OUTPUT_DEPENDENCY_COMMANDS498# _AM_OUTPUT_DEPENDENCY_COMMANDS
474# ------------------------------499# ------------------------------
475AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],500AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
476[# Autoconf 2.62 quotes --file arguments for eval, but not when files501[{
477# are listed without --file. Let's play safe and only enable the eval502 # Autoconf 2.62 quotes --file arguments for eval, but not when files
478# if we detect the quoting.503 # are listed without --file. Let's play safe and only enable the eval
479case $CONFIG_FILES in504 # if we detect the quoting.
480*\'*) eval set x "$CONFIG_FILES" ;;505 case $CONFIG_FILES in
481*) set x $CONFIG_FILES ;;506 *\'*) eval set x "$CONFIG_FILES" ;;
482esac507 *) set x $CONFIG_FILES ;;
483shift508 esac
484for mf509 shift
485do510 for mf
486 # Strip MF so we end up with the name of the file.511 do
487 mf=`echo "$mf" | sed -e 's/:.*$//'`512 # Strip MF so we end up with the name of the file.
488 # Check whether this is an Automake generated Makefile or not.513 mf=`echo "$mf" | sed -e 's/:.*$//'`
489 # We used to match only the files named `Makefile.in', but514 # Check whether this is an Automake generated Makefile or not.
490 # some people rename them; so instead we look at the file content.515 # We used to match only the files named `Makefile.in', but
491 # Grep'ing the first line is not enough: some people post-process516 # some people rename them; so instead we look at the file content.
492 # each Makefile.in and add a new line on top of each file to say so.517 # Grep'ing the first line is not enough: some people post-process
493 # Grep'ing the whole file is not good either: AIX grep has a line518 # each Makefile.in and add a new line on top of each file to say so.
494 # limit of 2048, but all sed's we know have understand at least 4000.519 # Grep'ing the whole file is not good either: AIX grep has a line
495 if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then520 # limit of 2048, but all sed's we know have understand at least 4000.
496 dirpart=`AS_DIRNAME("$mf")`521 if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
497 else522 dirpart=`AS_DIRNAME("$mf")`
498 continue523 else
499 fi524 continue
500 # Extract the definition of DEPDIR, am__include, and am__quote525 fi
501 # from the Makefile without running `make'.526 # Extract the definition of DEPDIR, am__include, and am__quote
502 DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`527 # from the Makefile without running `make'.
503 test -z "$DEPDIR" && continue528 DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
504 am__include=`sed -n 's/^am__include = //p' < "$mf"`529 test -z "$DEPDIR" && continue
505 test -z "am__include" && continue530 am__include=`sed -n 's/^am__include = //p' < "$mf"`
506 am__quote=`sed -n 's/^am__quote = //p' < "$mf"`531 test -z "am__include" && continue
507 # When using ansi2knr, U may be empty or an underscore; expand it532 am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
508 U=`sed -n 's/^U = //p' < "$mf"`533 # When using ansi2knr, U may be empty or an underscore; expand it
509 # Find all dependency output files, they are included files with534 U=`sed -n 's/^U = //p' < "$mf"`
510 # $(DEPDIR) in their names. We invoke sed twice because it is the535 # Find all dependency output files, they are included files with
511 # simplest approach to changing $(DEPDIR) to its actual value in the536 # $(DEPDIR) in their names. We invoke sed twice because it is the
512 # expansion.537 # simplest approach to changing $(DEPDIR) to its actual value in the
513 for file in `sed -n "538 # expansion.
514 s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \539 for file in `sed -n "
515 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do540 s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
516 # Make sure the directory exists.541 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
517 test -f "$dirpart/$file" && continue542 # Make sure the directory exists.
518 fdir=`AS_DIRNAME(["$file"])`543 test -f "$dirpart/$file" && continue
519 AS_MKDIR_P([$dirpart/$fdir])544 fdir=`AS_DIRNAME(["$file"])`
520 # echo "creating $dirpart/$file"545 AS_MKDIR_P([$dirpart/$fdir])
521 echo '# dummy' > "$dirpart/$file"546 # echo "creating $dirpart/$file"
547 echo '# dummy' > "$dirpart/$file"
548 done
522 done549 done
523done550}
524])# _AM_OUTPUT_DEPENDENCY_COMMANDS551])# _AM_OUTPUT_DEPENDENCY_COMMANDS
525552
526553
@@ -552,13 +579,13 @@
552# Do all the work for Automake. -*- Autoconf -*-579# Do all the work for Automake. -*- Autoconf -*-
553580
554# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,581# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
555# 2005, 2006, 2008 Free Software Foundation, Inc.582# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
556#583#
557# This file is free software; the Free Software Foundation584# This file is free software; the Free Software Foundation
558# gives unlimited permission to copy and/or distribute it,585# gives unlimited permission to copy and/or distribute it,
559# with or without modifications, as long as this notice is preserved.586# with or without modifications, as long as this notice is preserved.
560587
561# serial 13588# serial 16
562589
563# This macro actually does too much. Some checks are only needed if590# This macro actually does too much. Some checks are only needed if
564# your package does certain things. But this isn't really a big deal.591# your package does certain things. But this isn't really a big deal.
@@ -575,7 +602,7 @@
575# arguments mandatory, and then we can depend on a new Autoconf602# arguments mandatory, and then we can depend on a new Autoconf
576# release and drop the old call support.603# release and drop the old call support.
577AC_DEFUN([AM_INIT_AUTOMAKE],604AC_DEFUN([AM_INIT_AUTOMAKE],
578[AC_PREREQ([2.60])dnl605[AC_PREREQ([2.62])dnl
579dnl Autoconf wants to disallow AM_ names. We explicitly allow606dnl Autoconf wants to disallow AM_ names. We explicitly allow
580dnl the ones we care about.607dnl the ones we care about.
581m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl608m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
@@ -626,8 +653,8 @@
626AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})653AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
627AM_MISSING_PROG(AUTOHEADER, autoheader)654AM_MISSING_PROG(AUTOHEADER, autoheader)
628AM_MISSING_PROG(MAKEINFO, makeinfo)655AM_MISSING_PROG(MAKEINFO, makeinfo)
629AM_PROG_INSTALL_SH656AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
630AM_PROG_INSTALL_STRIP657AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
631AC_REQUIRE([AM_PROG_MKDIR_P])dnl658AC_REQUIRE([AM_PROG_MKDIR_P])dnl
632# We need awk for the "check" target. The system "awk" is bad on659# We need awk for the "check" target. The system "awk" is bad on
633# some platforms.660# some platforms.
@@ -635,23 +662,36 @@
635AC_REQUIRE([AC_PROG_MAKE_SET])dnl662AC_REQUIRE([AC_PROG_MAKE_SET])dnl
636AC_REQUIRE([AM_SET_LEADING_DOT])dnl663AC_REQUIRE([AM_SET_LEADING_DOT])dnl
637_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],664_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
638 [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],665 [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
639 [_AM_PROG_TAR([v7])])])666 [_AM_PROG_TAR([v7])])])
640_AM_IF_OPTION([no-dependencies],,667_AM_IF_OPTION([no-dependencies],,
641[AC_PROVIDE_IFELSE([AC_PROG_CC],668[AC_PROVIDE_IFELSE([AC_PROG_CC],
642 [_AM_DEPENDENCIES(CC)],669 [_AM_DEPENDENCIES(CC)],
643 [define([AC_PROG_CC],670 [define([AC_PROG_CC],
644 defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl671 defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
645AC_PROVIDE_IFELSE([AC_PROG_CXX],672AC_PROVIDE_IFELSE([AC_PROG_CXX],
646 [_AM_DEPENDENCIES(CXX)],673 [_AM_DEPENDENCIES(CXX)],
647 [define([AC_PROG_CXX],674 [define([AC_PROG_CXX],
648 defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl675 defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
649AC_PROVIDE_IFELSE([AC_PROG_OBJC],676AC_PROVIDE_IFELSE([AC_PROG_OBJC],
650 [_AM_DEPENDENCIES(OBJC)],677 [_AM_DEPENDENCIES(OBJC)],
651 [define([AC_PROG_OBJC],678 [define([AC_PROG_OBJC],
652 defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl679 defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
653])680])
654])681_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
682dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
683dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
684dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
685AC_CONFIG_COMMANDS_PRE(dnl
686[m4_provide_if([_AM_COMPILER_EXEEXT],
687 [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
688])
689
690dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
691dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
692dnl mangled by Autoconf and run in a shell conditional statement.
693m4_define([_AC_COMPILER_EXEEXT],
694m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
655695
656696
657# When config.status generates a header, we must update the stamp-h file.697# When config.status generates a header, we must update the stamp-h file.
@@ -675,7 +715,7 @@
675done715done
676echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])716echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
677717
678# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.718# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
679#719#
680# This file is free software; the Free Software Foundation720# This file is free software; the Free Software Foundation
681# gives unlimited permission to copy and/or distribute it,721# gives unlimited permission to copy and/or distribute it,
@@ -686,7 +726,14 @@
686# Define $install_sh.726# Define $install_sh.
687AC_DEFUN([AM_PROG_INSTALL_SH],727AC_DEFUN([AM_PROG_INSTALL_SH],
688[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl728[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
689install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}729if test x"${install_sh}" != xset; then
730 case $am_aux_dir in
731 *\ * | *\ *)
732 install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
733 *)
734 install_sh="\${SHELL} $am_aux_dir/install-sh"
735 esac
736fi
690AC_SUBST(install_sh)])737AC_SUBST(install_sh)])
691738
692# Copyright (C) 2003, 2005 Free Software Foundation, Inc.739# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
@@ -734,27 +781,38 @@
734# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-781# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
735# From Jim Meyering782# From Jim Meyering
736783
737# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005784# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008
738# Free Software Foundation, Inc.785# Free Software Foundation, Inc.
739#786#
740# This file is free software; the Free Software Foundation787# This file is free software; the Free Software Foundation
741# gives unlimited permission to copy and/or distribute it,788# gives unlimited permission to copy and/or distribute it,
742# with or without modifications, as long as this notice is preserved.789# with or without modifications, as long as this notice is preserved.
743790
744# serial 4791# serial 5
745792
793# AM_MAINTAINER_MODE([DEFAULT-MODE])
794# ----------------------------------
795# Control maintainer-specific portions of Makefiles.
796# Default is to disable them, unless `enable' is passed literally.
797# For symmetry, `disable' may be passed as well. Anyway, the user
798# can override the default with the --enable/--disable switch.
746AC_DEFUN([AM_MAINTAINER_MODE],799AC_DEFUN([AM_MAINTAINER_MODE],
747[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])800[m4_case(m4_default([$1], [disable]),
748 dnl maintainer-mode is disabled by default801 [enable], [m4_define([am_maintainer_other], [disable])],
749 AC_ARG_ENABLE(maintainer-mode,802 [disable], [m4_define([am_maintainer_other], [enable])],
750[ --enable-maintainer-mode enable make rules and dependencies not useful803 [m4_define([am_maintainer_other], [enable])
804 m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
805AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
806 dnl maintainer-mode's default is 'disable' unless 'enable' is passed
807 AC_ARG_ENABLE([maintainer-mode],
808[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful
751 (and sometimes confusing) to the casual installer],809 (and sometimes confusing) to the casual installer],
752 USE_MAINTAINER_MODE=$enableval,810 [USE_MAINTAINER_MODE=$enableval],
753 USE_MAINTAINER_MODE=no)811 [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
754 AC_MSG_RESULT([$USE_MAINTAINER_MODE])812 AC_MSG_RESULT([$USE_MAINTAINER_MODE])
755 AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])813 AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
756 MAINT=$MAINTAINER_MODE_TRUE814 MAINT=$MAINTAINER_MODE_TRUE
757 AC_SUBST(MAINT)dnl815 AC_SUBST([MAINT])dnl
758]816]
759)817)
760818
@@ -762,13 +820,13 @@
762820
763# Check to see how 'make' treats includes. -*- Autoconf -*-821# Check to see how 'make' treats includes. -*- Autoconf -*-
764822
765# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.823# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
766#824#
767# This file is free software; the Free Software Foundation825# This file is free software; the Free Software Foundation
768# gives unlimited permission to copy and/or distribute it,826# gives unlimited permission to copy and/or distribute it,
769# with or without modifications, as long as this notice is preserved.827# with or without modifications, as long as this notice is preserved.
770828
771# serial 3829# serial 4
772830
773# AM_MAKE_INCLUDE()831# AM_MAKE_INCLUDE()
774# -----------------832# -----------------
@@ -777,7 +835,7 @@
777[am_make=${MAKE-make}835[am_make=${MAKE-make}
778cat > confinc << 'END'836cat > confinc << 'END'
779am__doit:837am__doit:
780 @echo done838 @echo this is the am__doit target
781.PHONY: am__doit839.PHONY: am__doit
782END840END
783# If we don't find an include directive, just comment out the code.841# If we don't find an include directive, just comment out the code.
@@ -787,24 +845,24 @@
787_am_result=none845_am_result=none
788# First try GNU make style include.846# First try GNU make style include.
789echo "include confinc" > confmf847echo "include confinc" > confmf
790# We grep out `Entering directory' and `Leaving directory'848# Ignore all kinds of additional output from `make'.
791# messages which can occur if `w' ends up in MAKEFLAGS.849case `$am_make -s -f confmf 2> /dev/null` in #(
792# In particular we don't look at `^make:' because GNU make might850*the\ am__doit\ target*)
793# be invoked under some other name (usually "gmake"), in which851 am__include=include
794# case it prints its new name instead of `make'.852 am__quote=
795if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then853 _am_result=GNU
796 am__include=include854 ;;
797 am__quote=855esac
798 _am_result=GNU
799fi
800# Now try BSD make style include.856# Now try BSD make style include.
801if test "$am__include" = "#"; then857if test "$am__include" = "#"; then
802 echo '.include "confinc"' > confmf858 echo '.include "confinc"' > confmf
803 if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then859 case `$am_make -s -f confmf 2> /dev/null` in #(
804 am__include=.include860 *the\ am__doit\ target*)
805 am__quote="\""861 am__include=.include
806 _am_result=BSD862 am__quote="\""
807 fi863 _am_result=BSD
864 ;;
865 esac
808fi866fi
809AC_SUBST([am__include])867AC_SUBST([am__include])
810AC_SUBST([am__quote])868AC_SUBST([am__quote])
@@ -849,14 +907,14 @@
849907
850# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-908# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
851909
852# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005910# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
853# Free Software Foundation, Inc.911# Free Software Foundation, Inc.
854#912#
855# This file is free software; the Free Software Foundation913# This file is free software; the Free Software Foundation
856# gives unlimited permission to copy and/or distribute it,914# gives unlimited permission to copy and/or distribute it,
857# with or without modifications, as long as this notice is preserved.915# with or without modifications, as long as this notice is preserved.
858916
859# serial 5917# serial 6
860918
861# AM_MISSING_PROG(NAME, PROGRAM)919# AM_MISSING_PROG(NAME, PROGRAM)
862# ------------------------------920# ------------------------------
@@ -873,7 +931,14 @@
873AC_DEFUN([AM_MISSING_HAS_RUN],931AC_DEFUN([AM_MISSING_HAS_RUN],
874[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl932[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
875AC_REQUIRE_AUX_FILE([missing])dnl933AC_REQUIRE_AUX_FILE([missing])dnl
876test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"934if test x"${MISSING+set}" != xset; then
935 case $am_aux_dir in
936 *\ * | *\ *)
937 MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
938 *)
939 MISSING="\${SHELL} $am_aux_dir/missing" ;;
940 esac
941fi
877# Use eval to expand $SHELL942# Use eval to expand $SHELL
878if eval "$MISSING --run true"; then943if eval "$MISSING --run true"; then
879 am_missing_run="$MISSING --run "944 am_missing_run="$MISSING --run "
@@ -944,14 +1009,14 @@
9441009
945# Check to make sure that the build environment is sane. -*- Autoconf -*-1010# Check to make sure that the build environment is sane. -*- Autoconf -*-
9461011
947# Copyright (C) 1996, 1997, 2000, 2001, 2003, 20051012# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
948# Free Software Foundation, Inc.1013# Free Software Foundation, Inc.
949#1014#
950# This file is free software; the Free Software Foundation1015# This file is free software; the Free Software Foundation
951# gives unlimited permission to copy and/or distribute it,1016# gives unlimited permission to copy and/or distribute it,
952# with or without modifications, as long as this notice is preserved.1017# with or without modifications, as long as this notice is preserved.
9531018
954# serial 41019# serial 5
9551020
956# AM_SANITY_CHECK1021# AM_SANITY_CHECK
957# ---------------1022# ---------------
@@ -960,16 +1025,29 @@
960# Just in case1025# Just in case
961sleep 11026sleep 1
962echo timestamp > conftest.file1027echo timestamp > conftest.file
1028# Reject unsafe characters in $srcdir or the absolute working directory
1029# name. Accept space and tab only in the latter.
1030am_lf='
1031'
1032case `pwd` in
1033 *[[\\\"\#\$\&\'\`$am_lf]]*)
1034 AC_MSG_ERROR([unsafe absolute working directory name]);;
1035esac
1036case $srcdir in
1037 *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
1038 AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
1039esac
1040
963# Do `set' in a subshell so we don't clobber the current shell's1041# Do `set' in a subshell so we don't clobber the current shell's
964# arguments. Must try -L first in case configure is actually a1042# arguments. Must try -L first in case configure is actually a
965# symlink; some systems play weird games with the mod time of symlinks1043# symlink; some systems play weird games with the mod time of symlinks
966# (eg FreeBSD returns the mod time of the symlink's containing1044# (eg FreeBSD returns the mod time of the symlink's containing
967# directory).1045# directory).
968if (1046if (
969 set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`1047 set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
970 if test "$[*]" = "X"; then1048 if test "$[*]" = "X"; then
971 # -L didn't work.1049 # -L didn't work.
972 set X `ls -t $srcdir/configure conftest.file`1050 set X `ls -t "$srcdir/configure" conftest.file`
973 fi1051 fi
974 rm -f conftest.file1052 rm -f conftest.file
975 if test "$[*]" != "X $srcdir/configure conftest.file" \1053 if test "$[*]" != "X $srcdir/configure conftest.file" \
@@ -1022,18 +1100,25 @@
1022INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"1100INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
1023AC_SUBST([INSTALL_STRIP_PROGRAM])])1101AC_SUBST([INSTALL_STRIP_PROGRAM])])
10241102
1025# Copyright (C) 2006 Free Software Foundation, Inc.1103# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
1026#1104#
1027# This file is free software; the Free Software Foundation1105# This file is free software; the Free Software Foundation
1028# gives unlimited permission to copy and/or distribute it,1106# gives unlimited permission to copy and/or distribute it,
1029# with or without modifications, as long as this notice is preserved.1107# with or without modifications, as long as this notice is preserved.
10301108
1109# serial 2
1110
1031# _AM_SUBST_NOTMAKE(VARIABLE)1111# _AM_SUBST_NOTMAKE(VARIABLE)
1032# ---------------------------1112# ---------------------------
1033# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.1113# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
1034# This macro is traced by Automake.1114# This macro is traced by Automake.
1035AC_DEFUN([_AM_SUBST_NOTMAKE])1115AC_DEFUN([_AM_SUBST_NOTMAKE])
10361116
1117# AM_SUBST_NOTMAKE(VARIABLE)
1118# ---------------------------
1119# Public sister of _AM_SUBST_NOTMAKE.
1120AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
1121
1037# Check how to create a tarball. -*- Autoconf -*-1122# Check how to create a tarball. -*- Autoconf -*-
10381123
1039# Copyright (C) 2004, 2005 Free Software Foundation, Inc.1124# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
10401125
=== modified file 'bootstrap'
--- bootstrap 2008-07-12 13:34:52 +0000
+++ bootstrap 2011-03-12 18:37:00 +0000
@@ -1,9 +1,9 @@
1#!/bin/sh1#!/bin/sh
22
3# I use3# I use
4# - autoconf (GNU Autoconf) 2.594# - autoconf (GNU Autoconf) 2.64
5# - automake (GNU automake) 1.7.95# - automake (GNU automake) 1.11
6# - libtool (GNU libtool) 1.5.6 (1.1220.2.95 2004/04/11 05:50:42)6# - libtool (GNU libtool) 2.2.6
77
8set -e8set -e
9set -x9set -x
1010
=== modified file 'config.guess'
--- config.guess 2010-07-10 11:15:59 +0000
+++ config.guess 2011-03-12 18:37:00 +0000
@@ -1,10 +1,10 @@
1#! /bin/sh1#! /bin/sh
2# Attempt to guess a canonical system name.2# Attempt to guess a canonical system name.
3# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,3# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 20084# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
5# Free Software Foundation, Inc.5# Free Software Foundation, Inc.
66
7timestamp='2009-04-27'7timestamp='2009-12-30'
88
9# This file is free software; you can redistribute it and/or modify it9# This file is free software; you can redistribute it and/or modify it
10# under the terms of the GNU General Public License as published by10# under the terms of the GNU General Public License as published by
@@ -27,16 +27,16 @@
27# the same distribution terms that you use for the rest of that program.27# the same distribution terms that you use for the rest of that program.
2828
2929
30# Originally written by Per Bothner <per@bothner.com>.30# Originally written by Per Bothner. Please send patches (context
31# Please send patches to <config-patches@gnu.org>. Submit a context31# diff format) to <config-patches@gnu.org> and include a ChangeLog
32# diff and a properly formatted ChangeLog entry.32# entry.
33#33#
34# This script attempts to guess a canonical system name similar to34# This script attempts to guess a canonical system name similar to
35# config.sub. If it succeeds, it prints the system name on stdout, and35# config.sub. If it succeeds, it prints the system name on stdout, and
36# exits with 0. Otherwise, it exits with 1.36# exits with 0. Otherwise, it exits with 1.
37#37#
38# The plan is that this can be called by configure scripts if you38# You can get the latest version of this script from:
39# don't specify an explicit build system type.39# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
4040
41me=`echo "$0" | sed -e 's,.*/,,'`41me=`echo "$0" | sed -e 's,.*/,,'`
4242
@@ -56,8 +56,9 @@
56GNU config.guess ($timestamp)56GNU config.guess ($timestamp)
5757
58Originally written by Per Bothner.58Originally written by Per Bothner.
59Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,59Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
602002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.602001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
61Software Foundation, Inc.
6162
62This is free software; see the source for copying conditions. There is NO63This is free software; see the source for copying conditions. There is NO
63warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."64warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -170,7 +171,7 @@
170 arm*|i386|m68k|ns32k|sh3*|sparc|vax)171 arm*|i386|m68k|ns32k|sh3*|sparc|vax)
171 eval $set_cc_for_build172 eval $set_cc_for_build
172 if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \173 if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
173 | grep __ELF__ >/dev/null174 | grep -q __ELF__
174 then175 then
175 # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).176 # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
176 # Return netbsd for either. FIX?177 # Return netbsd for either. FIX?
@@ -333,6 +334,9 @@
333 sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)334 sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
334 echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`335 echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
335 exit ;;336 exit ;;
337 i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
338 echo i386-pc-auroraux${UNAME_RELEASE}
339 exit ;;
336 i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)340 i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
337 eval $set_cc_for_build341 eval $set_cc_for_build
338 SUN_ARCH="i386"342 SUN_ARCH="i386"
@@ -656,7 +660,7 @@
656 # => hppa64-hp-hpux11.23660 # => hppa64-hp-hpux11.23
657661
658 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |662 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
659 grep __LP64__ >/dev/null663 grep -q __LP64__
660 then664 then
661 HP_ARCH="hppa2.0w"665 HP_ARCH="hppa2.0w"
662 else666 else
@@ -807,12 +811,12 @@
807 i*:PW*:*)811 i*:PW*:*)
808 echo ${UNAME_MACHINE}-pc-pw32812 echo ${UNAME_MACHINE}-pc-pw32
809 exit ;;813 exit ;;
810 *:Interix*:[3456]*)814 *:Interix*:*)
811 case ${UNAME_MACHINE} in815 case ${UNAME_MACHINE} in
812 x86)816 x86)
813 echo i586-pc-interix${UNAME_RELEASE}817 echo i586-pc-interix${UNAME_RELEASE}
814 exit ;;818 exit ;;
815 EM64T | authenticamd | genuineintel)819 authenticamd | genuineintel | EM64T)
816 echo x86_64-unknown-interix${UNAME_RELEASE}820 echo x86_64-unknown-interix${UNAME_RELEASE}
817 exit ;;821 exit ;;
818 IA64)822 IA64)
@@ -822,6 +826,9 @@
822 [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)826 [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
823 echo i${UNAME_MACHINE}-pc-mks827 echo i${UNAME_MACHINE}-pc-mks
824 exit ;;828 exit ;;
829 8664:Windows_NT:*)
830 echo x86_64-pc-mks
831 exit ;;
825 i*:Windows_NT*:* | Pentium*:Windows_NT*:*)832 i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
826 # How do we know it's Interix rather than the generic POSIX subsystem?833 # How do we know it's Interix rather than the generic POSIX subsystem?
827 # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we834 # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
@@ -851,6 +858,20 @@
851 i*86:Minix:*:*)858 i*86:Minix:*:*)
852 echo ${UNAME_MACHINE}-pc-minix859 echo ${UNAME_MACHINE}-pc-minix
853 exit ;;860 exit ;;
861 alpha:Linux:*:*)
862 case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
863 EV5) UNAME_MACHINE=alphaev5 ;;
864 EV56) UNAME_MACHINE=alphaev56 ;;
865 PCA56) UNAME_MACHINE=alphapca56 ;;
866 PCA57) UNAME_MACHINE=alphapca56 ;;
867 EV6) UNAME_MACHINE=alphaev6 ;;
868 EV67) UNAME_MACHINE=alphaev67 ;;
869 EV68*) UNAME_MACHINE=alphaev68 ;;
870 esac
871 objdump --private-headers /bin/sh | grep -q ld.so.1
872 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
873 echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
874 exit ;;
854 arm*:Linux:*:*)875 arm*:Linux:*:*)
855 eval $set_cc_for_build876 eval $set_cc_for_build
856 if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \877 if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
@@ -873,6 +894,17 @@
873 frv:Linux:*:*)894 frv:Linux:*:*)
874 echo frv-unknown-linux-gnu895 echo frv-unknown-linux-gnu
875 exit ;;896 exit ;;
897 i*86:Linux:*:*)
898 LIBC=gnu
899 eval $set_cc_for_build
900 sed 's/^ //' << EOF >$dummy.c
901 #ifdef __dietlibc__
902 LIBC=dietlibc
903 #endif
904EOF
905 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
906 echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
907 exit ;;
876 ia64:Linux:*:*)908 ia64:Linux:*:*)
877 echo ${UNAME_MACHINE}-unknown-linux-gnu909 echo ${UNAME_MACHINE}-unknown-linux-gnu
878 exit ;;910 exit ;;
@@ -882,78 +914,34 @@
882 m68*:Linux:*:*)914 m68*:Linux:*:*)
883 echo ${UNAME_MACHINE}-unknown-linux-gnu915 echo ${UNAME_MACHINE}-unknown-linux-gnu
884 exit ;;916 exit ;;
885 mips:Linux:*:*)917 mips:Linux:*:* | mips64:Linux:*:*)
886 eval $set_cc_for_build918 eval $set_cc_for_build
887 sed 's/^ //' << EOF >$dummy.c919 sed 's/^ //' << EOF >$dummy.c
888 #undef CPU920 #undef CPU
889 #undef mips921 #undef ${UNAME_MACHINE}
890 #undef mipsel922 #undef ${UNAME_MACHINE}el
891 #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)923 #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
892 CPU=mipsel924 CPU=${UNAME_MACHINE}el
893 #else925 #else
894 #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)926 #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
895 CPU=mips927 CPU=${UNAME_MACHINE}
896 #else928 #else
897 CPU=929 CPU=
898 #endif930 #endif
899 #endif931 #endif
900EOF932EOF
901 eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '933 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
902 /^CPU/{
903 s: ::g
904 p
905 }'`"
906 test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
907 ;;
908 mips64:Linux:*:*)
909 eval $set_cc_for_build
910 sed 's/^ //' << EOF >$dummy.c
911 #undef CPU
912 #undef mips64
913 #undef mips64el
914 #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
915 CPU=mips64el
916 #else
917 #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
918 CPU=mips64
919 #else
920 CPU=
921 #endif
922 #endif
923EOF
924 eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
925 /^CPU/{
926 s: ::g
927 p
928 }'`"
929 test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }934 test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
930 ;;935 ;;
931 or32:Linux:*:*)936 or32:Linux:*:*)
932 echo or32-unknown-linux-gnu937 echo or32-unknown-linux-gnu
933 exit ;;938 exit ;;
934 ppc:Linux:*:*)
935 echo powerpc-unknown-linux-gnu
936 exit ;;
937 ppc64:Linux:*:*)
938 echo powerpc64-unknown-linux-gnu
939 exit ;;
940 alpha:Linux:*:*)
941 case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
942 EV5) UNAME_MACHINE=alphaev5 ;;
943 EV56) UNAME_MACHINE=alphaev56 ;;
944 PCA56) UNAME_MACHINE=alphapca56 ;;
945 PCA57) UNAME_MACHINE=alphapca56 ;;
946 EV6) UNAME_MACHINE=alphaev6 ;;
947 EV67) UNAME_MACHINE=alphaev67 ;;
948 EV68*) UNAME_MACHINE=alphaev68 ;;
949 esac
950 objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
951 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
952 echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
953 exit ;;
954 padre:Linux:*:*)939 padre:Linux:*:*)
955 echo sparc-unknown-linux-gnu940 echo sparc-unknown-linux-gnu
956 exit ;;941 exit ;;
942 parisc64:Linux:*:* | hppa64:Linux:*:*)
943 echo hppa64-unknown-linux-gnu
944 exit ;;
957 parisc:Linux:*:* | hppa:Linux:*:*)945 parisc:Linux:*:* | hppa:Linux:*:*)
958 # Look for CPU level946 # Look for CPU level
959 case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in947 case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
@@ -962,8 +950,11 @@
962 *) echo hppa-unknown-linux-gnu ;;950 *) echo hppa-unknown-linux-gnu ;;
963 esac951 esac
964 exit ;;952 exit ;;
965 parisc64:Linux:*:* | hppa64:Linux:*:*)953 ppc64:Linux:*:*)
966 echo hppa64-unknown-linux-gnu954 echo powerpc64-unknown-linux-gnu
955 exit ;;
956 ppc:Linux:*:*)
957 echo powerpc-unknown-linux-gnu
967 exit ;;958 exit ;;
968 s390:Linux:*:* | s390x:Linux:*:*)959 s390:Linux:*:* | s390x:Linux:*:*)
969 echo ${UNAME_MACHINE}-ibm-linux960 echo ${UNAME_MACHINE}-ibm-linux
@@ -986,66 +977,6 @@
986 xtensa*:Linux:*:*)977 xtensa*:Linux:*:*)
987 echo ${UNAME_MACHINE}-unknown-linux-gnu978 echo ${UNAME_MACHINE}-unknown-linux-gnu
988 exit ;;979 exit ;;
989 i*86:Linux:*:*)
990 # The BFD linker knows what the default object file format is, so
991 # first see if it will tell us. cd to the root directory to prevent
992 # problems with other programs or directories called `ld' in the path.
993 # Set LC_ALL=C to ensure ld outputs messages in English.
994 ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
995 | sed -ne '/supported targets:/!d
996 s/[ ][ ]*/ /g
997 s/.*supported targets: *//
998 s/ .*//
999 p'`
1000 case "$ld_supported_targets" in
1001 elf32-i386)
1002 TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
1003 ;;
1004 a.out-i386-linux)
1005 echo "${UNAME_MACHINE}-pc-linux-gnuaout"
1006 exit ;;
1007 "")
1008 # Either a pre-BFD a.out linker (linux-gnuoldld) or
1009 # one that does not give us useful --help.
1010 echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
1011 exit ;;
1012 esac
1013 # Determine whether the default compiler is a.out or elf
1014 eval $set_cc_for_build
1015 sed 's/^ //' << EOF >$dummy.c
1016 #include <features.h>
1017 #ifdef __ELF__
1018 # ifdef __GLIBC__
1019 # if __GLIBC__ >= 2
1020 LIBC=gnu
1021 # else
1022 LIBC=gnulibc1
1023 # endif
1024 # else
1025 LIBC=gnulibc1
1026 # endif
1027 #else
1028 #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
1029 LIBC=gnu
1030 #else
1031 LIBC=gnuaout
1032 #endif
1033 #endif
1034 #ifdef __dietlibc__
1035 LIBC=dietlibc
1036 #endif
1037EOF
1038 eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
1039 /^LIBC/{
1040 s: ::g
1041 p
1042 }'`"
1043 test x"${LIBC}" != x && {
1044 echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
1045 exit
1046 }
1047 test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
1048 ;;
1049 i*86:DYNIX/ptx:4*:*)980 i*86:DYNIX/ptx:4*:*)
1050 # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.981 # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
1051 # earlier versions are messed up and put the nodename in both982 # earlier versions are messed up and put the nodename in both
@@ -1074,7 +1005,7 @@
1074 i*86:syllable:*:*)1005 i*86:syllable:*:*)
1075 echo ${UNAME_MACHINE}-pc-syllable1006 echo ${UNAME_MACHINE}-pc-syllable
1076 exit ;;1007 exit ;;
1077 i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)1008 i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
1078 echo i386-unknown-lynxos${UNAME_RELEASE}1009 echo i386-unknown-lynxos${UNAME_RELEASE}
1079 exit ;;1010 exit ;;
1080 i*86:*DOS:*:*)1011 i*86:*DOS:*:*)
@@ -1182,7 +1113,7 @@
1182 rs6000:LynxOS:2.*:*)1113 rs6000:LynxOS:2.*:*)
1183 echo rs6000-unknown-lynxos${UNAME_RELEASE}1114 echo rs6000-unknown-lynxos${UNAME_RELEASE}
1184 exit ;;1115 exit ;;
1185 PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)1116 PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
1186 echo powerpc-unknown-lynxos${UNAME_RELEASE}1117 echo powerpc-unknown-lynxos${UNAME_RELEASE}
1187 exit ;;1118 exit ;;
1188 SM[BE]S:UNIX_SV:*:*)1119 SM[BE]S:UNIX_SV:*:*)
@@ -1275,6 +1206,16 @@
1275 *:Darwin:*:*)1206 *:Darwin:*:*)
1276 UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown1207 UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
1277 case $UNAME_PROCESSOR in1208 case $UNAME_PROCESSOR in
1209 i386)
1210 eval $set_cc_for_build
1211 if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
1212 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
1213 (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
1214 grep IS_64BIT_ARCH >/dev/null
1215 then
1216 UNAME_PROCESSOR="x86_64"
1217 fi
1218 fi ;;
1278 unknown) UNAME_PROCESSOR=powerpc ;;1219 unknown) UNAME_PROCESSOR=powerpc ;;
1279 esac1220 esac
1280 echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}1221 echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
12811222
=== modified file 'config.h.in'
--- config.h.in 2010-07-10 11:15:59 +0000
+++ config.h.in 2011-03-12 18:37:00 +0000
@@ -42,6 +42,9 @@
42/* Libusb is available */42/* Libusb is available */
43#undef HAVE_LIBUSB43#undef HAVE_LIBUSB
4444
45/* Define to 1 if you have the <libusb.h> header file. */
46#undef HAVE_LIBUSB_H
47
45/* Define to 1 if you have the <memory.h> header file. */48/* Define to 1 if you have the <memory.h> header file. */
46#undef HAVE_MEMORY_H49#undef HAVE_MEMORY_H
4750
@@ -51,6 +54,9 @@
51/* Define if you have POSIX threads libraries and header files. */54/* Define if you have POSIX threads libraries and header files. */
52#undef HAVE_PTHREAD55#undef HAVE_PTHREAD
5356
57/* Define to 1 if you have the `pthread_cancel' function. */
58#undef HAVE_PTHREAD_CANCEL
59
54/* Define to 1 if `stat' has the bug that it succeeds when given the60/* Define to 1 if `stat' has the bug that it succeeds when given the
55 zero-length file name argument. */61 zero-length file name argument. */
56#undef HAVE_STAT_EMPTY_STRING_BUG62#undef HAVE_STAT_EMPTY_STRING_BUG
@@ -94,9 +100,6 @@
94/* Define to 1 if you have the <unistd.h> header file. */100/* Define to 1 if you have the <unistd.h> header file. */
95#undef HAVE_UNISTD_H101#undef HAVE_UNISTD_H
96102
97/* Define to 1 if you have the <usb.h> header file. */
98#undef HAVE_USB_H
99
100/* Define to 1 if you have the `vprintf' function. */103/* Define to 1 if you have the `vprintf' function. */
101#undef HAVE_VPRINTF104#undef HAVE_VPRINTF
102105
@@ -111,6 +114,9 @@
111 */114 */
112#undef LT_OBJDIR115#undef LT_OBJDIR
113116
117/* Disable logging support */
118#undef NO_LOG
119
114/* Define to 1 if your C compiler doesn't accept -c and -o together. */120/* Define to 1 if your C compiler doesn't accept -c and -o together. */
115#undef NO_MINUS_C_MINUS_O121#undef NO_MINUS_C_MINUS_O
116122
@@ -129,9 +135,15 @@
129/* Define to the one symbol short name of this package. */135/* Define to the one symbol short name of this package. */
130#undef PACKAGE_TARNAME136#undef PACKAGE_TARNAME
131137
138/* Define to the home page for this package. */
139#undef PACKAGE_URL
140
132/* Define to the version of this package. */141/* Define to the version of this package. */
133#undef PACKAGE_VERSION142#undef PACKAGE_VERSION
134143
144/* pcscd filename */
145#undef PCSCD_BINARY
146
135/* Enabled PC/SC lite features */147/* Enabled PC/SC lite features */
136#undef PCSCLITE_FEATURES148#undef PCSCLITE_FEATURES
137149
@@ -154,6 +166,12 @@
154/* directory containing IPC files */166/* directory containing IPC files */
155#undef USE_IPCDIR167#undef USE_IPCDIR
156168
169/* Use serial conf file mechanism */
170#undef USE_SERIAL
171
172/* Use USB hotplug mechanism */
173#undef USE_USB
174
157/* Version number of package */175/* Version number of package */
158#undef VERSION176#undef VERSION
159177
160178
=== modified file 'config.sub'
--- config.sub 2010-07-10 11:15:59 +0000
+++ config.sub 2011-03-12 18:37:00 +0000
@@ -1,10 +1,10 @@
1#! /bin/sh1#! /bin/sh
2# Configuration validation subroutine script.2# Configuration validation subroutine script.
3# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,3# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 20084# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
5# Free Software Foundation, Inc.5# Free Software Foundation, Inc.
66
7timestamp='2009-04-17'7timestamp='2010-01-22'
88
9# This file is (in principle) common to ALL GNU software.9# This file is (in principle) common to ALL GNU software.
10# The presence of a machine in this file suggests that SOME GNU software10# The presence of a machine in this file suggests that SOME GNU software
@@ -32,13 +32,16 @@
3232
3333
34# Please send patches to <config-patches@gnu.org>. Submit a context34# Please send patches to <config-patches@gnu.org>. Submit a context
35# diff and a properly formatted ChangeLog entry.35# diff and a properly formatted GNU ChangeLog entry.
36#36#
37# Configuration subroutine to validate and canonicalize a configuration type.37# Configuration subroutine to validate and canonicalize a configuration type.
38# Supply the specified configuration type as an argument.38# Supply the specified configuration type as an argument.
39# If it is invalid, we print an error message on stderr and exit with code 1.39# If it is invalid, we print an error message on stderr and exit with code 1.
40# Otherwise, we print the canonical config type on stdout and succeed.40# Otherwise, we print the canonical config type on stdout and succeed.
4141
42# You can get the latest version of this script from:
43# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
44
42# This file is supposed to be the same for all GNU packages45# This file is supposed to be the same for all GNU packages
43# and recognize all the CPU types, system types and aliases46# and recognize all the CPU types, system types and aliases
44# that are meaningful with *any* GNU software.47# that are meaningful with *any* GNU software.
@@ -72,8 +75,9 @@
72version="\75version="\
73GNU config.sub ($timestamp)76GNU config.sub ($timestamp)
7477
75Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,78Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
762002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.792001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
80Software Foundation, Inc.
7781
78This is free software; see the source for copying conditions. There is NO82This is free software; see the source for copying conditions. There is NO
79warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."83warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -149,10 +153,13 @@
149 -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\153 -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
150 -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \154 -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
151 -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \155 -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
152 -apple | -axis | -knuth | -cray)156 -apple | -axis | -knuth | -cray | -microblaze)
153 os=157 os=
154 basic_machine=$1158 basic_machine=$1
155 ;;159 ;;
160 -bluegene*)
161 os=-cnk
162 ;;
156 -sim | -cisco | -oki | -wec | -winbond)163 -sim | -cisco | -oki | -wec | -winbond)
157 os=164 os=
158 basic_machine=$1165 basic_machine=$1
@@ -281,6 +288,7 @@
281 | pdp10 | pdp11 | pj | pjl \288 | pdp10 | pdp11 | pj | pjl \
282 | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \289 | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
283 | pyramid \290 | pyramid \
291 | rx \
284 | score \292 | score \
285 | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \293 | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
286 | sh64 | sh64le \294 | sh64 | sh64le \
@@ -288,13 +296,14 @@
288 | sparcv8 | sparcv9 | sparcv9b | sparcv9v \296 | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
289 | spu | strongarm \297 | spu | strongarm \
290 | tahoe | thumb | tic4x | tic80 | tron \298 | tahoe | thumb | tic4x | tic80 | tron \
299 | ubicom32 \
291 | v850 | v850e \300 | v850 | v850e \
292 | we32k \301 | we32k \
293 | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \302 | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
294 | z8k | z80)303 | z8k | z80)
295 basic_machine=$basic_machine-unknown304 basic_machine=$basic_machine-unknown
296 ;;305 ;;
297 m6811 | m68hc11 | m6812 | m68hc12)306 m6811 | m68hc11 | m6812 | m68hc12 | picochip)
298 # Motorola 68HC11/12.307 # Motorola 68HC11/12.
299 basic_machine=$basic_machine-unknown308 basic_machine=$basic_machine-unknown
300 os=-none309 os=-none
@@ -337,7 +346,7 @@
337 | lm32-* \346 | lm32-* \
338 | m32c-* | m32r-* | m32rle-* \347 | m32c-* | m32r-* | m32rle-* \
339 | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \348 | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
340 | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \349 | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
341 | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \350 | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
342 | mips16-* \351 | mips16-* \
343 | mips64-* | mips64el-* \352 | mips64-* | mips64el-* \
@@ -365,15 +374,17 @@
365 | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \374 | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
366 | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \375 | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
367 | pyramid-* \376 | pyramid-* \
368 | romp-* | rs6000-* \377 | romp-* | rs6000-* | rx-* \
369 | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \378 | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
370 | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \379 | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
371 | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \380 | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
372 | sparclite-* \381 | sparclite-* \
373 | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \382 | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
374 | tahoe-* | thumb-* \383 | tahoe-* | thumb-* \
375 | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \384 | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
385 | tile-* | tilegx-* \
376 | tron-* \386 | tron-* \
387 | ubicom32-* \
377 | v850-* | v850e-* | vax-* \388 | v850-* | v850e-* | vax-* \
378 | we32k-* \389 | we32k-* \
379 | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \390 | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
@@ -467,6 +478,10 @@
467 basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`478 basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
468 os=-linux479 os=-linux
469 ;;480 ;;
481 bluegene*)
482 basic_machine=powerpc-ibm
483 os=-cnk
484 ;;
470 c90)485 c90)
471 basic_machine=c90-cray486 basic_machine=c90-cray
472 os=-unicos487 os=-unicos
@@ -719,6 +734,9 @@
719 basic_machine=ns32k-utek734 basic_machine=ns32k-utek
720 os=-sysv735 os=-sysv
721 ;;736 ;;
737 microblaze)
738 basic_machine=microblaze-xilinx
739 ;;
722 mingw32)740 mingw32)
723 basic_machine=i386-pc741 basic_machine=i386-pc
724 os=-mingw32742 os=-mingw32
@@ -1069,6 +1087,11 @@
1069 basic_machine=tic6x-unknown1087 basic_machine=tic6x-unknown
1070 os=-coff1088 os=-coff
1071 ;;1089 ;;
1090 # This must be matched before tile*.
1091 tilegx*)
1092 basic_machine=tilegx-unknown
1093 os=-linux-gnu
1094 ;;
1072 tile*)1095 tile*)
1073 basic_machine=tile-unknown1096 basic_machine=tile-unknown
1074 os=-linux-gnu1097 os=-linux-gnu
@@ -1240,6 +1263,9 @@
1240 # First match some system type aliases1263 # First match some system type aliases
1241 # that might get confused with valid system types.1264 # that might get confused with valid system types.
1242 # -solaris* is a basic system type, with this one exception.1265 # -solaris* is a basic system type, with this one exception.
1266 -auroraux)
1267 os=-auroraux
1268 ;;
1243 -solaris1 | -solaris1.*)1269 -solaris1 | -solaris1.*)
1244 os=`echo $os | sed -e 's|solaris1|sunos4|'`1270 os=`echo $os | sed -e 's|solaris1|sunos4|'`
1245 ;;1271 ;;
@@ -1260,9 +1286,9 @@
1260 # Each alternative MUST END IN A *, to match a version number.1286 # Each alternative MUST END IN A *, to match a version number.
1261 # -sysv* is not here because it comes later, after sysvr4.1287 # -sysv* is not here because it comes later, after sysvr4.
1262 -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \1288 -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
1263 | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\1289 | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
1264 | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \1290 | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
1265 | -kopensolaris* \1291 | -sym* | -kopensolaris* \
1266 | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \1292 | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
1267 | -aos* | -aros* \1293 | -aos* | -aros* \
1268 | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \1294 | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
@@ -1283,7 +1309,7 @@
1283 | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \1309 | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
1284 | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \1310 | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
1285 | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \1311 | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
1286 | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)1312 | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
1287 # Remember, each alternative MUST END IN *, to match a version number.1313 # Remember, each alternative MUST END IN *, to match a version number.
1288 ;;1314 ;;
1289 -qnx*)1315 -qnx*)
@@ -1416,6 +1442,8 @@
1416 -dicos*)1442 -dicos*)
1417 os=-dicos1443 os=-dicos
1418 ;;1444 ;;
1445 -nacl*)
1446 ;;
1419 -none)1447 -none)
1420 ;;1448 ;;
1421 *)1449 *)
@@ -1613,7 +1641,7 @@
1613 -sunos*)1641 -sunos*)
1614 vendor=sun1642 vendor=sun
1615 ;;1643 ;;
1616 -aix*)1644 -cnk*|-aix*)
1617 vendor=ibm1645 vendor=ibm
1618 ;;1646 ;;
1619 -beos*)1647 -beos*)
16201648
=== modified file 'configure'
--- configure 2010-07-10 11:15:59 +0000
+++ configure 2011-03-12 18:37:00 +0000
@@ -1,18 +1,22 @@
1#! /bin/sh1#! /bin/sh
2# Guess values for system-dependent variables and create Makefiles.2# Guess values for system-dependent variables and create Makefiles.
3# Generated by GNU Autoconf 2.63 for pcsc-lite 1.5.5.3# Generated by GNU Autoconf 2.67 for pcsc-lite 1.6.7.
4#
4#5#
5# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,6# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
6# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.7# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
8# Foundation, Inc.
9#
10#
7# This configure script is free software; the Free Software Foundation11# This configure script is free software; the Free Software Foundation
8# gives unlimited permission to copy, distribute and modify it.12# gives unlimited permission to copy, distribute and modify it.
9## --------------------- ##13## -------------------- ##
10## M4sh Initialization. ##14## M4sh Initialization. ##
11## --------------------- ##15## -------------------- ##
1216
13# Be more Bourne compatible17# Be more Bourne compatible
14DUALCASE=1; export DUALCASE # for MKS sh18DUALCASE=1; export DUALCASE # for MKS sh
15if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then19if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
16 emulate sh20 emulate sh
17 NULLCMD=:21 NULLCMD=:
18 # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which22 # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
@@ -20,23 +24,15 @@
20 alias -g '${1+"$@"}'='"$@"'24 alias -g '${1+"$@"}'='"$@"'
21 setopt NO_GLOB_SUBST25 setopt NO_GLOB_SUBST
22else26else
23 case `(set -o) 2>/dev/null` in27 case `(set -o) 2>/dev/null` in #(
24 *posix*) set -o posix ;;28 *posix*) :
29 set -o posix ;; #(
30 *) :
31 ;;
25esac32esac
26
27fi33fi
2834
2935
30
31
32# PATH needs CR
33# Avoid depending upon Character Ranges.
34as_cr_letters='abcdefghijklmnopqrstuvwxyz'
35as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
36as_cr_Letters=$as_cr_letters$as_cr_LETTERS
37as_cr_digits='0123456789'
38as_cr_alnum=$as_cr_Letters$as_cr_digits
39
40as_nl='36as_nl='
41'37'
42export as_nl38export as_nl
@@ -44,7 +40,13 @@
44as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'40as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
45as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo41as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
46as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo42as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
47if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then43# Prefer a ksh shell builtin over an external printf program on Solaris,
44# but without wasting forks for bash or zsh.
45if test -z "$BASH_VERSION$ZSH_VERSION" \
46 && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
47 as_echo='print -r --'
48 as_echo_n='print -rn --'
49elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
48 as_echo='printf %s\n'50 as_echo='printf %s\n'
49 as_echo_n='printf %s'51 as_echo_n='printf %s'
50else52else
@@ -55,7 +57,7 @@
55 as_echo_body='eval expr "X$1" : "X\\(.*\\)"'57 as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
56 as_echo_n_body='eval58 as_echo_n_body='eval
57 arg=$1;59 arg=$1;
58 case $arg in60 case $arg in #(
59 *"$as_nl"*)61 *"$as_nl"*)
60 expr "X$arg" : "X\\(.*\\)$as_nl";62 expr "X$arg" : "X\\(.*\\)$as_nl";
61 arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;63 arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -78,13 +80,6 @@
78 }80 }
79fi81fi
8082
81# Support unset when possible.
82if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
83 as_unset=unset
84else
85 as_unset=false
86fi
87
8883
89# IFS84# IFS
90# We need space, tab and new line, in precisely that order. Quoting is85# We need space, tab and new line, in precisely that order. Quoting is
@@ -94,15 +89,15 @@
94IFS=" "" $as_nl"89IFS=" "" $as_nl"
9590
96# Find who we are. Look in the path if we contain no directory separator.91# Find who we are. Look in the path if we contain no directory separator.
97case $0 in92case $0 in #((
98 *[\\/]* ) as_myself=$0 ;;93 *[\\/]* ) as_myself=$0 ;;
99 *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR94 *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
100for as_dir in $PATH95for as_dir in $PATH
101do96do
102 IFS=$as_save_IFS97 IFS=$as_save_IFS
103 test -z "$as_dir" && as_dir=.98 test -z "$as_dir" && as_dir=.
104 test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break99 test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
105done100 done
106IFS=$as_save_IFS101IFS=$as_save_IFS
107102
108 ;;103 ;;
@@ -114,12 +109,16 @@
114fi109fi
115if test ! -f "$as_myself"; then110if test ! -f "$as_myself"; then
116 $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2111 $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
117 { (exit 1); exit 1; }112 exit 1
118fi113fi
119114
120# Work around bugs in pre-3.0 UWIN ksh.115# Unset variables that we do not need and which cause bugs (e.g. in
121for as_var in ENV MAIL MAILPATH116# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
122do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var117# suppresses any "Segmentation fault" message there. '((' could
118# trigger a bug in pdksh 5.2.14.
119for as_var in BASH_ENV ENV MAIL MAILPATH
120do eval test x\${$as_var+set} = xset \
121 && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
123done122done
124PS1='$ '123PS1='$ '
125PS2='> '124PS2='> '
@@ -131,330 +130,299 @@
131LANGUAGE=C130LANGUAGE=C
132export LANGUAGE131export LANGUAGE
133132
134# Required to use basename.
135if expr a : '\(a\)' >/dev/null 2>&1 &&
136 test "X`expr 00001 : '.*\(...\)'`" = X001; then
137 as_expr=expr
138else
139 as_expr=false
140fi
141
142if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
143 as_basename=basename
144else
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches