diff --git a/ChangeLog b/ChangeLog index a2ae535..53fa625 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,893 @@ -commit 3bb08235fb16ad625e33cef634b06abc1842bc15 (HEAD -> master, tag: 1.4.34, zotac/master, origin/master, origin/HEAD) +commit c0c84311c47fcae11ab34ec7b1f70f9518e37931 (HEAD -> master, zotac/master) +Author: Ludovic Rousseau +Date: Sun Jul 25 16:00:35 2021 +0200 + + Release 1.4.35 + + Signed-off-by: Ludovic Rousseau + + README.md | 42 ++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 43 insertions(+), 1 deletion(-) + +commit a1e62d6e5d60f99d06682b7383fdf3ad22e78ff4 +Author: Ludovic Rousseau +Date: Sun Jul 25 15:59:18 2021 +0200 + + configure.ac: remove AC_HEADER_TIME + + reported by autoupdate: + configure.ac:76: warning: Update your code to rely only on HAVE_SYS_TIME_H, + then remove this warning and the obsolete code below it. + All current systems provide time.h; it need not be checked for. + Not all systems provide sys/time.h, but those that do, all allow + you to include it and time.h simultaneously. + + configure.ac | 1 - + 1 file changed, 1 deletion(-) + +commit 9ec799ed06b4d880fa79d067defd70b75e8c5750 +Author: Ludovic Rousseau +Date: Sun Jul 25 15:54:02 2021 +0200 + + configure.ac: remove AC_HEADER_STDC + + reported by autoupdate: + configure.ac:69: warning: The preprocessor macro `STDC_HEADERS' is obsolete. + Except in unusual embedded environments, you can safely include all + ISO C90 headers unconditionally. + + configure.ac | 1 - + 1 file changed, 1 deletion(-) + +commit 45fdfde8fe9f463dd5389e493b6f7c16d7e6e833 +Author: Maksim Ivanov +Date: Fri Jul 9 21:36:46 2021 +0200 + + Multi_PollingProc: use slot variable + + Use the slot variable instead of calculating the number every time. + + This also fixes the warning from clang: + + ccid_usb.c:1521:11: warning: variable 'slot' set but not used [-Wunused-but-set-variable] + + src/ccid_usb.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6f7e48e4ef90bcba24351cd86bc4ec84f761a2ab (origin/master, origin/HEAD, github/master) +Author: Ludovic Rousseau +Date: Sat Jul 3 18:50:41 2021 +0200 + + Use ax_pthread.m4 macro from autoconf-archive + + autoconf-archive package provides ax_pthread.m4 so we do not have to get + it from the PCSC repository. + + Thanks to Tomasz Kłoczko for the idea + "symlinks to outsise of the git repo" + https://salsa.debian.org/rousseau/CCID/-/issues/12 + + Makefile.am | 1 - + m4/ax_pthread.m4 | 1 - + 2 files changed, 2 deletions(-) + +commit 47a336a9df4f671c5a36aded098f2c732fda1402 +Author: Ludovic Rousseau +Date: Sat Jul 3 18:49:02 2021 +0200 + + Remove now unused m4/as-ac-expand.m4 + + AS_AC_EXPAND() macro is not used any more. See previous commit. + + m4/as-ac-expand.m4 | 1 - + 1 file changed, 1 deletion(-) + +commit 1c791b07967cbf0d6ee808fe2ebd43f40e2527f3 +Author: Ludovic Rousseau +Date: Sat Jul 3 18:46:01 2021 +0200 + + configure.ac: do not use AS_AC_EXPAND() macro any more + + We do not need to define bindir_exp & sysconfdir_exp as the driver does + not install anything in bin/ or etc/. + + Default value on macOS was: + User binaries: /usr/local/bin + Configuration files: /usr/local/etc + + configure.ac | 6 ------ + 1 file changed, 6 deletions(-) + +commit 6c0bbe8649315f8cbbe0c181f143cea641b0a7dc +Author: Ludovic Rousseau +Date: Thu Jul 1 22:11:43 2021 +0200 + + The Kobil TriBank reader does NOT support extended APDU + + The "KOBIL EMV CAP - SecOVID Reader III" declares "Short and Extended + APDU level exchange" but the reader fails to exchanges extended APDU. + + For case 2 I can get up to 296 bytes of data but with 297 bytes I get: + > 80 00 04 2A 00 01 29 + < 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A + 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A + 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A + 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A + 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A + 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A + 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A + 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A + 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A + 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A + 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A + 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A + 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A + 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A + 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A + 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A + 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A + 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A + 2A 2A 2A 2A 2A 2A 2A 2A 2A 90 61 00 : 0x00 bytes of response still available. + + Note the presence of 90 but not the 00. We get half og the SW. + + And the Get Response fails: + 80 C0 00 00 00 + > 80 C0 00 00 00 + < 6D 00 : Instruction code not supported or invalid. + 00 C0 00 00 00 + > 00 C0 00 00 00 + < 6D 00 : Instruction code not supported or invalid. + + For case 3 we get: + > 80 12 01 80 00 00 01 00 + < 67 00 : Wrong length. + + With a very long APDU I get an error at the CCID level: + APDU: 80 12 01 80 00 FF FF 00 01 02 03 04 .... + + 0000076 [140632790132480] -> 000000 6F 0C 02 00 00 00 08 00 01 00 80 12 + 01 80 00 FF FF 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 + 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A + 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 + 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A + 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 + 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A + 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 + A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA + BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 + D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA + EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF 00 01 02 + 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A + 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 + 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A + 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 + 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A + 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 + 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA + AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 + C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA + DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 + F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF 00 01 02 03 04 + 00006100 [140632790132480] <- 000000 81 00 00 00 00 D4 D5 40 00 38 + 00000009 [140632790132480] commands.c:1539:CCID_Receive Command not + supported or not allowed + + Thanks to somova for the bug report + "Problem with Kobil Kaan Tribank and CardOS 5.3 Smartcard #85" + https://github.com/LudovicRousseau/CCID/issues/85 + + src/ccid.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 2300c4b26d930d993e56933ec279eacc7f42fa20 +Author: Ludovic Rousseau +Date: Sat Jun 26 16:55:42 2021 +0200 + + Update PCSC git submodule + + PCSC | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ee4d3b1a29c76b133d37dd5f5177d354febb7914 +Author: Ludovic Rousseau +Date: Sat Jun 26 16:54:54 2021 +0200 + + Update PCSC-contrib git submodule + + PCSC-contrib | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 15c985182b4f6a19875661db2beecf39c7f316ba +Author: Ludovic Rousseau +Date: Tue Jun 22 17:20:59 2021 +0200 + + Add SONY Felica RC-S300/S + + readers/SONY_Felica_RC-S300_S.txt | 53 +++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 1 + + 2 files changed, 54 insertions(+) + +commit c6f6c44c2f5336a27299152cebaf45240de5549d +Author: Ludovic Rousseau +Date: Tue Jun 22 17:19:05 2021 +0200 + + Add SONY Felica RC-S660/U + + readers/SONY_Felica_RC-S660_U.txt | 53 +++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 1 + + 2 files changed, 54 insertions(+) + +commit fdb329e13a3a7a6810e9999ebdfd71bd22ed1b8e +Author: Ludovic Rousseau +Date: Tue Jun 22 17:13:20 2021 +0200 + + Add SONY Felica RC-S300/P + + readers/SONY_Felica_RC-S300_P.txt | 53 +++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 5 +++- + 2 files changed, 57 insertions(+), 1 deletion(-) + +commit 16273146b3074dc8280c61e9cbe7682cfbb93ea3 +Author: Ludovic Rousseau +Date: Fri Jun 18 17:46:40 2021 +0200 + + Add Circle CIR315 (idProduct: 0x3100) + + readers/Circle_CIR315_0x3100.txt | 105 +++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 1 + + 2 files changed, 106 insertions(+) + +commit cdcb07cc921c2e4c73bdf8a1322ab3ad4dd39ad8 +Author: Ludovic Rousseau +Date: Fri Jun 18 17:43:56 2021 +0200 + + Add Circle CCR7315 + + readers/Circle_CCR7315.txt | 105 ++++++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 1 + + 2 files changed, 106 insertions(+) + +commit 782b0d9dcc2cdea62fdcb5baa27ca75a2d43d3f1 +Author: Ludovic Rousseau +Date: Fri Jun 18 17:42:40 2021 +0200 + + Add Circle CCR7115 ICC + + readers/Circle_CCR7115_ICC.txt | 54 ++++++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 3 ++- + 2 files changed, 56 insertions(+), 1 deletion(-) + +commit 1245140bc95dc81fb4e73489f5313ceed79fa1a4 +Author: Ludovic Rousseau +Date: Thu Jun 10 09:10:35 2021 +0200 + + CmdPowerOn: fix debug message about Voltage + + If PowerOn with 5V fails the next try is with 1.8V, not with auto. + + src/commands.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b146c1a8bd938f4437828e0b41f8ff6126f128cb +Author: Ludovic Rousseau +Date: Wed Jun 9 22:21:09 2021 +0200 + + Add Infocrypt Token++ lite + + readers/Infocrypt_Token++_lite.txt | 53 ++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 3 ++- + 2 files changed, 55 insertions(+), 1 deletion(-) + +commit a2450753c7b4ceeb8708d2011c9b9b5ef822cc7f +Author: Ludovic Rousseau +Date: Wed Jun 9 16:45:53 2021 +0200 + + Fix yylex missing symbol + + Do not link the driver with $(LEXLIB) + + We do not need to link with lex library. This link is present since the + first use of automake for the CCID driver (Sep 2003). + + Removeing the link will solve the error: + 00000953 [140054186878912] dyn_unix.c:58:DYN_LoadLibrary() /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Linux/libccid.so: /lib/x86_64-linux-gnu/libfl.so.2: undefined symbol: yylex + + linux-vdso.so.1 (0x00007ffd2e3f5000) + libfl.so.2 => /lib/x86_64-linux-gnu/libfl.so.2 (0x00007fe9be384000) + libusb-1.0.so.0 => /lib/x86_64-linux-gnu/libusb-1.0.so.0 (0x00007fe9be366000) + libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe9be345000) + libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe9be184000) + libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fe9be001000) + libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007fe9bdfdb000) + /lib64/ld-linux-x86-64.so.2 (0x00007fe9be3b0000) + librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fe9bdfcf000) + undefined symbol: yylex (/lib/x86_64-linux-gnu/libfl.so.2) + undefined symbol: log_xxd (/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Linux/libccid.so) + undefined symbol: log_msg (/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Linux/libccid.so) + + src/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cf8c58e949ce70cb5cf67b743deb1fd9aaa66fc2 +Author: Ludovic Rousseau +Date: Fri Jun 4 12:58:22 2021 +0200 + + Fix bit4id miniLector-EVO pinpad support + + The reader advertises pinpad support but no pinpad hardware is present. + + Thanks to Fabrizio del Tin for the bug report + "New Italian CNS lots ACe2021 ACx2021 and ST2021 unsupported #2313" + https://github.com/OpenSC/OpenSC/issues/2313 + + src/ccid.c | 6 ++++++ + src/ccid.h | 1 + + 2 files changed, 7 insertions(+) + +commit 7a37e111f1a8e6e70506e83cb62db475b1aedcae +Author: Ludovic Rousseau +Date: Thu Jun 3 21:34:19 2021 +0200 + + Update bit4id miniLector-EVO firmware + + readers/bit4id_minilector.txt | 23 ++++++++++++++--------- + readers/supported_readers.txt | 6 ++++-- + 2 files changed, 18 insertions(+), 11 deletions(-) + +commit 3dfcc7b0c631aa9220d84284f6074dcbd0f4b933 +Author: Ludovic Rousseau +Date: Thu May 27 14:34:18 2021 +0200 + + Move the Identiv uTrust 3700 F CL Reader back to shouldwork + + A new reader firmware v1.19 is avilable and fixes the issue. + + readers/supported_readers.txt | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +commit 676cc1f27b9460cec141c96abe629f6c1bb6155f +Author: Ludovic Rousseau +Date: Wed May 19 13:29:59 2021 +0200 + + Add Identiv Identiv uTrust 4711 F CL + SAM Reader + + ...Identiv_Identiv_uTrust_4711_F_CL_SAM_Reader.txt | 111 +++++++++++++++++++++ + readers/supported_readers.txt | 1 + + 2 files changed, 112 insertions(+) + +commit 3b1e470f6737be420c74d5e8e419ea3d864b3ca3 +Author: Ludovic Rousseau +Date: Wed May 19 13:20:53 2021 +0200 + + Add Identiv uTrust 3721 Contactless Reader + + readers/Identiv_uTrust_3721_Contactless_Reader.txt | 57 ++++++++++++++++++++++ + readers/supported_readers.txt | 3 +- + 2 files changed, 59 insertions(+), 1 deletion(-) + +commit f740401391d1f3fe9efff2343e0e6179b7e6d920 +Author: Ludovic Rousseau +Date: Fri May 14 22:16:42 2021 +0200 + + Move the Identiv uTrust 3700 F CL Reader to unsupported + + The reader sometimes fails to power up a card. See "Identiv 3700F + occasionally fails to power up card #102" + https://github.com/LudovicRousseau/PCSC/issues/102 + + readers/supported_readers.txt | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 0bd2a9f19b924bd12788d73853b812415e2c1d18 +Author: Ludovic Rousseau +Date: Wed May 5 14:19:52 2021 +0200 + + parse: use "ICCD token" for ICCD tokens + + The text "..08.. Unknown (ICCD?)" may be surprising since the ICCD + specification is official since 2005 now. + + Thanks to Nicolas Stalder for the suggestion. + + src/parse.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b3d9129b48a19bea13e4f9abf338b0d10ab1fbd6 +Author: Ludovic Rousseau +Date: Wed May 5 14:18:47 2021 +0200 + + Add SoloKeys Solo 2 + + readers/SoloKeys_Solo_2.txt | 49 +++++++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 5 ++++- + 2 files changed, 53 insertions(+), 1 deletion(-) + +commit 14d509cb4ed1e7317cf705ace83d8379da67efa1 +Author: Ludovic Rousseau +Date: Sat May 1 14:27:49 2021 +0200 + + Gemalto pinpad: same fix but for SecurePINModify + + See f175e2ad74a069b35c5442cae31fa0fe30fadfcb + + src/commands.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit f175e2ad74a069b35c5442cae31fa0fe30fadfcb +Author: Ludovic Rousseau +Date: Sat May 1 14:17:16 2021 +0200 + + Gemalto pinpad: fix incorrect bEntryValidationCondition for SecurePINVerify + + If a unsupported value for bEntryValidationCondition is used then the + driver will automatically fix it (clear unsupported condition bits) + before sending the command to the reader. + + The problem was with (for example) bEntryValidationCondition = 3 + 00000003 ifdhandler.c:1400:IFDHControl() ControlCode: 0x42330006, usb:08e6/34c2:libudev:0:/dev/bus/usb/001/003 (lun: 0) + 00000004 Control TxBuffer: 1E 1E 82 0F 00 0F 04 03 01 00 00 00 00 00 00 14 00 00 00 01 20 00 03 0F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00000005 -> 000000 69 23 00 00 00 00 32 00 00 00 00 1E 82 0F 00 0F 04 03 01 00 00 00 00 00 00 01 20 00 03 0F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00012865 <- 000000 80 00 00 00 00 00 32 40 11 00 + 00000007 commands.c:1508:CCID_Receive error on byte 17 + + We now get: + 00000003 ifdhandler.c:1441:IFDHControl() ControlCode: 0x42330006, usb:08e6/34c2:libudev:0:/dev/bus/usb/001/003 (lun: 0) + 00000004 Control TxBuffer: 1E 1E 82 0F 00 0F 04 03 01 00 00 00 00 00 00 14 00 00 00 01 20 00 03 0F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00000002 commands.c:400:SecurePINVerify() Correct bEntryValidationCondition (was 0x03) + 00000004 -> 000000 69 23 00 00 00 00 32 00 00 00 00 1E 82 0F 00 0F 04 02 01 00 00 00 00 00 00 01 20 00 03 0F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + + The byte for bEntryValidationCondition is changed from 3 to 2. + + src/commands.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 972142e582ec62da9d19997422920a08e7f7edfa +Author: Ludovic Rousseau +Date: Fri Apr 30 14:33:32 2021 +0200 + + Extra feature for a new Gemalto Ezio Shield + + This model from has 2 new languages added: + 0x0405: Czech + 0x041B: Slovak + + The reader had the PID of a Gemalto Ezio Shield but pysically looks like + the GemPCPinpad. + + ...malto_Ezio_Shield_PinPad_Stephanie_features.txt | 41 ++++++++++++++++++++++ + 1 file changed, 41 insertions(+) + +commit c6eec02374af1ee66931fd1a4d5052b61b440906 +Author: Ludovic Rousseau +Date: Thu Apr 22 14:22:06 2021 +0200 + + Add Generic EMV Smartcard Reader (0x058C:0x9590) + + readers/FLY_USB_2.0.txt | 78 +++++++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 3 +- + 2 files changed, 80 insertions(+), 1 deletion(-) + +commit 07fd612e8dee8a76786509288110e6517cf07ae1 +Author: Ludovic Rousseau +Date: Wed Apr 21 11:58:53 2021 +0200 + + Add ArkSigner Connect2Sign + + readers/ArkSigner_Connect2Sign.txt | 55 ++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 3 +++ + 2 files changed, 58 insertions(+) + +commit 2fdcfddd750415cb869fd6ac3f409435fbbf4e59 +Author: Ludovic Rousseau +Date: Wed Apr 21 11:50:07 2021 +0200 + + Add INMAX DWR18 HC + + readers/INMAX_DWR18_HC.txt | 76 +++++++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 1 + + 2 files changed, 77 insertions(+) + +commit af7e3920318a11317998c0ce2da68070d62ade0c +Author: Ludovic Rousseau +Date: Wed Apr 21 11:47:59 2021 +0200 + + Add INMAX DWR18 HPC + + readers/INMAX_DWR18_HPC.txt | 76 +++++++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 5 ++- + 2 files changed, 80 insertions(+), 1 deletion(-) + +commit c28a756be65dbe4aaa119af6d0031e4d2d4dcf76 +Merge: 1248e88 9c8e9a2 +Author: Ludovic Rousseau +Date: Wed Apr 14 14:35:32 2021 +0000 + + Merge branch 'timeout-fix' into 'master' + + Reset buffers on failed read. + + See merge request rousseau/CCID!7 + +commit 9c8e9a231c828bbaa4d18bf55cb393f5bc0202af +Author: Deividas Puplauskas +Date: Wed Apr 14 00:25:22 2021 +0200 + + Reset buffers on failed read. + + After a failed read buffers keep previously received data. + When receiving new RDR_to_PC messages, old data gets + processed and if it contains SYNC ACK, it gets interpreted + as the new response. + + Signed-off-by: Deividas Puplauskas + + src/ccid_serial.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 1248e8854b22a929581eb1208bcce7f59f0cf006 +Author: Ludovic Rousseau +Date: Sat Apr 10 10:21:47 2021 +0200 + + Regenerate Winbond.txt using the new parse tool + + readers/Winbond.txt | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 5d4ebe3aa779fb1130ae32a39466741caf51cbf3 +Author: Ludovic Rousseau +Date: Sat Apr 10 10:10:28 2021 +0200 + + Regenerate Teo.txt using the new parse tool + + readers/Teo.txt | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 2ef2fb6c71aa60dee3717ab20f46c84040975919 (github/pr/83) +Author: Guido Trentalancia +Date: Thu Apr 8 23:23:48 2021 +0200 + + Ask for bNumClockSupported supported clock frequencies + + Some devices set bNumClockSupported to a value different from 0 but + libusb_control_transfer() fails if another value (like 256) is used. + + The Bit4Id miniLector AIR NFC v3 (25DD:3403) seems to need this fix. + + Signed-off-by: Guido Trentalancia + + src/parse.c | 19 ++++++++++++------- + 1 file changed, 12 insertions(+), 7 deletions(-) + +commit c6118824efd489b8728892bcc25f015e5de25b1c +Author: Guido Trentalancia +Date: Thu Apr 8 23:23:26 2021 +0200 + + Improve the following two recent fixes to get the number of supported data rates: + + commit b00292f718e9f13626147af63bfb9164ec74d2cb + Author: Ludovic Rousseau + Date: Sat Mar 27 18:46:15 2021 +0100 + + ccid_usb: ask for bNumDataRatesSupported data rates + + Some devices set bNumDataRatesSupported to a value different from 0 but + libusb_control_transfer() fails if another value (like 256) is used. + + The Alcor Micro 9540 is such a reader. + + commit 19b9e9256781b55513e22e8ecd9c85ad409e9069 (HEAD -> master, origin/master, origin/HEAD) + Author: Ludovic Rousseau + Date: Sun Apr 4 19:04:10 2021 +0200 + + get_data_rates(): fix bug if bNumDataRatesSupported > 0 + + The bug was introduced in b00292f718e9f13626147af63bfb9164ec74d2cb (not + released in a stable version) + + Thanks to Godfrey Chung got the bug report + https://github.com/LudovicRousseau/CCID/commit/b00292f718e9f13626147af63bfb9164ec74d2cb#r49087277 + + ------- + + These fixes seem also needed on the following reader: Bit4Id miniLector AIR NFC v3 (25DD:3403). + + Signed-off-by: Guido Trentalancia + + src/parse.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 19b9e9256781b55513e22e8ecd9c85ad409e9069 +Author: Ludovic Rousseau +Date: Sun Apr 4 19:04:10 2021 +0200 + + get_data_rates(): fix bug if bNumDataRatesSupported > 0 + + The bug was introduced in b00292f718e9f13626147af63bfb9164ec74d2cb (not + released in a stable version) + + Thanks to Godfrey Chung got the bug report + https://github.com/LudovicRousseau/CCID/commit/b00292f718e9f13626147af63bfb9164ec74d2cb#r49087277 + + src/ccid_usb.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 80b222e6d3407f51d44bc9e0579732e55316b970 +Author: Ludovic Rousseau +Date: Mon Mar 29 09:24:42 2021 +0200 + + Update AlcorMicro AU9560 + + Use the new version of parse so we get the complete list of + bNumDataRatesSupported. + + readers/AlcorMicro_AU9560.txt | 141 +++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 139 insertions(+), 2 deletions(-) + +commit 05546f902e387ee5ab49799962c818a1773ad548 +Author: Ludovic Rousseau +Date: Sat Mar 27 18:53:56 2021 +0100 + + IFDHSetProtocolParameters: set IFSC/IFSD only for TPDU readers + + Sending a T=1 block to an APDU reader is a bad idea. The reader will + interpret the T=1 data block as an APDU and it will fail. + + This commit fixes a problem introduced by + e8216d4f666582c7c299755d139247b7758f2646 (not released in a stable + version) + + src/ifdhandler.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit b00292f718e9f13626147af63bfb9164ec74d2cb +Author: Ludovic Rousseau +Date: Sat Mar 27 18:46:15 2021 +0100 + + ccid_usb: ask for bNumDataRatesSupported data rates + + Some devices set bNumDataRatesSupported to a value different from 0 but + libusb_control_transfer() fails if another value (like 256) is used. + + The Alcor Micro 9540 is such a reader. + + src/ccid_usb.c | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +commit adf4ec89636b186ea96db5809b6356865653422b +Author: Ludovic Rousseau +Date: Sat Mar 27 18:35:23 2021 +0100 + + parse: ask for bNumDataRatesSupported data rates + + Some devices set bNumDataRatesSupported to a value different from 0 but + libusb_control_transfer() fails if another value (like 256) is used. + + The Alcor Micro 9540 is such a reader. + + src/parse.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +commit 1f07c89ee1174e8e84566a646bc84c70f5bb97eb +Author: Ludovic Rousseau +Date: Mon Mar 22 19:03:24 2021 +0100 + + Add Infocrypt HWDSSL DEVICE + + readers/Infocrypt_HWDSSL_DEVICE.txt | 53 +++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 5 +++- + 2 files changed, 57 insertions(+), 1 deletion(-) + +commit ce489a07c7f8f69fb096a4bd09d1a701a7687a20 +Author: Ludovic Rousseau +Date: Fri Mar 19 15:14:34 2021 +0100 + + README.md: fix typos + + README.md | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit a4b01e1237611063f59c879d78d8d6de46e5a4c2 +Author: Ludovic Rousseau +Date: Fri Mar 19 14:28:49 2021 +0100 + + Add Circle CIR415 CL & 1S + + readers/Circle_CIR415_CL_1S.txt | 54 +++++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 1 + + 2 files changed, 55 insertions(+) + +commit a57653164698d0a30f0fb74d20c9af29eb19c187 +Author: Ludovic Rousseau +Date: Fri Mar 19 14:22:17 2021 +0100 + + Add Circle CIR315 CL + + readers/Circle_CIR315_CL.txt | 54 +++++++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 1 + + 2 files changed, 55 insertions(+) + +commit 8ea3054fdca55a440cad91b643f5849a85f07c81 +Author: Ludovic Rousseau +Date: Fri Mar 19 14:15:36 2021 +0100 + + Add Circle CIR315 + + readers/Circle_CIR315.txt | 105 ++++++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 1 + + 2 files changed, 106 insertions(+) + +commit ea5dd2fa3635fec85bb08dae6cb924b76d7c6d12 +Author: Ludovic Rousseau +Date: Fri Mar 19 14:13:56 2021 +0100 + + Add Circle CIR315 Dual & 1S + + readers/Circle_CIR315_Dual_1S.txt | 54 +++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 1 + + 2 files changed, 55 insertions(+) + +commit e435b5f441aff9bb89673cf4baa7e52560daf7ee +Author: Ludovic Rousseau +Date: Fri Mar 19 14:10:40 2021 +0100 + + Add Circle CIR215 CL + + readers/Circle_CIR215_CL.txt | 55 +++++++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 1 + + 2 files changed, 56 insertions(+) + +commit 8d074042d629bc2b67703e1a2783ede1157c08c0 +Author: Ludovic Rousseau +Date: Fri Mar 19 14:06:19 2021 +0100 + + Add Circle CIR215 PICC + + readers/Circle_CIR215_PICC.txt | 55 ++++++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 1 + + 2 files changed, 56 insertions(+) + +commit 1ed94d364aeedbff5c1131761b1b4a170d755007 +Author: Ludovic Rousseau +Date: Fri Mar 19 14:03:25 2021 +0100 + + Add Circle CIR115 ICC + + readers/Circle_CIR115_ICC.txt | 54 +++++++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 1 + + 2 files changed, 55 insertions(+) + +commit c7abe3031f86fa3b68bb608c3c53a346058a7b6d +Author: Ludovic Rousseau +Date: Fri Mar 19 13:06:19 2021 +0100 + + Add Circle Idaxis SecurePIV + + readers/Circle_Idaxis_SecurePIV.txt | 54 +++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 5 +++- + 2 files changed, 58 insertions(+), 1 deletion(-) + +commit 7430596e2c46b050b05eff9ec49deb66cc4979b3 +Author: Ludovic Rousseau +Date: Thu Mar 18 18:03:31 2021 +0100 + + Add Feitian R701 + + readers/Feitian_R701.txt | 74 +++++++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 3 +- + 2 files changed, 76 insertions(+), 1 deletion(-) + +commit 4a5427b3e3427c59116a80fb49c77146c96d92fe +Author: hongbin@ftsafe.com +Date: Tue Mar 16 17:05:13 2021 +0800 + + Support 4 card slots with Feitian R502 C9 + + The R502 C9 has 4 interfaces, which are contact, contactless, 2xSAM, + Modify the code to support 4 slots instead of 3. + + src/ccid_usb.c | 5 +++++ + src/ifdhandler.c | 4 ++-- + 2 files changed, 7 insertions(+), 2 deletions(-) + +commit 56ab8ab8d7c23667f550a818f4a9713fb2e00f00 +Author: Ludovic Rousseau +Date: Sun Mar 7 18:13:41 2021 +0100 + + Fix a possible buffer overflow in T0ProcACK + + tmp_buf[] has a size of 512 bytes so the maximum length should be 0x200 + (512) instead of 0x20000 (131072). + + Thanks to coverity scan for the bug report. + + CID 1473613 (#3 of 3): Out-of-bounds access (OVERRUN)16. + overrun-buffer-arg: Overrunning array tmp_buf of 512 bytes by passing it + to a function which accesses it at byte offset 131071 using argument + remain_len (which evaluates to 131072). + + src/commands.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2c600f55b351f524c27511e3303db690df41abca +Author: Ludovic Rousseau +Date: Sun Mar 7 18:12:09 2021 +0100 + + Reformat part of T0ProcACK() + + src/commands.c | 46 +++++++++++++++++++++++----------------------- + 1 file changed, 23 insertions(+), 23 deletions(-) + +commit c836486c433e1a14b0bbc7dec18c1a3410bffc4d +Author: Ludovic Rousseau +Date: Wed Mar 3 11:33:10 2021 +0100 + + Add DUALi DE-ABCM6 RFRW + + readers/DUALi_DE-ABCM6_RFRW.txt | 59 +++++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 3 ++- + 2 files changed, 61 insertions(+), 1 deletion(-) + +commit e8216d4f666582c7c299755d139247b7758f2646 +Author: Ludovic Rousseau +Date: Tue Mar 2 20:15:03 2021 +0100 + + Solve a performance issue with T=1 and CCID_CLASS_AUTO_PPS_PROP + + Set IFSC in all cases so that the driver uses the value returned in the + card ATR. + The driver will be able to send data in bigger chunks up to the card + IFSC value instead of the default value of 32 bytes. + + Thanks to Florent VIBERT for the patch + + src/ifdhandler.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit 7846fbccb0702857de6d35e67309f260b0ee9681 +Author: Ludovic Rousseau +Date: Mon Mar 1 14:22:23 2021 +0100 + + Add SYNNIX CL-2100R + + readers/SYNNIX_CL-2000.txt | 57 +++++++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 3 ++- + 2 files changed, 59 insertions(+), 1 deletion(-) + +commit 06b68feeb7cecc9650a26b7e8963446edcd9aca6 +Author: Ludovic Rousseau +Date: Mon Feb 8 18:09:52 2021 +0100 + + parse: print text version of the libusb errors + + Use libusb_error_name() to convert the error code into a text + message to make the output more user friendly. + + src/parse.c | 26 +++++++++++++++++--------- + 1 file changed, 17 insertions(+), 9 deletions(-) + +commit 8ac12634696c0b1b860d7908fdaa119a5e3ab6fb +Author: Ludovic Rousseau +Date: Sat Feb 6 14:34:39 2021 +0100 + + Add Spyrus Inc PocketVault P-3X (idProduct: 0x3203) + + readers/Spyrus_PocketVault_P-3X_0x3203.txt | 49 ++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 3 +- + 2 files changed, 51 insertions(+), 1 deletion(-) + +commit bbf1d8530cbf7bf450383fe3a209217292702e4e +Author: Ludovic Rousseau +Date: Tue Jan 26 14:20:58 2021 +0100 + + Add MK Technology KeyPass D1 + + readers/MK_Technology_KeyPass_D1.txt | 144 +++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 3 +- + 2 files changed, 146 insertions(+), 1 deletion(-) + +commit 3bb08235fb16ad625e33cef634b06abc1842bc15 (tag: 1.4.34) Author: Ludovic Rousseau Date: Sun Jan 24 13:59:00 2021 +0100 @@ -471,7 +1360,7 @@ Date: Sat Aug 8 18:01:16 2020 +0200 src/commands.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 1931e55b864d883d309e6c1c4064a63c84ad3fc7 (github/master) +commit 1931e55b864d883d309e6c1c4064a63c84ad3fc7 Author: Ludovic Rousseau Date: Sat Aug 8 17:29:14 2020 +0200 @@ -848,7 +1737,7 @@ Date: Mon Jun 29 17:35:30 2020 +0200 INSTALL | 1 + 1 file changed, 1 insertion(+) -commit 4a0359f22ed0dc668d09459c2be97009e5669969 (tag: 1.4.33) +commit 4a0359f22ed0dc668d09459c2be97009e5669969 (tag: ccid-1.4.33, tag: 1.4.33) Author: Ludovic Rousseau Date: Thu Jun 25 20:17:51 2020 +0200 @@ -1007,7 +1896,7 @@ Date: Wed Apr 22 14:52:34 2020 +0200 examples/scardcontrol.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 8f33a2ff60919f579ee17012e91f927491ef70be (tag: 1.4.32) +commit 8f33a2ff60919f579ee17012e91f927491ef70be (tag: ccid-1.4.32, tag: 1.4.32) Author: Ludovic Rousseau Date: Wed Apr 22 11:14:30 2020 +0200 @@ -1692,7 +2581,7 @@ Date: Wed Aug 28 14:11:15 2019 +0200 src/ccid.h | 3 +++ 2 files changed, 6 insertions(+) -commit 743e9a9daf4dd27128eb6be8b13562f0ea695fd5 (tag: 1.4.31) +commit 743e9a9daf4dd27128eb6be8b13562f0ea695fd5 (tag: ccid-1.4.31, tag: 1.4.31) Author: Ludovic Rousseau Date: Sat Aug 10 11:49:32 2019 +0200 @@ -2023,7 +2912,7 @@ Date: Mon Sep 24 21:00:04 2018 +0200 readers/supported_readers.txt | 3 +- 2 files changed, 312 insertions(+), 1 deletion(-) -commit db45750ebb2ce8d841f8e555e79f09108527aaa8 (tag: 1.4.30) +commit db45750ebb2ce8d841f8e555e79f09108527aaa8 (tag: ccid-1.4.30, tag: 1.4.30) Author: Ludovic Rousseau Date: Wed Sep 19 09:33:32 2018 +0200 @@ -2473,7 +3362,7 @@ Date: Fri Feb 23 23:23:30 2018 +0100 readers/supported_readers.txt | 3 +- 2 files changed, 66 insertions(+), 1 deletion(-) -commit 7ab9a8b3d2c91a9588388c489252628afc0469d0 (tag: 1.4.29) +commit 7ab9a8b3d2c91a9588388c489252628afc0469d0 (tag: ccid-1.4.29, tag: 1.4.29) Author: Ludovic Rousseau Date: Wed Feb 21 09:43:01 2018 +0100 @@ -2681,7 +3570,7 @@ Date: Fri Oct 20 17:46:08 2017 +0200 src/ifdhandler.c | 81 -------------------------------------------------------- 1 file changed, 81 deletions(-) -commit 70379da0cf79444d7035e0f42bea6f759f0a0886 (tag: 1.4.28) +commit 70379da0cf79444d7035e0f42bea6f759f0a0886 (tag: ccid-1.4.28, tag: 1.4.28) Author: Ludovic Rousseau Date: Wed Oct 11 14:00:57 2017 +0200 @@ -2984,7 +3873,7 @@ Date: Mon Jun 12 18:40:37 2017 +0200 readers/supported_readers.txt | 5 +++- 2 files changed, 57 insertions(+), 1 deletion(-) -commit a7dcbf296492f5056e1ba7abb8388531bb0a6708 (tag: 1.4.27) +commit a7dcbf296492f5056e1ba7abb8388531bb0a6708 (tag: ccid-1.4.27, tag: 1.4.27) Author: Ludovic Rousseau Date: Sun May 21 14:41:20 2017 +0200 @@ -3454,7 +4343,7 @@ Date: Sat Jan 7 16:04:17 2017 +0100 README | 1 - 1 file changed, 1 deletion(-) -commit 666a72c342f433fda1b77ff815fdfe728afc3ce7 (tag: 1.4.26) +commit 666a72c342f433fda1b77ff815fdfe728afc3ce7 (tag: ccid-1.4.26, tag: 1.4.26) Author: Ludovic Rousseau Date: Sat Jan 7 15:44:45 2017 +0100 @@ -3792,7 +4681,7 @@ Date: Fri Sep 30 10:48:43 2016 +0200 src/ifdhandler.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 3da71e26b368b39814618a83c2fc64e492941dc4 (tag: 1.4.25) +commit 3da71e26b368b39814618a83c2fc64e492941dc4 (tag: ccid-1.4.25, tag: 1.4.25) Author: Ludovic Rousseau Date: Fri Sep 30 10:36:54 2016 +0200 @@ -4265,7 +5154,7 @@ Date: Sun May 22 18:08:19 2016 +0200 README | 1 + 1 file changed, 1 insertion(+) -commit a1197c49cee479f4187dfd05c900224b99127e17 (tag: 1.4.24) +commit a1197c49cee479f4187dfd05c900224b99127e17 (tag: ccid-1.4.24, tag: 1.4.24) Author: Ludovic Rousseau Date: Sun May 22 17:07:03 2016 +0200 @@ -4438,7 +5327,7 @@ Date: Fri Apr 22 14:59:21 2016 +0200 src/ccid_usb.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -commit d636d54fdd07b416f591f28d84c6f0e3f4bda4f9 (tag: 1.4.23) +commit d636d54fdd07b416f591f28d84c6f0e3f4bda4f9 (tag: ccid-1.4.23, tag: 1.4.23) Author: Ludovic Rousseau Date: Wed Apr 20 10:04:45 2016 +0200 @@ -4708,7 +5597,7 @@ Date: Sun Jan 10 17:21:59 2016 +0100 MacOSX/configure | 4 ++++ 1 file changed, 4 insertions(+) -commit 894b184b85c6c45b017a0ea9bef6b3892d207942 (tag: 1.4.22) +commit 894b184b85c6c45b017a0ea9bef6b3892d207942 (tag: ccid-1.4.22, tag: 1.4.22) Author: Ludovic Rousseau Date: Sun Jan 10 14:40:02 2016 +0100 @@ -5374,7 +6263,7 @@ Date: Thu Oct 22 18:14:20 2015 +0200 readers/supported_readers.txt | 5 +++- 2 files changed, 57 insertions(+), 1 deletion(-) -commit 65886986170191a4b825bbf4701428e2d8442f1d (tag: 1.4.21) +commit 65886986170191a4b825bbf4701428e2d8442f1d (tag: ccid-1.4.21, tag: 1.4.21) Author: Ludovic Rousseau Date: Wed Oct 21 20:38:46 2015 +0200 @@ -5964,7 +6853,7 @@ Date: Fri Aug 7 20:49:15 2015 +0200 readers/Rutoken_PINPad_in.txt | 0 9 files changed, 0 insertions(+), 0 deletions(-) -commit 67b190c1c8144c60110a13fc3c07de9e8b992654 (tag: 1.4.20) +commit 67b190c1c8144c60110a13fc3c07de9e8b992654 (tag: ccid-1.4.20, tag: 1.4.20) Author: Ludovic Rousseau Date: Wed Aug 5 13:21:33 2015 +0200 @@ -6176,7 +7065,7 @@ Date: Thu May 14 21:06:03 2015 +0200 readers/supported_readers.txt | 3 +- 2 files changed, 58 insertions(+), 1 deletion(-) -commit a2d7335d8e2ccd2b29782edc88e9d82bd67d1891 (tag: 1.4.19) +commit a2d7335d8e2ccd2b29782edc88e9d82bd67d1891 (tag: ccid-1.4.19, tag: 1.4.19) Author: Ludovic Rousseau Date: Wed May 13 09:35:00 2015 +0200 @@ -6964,7 +7853,7 @@ Date: Tue Sep 30 18:27:26 2014 +0000 readers/supported_readers.txt | 3 +- 2 files changed, 58 insertions(+), 1 deletion(-) -commit d0742d5f32194a6a8f842ec3ca411e0e5f93db66 (tag: 1.4.18) +commit d0742d5f32194a6a8f842ec3ca411e0e5f93db66 (tag: ccid-1.4.18, tag: 1.4.18) Author: Ludovic Rousseau Date: Sat Sep 13 16:25:24 2014 +0000 @@ -7472,7 +8361,7 @@ Date: Mon Jun 16 13:42:45 2014 +0000 configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit b141f937611ffdf6a13e0d4645895af020c62801 (tag: 1.4.17) +commit b141f937611ffdf6a13e0d4645895af020c62801 (tag: ccid-1.4.17, tag: 1.4.17) Author: Ludovic Rousseau Date: Wed Jun 11 13:09:57 2014 +0000 @@ -7677,7 +8566,7 @@ Date: Fri Apr 11 18:46:19 2014 +0000 src/ccid.c | 4 ++++ 1 file changed, 4 insertions(+) -commit 41d0291d1e2f6e63d902253897eb8042b08fd6c8 (tag: 1.4.16) +commit 41d0291d1e2f6e63d902253897eb8042b08fd6c8 (tag: ccid-1.4.16, tag: 1.4.16) Author: Ludovic Rousseau Date: Sun Mar 23 15:13:34 2014 +0000 @@ -7963,7 +8852,7 @@ Date: Tue Feb 18 19:10:10 2014 +0000 readers/supported_readers.txt | 5 ++- 2 files changed, 55 insertions(+), 1 deletion(-) -commit ba0142521f7defd81c94ddcad7687ef65f5e1ed1 (tag: 1.4.15) +commit ba0142521f7defd81c94ddcad7687ef65f5e1ed1 (tag: ccid-1.4.15, tag: 1.4.15) Author: Ludovic Rousseau Date: Fri Feb 14 09:19:48 2014 +0000 @@ -8388,7 +9277,7 @@ Date: Tue Nov 26 13:49:00 2013 +0000 src/debug.h | 2 ++ 1 file changed, 2 insertions(+) -commit 5a7356dc29f00dc2ba6b3558fb0e1f5a499f9702 (tag: 1.4.14) +commit 5a7356dc29f00dc2ba6b3558fb0e1f5a499f9702 (tag: ccid-1.4.14, tag: 1.4.14) Author: Ludovic Rousseau Date: Mon Nov 25 18:09:17 2013 +0000 @@ -8585,7 +9474,7 @@ Date: Fri Oct 18 11:41:58 2013 +0000 readers/extra_features/README.txt | 5 +++ 3 files changed, 68 insertions(+) -commit 02b9c1c7ec6980322745fa4ae7558fc49c4d61be (tag: 1.4.13) +commit 02b9c1c7ec6980322745fa4ae7558fc49c4d61be (tag: ccid-1.4.13, tag: 1.4.13) Author: Ludovic Rousseau Date: Wed Oct 9 10:00:52 2013 +0000 @@ -8893,7 +9782,7 @@ Date: Tue Aug 20 16:40:33 2013 +0000 readers/supported_readers.txt | 5 +++- 2 files changed, 56 insertions(+), 1 deletion(-) -commit 9eb1d0af03e4d00ce7c3cbda8f70964752b23bd7 (tag: 1.4.12) +commit 9eb1d0af03e4d00ce7c3cbda8f70964752b23bd7 (tag: ccid-1.4.12, tag: 1.4.12) Author: Ludovic Rousseau Date: Mon Aug 12 21:43:09 2013 +0000 @@ -9245,7 +10134,7 @@ Date: Wed Jun 12 12:07:54 2013 +0000 ylwrap | 180 +++++++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 102 insertions(+), 78 deletions(-) -commit bb091a591b199128a06fc95427eaf5aa4e4711e8 (tag: 1.4.11) +commit bb091a591b199128a06fc95427eaf5aa4e4711e8 (tag: ccid-1.4.11, tag: 1.4.11) Author: Ludovic Rousseau Date: Wed Jun 12 11:55:52 2013 +0000 @@ -9933,7 +10822,7 @@ Date: Fri Apr 26 12:20:36 2013 +0000 readers/Broadcom_5880v2.txt | 56 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 2 deletions(-) -commit c5d86a9a7057397c5e31cc8e52b51298c5b26359 (tag: 1.4.10) +commit c5d86a9a7057397c5e31cc8e52b51298c5b26359 (tag: ccid-1.4.10, tag: 1.4.10) Author: Ludovic Rousseau Date: Tue Apr 16 12:43:58 2013 +0000 @@ -10431,7 +11320,7 @@ Date: Tue Jan 22 17:39:58 2013 +0000 readers/supported_readers.txt | 3 ++- 2 files changed, 58 insertions(+), 1 deletion(-) -commit 104d711cd67a29831130cccb73772e6d8c06b16d (tag: 1.4.9) +commit 104d711cd67a29831130cccb73772e6d8c06b16d (tag: ccid-1.4.9, tag: 1.4.9) Author: Ludovic Rousseau Date: Wed Jan 16 15:11:53 2013 +0000 @@ -10524,7 +11413,7 @@ Date: Sun Oct 7 11:45:35 2012 +0000 README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 2707566229c26c4e0b25914e41f3ae9d2685c0a0 (tag: 1.4.8) +commit 2707566229c26c4e0b25914e41f3ae9d2685c0a0 (tag: ccid-1.4.8, tag: 1.4.8) Author: Ludovic Rousseau Date: Sun Oct 7 11:36:44 2012 +0000 @@ -10807,7 +11696,7 @@ Date: Sat Jun 23 14:35:42 2012 +0000 readers/CherryST1044U.txt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) -commit aa9d7a8f584a348a554c7b0654d54e7de81de5db (tag: 1.4.7) +commit aa9d7a8f584a348a554c7b0654d54e7de81de5db (tag: ccid-1.4.7, tag: 1.4.7) Author: Ludovic Rousseau Date: Fri Jun 22 08:53:40 2012 +0000 @@ -11309,7 +12198,7 @@ Date: Sun Apr 8 07:53:56 2012 +0000 readers/supported_readers.txt | 5 +++- 2 files changed, 57 insertions(+), 1 deletion(-) -commit 55fd3abef8024d6559dc15cbdf07b02071a9ff51 (tag: 1.4.6) +commit 55fd3abef8024d6559dc15cbdf07b02071a9ff51 (tag: ccid-1.4.6, tag: 1.4.6) Author: Ludovic Rousseau Date: Fri Apr 6 16:16:19 2012 +0000 @@ -12218,7 +13107,7 @@ Date: Fri Oct 14 11:50:35 2011 +0000 readers/supported_readers.txt | 5 +- 2 files changed, 115 insertions(+), 2 deletions(-) -commit 81cee7ffb4624e625b686d04de9e086e28bf18c9 (tag: 1.4.5) +commit 81cee7ffb4624e625b686d04de9e086e28bf18c9 (tag: ccid-1.4.5, tag: 1.4.5) Author: Ludovic Rousseau Date: Tue Oct 11 20:20:53 2011 +0000 @@ -13099,7 +13988,7 @@ Date: Fri May 13 09:20:47 2011 +0000 configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 97292c00843822de2328c0ab64d503cfee27b58a (tag: 1.4.4) +commit 97292c00843822de2328c0ab64d503cfee27b58a (tag: ccid-1.4.4, tag: 1.4.4) Author: Ludovic Rousseau Date: Fri May 13 08:55:51 2011 +0000 @@ -13384,7 +14273,7 @@ Date: Thu Apr 7 11:49:12 2011 +0000 src/ccid_usb.c | 1 + 3 files changed, 6 insertions(+), 11 deletions(-) -commit 9e310c9ae9afa49c67ddf517c5e616cb2d74df80 (tag: 1.4.3) +commit 9e310c9ae9afa49c67ddf517c5e616cb2d74df80 (tag: ccid-1.4.3, tag: 1.4.3) Author: Ludovic Rousseau Date: Sat Apr 2 18:47:10 2011 +0000 @@ -13578,7 +14467,7 @@ Date: Fri Feb 25 09:03:48 2011 +0000 src/ifdhandler.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -commit 55044cab63afc5b924c18d9107493713944e1e4d (tag: 1.4.2) +commit 55044cab63afc5b924c18d9107493713944e1e4d (tag: ccid-1.4.2, tag: 1.4.2) Author: Ludovic Rousseau Date: Tue Feb 22 22:12:51 2011 +0000 @@ -14291,7 +15180,7 @@ Date: Fri Dec 10 09:14:00 2010 +0000 readers/Todos_Connectable.txt | 54 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) -commit 8fda904ac92a3566be8c258d4304338e0c21c6ef (tag: 1.4.1) +commit 8fda904ac92a3566be8c258d4304338e0c21c6ef (tag: ccid-1.4.1, tag: 1.4.1) Author: Ludovic Rousseau Date: Fri Dec 3 14:41:27 2010 +0000 @@ -15055,7 +15944,7 @@ Date: Thu Aug 5 18:09:04 2010 +0000 configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 5e4dbf89f56b7ef470db0b4bd0195e896a5be9b1 (tag: 1.4.0) +commit 5e4dbf89f56b7ef470db0b4bd0195e896a5be9b1 (tag: ccid-1.4.0, tag: 1.4.0) Author: Ludovic Rousseau Date: Wed Aug 4 13:21:33 2010 +0000 @@ -15648,7 +16537,7 @@ Date: Thu Jun 10 14:48:17 2010 +0000 src/parse.c | 284 +++++----- 6 files changed, 522 insertions(+), 534 deletions(-) -commit f4d7b9877cdd55583be1b0004ba7ec0ee85a42da (tag: 1.3.13) +commit f4d7b9877cdd55583be1b0004ba7ec0ee85a42da (tag: ccid-1.3.13, tag: 1.3.13) Author: Ludovic Rousseau Date: Fri Jun 4 13:29:42 2010 +0000 @@ -15866,7 +16755,7 @@ Date: Sat May 8 09:56:19 2010 +0000 configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit c4bc4ddc487ff9f36491479d7084a86f042474a0 (tag: 1.3.12) +commit c4bc4ddc487ff9f36491479d7084a86f042474a0 (tag: ccid-1.3.12, tag: 1.3.12) Author: Ludovic Rousseau Date: Sat May 8 09:54:35 2010 +0000 @@ -17330,7 +18219,7 @@ Date: Fri Jul 31 08:42:49 2009 +0000 src/ccid.h | 3 +++ 1 file changed, 3 insertions(+) -commit fc8b22909a9df37b6e64461a77be59949fe6d3f4 (tag: 1.3.11) +commit fc8b22909a9df37b6e64461a77be59949fe6d3f4 (tag: ccid-1.3.11, tag: 1.3.11) Author: Ludovic Rousseau Date: Tue Jul 28 20:52:50 2009 +0000 @@ -18548,7 +19437,7 @@ Date: Sat Mar 7 15:50:22 2009 +0000 README | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) -commit 0a53d04c7c0809a692ed1b62d2a257d195699b4a (tag: 1.3.10) +commit 0a53d04c7c0809a692ed1b62d2a257d195699b4a (tag: ccid-1.3.10, tag: 1.3.10) Author: Ludovic Rousseau Date: Sat Mar 7 15:35:24 2009 +0000 @@ -19134,7 +20023,7 @@ Date: Tue Nov 18 21:50:41 2008 +0000 bootstrap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 0d1a44544d252ed615516da09e7c571ed0a3caae (tag: 1.3.9) +commit 0d1a44544d252ed615516da09e7c571ed0a3caae (tag: ccid-1.3.9, tag: 1.3.9) Author: Ludovic Rousseau Date: Tue Nov 18 15:45:30 2008 +0000 @@ -19991,7 +20880,7 @@ Date: Tue Jul 29 07:22:09 2008 +0000 readers/Makefile.am | 1 + 2 files changed, 54 insertions(+) -commit 0ee15cad86cc0034b8e812adb3481b6d751faaf6 (tag: 1.3.8) +commit 0ee15cad86cc0034b8e812adb3481b6d751faaf6 (tag: ccid-1.3.8, tag: 1.3.8) Author: Ludovic Rousseau Date: Fri Jun 27 15:28:44 2008 +0000 @@ -20301,7 +21190,7 @@ Date: Mon Jun 9 08:17:23 2008 +0000 reconf | 4 ++-- 5 files changed, 4 insertions(+), 4 deletions(-) -commit c824a3209b85ba89e17ea6e6ce9f809fbe581c26 (tag: 1.3.7) +commit c824a3209b85ba89e17ea6e6ce9f809fbe581c26 (tag: ccid-1.3.7, tag: 1.3.7) Author: Ludovic Rousseau Date: Sun Jun 8 09:01:21 2008 +0000 @@ -20658,7 +21547,7 @@ Date: Thu May 8 12:02:18 2008 +0000 README | 2 ++ 1 file changed, 2 insertions(+) -commit 6aa78ac743112efbcd627780758102004837dbc9 (tag: 1.3.6) +commit 6aa78ac743112efbcd627780758102004837dbc9 (tag: ccid-1.3.6, tag: 1.3.6) Author: Ludovic Rousseau Date: Wed Apr 30 12:45:12 2008 +0000 @@ -21102,7 +21991,7 @@ Date: Wed Feb 27 12:02:45 2008 +0000 readers/Vega-Alpha.txt | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 102 insertions(+) -commit ace6e7d70e435b638b29efd9a5216b403974c76c (tag: 1.3.5) +commit ace6e7d70e435b638b29efd9a5216b403974c76c (tag: ccid-1.3.5, tag: 1.3.5) Author: Ludovic Rousseau Date: Fri Feb 22 13:42:27 2008 +0000 @@ -21339,7 +22228,7 @@ Date: Fri Feb 8 14:58:08 2008 +0000 src/ifdhandler.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -commit d6aea064b698be40a731039b40c8254a08372e26 (tag: 1.3.4) +commit d6aea064b698be40a731039b40c8254a08372e26 (tag: ccid-1.3.4, tag: 1.3.4) Author: Ludovic Rousseau Date: Fri Feb 8 14:43:36 2008 +0000 @@ -21453,7 +22342,7 @@ Date: Thu Feb 7 07:49:12 2008 +0000 src/ifdhandler.c | 1 + 1 file changed, 1 insertion(+) -commit 8c41cb313495cfb0cc15e6fb0519ae08479b11ca (tag: 1.3.3) +commit 8c41cb313495cfb0cc15e6fb0519ae08479b11ca (tag: ccid-1.3.3, tag: 1.3.3) Author: Ludovic Rousseau Date: Wed Feb 6 14:26:30 2008 +0000 @@ -21745,7 +22634,7 @@ Date: Thu Jan 24 09:21:13 2008 +0000 src/commands.c | 8 ++++++++ 1 file changed, 8 insertions(+) -commit 0b854d9332da6192aa3b4922a97cde740d84860a (tag: 1.3.2) +commit 0b854d9332da6192aa3b4922a97cde740d84860a (tag: ccid-1.3.2, tag: 1.3.2) Author: Ludovic Rousseau Date: Tue Jan 22 19:33:39 2008 +0000 @@ -22032,7 +22921,7 @@ Date: Fri Nov 16 14:43:59 2007 +0000 README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit e9335fa1741c4df27d3036fe09a57630d15727d7 (tag: 1.3.1) +commit e9335fa1741c4df27d3036fe09a57630d15727d7 (tag: ccid-1.3.1, tag: 1.3.1) Author: Ludovic Rousseau Date: Fri Nov 16 13:27:00 2007 +0000 @@ -22931,7 +23820,7 @@ Date: Thu May 10 13:05:51 2007 +0000 contrib/RSA_SecurID/RSA_SecurID_getpasswd.1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit ec316fc748c8103840fd5a1bc54c044c7258fce8 (tag: 1.3.0) +commit ec316fc748c8103840fd5a1bc54c044c7258fce8 (tag: ccid-1.3.0, tag: 1.3.0) Author: Ludovic Rousseau Date: Thu May 10 09:16:42 2007 +0000 @@ -23853,7 +24742,7 @@ Date: Tue Jan 30 15:01:50 2007 +0000 src/ccid.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) -commit 949365adef6369b258129c77a57b8f235031d147 (tag: 1.2.1) +commit 949365adef6369b258129c77a57b8f235031d147 (tag: ccid-1.2.1, tag: 1.2.1) Author: Ludovic Rousseau Date: Sat Jan 27 16:48:06 2007 +0000 @@ -23985,7 +24874,7 @@ Date: Sat Jan 20 15:47:19 2007 +0000 README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 1f320ef0e0e1b03bd259a666e222a08a48a2ecf4 (tag: 1.2.0) +commit 1f320ef0e0e1b03bd259a666e222a08a48a2ecf4 (tag: ccid-1.2.0, tag: 1.2.0) Author: Ludovic Rousseau Date: Fri Jan 19 19:53:39 2007 +0000 @@ -25081,7 +25970,7 @@ Date: Wed Sep 6 13:49:40 2006 +0000 src/ifdhandler.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) -commit c408dd5db5aab9566dd9f1f8c191252c739b4b73 (tag: 1.1.0) +commit c408dd5db5aab9566dd9f1f8c191252c739b4b73 (tag: ccid-1.1.0, tag: 1.1.0) Author: Ludovic Rousseau Date: Fri Aug 11 17:20:57 2006 +0000 @@ -25839,7 +26728,7 @@ Date: Sat Apr 22 15:54:22 2006 +0000 src/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit f16c909b3da4869eb00a221e3907001d1bb3295d (tag: 1.0.1) +commit f16c909b3da4869eb00a221e3907001d1bb3295d (tag: ccid-1.0.1, tag: 1.0.1) Author: Ludovic Rousseau Date: Sat Apr 22 15:31:05 2006 +0000 @@ -26323,7 +27212,7 @@ Date: Mon Mar 6 09:09:19 2006 +0000 configure.in | 4 ++++ 1 file changed, 4 insertions(+) -commit e6475898991f0e9c9414c8e2823f7bb7e0b55d46 (tag: 1.0.0) +commit e6475898991f0e9c9414c8e2823f7bb7e0b55d46 (tag: ccid-1.0.0, tag: 1.0.0) Author: Ludovic Rousseau Date: Fri Mar 3 17:21:52 2006 +0000 @@ -27426,7 +28315,7 @@ Date: Tue Nov 29 09:15:13 2005 +0000 configure.in | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -commit 11516ae737ce5122394b474dcb852b9959735c90 (tag: 0.9.4) +commit 11516ae737ce5122394b474dcb852b9959735c90 (tag: ccid-0.9.4, tag: 0.9.4) Author: Ludovic Rousseau Date: Sun Nov 27 19:44:29 2005 +0000 @@ -29546,7 +30435,7 @@ Date: Thu Mar 17 10:11:14 2005 +0000 configure.in | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) -commit f9148888fe39c6844f932c3261706bc71419373d (tag: 0.9.3) +commit f9148888fe39c6844f932c3261706bc71419373d (tag: ccid-0.9.3, tag: 0.9.3) Author: Ludovic Rousseau Date: Mon Mar 14 19:36:21 2005 +0000 @@ -30794,7 +31683,7 @@ Date: Tue Aug 17 16:56:19 2004 +0000 src/Info.plist | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -commit 430640bfea8afad3464fcc6113db8c53da9a6ced (tag: 0.9.2) +commit 430640bfea8afad3464fcc6113db8c53da9a6ced (tag: ccid-0.9.2, tag: 0.9.2) Author: Ludovic Rousseau Date: Sun Aug 15 20:43:59 2004 +0000 @@ -31920,7 +32809,7 @@ Date: Fri Jul 2 12:06:44 2004 +0000 src/openct/README | 7 +++++++ 1 file changed, 7 insertions(+) -commit 264cf2ce141bf47385d841360d584e64b1a74187 (tag: 0.9.1) +commit 264cf2ce141bf47385d841360d584e64b1a74187 (tag: ccid-0.9.1, tag: 0.9.1) Author: Ludovic Rousseau Date: Thu Jul 1 11:42:39 2004 +0000 @@ -32028,7 +32917,7 @@ Date: Wed Jun 30 14:41:18 2004 +0000 src/towitoko/COPYING | 504 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 504 insertions(+) -commit 87f903f5610a480864f9357bfd8c22abc7c9ae6d (tag: 0.9.0) +commit 87f903f5610a480864f9357bfd8c22abc7c9ae6d (tag: ccid-0.9.0, tag: 0.9.0) Author: Ludovic Rousseau Date: Wed Jun 30 14:06:29 2004 +0000 @@ -33244,7 +34133,7 @@ Date: Tue Apr 6 06:52:34 2004 +0000 src/ifdhandler.c | 74 ++++++++++++++++++++++++++++++++------------------------ 1 file changed, 42 insertions(+), 32 deletions(-) -commit c986e5c2d69e352d3bd3d70f2191fc0eea50ec02 (tag: 0.4.2) +commit c986e5c2d69e352d3bd3d70f2191fc0eea50ec02 (tag: ccid-0.4.2, tag: 0.4.2) Author: Ludovic Rousseau Date: Mon Apr 5 09:56:52 2004 +0000 @@ -33422,7 +34311,7 @@ Date: Tue Feb 24 21:16:51 2004 +0000 Makefile.am | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -commit 836596b64355779eaa919338ca9ae86758c88d38 (tag: 0.4.1) +commit 836596b64355779eaa919338ca9ae86758c88d38 (tag: ccid-0.4.1, tag: 0.4.1) Author: Ludovic Rousseau Date: Sat Feb 14 12:46:18 2004 +0000 @@ -33470,7 +34359,7 @@ Date: Sat Feb 14 12:26:09 2004 +0000 src/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 34a5f203544fa61cd8ebc39091120bfd78df6e36 (tag: 0.4.0) +commit 34a5f203544fa61cd8ebc39091120bfd78df6e36 (tag: ccid-0.4.0, tag: 0.4.0) Author: Ludovic Rousseau Date: Fri Feb 13 07:58:21 2004 +0000 @@ -34381,7 +35270,7 @@ Date: Tue Nov 4 22:20:28 2003 +0000 README | 2 ++ 1 file changed, 2 insertions(+) -commit 62d5599a12f167a7452771caf9007510b76ccc90 (tag: 0.3.2) +commit 62d5599a12f167a7452771caf9007510b76ccc90 (tag: ccid-0.3.2, tag: 0.3.2) Author: Ludovic Rousseau Date: Tue Nov 4 22:16:38 2003 +0000 @@ -34592,7 +35481,7 @@ Date: Tue Oct 28 16:51:37 2003 +0000 src/commands.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) -commit 91491164758800c36ad6e8515889114cc1e6d613 (tag: 0.3.1) +commit 91491164758800c36ad6e8515889114cc1e6d613 (tag: ccid-0.3.1, tag: 0.3.1) Author: Ludovic Rousseau Date: Tue Sep 23 07:54:56 2003 +0000 @@ -34815,7 +35704,7 @@ Date: Wed Sep 10 16:15:06 2003 +0000 README | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) -commit 5bb97c792ea0059af20ca01acbee48ecc81c4e46 (tag: 0.3.0) +commit 5bb97c792ea0059af20ca01acbee48ecc81c4e46 (tag: ccid-0.3.0, tag: 0.3.0) Author: Ludovic Rousseau Date: Wed Sep 10 12:27:28 2003 +0000 @@ -35100,7 +35989,7 @@ Date: Wed Aug 27 06:53:56 2003 +0000 src/capabilities.c | 30 ------------------------------ 3 files changed, 1 insertion(+), 32 deletions(-) -commit 75f9cf942f47aff203b9fbd2715ccd77a19628fb (tag: 0.2.0) +commit 75f9cf942f47aff203b9fbd2715ccd77a19628fb (tag: ccid-0.2.0, tag: 0.2.0) Author: Ludovic Rousseau Date: Tue Aug 26 20:16:00 2003 +0000 @@ -35377,7 +36266,7 @@ Date: Wed Aug 13 13:46:09 2003 +0000 INSTALL | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) -commit 2581d621ab7f6a02033ed652bdafad9fdf5df30f (tag: 0.1.0) +commit 2581d621ab7f6a02033ed652bdafad9fdf5df30f (tag: ccid-0.1.0, tag: 0.1.0) Author: Ludovic Rousseau Date: Tue Aug 12 22:15:01 2003 +0000 diff --git a/MacOSX/reader.h b/MacOSX/reader.h index 7c8a802..2b5fcd8 100644 --- a/MacOSX/reader.h +++ b/MacOSX/reader.h @@ -150,7 +150,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /* Set structure elements aligment on bytes * http://gcc.gnu.org/onlinedocs/gcc/Structure_002dPacking-Pragmas.html */ -#if defined(__APPLE__) | defined(sun) +#if defined(__APPLE__) | defined(sun) | defined(__NetBSD__) #pragma pack(1) #else #pragma pack(push, 1) @@ -247,7 +247,7 @@ typedef struct { } PIN_PROPERTIES_STRUCTURE; /* restore default structure elements alignment */ -#if defined(__APPLE__) | defined(sun) +#if defined(__APPLE__) | defined(sun) | defined(__NetBSD__) #pragma pack() #else #pragma pack(pop) diff --git a/Makefile.am b/Makefile.am index 49574a3..8a7a565 100644 --- a/Makefile.am +++ b/Makefile.am @@ -5,7 +5,6 @@ SUBDIRS = readers examples contrib src EXTRA_DIST = bootstrap ChangeLog SCARDGETATTRIB.txt \ README.md \ $(AUX_DIST) \ - m4/ax_pthread.m4 \ MacOSX/configure \ MacOSX/convert_reader_h.pl \ MacOSX/debuglog.h \ diff --git a/Makefile.in b/Makefile.in index 9a70313..7dc8ec0 100644 --- a/Makefile.in +++ b/Makefile.in @@ -89,8 +89,7 @@ build_triplet = @build@ host_triplet = @host@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac @@ -163,7 +162,7 @@ CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in AUTHORS \ COPYING ChangeLog INSTALL NEWS ar-lib compile config.guess \ - config.sub install-sh ltmain.sh missing ylwrap + config.sub depcomp install-sh ltmain.sh missing ylwrap DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -307,7 +306,6 @@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ -bindir_exp = @bindir_exp@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ @@ -347,7 +345,6 @@ serialconfdir = @serialconfdir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -sysconfdir_exp = @sysconfdir_exp@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ @@ -358,7 +355,6 @@ SUBDIRS = readers examples contrib src EXTRA_DIST = bootstrap ChangeLog SCARDGETATTRIB.txt \ README.md \ $(AUX_DIST) \ - m4/ax_pthread.m4 \ MacOSX/configure \ MacOSX/convert_reader_h.pl \ MacOSX/debuglog.h \ diff --git a/README.md b/README.md index 641f64a..a95fbd3 100644 --- a/README.md +++ b/README.md @@ -42,8 +42,8 @@ Supported operating systems: See also https://ccid.apdu.fr/ for more information. -Debug informations: -=================== +Debug information: +================== The driver uses the debug function provided by pcscd. So if pcscd sends its debug to stdout (`pcscd --foreground`) then the CCID driver will also @@ -55,7 +55,7 @@ The `Info.plist` file is installed, by default, in `/usr/local/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist` or set the environment variable `LIBCCID_ifdLogLevel`. -The debug level is set in the `ifdLogLevel` field. It is a binary OR +The debug level is set in the `ifdLogLevel` field. It is a binary OR combination of 4 different levels. - 1: critical: important error messages - 2: info: informative messages like what reader was detected @@ -68,7 +68,7 @@ By default the debug level is set to 3 (1 + 2) and correspond to the critical and info levels. You have to restart the driver so it reads the configuration file again -and use the new debug level value. To restart the driver you just need +and uses the new debug level value. To restart the driver you just need to unplug all your CCID readers so the driver is unloaded and then replug your readers. You can also restart pcscd. @@ -91,7 +91,7 @@ combination of 4 different levels. By default the voltage level is set to 0 and corresponds to 5V. You have to restart the driver so it reads the configuration file again -and use the new voltage level value. To restart the driver you just need +and uses the new voltage level value. To restart the driver you just need to unplug all your CCID readers so the driver is unloaded and then replug your readers. You can also restart pcscd. @@ -117,6 +117,48 @@ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. History: ======== +1.4.35 - 25 July 2021, Ludovic Rousseau + - Add support of + - ArkSigner Connect2Sign + - Circle CCR7115 ICC + - Circle CCR7315 + - Circle CIR215 CL + - Circle CIR215 PICC + - Circle CIR315 + - Circle CIR315 (idProduct: 0x3100) + - Circle CIR315 CL + - Circle CIR315 Dual & 1S + - Circle CIR415 CL & 1S + - Circle Idaxis SecurePIV + - DUALi DE-ABCM6 RFRW + - Feitian R701 + - Generic EMV Smartcard Reader (0x058C:0x9590) + - INMAX DWR18 HC + - INMAX DWR18 HPC + - Identiv Identiv uTrust 4711 F CL + SAM Reader + - Identiv uTrust 3721 Contactless Reader + - Infocrypt HWDSSL DEVICE + - Infocrypt Token++ lite + - MK Technology KeyPass D1 + - SONY Felica RC-S300/P + - SONY Felica RC-S300/S + - SONY Felica RC-S660/U + - SYNNIX CL-2100R + - SoloKeys Solo 2 + - Spyrus Inc PocketVault P-3X (idProduct: 0x3203) + - parse: use "ICCD token" for ICCD tokens + - Support 4 card slots with Feitian R502 C9 + - ccid_usb: ask for bNumDataRatesSupported data rates + - Solve a performance issue with T=1 and CCID_CLASS_AUTO_PPS_PROP + - Fix a possible buffer overflow in T0ProcACK + - IFDHSetProtocolParameters: set IFSC/IFSD only for TPDU readers + - CCID serial: Reset buffers on failed read + - Fix yylex missing symbol + - Gemalto pinpad: fix incorrect bEntryValidationCondition for + SecurePINVerify and SecurePINModify + - Fix bit4id miniLector-EVO pinpad support + - The Kobil TriBank reader does NOT support extended APDU + 1.4.34 - 24 January 2021, Ludovic Rousseau - Add support of - ACS ACR1252IMP Reader diff --git a/aclocal.m4 b/aclocal.m4 index f1c5b9b..a6e3133 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -20,6 +20,492 @@ You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_pthread.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +# +# DESCRIPTION +# +# This macro figures out how to build C programs using POSIX threads. It +# sets the PTHREAD_LIBS output variable to the threads library and linker +# flags, and the PTHREAD_CFLAGS output variable to any special C compiler +# flags that are needed. (The user can also force certain compiler +# flags/libs to be tested by setting these environment variables.) +# +# Also sets PTHREAD_CC to any special C compiler that is needed for +# multi-threaded programs (defaults to the value of CC otherwise). (This +# is necessary on AIX to use the special cc_r compiler alias.) +# +# NOTE: You are assumed to not only compile your program with these flags, +# but also to link with them as well. For example, you might link with +# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS +# +# If you are only building threaded programs, you may wish to use these +# variables in your default LIBS, CFLAGS, and CC: +# +# LIBS="$PTHREAD_LIBS $LIBS" +# CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +# CC="$PTHREAD_CC" +# +# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant +# has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to +# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). +# +# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the +# PTHREAD_PRIO_INHERIT symbol is defined when compiling with +# PTHREAD_CFLAGS. +# +# ACTION-IF-FOUND is a list of shell commands to run if a threads library +# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it +# is not found. If ACTION-IF-FOUND is not specified, the default action +# will define HAVE_PTHREAD. +# +# Please let the authors know if this macro fails on any platform, or if +# you have any other suggestions or comments. This macro was based on work +# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help +# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by +# Alejandro Forero Cuervo to the autoconf macro repository. We are also +# grateful for the helpful feedback of numerous users. +# +# Updated for Autoconf 2.68 by Daniel Richard G. +# +# LICENSE +# +# Copyright (c) 2008 Steven G. Johnson +# Copyright (c) 2011 Daniel Richard G. +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 24 + +AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) +AC_DEFUN([AX_PTHREAD], [ +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_CC]) +AC_REQUIRE([AC_PROG_SED]) +AC_LANG_PUSH([C]) +ax_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on Tru64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then + ax_pthread_save_CC="$CC" + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"]) + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS]) + AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes]) + AC_MSG_RESULT([$ax_pthread_ok]) + if test "x$ax_pthread_ok" = "xno"; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + CC="$ax_pthread_save_CC" + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items starting with a "-" are +# C compiler flags, and other items are library names, except for "none" +# which indicates that we try without any flags at all, and "pthread-config" +# which is a program returning the flags for the Pth emulation library. + +ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64 +# (Note: HP C rejects this with "bad form for `-t' option") +# -pthreads: Solaris/gcc (Note: HP C also rejects) +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads and +# -D_REENTRANT too), HP C (must be checked before -lpthread, which +# is present but should not be used directly; and before -mthreads, +# because the compiler interprets this as "-mt" + "-hreads") +# -mthreads: Mingw32/gcc, Lynx/gcc +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case $host_os in + + freebsd*) + + # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) + # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) + + ax_pthread_flags="-kthread lthread $ax_pthread_flags" + ;; + + hpux*) + + # From the cc(1) man page: "[-mt] Sets various -D flags to enable + # multi-threading and also sets -lpthread." + + ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags" + ;; + + openedition*) + + # IBM z/OS requires a feature-test macro to be defined in order to + # enable POSIX threads at all, so give the user a hint if this is + # not set. (We don't define these ourselves, as they can affect + # other portions of the system API in unpredictable ways.) + + AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING], + [ +# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS) + AX_PTHREAD_ZOS_MISSING +# endif + ], + [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])]) + ;; + + solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (N.B.: The stubs are missing + # pthread_cleanup_push, or rather a function called by this macro, + # so we could check for that, but who knows whether they'll stub + # that too in a future libc.) So we'll check first for the + # standard Solaris way of linking pthreads (-mt -lpthread). + + ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags" + ;; +esac + +# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) + +AS_IF([test "x$GCC" = "xyes"], + [ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"]) + +# The presence of a feature test macro requesting re-entrant function +# definitions is, on some systems, a strong hint that pthreads support is +# correctly enabled + +case $host_os in + darwin* | hpux* | linux* | osf* | solaris*) + ax_pthread_check_macro="_REENTRANT" + ;; + + aix*) + ax_pthread_check_macro="_THREAD_SAFE" + ;; + + *) + ax_pthread_check_macro="--" + ;; +esac +AS_IF([test "x$ax_pthread_check_macro" = "x--"], + [ax_pthread_check_cond=0], + [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"]) + +# Are we compiling with Clang? + +AC_CACHE_CHECK([whether $CC is Clang], + [ax_cv_PTHREAD_CLANG], + [ax_cv_PTHREAD_CLANG=no + # Note that Autoconf sets GCC=yes for Clang as well as GCC + if test "x$GCC" = "xyes"; then + AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG], + [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ +# if defined(__clang__) && defined(__llvm__) + AX_PTHREAD_CC_IS_CLANG +# endif + ], + [ax_cv_PTHREAD_CLANG=yes]) + fi + ]) +ax_pthread_clang="$ax_cv_PTHREAD_CLANG" + +ax_pthread_clang_warning=no + +# Clang needs special handling, because older versions handle the -pthread +# option in a rather... idiosyncratic way + +if test "x$ax_pthread_clang" = "xyes"; then + + # Clang takes -pthread; it has never supported any other flag + + # (Note 1: This will need to be revisited if a system that Clang + # supports has POSIX threads in a separate library. This tends not + # to be the way of modern systems, but it's conceivable.) + + # (Note 2: On some systems, notably Darwin, -pthread is not needed + # to get POSIX threads support; the API is always present and + # active. We could reasonably leave PTHREAD_CFLAGS empty. But + # -pthread does define _REENTRANT, and while the Darwin headers + # ignore this macro, third-party headers might not.) + + PTHREAD_CFLAGS="-pthread" + PTHREAD_LIBS= + + ax_pthread_ok=yes + + # However, older versions of Clang make a point of warning the user + # that, in an invocation where only linking and no compilation is + # taking place, the -pthread option has no effect ("argument unused + # during compilation"). They expect -pthread to be passed in only + # when source code is being compiled. + # + # Problem is, this is at odds with the way Automake and most other + # C build frameworks function, which is that the same flags used in + # compilation (CFLAGS) are also used in linking. Many systems + # supported by AX_PTHREAD require exactly this for POSIX threads + # support, and in fact it is often not straightforward to specify a + # flag that is used only in the compilation phase and not in + # linking. Such a scenario is extremely rare in practice. + # + # Even though use of the -pthread flag in linking would only print + # a warning, this can be a nuisance for well-run software projects + # that build with -Werror. So if the active version of Clang has + # this misfeature, we search for an option to squash it. + + AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread], + [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG], + [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown + # Create an alternate version of $ac_link that compiles and + # links in two steps (.c -> .o, .o -> exe) instead of one + # (.c -> exe), because the warning occurs only in the second + # step + ax_pthread_save_ac_link="$ac_link" + ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' + ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"` + ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" + ax_pthread_save_CFLAGS="$CFLAGS" + for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do + AS_IF([test "x$ax_pthread_try" = "xunknown"], [break]) + CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" + ac_link="$ax_pthread_save_ac_link" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], + [ac_link="$ax_pthread_2step_ac_link" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], + [break]) + ]) + done + ac_link="$ax_pthread_save_ac_link" + CFLAGS="$ax_pthread_save_CFLAGS" + AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no]) + ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" + ]) + + case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in + no | unknown) ;; + *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; + esac + +fi # $ax_pthread_clang = yes + +if test "x$ax_pthread_ok" = "xno"; then +for ax_pthread_try_flag in $ax_pthread_flags; do + + case $ax_pthread_try_flag in + none) + AC_MSG_CHECKING([whether pthreads work without any flags]) + ;; + + -mt,pthread) + AC_MSG_CHECKING([whether pthreads work with -mt -lpthread]) + PTHREAD_CFLAGS="-mt" + PTHREAD_LIBS="-lpthread" + ;; + + -*) + AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag]) + PTHREAD_CFLAGS="$ax_pthread_try_flag" + ;; + + pthread-config) + AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) + AS_IF([test "x$ax_pthread_config" = "xno"], [continue]) + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag]) + PTHREAD_LIBS="-l$ax_pthread_try_flag" + ;; + esac + + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include +# if $ax_pthread_check_cond +# error "$ax_pthread_check_macro must be defined" +# endif + static void routine(void *a) { a = 0; } + static void *start_routine(void *a) { return a; }], + [pthread_t th; pthread_attr_t attr; + pthread_create(&th, 0, start_routine, 0); + pthread_join(th, 0); + pthread_attr_init(&attr); + pthread_cleanup_push(routine, 0); + pthread_cleanup_pop(0) /* ; */])], + [ax_pthread_ok=yes], + []) + + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" + + AC_MSG_RESULT([$ax_pthread_ok]) + AS_IF([test "x$ax_pthread_ok" = "xyes"], [break]) + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + +# Various other checks: +if test "x$ax_pthread_ok" = "xyes"; then + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + AC_CACHE_CHECK([for joinable pthread attribute], + [ax_cv_PTHREAD_JOINABLE_ATTR], + [ax_cv_PTHREAD_JOINABLE_ATTR=unknown + for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], + [int attr = $ax_pthread_attr; return attr /* ; */])], + [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break], + []) + done + ]) + AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \ + test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \ + test "x$ax_pthread_joinable_attr_defined" != "xyes"], + [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], + [$ax_cv_PTHREAD_JOINABLE_ATTR], + [Define to necessary symbol if this constant + uses a non-standard name on your system.]) + ax_pthread_joinable_attr_defined=yes + ]) + + AC_CACHE_CHECK([whether more special flags are required for pthreads], + [ax_cv_PTHREAD_SPECIAL_FLAGS], + [ax_cv_PTHREAD_SPECIAL_FLAGS=no + case $host_os in + solaris*) + ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS" + ;; + esac + ]) + AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ + test "x$ax_pthread_special_flags_added" != "xyes"], + [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" + ax_pthread_special_flags_added=yes]) + + AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], + [ax_cv_PTHREAD_PRIO_INHERIT], + [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[int i = PTHREAD_PRIO_INHERIT;]])], + [ax_cv_PTHREAD_PRIO_INHERIT=yes], + [ax_cv_PTHREAD_PRIO_INHERIT=no]) + ]) + AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ + test "x$ax_pthread_prio_inherit_defined" != "xyes"], + [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.]) + ax_pthread_prio_inherit_defined=yes + ]) + + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" + + # More AIX lossage: compile with *_r variant + if test "x$GCC" != "xyes"; then + case $host_os in + aix*) + AS_CASE(["x/$CC"], + [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6], + [#handle absolute path differently from PATH based program lookup + AS_CASE(["x$CC"], + [x/*], + [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])], + [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])]) + ;; + esac + fi +fi + +test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" + +AC_SUBST([PTHREAD_LIBS]) +AC_SUBST([PTHREAD_CFLAGS]) +AC_SUBST([PTHREAD_CC]) + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test "x$ax_pthread_ok" = "xyes"; then + ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1]) + : +else + ax_pthread_ok=no + $2 +fi +AC_LANG_POP +])dnl AX_PTHREAD + # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 12 (pkg-config-0.29.2) @@ -1520,8 +2006,6 @@ AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR -m4_include([m4/as-ac-expand.m4]) -m4_include([m4/ax_pthread.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) diff --git a/config.h.in b/config.h.in index 1e4d64c..928963a 100644 --- a/config.h.in +++ b/config.h.in @@ -121,9 +121,6 @@ /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS -/* Define to 1 if you can safely include both and . */ -#undef TIME_WITH_SYS_TIME - /* composite device are seen as multi-slots */ #undef USE_COMPOSITE_AS_MULTISLOT diff --git a/configure b/configure index 04b05f7..fbb5b97 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for ccid 1.4.34. +# Generated by GNU Autoconf 2.69 for ccid 1.4.35. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -587,8 +587,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='ccid' PACKAGE_TARNAME='ccid' -PACKAGE_VERSION='1.4.34' -PACKAGE_STRING='ccid 1.4.34' +PACKAGE_VERSION='1.4.35' +PACKAGE_STRING='ccid 1.4.35' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -634,8 +634,6 @@ ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS -sysconfdir_exp -bindir_exp serialconfdir ccidtwindir usbdropdir @@ -1379,7 +1377,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures ccid 1.4.34 to adapt to many kinds of systems. +\`configure' configures ccid 1.4.35 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1450,7 +1448,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ccid 1.4.34:";; + short | recursive ) echo "Configuration of ccid 1.4.35:";; esac cat <<\_ACEOF @@ -1597,7 +1595,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ccid configure 1.4.34 +ccid configure 1.4.35 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2016,7 +2014,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by ccid $as_me 1.4.34, which was +It was created by ccid $as_me 1.4.35, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2875,7 +2873,7 @@ fi # Define the identity of the package. PACKAGE='ccid' - VERSION='1.4.34' + VERSION='1.4.35' cat >>confdefs.h <<_ACEOF @@ -12787,118 +12785,6 @@ CC=$lt_save_CC # Checks for header files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - for ac_header in errno.h fcntl.h stdlib.h unistd.h termios.h string.h sys/time.h sys/types.h stdarg.h arpa/inet.h stdio.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -13008,41 +12894,6 @@ _ACEOF fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 -$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } -if ${ac_cv_header_time+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include - -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_time=yes -else - ac_cv_header_time=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 -$as_echo "$ac_cv_header_time" >&6; } -if test $ac_cv_header_time = yes; then - -$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h - -fi - # Checks for library functions. for ac_func in select strerror strncpy memcpy strlcpy strlcat @@ -13467,6 +13318,8 @@ fi if test "${multithread}" != no ; then + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -13476,19 +13329,23 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu ax_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h -# requires special compiler flags (e.g. on True64 or Sequent). +# requires special compiler flags (e.g. on Tru64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: -if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then - save_CFLAGS="$CFLAGS" +if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then + ax_pthread_save_CC="$CC" + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + if test "x$PTHREAD_CC" != "x"; then : + CC="$PTHREAD_CC" +fi CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 -$as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS" >&5 +$as_echo_n "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -13514,12 +13371,13 @@ rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 $as_echo "$ax_pthread_ok" >&6; } - if test x"$ax_pthread_ok" = xno; then + if test "x$ax_pthread_ok" = "xno"; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" + CC="$ax_pthread_save_CC" + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" fi # We must check for the threads library under a number of different @@ -13532,7 +13390,7 @@ fi # which indicates that we try without any flags at all, and "pthread-config" # which is a program returning the flags for the Pth emulation library. -ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" +ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: @@ -13541,51 +13399,257 @@ ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mt # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) -# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) -# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) -# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) -# -pthreads: Solaris/gcc -# -mthreads: Mingw32/gcc, Lynx/gcc +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64 +# (Note: HP C rejects this with "bad form for `-t' option") +# -pthreads: Solaris/gcc (Note: HP C also rejects) # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it -# doesn't hurt to check since this sometimes defines pthreads too; -# also defines -D_REENTRANT) -# ... -mt is also the pthreads flag for HP/aCC +# doesn't hurt to check since this sometimes defines pthreads and +# -D_REENTRANT too), HP C (must be checked before -lpthread, which +# is present but should not be used directly; and before -mthreads, +# because the compiler interprets this as "-mt" + "-hreads") +# -mthreads: Mingw32/gcc, Lynx/gcc # pthread: Linux, etcetera # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) -case ${host_os} in +case $host_os in + + freebsd*) + + # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) + # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) + + ax_pthread_flags="-kthread lthread $ax_pthread_flags" + ;; + + hpux*) + + # From the cc(1) man page: "[-mt] Sets various -D flags to enable + # multi-threading and also sets -lpthread." + + ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags" + ;; + + openedition*) + + # IBM z/OS requires a feature-test macro to be defined in order to + # enable POSIX threads at all, so give the user a hint if this is + # not set. (We don't define these ourselves, as they can affect + # other portions of the system API in unpredictable ways.) + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS) + AX_PTHREAD_ZOS_MISSING +# endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5 +$as_echo "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;} +fi +rm -f conftest* + + ;; + solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based - # tests will erroneously succeed. (We need to link with -pthreads/-mt/ - # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather - # a function called by this macro, so we could check for that, but - # who knows whether they'll stub that too in a future libc.) So, - # we'll just look for -pthreads and -lpthread first: + # tests will erroneously succeed. (N.B.: The stubs are missing + # pthread_cleanup_push, or rather a function called by this macro, + # so we could check for that, but who knows whether they'll stub + # that too in a future libc.) So we'll check first for the + # standard Solaris way of linking pthreads (-mt -lpthread). - ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags" - ;; - - darwin*) - ax_pthread_flags="-pthread $ax_pthread_flags" + ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags" ;; esac -if test x"$ax_pthread_ok" = xno; then -for flag in $ax_pthread_flags; do +# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) - case $flag in +if test "x$GCC" = "xyes"; then : + ax_pthread_flags="-pthread -pthreads $ax_pthread_flags" +fi + +# The presence of a feature test macro requesting re-entrant function +# definitions is, on some systems, a strong hint that pthreads support is +# correctly enabled + +case $host_os in + darwin* | hpux* | linux* | osf* | solaris*) + ax_pthread_check_macro="_REENTRANT" + ;; + + aix*) + ax_pthread_check_macro="_THREAD_SAFE" + ;; + + *) + ax_pthread_check_macro="--" + ;; +esac +if test "x$ax_pthread_check_macro" = "x--"; then : + ax_pthread_check_cond=0 +else + ax_pthread_check_cond="!defined($ax_pthread_check_macro)" +fi + +# Are we compiling with Clang? + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC is Clang" >&5 +$as_echo_n "checking whether $CC is Clang... " >&6; } +if ${ax_cv_PTHREAD_CLANG+:} false; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_PTHREAD_CLANG=no + # Note that Autoconf sets GCC=yes for Clang as well as GCC + if test "x$GCC" = "xyes"; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ +# if defined(__clang__) && defined(__llvm__) + AX_PTHREAD_CC_IS_CLANG +# endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1; then : + ax_cv_PTHREAD_CLANG=yes +fi +rm -f conftest* + + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5 +$as_echo "$ax_cv_PTHREAD_CLANG" >&6; } +ax_pthread_clang="$ax_cv_PTHREAD_CLANG" + +ax_pthread_clang_warning=no + +# Clang needs special handling, because older versions handle the -pthread +# option in a rather... idiosyncratic way + +if test "x$ax_pthread_clang" = "xyes"; then + + # Clang takes -pthread; it has never supported any other flag + + # (Note 1: This will need to be revisited if a system that Clang + # supports has POSIX threads in a separate library. This tends not + # to be the way of modern systems, but it's conceivable.) + + # (Note 2: On some systems, notably Darwin, -pthread is not needed + # to get POSIX threads support; the API is always present and + # active. We could reasonably leave PTHREAD_CFLAGS empty. But + # -pthread does define _REENTRANT, and while the Darwin headers + # ignore this macro, third-party headers might not.) + + PTHREAD_CFLAGS="-pthread" + PTHREAD_LIBS= + + ax_pthread_ok=yes + + # However, older versions of Clang make a point of warning the user + # that, in an invocation where only linking and no compilation is + # taking place, the -pthread option has no effect ("argument unused + # during compilation"). They expect -pthread to be passed in only + # when source code is being compiled. + # + # Problem is, this is at odds with the way Automake and most other + # C build frameworks function, which is that the same flags used in + # compilation (CFLAGS) are also used in linking. Many systems + # supported by AX_PTHREAD require exactly this for POSIX threads + # support, and in fact it is often not straightforward to specify a + # flag that is used only in the compilation phase and not in + # linking. Such a scenario is extremely rare in practice. + # + # Even though use of the -pthread flag in linking would only print + # a warning, this can be a nuisance for well-run software projects + # that build with -Werror. So if the active version of Clang has + # this misfeature, we search for an option to squash it. + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread" >&5 +$as_echo_n "checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread... " >&6; } +if ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+:} false; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown + # Create an alternate version of $ac_link that compiles and + # links in two steps (.c -> .o, .o -> exe) instead of one + # (.c -> exe), because the warning occurs only in the second + # step + ax_pthread_save_ac_link="$ac_link" + ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' + ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"` + ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" + ax_pthread_save_CFLAGS="$CFLAGS" + for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do + if test "x$ax_pthread_try" = "xunknown"; then : + break +fi + CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" + ac_link="$ax_pthread_save_ac_link" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_link="$ax_pthread_2step_ac_link" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + break +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done + ac_link="$ax_pthread_save_ac_link" + CFLAGS="$ax_pthread_save_CFLAGS" + if test "x$ax_pthread_try" = "x"; then : + ax_pthread_try=no +fi + ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5 +$as_echo "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; } + + case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in + no | unknown) ;; + *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; + esac + +fi # $ax_pthread_clang = yes + +if test "x$ax_pthread_ok" = "xno"; then +for ax_pthread_try_flag in $ax_pthread_flags; do + + case $ax_pthread_try_flag in none) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 $as_echo_n "checking whether pthreads work without any flags... " >&6; } ;; + -mt,pthread) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with -mt -lpthread" >&5 +$as_echo_n "checking whether pthreads work with -mt -lpthread... " >&6; } + PTHREAD_CFLAGS="-mt" + PTHREAD_LIBS="-lpthread" + ;; + -*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5 -$as_echo_n "checking whether pthreads work with $flag... " >&6; } - PTHREAD_CFLAGS="$flag" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $ax_pthread_try_flag" >&5 +$as_echo_n "checking whether pthreads work with $ax_pthread_try_flag... " >&6; } + PTHREAD_CFLAGS="$ax_pthread_try_flag" ;; pthread-config) @@ -13627,22 +13691,24 @@ $as_echo "no" >&6; } fi - if test x"$ax_pthread_config" = xno; then continue; fi + if test "x$ax_pthread_config" = "xno"; then : + continue +fi PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ;; *) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5 -$as_echo_n "checking for the pthreads library -l$flag... " >&6; } - PTHREAD_LIBS="-l$flag" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$ax_pthread_try_flag" >&5 +$as_echo_n "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; } + PTHREAD_LIBS="-l$ax_pthread_try_flag" ;; esac - save_LIBS="$LIBS" - save_CFLAGS="$CFLAGS" - LIBS="$PTHREAD_LIBS $LIBS" + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we @@ -13653,9 +13719,13 @@ $as_echo_n "checking for the pthreads library -l$flag... " >&6; } # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include +# if $ax_pthread_check_cond +# error "$ax_pthread_check_macro must be defined" +# endif static void routine(void *a) { a = 0; } static void *start_routine(void *a) { return a; } int @@ -13677,14 +13747,14 @@ fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 $as_echo "$ax_pthread_ok" >&6; } - if test "x$ax_pthread_ok" = xyes; then - break; - fi + if test "x$ax_pthread_ok" = "xyes"; then : + break +fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" @@ -13692,74 +13762,82 @@ done fi # Various other checks: -if test "x$ax_pthread_ok" = xyes; then - save_LIBS="$LIBS" - LIBS="$PTHREAD_LIBS $LIBS" - save_CFLAGS="$CFLAGS" +if test "x$ax_pthread_ok" = "xyes"; then + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 $as_echo_n "checking for joinable pthread attribute... " >&6; } - attr_name=unknown - for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +if ${ax_cv_PTHREAD_JOINABLE_ATTR+:} false; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_PTHREAD_JOINABLE_ATTR=unknown + for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { -int attr = $attr; return attr /* ; */ +int attr = $ax_pthread_attr; return attr /* ; */ ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - attr_name=$attr; break + ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - done - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5 -$as_echo "$attr_name" >&6; } - if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then + done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5 +$as_echo "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; } + if test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \ + test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \ + test "x$ax_pthread_joinable_attr_defined" != "xyes"; then : cat >>confdefs.h <<_ACEOF -#define PTHREAD_CREATE_JOINABLE $attr_name +#define PTHREAD_CREATE_JOINABLE $ax_cv_PTHREAD_JOINABLE_ATTR _ACEOF - fi + ax_pthread_joinable_attr_defined=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 -$as_echo_n "checking if more special flags are required for pthreads... " >&6; } - flag=no - case ${host_os} in - aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";; - osf* | hpux*) flag="-D_REENTRANT";; - solaris*) - if test "$GCC" = "yes"; then - flag="-D_REENTRANT" - else - flag="-mt -D_REENTRANT" - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5 -$as_echo "${flag}" >&6; } - if test "x$flag" != xno; then - PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" - fi +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether more special flags are required for pthreads" >&5 +$as_echo_n "checking whether more special flags are required for pthreads... " >&6; } +if ${ax_cv_PTHREAD_SPECIAL_FLAGS+:} false; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_PTHREAD_SPECIAL_FLAGS=no + case $host_os in + solaris*) + ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS" + ;; + esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5 +$as_echo "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; } + if test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ + test "x$ax_pthread_special_flags_added" != "xyes"; then : + PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" + ax_pthread_special_flags_added=yes +fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5 $as_echo_n "checking for PTHREAD_PRIO_INHERIT... " >&6; } if ${ax_cv_PTHREAD_PRIO_INHERIT+:} false; then : $as_echo_n "(cached) " >&6 else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - - #include +#include int main () { @@ -13779,18 +13857,32 @@ rm -f core conftest.err conftest.$ac_objext \ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5 $as_echo "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; } - if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"; then : + if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ + test "x$ax_pthread_prio_inherit_defined" != "xyes"; then : $as_echo "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h + ax_pthread_prio_inherit_defined=yes + fi - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" - # More AIX lossage: must compile with xlc_r or cc_r - if test x"$GCC" != xyes; then - for ac_prog in xlc_r cc_r + # More AIX lossage: compile with *_r variant + if test "x$GCC" != "xyes"; then + case $host_os in + aix*) + case "x/$CC" in #( + x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6) : + #handle absolute path differently from PATH based program lookup + case "x$CC" in #( + x/*) : + if as_fn_executable_p ${CC}_r; then : + PTHREAD_CC="${CC}_r" +fi ;; #( + *) : + for ac_prog in ${CC}_r do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -13831,21 +13923,25 @@ fi test -n "$PTHREAD_CC" && break done -test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}" - - else - PTHREAD_CC=$CC +test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" + ;; +esac ;; #( + *) : + ;; +esac + ;; + esac fi -else - PTHREAD_CC="$CC" fi +test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" + # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: -if test x"$ax_pthread_ok" = xyes; then +if test "x$ax_pthread_ok" = "xyes"; then $as_echo "#define HAVE_PTHREAD 1" >>confdefs.h @@ -14080,71 +14176,11 @@ fi - EXP_VAR=bindir_exp - FROM_VAR=$bindir - - prefix_save=$prefix - exec_prefix_save=$exec_prefix - - if test "x$prefix" = "xNONE"; then - prefix="$ac_default_prefix" - fi - if test "x$exec_prefix" = "xNONE"; then - exec_prefix=$prefix - fi - - full_var="$FROM_VAR" - while true; do - new_full_var="`eval echo $full_var`" - if test "x$new_full_var" = "x$full_var"; then break; fi - full_var=$new_full_var - done - - full_var=$new_full_var - bindir_exp="$full_var" - - - prefix=$prefix_save - exec_prefix=$exec_prefix_save - - - EXP_VAR=sysconfdir_exp - FROM_VAR=$sysconfdir - - prefix_save=$prefix - exec_prefix_save=$exec_prefix - - if test "x$prefix" = "xNONE"; then - prefix="$ac_default_prefix" - fi - if test "x$exec_prefix" = "xNONE"; then - exec_prefix=$prefix - fi - - full_var="$FROM_VAR" - while true; do - new_full_var="`eval echo $full_var`" - if test "x$new_full_var" = "x$full_var"; then break; fi - full_var=$new_full_var - done - - full_var=$new_full_var - sysconfdir_exp="$full_var" - - - prefix=$prefix_save - exec_prefix=$exec_prefix_save - - cat << EOF libccid has been configured with following options: Version: ${PACKAGE_VERSION} -User binaries: $(eval eval eval echo "${bindir_exp}") -Configuration files: $(eval eval eval echo "${sysconfdir_exp}") - - Host: ${host} Compiler: ${CC} Preprocessor flags: ${CPPFLAGS} @@ -14729,7 +14765,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ccid $as_me 1.4.34, which was +This file was extended by ccid $as_me 1.4.35, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -14795,7 +14831,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -ccid config.status 1.4.34 +ccid config.status 1.4.35 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 7a8593e..7a9c182 100644 --- a/configure.ac +++ b/configure.ac @@ -4,7 +4,7 @@ # Require autoconf 2.61 AC_PREREQ([2.69]) -AC_INIT([ccid],[1.4.34]) +AC_INIT([ccid],[1.4.35]) AC_CONFIG_SRCDIR(src/ifdhandler.c) AC_CONFIG_AUX_DIR([.]) AM_INIT_AUTOMAKE(1.8 dist-bzip2 no-dist-gzip subdir-objects foreign) @@ -66,14 +66,12 @@ LT_INIT AC_SUBST(LIBTOOL_DEPS) # Checks for header files. -AC_HEADER_STDC AC_CHECK_HEADERS(errno.h fcntl.h stdlib.h unistd.h termios.h string.h sys/time.h sys/types.h stdarg.h arpa/inet.h stdio.h,, [AC_MSG_ERROR([some header files not found])]) # Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_SIZE_T -AC_HEADER_TIME # Checks for library functions. AC_CHECK_FUNCS(select strerror strncpy memcpy strlcpy strlcat) @@ -289,18 +287,12 @@ AC_SUBST(bundle) AC_SUBST(usbdropdir) AC_SUBST(ccidtwindir) AC_SUBST(serialconfdir) -AS_AC_EXPAND(bindir_exp,$bindir) -AS_AC_EXPAND(sysconfdir_exp,$sysconfdir) cat << EOF libccid has been configured with following options: Version: ${PACKAGE_VERSION} -User binaries: $(eval eval eval echo "${bindir_exp}") -Configuration files: $(eval eval eval echo "${sysconfdir_exp}") - - Host: ${host} Compiler: ${CC} Preprocessor flags: ${CPPFLAGS} diff --git a/contrib/Kobil_mIDentity_switch/Makefile.in b/contrib/Kobil_mIDentity_switch/Makefile.in index a726aee..27c6d1a 100644 --- a/contrib/Kobil_mIDentity_switch/Makefile.in +++ b/contrib/Kobil_mIDentity_switch/Makefile.in @@ -92,8 +92,7 @@ host_triplet = @host@ noinst_PROGRAMS = Kobil_mIDentity_switch$(EXEEXT) subdir = contrib/Kobil_mIDentity_switch ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac @@ -280,7 +279,6 @@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ -bindir_exp = @bindir_exp@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ @@ -320,7 +318,6 @@ serialconfdir = @serialconfdir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -sysconfdir_exp = @sysconfdir_exp@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ diff --git a/contrib/Makefile.in b/contrib/Makefile.in index 5753033..073ec8a 100644 --- a/contrib/Makefile.in +++ b/contrib/Makefile.in @@ -89,8 +89,7 @@ build_triplet = @build@ host_triplet = @host@ subdir = contrib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac @@ -280,7 +279,6 @@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ -bindir_exp = @bindir_exp@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ @@ -320,7 +318,6 @@ serialconfdir = @serialconfdir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -sysconfdir_exp = @sysconfdir_exp@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ diff --git a/contrib/RSA_SecurID/Makefile.in b/contrib/RSA_SecurID/Makefile.in index 401d85c..11f0211 100644 --- a/contrib/RSA_SecurID/Makefile.in +++ b/contrib/RSA_SecurID/Makefile.in @@ -91,8 +91,7 @@ host_triplet = @host@ noinst_PROGRAMS = RSA_SecurID_getpasswd$(EXEEXT) subdir = contrib/RSA_SecurID ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac @@ -278,7 +277,6 @@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ -bindir_exp = @bindir_exp@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ @@ -318,7 +316,6 @@ serialconfdir = @serialconfdir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -sysconfdir_exp = @sysconfdir_exp@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ diff --git a/examples/Makefile.in b/examples/Makefile.in index f0a7a3f..28c4713 100644 --- a/examples/Makefile.in +++ b/examples/Makefile.in @@ -93,8 +93,7 @@ host_triplet = @host@ noinst_PROGRAMS = scardcontrol$(EXEEXT) subdir = examples ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac @@ -280,7 +279,6 @@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ -bindir_exp = @bindir_exp@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ @@ -320,7 +318,6 @@ serialconfdir = @serialconfdir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -sysconfdir_exp = @sysconfdir_exp@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ diff --git a/m4/as-ac-expand.m4 b/m4/as-ac-expand.m4 deleted file mode 100644 index d6c9e33..0000000 --- a/m4/as-ac-expand.m4 +++ /dev/null @@ -1,43 +0,0 @@ -dnl as-ac-expand.m4 0.2.0 -dnl autostars m4 macro for expanding directories using configure's prefix -dnl thomas@apestaart.org - -dnl AS_AC_EXPAND(VAR, CONFIGURE_VAR) -dnl example -dnl AS_AC_EXPAND(SYSCONFDIR, $sysconfdir) -dnl will set SYSCONFDIR to /usr/local/etc if prefix=/usr/local - -AC_DEFUN([AS_AC_EXPAND], -[ - EXP_VAR=[$1] - FROM_VAR=[$2] - - dnl first expand prefix and exec_prefix if necessary - prefix_save=$prefix - exec_prefix_save=$exec_prefix - - dnl if no prefix given, then use /usr/local, the default prefix - if test "x$prefix" = "xNONE"; then - prefix="$ac_default_prefix" - fi - dnl if no exec_prefix given, then use prefix - if test "x$exec_prefix" = "xNONE"; then - exec_prefix=$prefix - fi - - full_var="$FROM_VAR" - dnl loop until it doesn't change anymore - while true; do - new_full_var="`eval echo $full_var`" - if test "x$new_full_var" = "x$full_var"; then break; fi - full_var=$new_full_var - done - - dnl clean up - full_var=$new_full_var - AC_SUBST([$1], "$full_var") - - dnl restore prefix and exec_prefix - prefix=$prefix_save - exec_prefix=$exec_prefix_save -]) diff --git a/m4/ax_pthread.m4 b/m4/ax_pthread.m4 deleted file mode 100644 index d90de34..0000000 --- a/m4/ax_pthread.m4 +++ /dev/null @@ -1,309 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_pthread.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) -# -# DESCRIPTION -# -# This macro figures out how to build C programs using POSIX threads. It -# sets the PTHREAD_LIBS output variable to the threads library and linker -# flags, and the PTHREAD_CFLAGS output variable to any special C compiler -# flags that are needed. (The user can also force certain compiler -# flags/libs to be tested by setting these environment variables.) -# -# Also sets PTHREAD_CC to any special C compiler that is needed for -# multi-threaded programs (defaults to the value of CC otherwise). (This -# is necessary on AIX to use the special cc_r compiler alias.) -# -# NOTE: You are assumed to not only compile your program with these flags, -# but also link it with them as well. e.g. you should link with -# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS -# -# If you are only building threads programs, you may wish to use these -# variables in your default LIBS, CFLAGS, and CC: -# -# LIBS="$PTHREAD_LIBS $LIBS" -# CFLAGS="$CFLAGS $PTHREAD_CFLAGS" -# CC="$PTHREAD_CC" -# -# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant -# has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name -# (e.g. PTHREAD_CREATE_UNDETACHED on AIX). -# -# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the -# PTHREAD_PRIO_INHERIT symbol is defined when compiling with -# PTHREAD_CFLAGS. -# -# ACTION-IF-FOUND is a list of shell commands to run if a threads library -# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it -# is not found. If ACTION-IF-FOUND is not specified, the default action -# will define HAVE_PTHREAD. -# -# Please let the authors know if this macro fails on any platform, or if -# you have any other suggestions or comments. This macro was based on work -# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help -# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by -# Alejandro Forero Cuervo to the autoconf macro repository. We are also -# grateful for the helpful feedback of numerous users. -# -# Updated for Autoconf 2.68 by Daniel Richard G. -# -# LICENSE -# -# Copyright (c) 2008 Steven G. Johnson -# Copyright (c) 2011 Daniel Richard G. -# -# This program is free software: you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation, either version 3 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 18 - -AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) -AC_DEFUN([AX_PTHREAD], [ -AC_REQUIRE([AC_CANONICAL_HOST]) -AC_LANG_PUSH([C]) -ax_pthread_ok=no - -# We used to check for pthread.h first, but this fails if pthread.h -# requires special compiler flags (e.g. on True64 or Sequent). -# It gets checked for in the link test anyway. - -# First of all, check if the user has set any of the PTHREAD_LIBS, -# etcetera environment variables, and if threads linking works using -# them: -if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - save_LIBS="$LIBS" - LIBS="$PTHREAD_LIBS $LIBS" - AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) - AC_TRY_LINK_FUNC(pthread_join, ax_pthread_ok=yes) - AC_MSG_RESULT($ax_pthread_ok) - if test x"$ax_pthread_ok" = xno; then - PTHREAD_LIBS="" - PTHREAD_CFLAGS="" - fi - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" -fi - -# We must check for the threads library under a number of different -# names; the ordering is very important because some systems -# (e.g. DEC) have both -lpthread and -lpthreads, where one of the -# libraries is broken (non-POSIX). - -# Create a list of thread flags to try. Items starting with a "-" are -# C compiler flags, and other items are library names, except for "none" -# which indicates that we try without any flags at all, and "pthread-config" -# which is a program returning the flags for the Pth emulation library. - -ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" - -# The ordering *is* (sometimes) important. Some notes on the -# individual items follow: - -# pthreads: AIX (must check this before -lpthread) -# none: in case threads are in libc; should be tried before -Kthread and -# other compiler flags to prevent continual compiler warnings -# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) -# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) -# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) -# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) -# -pthreads: Solaris/gcc -# -mthreads: Mingw32/gcc, Lynx/gcc -# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it -# doesn't hurt to check since this sometimes defines pthreads too; -# also defines -D_REENTRANT) -# ... -mt is also the pthreads flag for HP/aCC -# pthread: Linux, etcetera -# --thread-safe: KAI C++ -# pthread-config: use pthread-config program (for GNU Pth library) - -case ${host_os} in - solaris*) - - # On Solaris (at least, for some versions), libc contains stubbed - # (non-functional) versions of the pthreads routines, so link-based - # tests will erroneously succeed. (We need to link with -pthreads/-mt/ - # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather - # a function called by this macro, so we could check for that, but - # who knows whether they'll stub that too in a future libc.) So, - # we'll just look for -pthreads and -lpthread first: - - ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags" - ;; - - darwin*) - ax_pthread_flags="-pthread $ax_pthread_flags" - ;; -esac - -if test x"$ax_pthread_ok" = xno; then -for flag in $ax_pthread_flags; do - - case $flag in - none) - AC_MSG_CHECKING([whether pthreads work without any flags]) - ;; - - -*) - AC_MSG_CHECKING([whether pthreads work with $flag]) - PTHREAD_CFLAGS="$flag" - ;; - - pthread-config) - AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no) - if test x"$ax_pthread_config" = xno; then continue; fi - PTHREAD_CFLAGS="`pthread-config --cflags`" - PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" - ;; - - *) - AC_MSG_CHECKING([for the pthreads library -l$flag]) - PTHREAD_LIBS="-l$flag" - ;; - esac - - save_LIBS="$LIBS" - save_CFLAGS="$CFLAGS" - LIBS="$PTHREAD_LIBS $LIBS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - - # Check for various functions. We must include pthread.h, - # since some functions may be macros. (On the Sequent, we - # need a special flag -Kthread to make this header compile.) - # We check for pthread_join because it is in -lpthread on IRIX - # while pthread_create is in libc. We check for pthread_attr_init - # due to DEC craziness with -lpthreads. We check for - # pthread_cleanup_push because it is one of the few pthread - # functions on Solaris that doesn't have a non-functional libc stub. - # We try pthread_create on general principles. - AC_LINK_IFELSE([AC_LANG_PROGRAM([#include - static void routine(void *a) { a = 0; } - static void *start_routine(void *a) { return a; }], - [pthread_t th; pthread_attr_t attr; - pthread_create(&th, 0, start_routine, 0); - pthread_join(th, 0); - pthread_attr_init(&attr); - pthread_cleanup_push(routine, 0); - pthread_cleanup_pop(0) /* ; */])], - [ax_pthread_ok=yes], - []) - - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" - - AC_MSG_RESULT($ax_pthread_ok) - if test "x$ax_pthread_ok" = xyes; then - break; - fi - - PTHREAD_LIBS="" - PTHREAD_CFLAGS="" -done -fi - -# Various other checks: -if test "x$ax_pthread_ok" = xyes; then - save_LIBS="$LIBS" - LIBS="$PTHREAD_LIBS $LIBS" - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - - # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. - AC_MSG_CHECKING([for joinable pthread attribute]) - attr_name=unknown - for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do - AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], - [int attr = $attr; return attr /* ; */])], - [attr_name=$attr; break], - []) - done - AC_MSG_RESULT($attr_name) - if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then - AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, - [Define to necessary symbol if this constant - uses a non-standard name on your system.]) - fi - - AC_MSG_CHECKING([if more special flags are required for pthreads]) - flag=no - case ${host_os} in - aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";; - osf* | hpux*) flag="-D_REENTRANT";; - solaris*) - if test "$GCC" = "yes"; then - flag="-D_REENTRANT" - else - flag="-mt -D_REENTRANT" - fi - ;; - esac - AC_MSG_RESULT(${flag}) - if test "x$flag" != xno; then - PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" - fi - - AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], - ax_cv_PTHREAD_PRIO_INHERIT, [ - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[#include ]], [[int i = PTHREAD_PRIO_INHERIT;]])], - [ax_cv_PTHREAD_PRIO_INHERIT=yes], - [ax_cv_PTHREAD_PRIO_INHERIT=no]) - ]) - AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"], - AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.])) - - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" - - # More AIX lossage: must compile with xlc_r or cc_r - if test x"$GCC" != xyes; then - AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC}) - else - PTHREAD_CC=$CC - fi -else - PTHREAD_CC="$CC" -fi - -AC_SUBST(PTHREAD_LIBS) -AC_SUBST(PTHREAD_CFLAGS) -AC_SUBST(PTHREAD_CC) - -# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: -if test x"$ax_pthread_ok" = xyes; then - ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) - : -else - ax_pthread_ok=no - $2 -fi -AC_LANG_POP -])dnl AX_PTHREAD diff --git a/readers/Makefile.in b/readers/Makefile.in index 239a2ed..69b7f70 100644 --- a/readers/Makefile.in +++ b/readers/Makefile.in @@ -89,8 +89,7 @@ build_triplet = @build@ host_triplet = @host@ subdir = readers ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac @@ -220,7 +219,6 @@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ -bindir_exp = @bindir_exp@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ @@ -260,7 +258,6 @@ serialconfdir = @serialconfdir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -sysconfdir_exp = @sysconfdir_exp@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ diff --git a/readers/supported_readers.txt b/readers/supported_readers.txt index 005f66d..f3339a2 100644 --- a/readers/supported_readers.txt +++ b/readers/supported_readers.txt @@ -1,6 +1,6 @@ # # List of readers supported by the CCID driver -# Generated: 2021-01-20 +# Generated: 2021-06-22 # # DO NOT EDIT BY HAND @@ -192,6 +192,9 @@ 0x2406:0x5004:appidkey GmbH ID100L-USB-SC-Reader 0x2406:0x5006:appidkey GmbH ID60-USB +# ArkSigner +0x33B6:0x0001:ArkSigner Connect2Sign + # ASK-RFID 0x1FD3:0xCC1D:ASK-RFID CPL108 @@ -239,10 +242,12 @@ 0x25DD:0x2361:Bit4id Digital-DNA Key BT 0x25DD:0x2362:Bit4id Digital-DNA Key 0x25DD:0x2371:Bit4id TokenME EVO v2 -0x25DD:0x3111:Bit4id miniLector 0x25DD:0x3211:Bit4id miniLector AIR EVO 0x25DD:0xB001:Bit4id miniLector Blue +# bit4id +0x25DD:0x3111:bit4id miniLector-EVO + # BIT4ID 0x25DD:0x3403:BIT4ID miniLector AIR NFC v3 0x25DD:0x3503:BIT4ID mLector AIR DI V3 @@ -307,6 +312,19 @@ 0x03F0:0x124A:Chicony HP USB Smartcard CCID Keyboard JP 0x04F2:0x1469:Chicony HP Skylab USB Smartcard Keyboard +# Circle +0x31AA:0x0224:Circle Idaxis SecurePIV +0x31AA:0x1000:Circle CIR115 ICC +0x31AA:0x2000:Circle CIR215 PICC +0x31AA:0x2001:Circle CIR215 CL +0x31AA:0x3000:Circle CIR315 Dual & 1S +0x31AA:0x3001:Circle CIR315 +0x31AA:0x3002:Circle CIR315 CL +0x31AA:0x3100:Circle CIR315 +0x31AA:0x4000:Circle CIR415 CL & 1S +0x31AA:0x7001:Circle CCR7115 ICC +0x31AA:0x7003:Circle CCR7315 + # COVADIS 0x0982:0x0008:COVADIS VEGA-ALPHA 0x0982:0x0040:COVADIS Auriga @@ -326,6 +344,7 @@ # DUALi 0x1DB2:0x0801:DUALi DE-620 Combi +0x1DB2:0x080C:DUALi DE-ABCM6 RFRW 0x1DB2:0x088B:DUALi DRAGON NFC READER # eID_R6 001 @@ -346,6 +365,7 @@ 0x096E:0x0621:Feitian BLE CCID Dongle 0x096E:0x0622:Feitian VR504 VHBR Contactless & Contact Card Reader 0x096E:0x0623:Feitian bR500 +0x096E:0x062E:Feitian R701 0x096E:0x0685:Feitian R805 0x096E:0x0807:Feitian ePass2003 0x096E:0x080F:Feitian eJAVA Token @@ -405,6 +425,7 @@ # Generic 0x0BDA:0x0169:Generic USB2.0-CRW 0x048D:0x1366:Generic MultiCard Device +0x058C:0x9590:Generic EMV Smartcard Reader # Generic USB 0x076B:0x3A21:Generic USB Smart Card Reader @@ -472,8 +493,10 @@ # Identiv 0x04E6:0x5612:Identiv uTrust 3720 Contactless Reader +0x04E6:0x5613:Identiv uTrust 3721 Contactless Reader 0x04E6:0x5713:Identiv CLOUD 2980 F Smart Card Reader 0x04E6:0x5724:Identiv Identiv uTrust 4701 F Dual Interface Reader +0x04E6:0x5725:Identiv Identiv uTrust 4711 F CL + SAM Reader 0x04E6:0x5790:Identiv uTrust 3700 F CL Reader 0x04E6:0x5791:Identiv uTrust 3701 F CL Reader 0x04E6:0x5811:Identiv uTrust 2900 R Smart Card Reader @@ -509,10 +532,18 @@ # InfoCert 0x2FD2:0x0100:InfoCert WirelessKey +# Infocrypt +0x2FB0:0x003A:Infocrypt Token++ lite +0x2022:0x016C:Infocrypt HWDSSL DEVICE + # InfoThink 0x1FC9:0x0102:InfoThink IT-102MU Reader 0x1403:0x7506:InfoThink IT-500U Reader +# INMAX +0x1403:0x750C:INMAX DWR18 HC +0x1403:0x750D:INMAX DWR18 HPC + # Inside Secure 0x2406:0x6300:Inside Secure VaultIC 420 Smart Object 0x2406:0x6301:Inside Secure VaultIC 440 Smart Object @@ -580,6 +611,7 @@ # MK Technology 0x0416:0xC136:MK Technology KeyPass S1 +0x0416:0xC137:MK Technology KeyPass D1 # Morpho 0x079B:0x0026:Morpho MSO350/MSO351 Fingerprint Sensor & SmartCard Reader @@ -707,6 +739,14 @@ # Softforum Co., Ltd 0x04E8:0x0007:Softforum Co., Ltd XecureHSM +# SoloKeys +0x1209:0xBEEE:SoloKeys Solo 2 + +# SONY +0x054C:0x0D8F:SONY Felica RC-S660/U +0x054C:0x0DC8:SONY Felica RC-S300/S +0x054C:0x0DC9:SONY Felica RC-S300/P + # SPECINFOSYSTEMS 0x316E:0x0001:SPECINFOSYSTEMS DIAMOND token 0x316E:0x0002:SPECINFOSYSTEMS DIAMOND PRO token @@ -738,6 +778,7 @@ 0x08DF:0x3115:Spyrus Inc WorkSafe Pro 0x08DF:0x3117:Spyrus Inc WorkSafe Pro 0x08DF:0x3201:Spyrus Inc PocketVault P-3X +0x08DF:0x3203:Spyrus Inc PocketVault P-3X # Sunrex 0x05AF:0x605A:Sunrex HP USB Business Slim Smartcard CCID Keyboard @@ -747,6 +788,7 @@ # SYNNIX 0x1206:0x2105:SYNNIX STD200 +0x1206:0x2107:SYNNIX CL-2100R # Sysking 0x0E6A:0x5083:Sysking MII136C diff --git a/src/Makefile.am b/src/Makefile.am index 99f3567..287c668 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -54,7 +54,7 @@ PROVIDED_BY_PCSC = debug.c endif libccid_la_SOURCES = $(COMMON) $(USB) $(TOKEN_PARSER) $(PROVIDED_BY_PCSC) $(T1) -libccid_la_LIBADD = $(LEXLIB) $(LIBUSB_LIBS) $(PTHREAD_LIBS) +libccid_la_LIBADD = $(LIBUSB_LIBS) $(PTHREAD_LIBS) libccid_la_CFLAGS = $(PCSC_CFLAGS) $(LIBUSB_CFLAGS) $(PTHREAD_CFLAGS) \ $(SYMBOL_VISIBILITY) -D$(CCID_VERSION) -DSIMCLIST_NO_DUMPRESTORE libccid_la_LDFLAGS = -avoid-version diff --git a/src/Makefile.in b/src/Makefile.in index 090b568..3a3ec30 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -98,8 +98,7 @@ host_triplet = @host@ @WITH_TWIN_SERIAL_TRUE@am__append_6 = uninstall_ccidtwin subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac @@ -141,8 +140,7 @@ am__uninstall_files_from_dir = { \ am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = -libccid_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) +libccid_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am__libccid_la_SOURCES_DIST = ccid.c ccid.h ccid_ifdhandler.h \ commands.c commands.h debug.h defs.h ifdhandler.c utils.c \ utils.h ccid_usb.c ccid_usb.h tokenparser.l parser.h strlcpy.c \ @@ -410,7 +408,6 @@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ -bindir_exp = @bindir_exp@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ @@ -450,7 +447,6 @@ serialconfdir = @serialconfdir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -sysconfdir_exp = @sysconfdir_exp@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ @@ -497,7 +493,7 @@ TOKEN_PARSER = tokenparser.l parser.h \ @WITHOUT_PCSC_TRUE@PROVIDED_BY_PCSC = debug.c libccid_la_SOURCES = $(COMMON) $(USB) $(TOKEN_PARSER) $(PROVIDED_BY_PCSC) $(T1) -libccid_la_LIBADD = $(LEXLIB) $(LIBUSB_LIBS) $(PTHREAD_LIBS) +libccid_la_LIBADD = $(LIBUSB_LIBS) $(PTHREAD_LIBS) libccid_la_CFLAGS = $(PCSC_CFLAGS) $(LIBUSB_CFLAGS) $(PTHREAD_CFLAGS) \ $(SYMBOL_VISIBILITY) -D$(CCID_VERSION) -DSIMCLIST_NO_DUMPRESTORE diff --git a/src/ccid.c b/src/ccid.c index c51008e..18b9581 100644 --- a/src/ccid.c +++ b/src/ccid.c @@ -505,6 +505,12 @@ int ccid_open_hack_post(unsigned int reader_index) ccid_descriptor->dwFeatures |= CCID_CLASS_EXTENDED_APDU; break; + case KOBIL_TRIBANK: + /* Firmware does NOT supported extended APDU */ + ccid_descriptor->dwFeatures &= ~CCID_CLASS_EXCHANGE_MASK; + ccid_descriptor->dwFeatures |= CCID_CLASS_SHORT_APDU; + break; + #if 0 /* SCM SCR331-DI contactless */ case SCR331DI: @@ -564,6 +570,12 @@ int ccid_open_hack_post(unsigned int reader_index) /* restore default timeout (modified in ccid_open_hack_pre()) */ ccid_descriptor->readTimeout = DEFAULT_COM_READ_TIMEOUT; break; + + case BIT4ID_MINILECTOR: + /* The firmware 1.11 advertises pinpad but actually doesn't + * have one */ + ccid_descriptor->bPINSupport = 0; + break; } /* Gemalto readers may report additional information */ diff --git a/src/ccid.h b/src/ccid.h index 33400d3..b28f0c1 100644 --- a/src/ccid.h +++ b/src/ccid.h @@ -238,6 +238,7 @@ typedef struct #define IDENTIV_uTrust3700F 0x04E65790 #define IDENTIV_uTrust3701F 0x04E65791 #define IDENTIV_uTrust4701F 0x04E65724 +#define BIT4ID_MINILECTOR 0x25DD3111 #define VENDOR_GEMALTO 0x08E6 #define GET_VENDOR(readerID) ((readerID >> 16) & 0xFFFF) diff --git a/src/ccid_serial.c b/src/ccid_serial.c index 679c3d9..ee51220 100644 --- a/src/ccid_serial.c +++ b/src/ccid_serial.c @@ -385,7 +385,11 @@ int get_bytes(unsigned int reader_index, unsigned char *buffer, int length) rv = ReadChunk(reader_index, serialDevice[reader_index].buffer, sizeof(serialDevice[reader_index].buffer), length - present); if (rv < 0) + { + serialDevice[reader_index].buffer_offset = 0; + serialDevice[reader_index].buffer_offset_last = 0; return STATUS_COMM_ERROR; + } /* fill the buffer */ memcpy(buffer + present, serialDevice[reader_index].buffer, diff --git a/src/ccid_usb.c b/src/ccid_usb.c index f1ad793..97a865a 100644 --- a/src/ccid_usb.c +++ b/src/ccid_usb.c @@ -464,6 +464,7 @@ again_libusb: * 0: R502 Contactless Reader (CCID) * 1: R502 Contact Reader (CCID) * 2: R502 SAM1 Reader (CCID) + * 3: R502 SAM2 Reader (CCID) * * For the HID Omnikey 5422 the interfaces are: * 0: OMNIKEY 5422CL Smartcard Reader @@ -474,6 +475,10 @@ again_libusb: if (HID_OMNIKEY_5422 == readerID) /* only 2 interfaces for this device */ max_interface_number = 1; + + if (FEITIANR502DUAL == readerID) + /* 4 interfaces for Feitian R502 reader */ + max_interface_number = 3; } #endif /* is it already opened? */ @@ -1205,13 +1210,21 @@ static unsigned int *get_data_rates(unsigned int reader_index, int n, i, len; unsigned char buffer[256*sizeof(int)]; /* maximum is 256 records */ unsigned int *uint_array; + int bNumDataRatesSupported; + + bNumDataRatesSupported = get_ccid_device_descriptor(get_ccid_usb_interface(desc, &num))[27]; + if (0 == bNumDataRatesSupported) + /* read up to the buffer size */ + len = sizeof(buffer) / sizeof(int); + else + len = bNumDataRatesSupported; /* See CCID 3.7.3 page 25 */ n = ControlUSB(reader_index, 0xA1, /* request type */ 0x03, /* GET_DATA_RATES */ 0x00, /* value */ - buffer, sizeof(buffer)); + buffer, len * sizeof(int)); /* we got an error? */ if (n <= 0) @@ -1231,8 +1244,7 @@ static unsigned int *get_data_rates(unsigned int reader_index, n /= sizeof(int); /* we do not get the expected number of data rates */ - len = get_ccid_device_descriptor(get_ccid_usb_interface(desc, &num))[27]; /* bNumDataRatesSupported */ - if ((n != len) && len) + if ((n != bNumDataRatesSupported) && bNumDataRatesSupported) { DEBUG_INFO3("Got %d data rates but was expecting %d", n, len); @@ -1538,7 +1550,7 @@ static void *Multi_PollingProc(void *p_ext) change = (slot_status & 2) ? "status changed" : "no change"; DEBUG_COMM3("slot %d status: %d", - s + b*4, slot_status); + s + slot, slot_status); DEBUG_COMM3("ICC %s, %s", present, change); } slot += 4; diff --git a/src/commands.c b/src/commands.c index 7c5a94c..9774fcc 100644 --- a/src/commands.c +++ b/src/commands.c @@ -268,7 +268,7 @@ again: if (voltage) { #ifndef NO_LOG - const char *voltage_code[] = { "auto", "5V", "3V", "1.8V" }; + const char *voltage_code[] = { "1.8V", "5V", "3V", "1.8V" }; #endif DEBUG_INFO3("Power up with %s failed. Try with %s.", @@ -390,6 +390,18 @@ RESPONSECODE SecurePINVerify(unsigned int reader_index, } + if ((VENDOR_GEMALTO == GET_VENDOR(ccid_descriptor->readerID)) + && (ccid_descriptor->gemalto_firmware_features)) + { + int bEntryValidationCondition = ccid_descriptor->gemalto_firmware_features->bEntryValidationCondition; + if (TxBuffer[7] & ~bEntryValidationCondition) + { + DEBUG_INFO2("Correct bEntryValidationCondition (was 0x%02X)", + TxBuffer[7]); + TxBuffer[7] &= bEntryValidationCondition; + } + } + if ((DELLSCRK == ccid_descriptor->readerID) || (DELLSK == ccid_descriptor->readerID)) { @@ -747,6 +759,18 @@ RESPONSECODE SecurePINModify(unsigned int reader_index, } } + if ((VENDOR_GEMALTO == GET_VENDOR(ccid_descriptor->readerID)) + && (ccid_descriptor->gemalto_firmware_features)) + { + int bEntryValidationCondition = ccid_descriptor->gemalto_firmware_features->bEntryValidationCondition; + if (TxBuffer[10] & ~bEntryValidationCondition) + { + DEBUG_INFO2("Correct bEntryValidationCondition (was 0x%02X)", + TxBuffer[10]); + TxBuffer[10] &= bEntryValidationCondition; + } + } + gemalto_modify_pin_bug = has_gemalto_modify_pin_bug(ccid_descriptor); if (gemalto_modify_pin_bug) { @@ -1864,7 +1888,7 @@ static RESPONSECODE T0ProcACK(unsigned int reader_index, DEBUG_COMM2("Enter, is_rcv = %d", is_rcv); - if (proc_len > 0x20000) + if (proc_len > 0x200) return IFD_COMMUNICATION_ERROR; if (is_rcv == 1) @@ -1912,29 +1936,29 @@ static RESPONSECODE T0ProcACK(unsigned int reader_index, #ifdef O2MICRO_OZ776_PATCH if((0 != remain_len) && (0 == (remain_len + 10) % 64)) - { - /* special hack to avoid a command of size modulo 64 - * we send two commands instead */ - ret_len = 1; - return_value = CCID_Transmit(reader_index, 0, *snd_buf, ret_len, 0); - if (return_value != IFD_SUCCESS) - return return_value; - return_value = CCID_Receive(reader_index, &ret_len, tmp_buf, NULL); - if (return_value != IFD_SUCCESS) - return return_value; + { + /* special hack to avoid a command of size modulo 64 + * we send two commands instead */ + ret_len = 1; + return_value = CCID_Transmit(reader_index, 0, *snd_buf, ret_len, 0); + if (return_value != IFD_SUCCESS) + return return_value; + return_value = CCID_Receive(reader_index, &ret_len, tmp_buf, NULL); + if (return_value != IFD_SUCCESS) + return return_value; - ret_len = remain_len - 1; - return_value = CCID_Transmit(reader_index, 0, *snd_buf, ret_len, 0); - if (return_value != IFD_SUCCESS) - return return_value; - return_value = CCID_Receive(reader_index, &ret_len, &tmp_buf[1], - NULL); - if (return_value != IFD_SUCCESS) - return return_value; + ret_len = remain_len - 1; + return_value = CCID_Transmit(reader_index, 0, *snd_buf, ret_len, 0); + if (return_value != IFD_SUCCESS) + return return_value; + return_value = CCID_Receive(reader_index, &ret_len, &tmp_buf[1], + NULL); + if (return_value != IFD_SUCCESS) + return return_value; - ret_len += 1; - } - else + ret_len += 1; + } + else #endif { ret_len = remain_len; diff --git a/src/ifdhandler.c b/src/ifdhandler.c index fef34c4..294e7e5 100644 --- a/src/ifdhandler.c +++ b/src/ifdhandler.c @@ -476,9 +476,9 @@ EXTERNAL RESPONSECODE IFDHGetCapabilities(DWORD Lun, DWORD Tag, || (HID_OMNIKEY_5422 == readerID)) *Value = 2; - /* 3 CCID interfaces */ + /* 4 CCID interfaces */ if (FEITIANR502DUAL == readerID) - *Value = 3; + *Value = 4; } #endif DEBUG_INFO2("Reader supports %d slot(s)", *Value); @@ -723,14 +723,6 @@ EXTERNAL RESPONSECODE IFDHSetProtocolParameters(DWORD Lun, DWORD Protocol, ccid_slot = get_ccid_slot(reader_index); ccid_desc = get_ccid_descriptor(reader_index); - /* Do not send CCID command SetParameters or PPS to the CCID - * The CCID will do this himself */ - if (ccid_desc->dwFeatures & CCID_CLASS_AUTO_PPS_PROP) - { - DEBUG_COMM2("Timeout: %d ms", ccid_desc->readTimeout); - goto end; - } - /* check the protocol is supported by the reader */ if (!(Protocol & ccid_desc->dwProtocols)) { @@ -796,6 +788,14 @@ EXTERNAL RESPONSECODE IFDHSetProtocolParameters(DWORD Lun, DWORD Protocol, } } + /* Do not send CCID command SetParameters or PPS to the CCID + * The CCID will do this himself */ + if (ccid_desc->dwFeatures & CCID_CLASS_AUTO_PPS_PROP) + { + DEBUG_COMM2("Timeout: %d ms", ccid_desc->readTimeout); + goto end; + } + /* PTS1? */ if (Flags & IFD_NEGOTIATE_PTS1) { @@ -1092,8 +1092,10 @@ EXTERNAL RESPONSECODE IFDHSetProtocolParameters(DWORD Lun, DWORD Protocol, return ret; } +end: /* set IFSC & IFSD in T=1 */ - if (SCARD_PROTOCOL_T1 == Protocol) + if ((SCARD_PROTOCOL_T1 == Protocol) + && (CCID_CLASS_TPDU == (ccid_desc->dwFeatures & CCID_CLASS_EXCHANGE_MASK))) { t1_state_t *t1 = &(ccid_slot -> t1); int i, ifsc; @@ -1117,7 +1119,6 @@ EXTERNAL RESPONSECODE IFDHSetProtocolParameters(DWORD Lun, DWORD Protocol, DEBUG_COMM3("T=1: IFSC=%d, IFSD=%d", t1->ifsc, t1->ifsd); } -end: /* store used protocol for use by the secure commands (verify/change PIN) */ ccid_desc->cardProtocol = Protocol; diff --git a/src/parse.c b/src/parse.c index c5f0fad..8c507d4 100644 --- a/src/parse.c +++ b/src/parse.c @@ -74,14 +74,15 @@ int main(int argc, char *argv[]) r = libusb_init(NULL); if (r < 0) { - (void)printf("libusb_init() failed\n"); + (void)printf("libusb_init() failed: %s\n", libusb_error_name(r)); return r; } cnt = libusb_get_device_list(NULL, &devs); if (cnt < 0) { - (void)printf("libusb_get_device_list() failed\n"); + (void)printf("libusb_get_device_list() failed: %s\n", + libusb_error_name(r)); return (int)cnt; } @@ -116,7 +117,8 @@ int main(int argc, char *argv[]) if (r < 0) { (void)fprintf(stderr, - BRIGHT_RED "failed to get device descriptor" NORMAL); + BRIGHT_RED "failed to get device descriptor: %s" NORMAL, + libusb_error_name(r)); return 1; } @@ -130,7 +132,8 @@ int main(int argc, char *argv[]) buffer, sizeof(buffer)); if (r < 0) { - (void)fprintf(stderr, " Can't get iManufacturer string\n"); + (void)fprintf(stderr, " Can't get iManufacturer string: %s\n", + libusb_error_name(r)); if (getuid()) { (void)fprintf(stderr, @@ -146,7 +149,8 @@ int main(int argc, char *argv[]) r = libusb_get_string_descriptor_ascii(handle, desc.iProduct, buffer, sizeof(buffer)); if (r < 0) - (void)fprintf(stderr, " Can't get iProduct string\n"); + (void)fprintf(stderr, " Can't get iProduct string: %s\n", + libusb_error_name(r)); else (void)fprintf(stderr, " iProduct: " BLUE "%s\n" NORMAL, buffer); @@ -155,7 +159,8 @@ again: r = libusb_get_active_config_descriptor(dev, &config_desc); if (r < 0) { - (void)fprintf(stderr, " Can't get config descriptor: %d\n", r); + (void)fprintf(stderr, " Can't get config descriptor: %s\n", + libusb_error_name(r)); (void)libusb_close(handle); continue; } @@ -262,7 +267,8 @@ static int ccid_parse_interface_descriptor(libusb_device_handle *handle, buffer, sizeof(buffer)); if (r < 0) { - (void)printf(" Can't get iManufacturer string\n"); + (void)printf(" Can't get iManufacturer string: %s\n", + libusb_error_name(r)); if (getuid()) { (void)fprintf(stderr, @@ -277,7 +283,8 @@ static int ccid_parse_interface_descriptor(libusb_device_handle *handle, r = libusb_get_string_descriptor_ascii(handle, desc.iProduct, buffer, sizeof(buffer)); if (r < 0) - (void)printf(" Can't get iProduct string\n"); + (void)printf(" Can't get iProduct string: %s\n", + libusb_error_name(r)); else (void)printf(" iProduct: %s\n", buffer); @@ -350,7 +357,8 @@ static int ccid_parse_interface_descriptor(libusb_device_handle *handle, r = libusb_get_string_descriptor_ascii(handle, usb_interface_descriptor->iInterface, buffer, sizeof(buffer)); if (r < 0) - (void)printf(" Can't get iInterface string\n"); + (void)printf(" Can't get iInterface string: %s\n", + libusb_error_name(r)); else (void)printf(" iInterface: %s\n", buffer); @@ -404,11 +412,16 @@ static int ccid_parse_interface_descriptor(libusb_device_handle *handle, (void)printf(" dwDefaultClock: %.3f MHz\n", dw2i(device_descriptor, 10)/1000.0); (void)printf(" dwMaximumClock: %.3f MHz\n", dw2i(device_descriptor, 14)/1000.0); - (void)printf(" bNumClockSupported: %d%s\n", device_descriptor[18], - device_descriptor[18] ? "" : " (will use whatever is returned)"); + int bNumClockSupported = device_descriptor[18]; + (void)printf(" bNumClockSupported: %d%s\n", bNumClockSupported, + bNumClockSupported ? "" : " (will use whatever is returned)"); { int n; + if (0 == bNumClockSupported) + /* read up to the buffer size */ + bNumClockSupported = sizeof(buffer) / sizeof(int); + /* See CCID 5.3.2 page 24 */ n = libusb_control_transfer(handle, 0xA1, /* request type */ @@ -416,7 +429,7 @@ static int ccid_parse_interface_descriptor(libusb_device_handle *handle, 0x00, /* value */ usb_interface_descriptor->bInterfaceNumber, /* interface */ buffer, - sizeof(buffer), + bNumClockSupported * sizeof(int), 2 * 1000); /* we got an error? */ @@ -438,15 +451,15 @@ static int ccid_parse_interface_descriptor(libusb_device_handle *handle, int i; /* we do not get the expected number of data rates */ - if ((n != device_descriptor[18]*4) && device_descriptor[18]) + if ((n != bNumClockSupported*4) && bNumClockSupported) { (void)printf(" Got %d clock frequencies but was expecting %d\n", - n/4, device_descriptor[18]); + n/4, bNumClockSupported); /* we got more data than expected */ #ifndef DISPLAY_EXTRA_VALUES - if (n > device_descriptor[18]*4) - n = device_descriptor[18]*4; + if (n > bNumClockSupported*4) + n = bNumClockSupported*4; #endif } @@ -456,11 +469,16 @@ static int ccid_parse_interface_descriptor(libusb_device_handle *handle, } (void)printf(" dwDataRate: %d bps\n", dw2i(device_descriptor, 19)); (void)printf(" dwMaxDataRate: %d bps\n", dw2i(device_descriptor, 23)); - (void)printf(" bNumDataRatesSupported: %d%s\n", device_descriptor[27], - device_descriptor[27] ? "" : " (will use whatever is returned)"); + int bNumDataRatesSupported = device_descriptor[27]; + (void)printf(" bNumDataRatesSupported: %d%s\n", bNumDataRatesSupported, + bNumDataRatesSupported ? "" : " (will use whatever is returned)"); { int n; + if (0 == bNumDataRatesSupported) + /* read up to the buffer size */ + bNumDataRatesSupported = sizeof(buffer) / sizeof(int); + /* See CCID 5.3.3 page 24 */ n = libusb_control_transfer(handle, 0xA1, /* request type */ @@ -468,7 +486,7 @@ static int ccid_parse_interface_descriptor(libusb_device_handle *handle, 0x00, /* value */ usb_interface_descriptor->bInterfaceNumber, /* interface */ buffer, - sizeof(buffer), + bNumDataRatesSupported * sizeof(int), 2 * 1000); /* we got an error? */ @@ -483,15 +501,15 @@ static int ccid_parse_interface_descriptor(libusb_device_handle *handle, int i; /* we do not get the expected number of data rates */ - if ((n != device_descriptor[27]*4) && device_descriptor[27]) + if ((n != bNumDataRatesSupported*4) && bNumDataRatesSupported) { (void)printf(" Got %d data rates but was expecting %d\n", n/4, - device_descriptor[27]); + bNumDataRatesSupported); /* we got more data than expected */ #ifndef DISPLAY_EXTRA_VALUES - if (n > device_descriptor[27]*4) - n = device_descriptor[27]*4; + if (n > bNumDataRatesSupported*4) + n = bNumDataRatesSupported*4; #endif } @@ -544,7 +562,7 @@ static int ccid_parse_interface_descriptor(libusb_device_handle *handle, if (device_descriptor[41] & 0x04) (void)printf(" ..04.. Automatic IFSD exchange as first exchange (T=1)\n"); if (device_descriptor[41] & 0x08) - (void)printf(" ..08.. Unknown (ICCD?)\n"); + (void)printf(" ..08.. ICCD token\n"); switch (device_descriptor[42] & 0x07) { case 0x00: diff --git a/src/tokenparser.c b/src/tokenparser.c index b8d4a6d..0ec0f3b 100644 --- a/src/tokenparser.c +++ b/src/tokenparser.c @@ -376,17 +376,17 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 4, 4, 5, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 6, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 4, 4, 8, - 4, 9, 4, 4, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 4, 1, 4, 4, 4, 1, 11, 11, 11, 11, + 1, 2, 1, 1, 4, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 5, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 1, 1, 7, + 1, 8, 1, 1, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 1, 1, 1, 1, 1, 1, 10, 10, 10, 10, - 12, 11, 13, 11, 14, 11, 15, 11, 11, 16, - 11, 11, 11, 17, 18, 19, 11, 11, 11, 11, - 20, 11, 1, 1, 1, 4, 1, 1, 1, 1, + 11, 10, 12, 10, 13, 10, 14, 10, 10, 15, + 10, 10, 10, 16, 17, 18, 10, 10, 10, 10, + 19, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -403,50 +403,52 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[21] = +static const YY_CHAR yy_meta[20] = { 0, - 1, 2, 3, 4, 4, 4, 2, 1, 1, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 + 1, 2, 3, 1, 1, 2, 1, 1, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2 } ; static const flex_int16_t yy_base[43] = { 0, - 0, 7, 49, 50, 50, 50, 0, 1, 0, 36, - 28, 26, 28, 35, 29, 0, 26, 33, 27, 33, - 29, 22, 0, 24, 27, 14, 27, 23, 13, 50, - 10, 9, 4, 1, 0, 2, 50, 50, 19, 23, - 2, 26 + 0, 6, 54, 55, 55, 55, 0, 0, 0, 42, + 34, 32, 34, 41, 35, 0, 32, 39, 33, 39, + 35, 28, 0, 30, 33, 20, 11, 30, 4, 55, + 5, 8, 12, 13, 15, 22, 19, 55, 30, 33, + 3, 35 } ; static const flex_int16_t yy_def[43] = { 0, 39, 39, 38, 38, 38, 38, 40, 38, 40, 38, 38, 38, 38, 38, 38, 41, 38, 41, 38, 38, - 38, 38, 42, 38, 42, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 0, 38, 38, + 38, 38, 42, 38, 42, 38, 42, 38, 42, 38, + 42, 42, 42, 42, 42, 42, 42, 0, 38, 38, 38, 38 } ; -static const flex_int16_t yy_nxt[71] = +static const flex_int16_t yy_nxt[75] = { 0, - 38, 5, 6, 18, 7, 38, 38, 8, 5, 6, - 37, 7, 36, 38, 8, 10, 35, 34, 11, 4, - 4, 4, 4, 9, 9, 33, 9, 25, 32, 25, - 31, 30, 29, 28, 27, 26, 24, 23, 22, 21, - 20, 19, 17, 16, 15, 14, 13, 12, 38, 3, + 38, 5, 6, 7, 18, 38, 8, 5, 6, 7, + 27, 27, 8, 10, 27, 29, 11, 27, 27, 27, + 31, 27, 32, 33, 34, 27, 36, 35, 27, 37, + 4, 4, 4, 9, 9, 25, 25, 30, 28, 27, + 26, 24, 23, 22, 21, 20, 19, 17, 16, 15, + 14, 13, 12, 38, 3, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, 38, 38 + 38, 38, 38, 38 } ; -static const flex_int16_t yy_chk[71] = +static const flex_int16_t yy_chk[75] = { 0, - 0, 1, 1, 41, 1, 0, 0, 1, 2, 2, - 36, 2, 35, 0, 2, 8, 34, 33, 8, 39, - 39, 39, 39, 40, 40, 32, 40, 42, 31, 42, - 29, 28, 27, 26, 25, 24, 22, 21, 20, 19, - 18, 17, 15, 14, 13, 12, 11, 10, 3, 38, + 0, 1, 1, 1, 41, 0, 1, 2, 2, 2, + 29, 31, 2, 8, 32, 27, 8, 27, 33, 34, + 29, 35, 31, 32, 33, 37, 35, 34, 36, 36, + 39, 39, 39, 40, 40, 42, 42, 28, 26, 25, + 24, 22, 21, 20, 19, 18, 17, 15, 14, 13, + 12, 11, 10, 3, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, 38, 38 + 38, 38, 38, 38 } ; static yy_state_type yy_last_accepting_state; @@ -508,7 +510,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#ifndef NDEBUG #define NDEBUG +#endif #include #include "simclist.h" @@ -522,9 +526,9 @@ void tperrorCheck (char *pcToken_error); static list_t *ListKeys; static list_t *ListValues; -#line 526 "tokenparser.c" +#line 530 "tokenparser.c" #define YY_NO_INPUT 1 -#line 528 "tokenparser.c" +#line 532 "tokenparser.c" #define INITIAL 0 @@ -739,10 +743,10 @@ YY_DECL } { -#line 67 "tokenparser.l" +#line 69 "tokenparser.l" -#line 746 "tokenparser.c" +#line 750 "tokenparser.c" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -775,7 +779,7 @@ yy_match: yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 50 ); + while ( yy_base[yy_current_state] != 55 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -801,41 +805,41 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 69 "tokenparser.l" +#line 71 "tokenparser.l" {} YY_BREAK case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 70 "tokenparser.l" +#line 72 "tokenparser.l" {} YY_BREAK case 3: YY_RULE_SETUP -#line 71 "tokenparser.l" +#line 73 "tokenparser.l" { eval_key(yytext, ListKeys); } YY_BREAK case 4: YY_RULE_SETUP -#line 72 "tokenparser.l" +#line 74 "tokenparser.l" {} YY_BREAK case 5: YY_RULE_SETUP -#line 73 "tokenparser.l" +#line 75 "tokenparser.l" { eval_value(yytext, ListValues); } YY_BREAK case 6: YY_RULE_SETUP -#line 74 "tokenparser.l" +#line 76 "tokenparser.l" { tperrorCheck(yytext); } YY_BREAK case 7: YY_RULE_SETUP -#line 75 "tokenparser.l" +#line 77 "tokenparser.l" ECHO; YY_BREAK -#line 839 "tokenparser.c" +#line 843 "tokenparser.c" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -1803,7 +1807,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 75 "tokenparser.l" +#line 77 "tokenparser.l"