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