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