Hello community, here is the log from the commit of package pcsc-acsccid for openSUSE:Factory checked in at 2016-06-23 13:37:29 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pcsc-acsccid (Old) and /work/SRC/openSUSE:Factory/.pcsc-acsccid.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pcsc-acsccid" Changes: -------- --- /work/SRC/openSUSE:Factory/pcsc-acsccid/pcsc-acsccid.changes 2016-02-22 08:57:56.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.pcsc-acsccid.new/pcsc-acsccid.changes 2016-06-23 13:37:39.000000000 +0200 @@ -1,0 +2,5 @@ +Thu Jun 23 07:27:59 UTC 2016 - [email protected] + +- Updated to version 1.1.3. + +------------------------------------------------------------------- Old: ---- acsccid-1.1.2.tar.bz2 New: ---- acsccid-1.1.3.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pcsc-acsccid.spec ++++++ --- /var/tmp/diff_new_pack.NCFGJv/_old 2016-06-23 13:37:40.000000000 +0200 +++ /var/tmp/diff_new_pack.NCFGJv/_new 2016-06-23 13:37:40.000000000 +0200 @@ -34,7 +34,7 @@ %if 0%{?suse_version} >= 1140 BuildRequires: udev %endif -Version: 1.1.2 +Version: 1.1.3 Release: 0 Url: http://acsccid.sourceforge.net/ Summary: PCSC Driver for ACS CCID Based Smart Card Readers @@ -58,6 +58,7 @@ Enhances: modalias(usb:v072fpb101d*dc*dsc*dp*ic*isc*ip*) Enhances: modalias(usb:v072fpb102d*dc*dsc*dp*ic*isc*ip*) Enhances: modalias(usb:v072fpb103d*dc*dsc*dp*ic*isc*ip*) +Enhances: modalias(usb:v072fpb10cd*dc*dsc*dp*ic*isc*ip*) Enhances: modalias(usb:v072fpb104d*dc*dsc*dp*ic*isc*ip*) Enhances: modalias(usb:v072fpb000d*dc*dsc*dp*ic*isc*ip*) Enhances: modalias(usb:v072fp90d2d*dc*dsc*dp*ic*isc*ip*) @@ -87,6 +88,7 @@ Enhances: modalias(usb:v072fp2232d*dc*dsc*dp*ic*isc*ip*) Enhances: modalias(usb:v072fp2242d*dc*dsc*dp*ic*isc*ip*) Enhances: modalias(usb:v072fp2238d*dc*dsc*dp*ic*isc*ip*) +Enhances: modalias(usb:v072fp224fd*dc*dsc*dp*ic*isc*ip*) Enhances: modalias(usb:v072fp223bd*dc*dsc*dp*ic*isc*ip*) Enhances: modalias(usb:v072fp223ed*dc*dsc*dp*ic*isc*ip*) Enhances: modalias(usb:v072fp223dd*dc*dsc*dp*ic*isc*ip*) ++++++ acsccid-1.1.2.tar.bz2 -> acsccid-1.1.3.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/acsccid-1.1.2/ChangeLog new/acsccid-1.1.3/ChangeLog --- old/acsccid-1.1.2/ChangeLog 2016-02-18 04:39:07.000000000 +0100 +++ new/acsccid-1.1.3/ChangeLog 2016-06-22 07:49:56.000000000 +0200 @@ -1,3 +1,115 @@ +2016-06-22 Godfrey Chung <[email protected]> + + * README: Update README for v1.1.3. + +2016-06-22 Godfrey Chung <[email protected]> + + * configure.ac: Update the version to 1.1.3 in configure.ac. + +2016-06-21 Godfrey Chung <[email protected]> + + * src/ccid_usb.c: Fix random order of interfaces in OpenUSBByName(). The value of static_interface should be increased for composite + devices only. + +2016-06-21 Godfrey Chung <[email protected]> + + * src/ifdhandler.c: Avoid libusb timeout on Mac OS X in + CreateChannelByNameOrChannel(). + +2016-06-07 Godfrey Chung <[email protected]> + + * src/ccid_usb.c: Fix a race condition in CardDetectionThread(). Replace libusb_handle_events() with + libusb_handle_events_completed(). + +2016-06-07 Godfrey Chung <[email protected]> + + * src/ifdhandler.c: IFDHGetCapabilities: fix + SCARD_ATTR_VENDOR_IFD_SERIAL_NO size. Merge from ccid 1.4.24. + +2016-06-07 Godfrey Chung <[email protected]> + + * src/ccid.c, src/ccid.h: Fix support of HID Aviator generic. Merge from ccid 1.4.24. + +2016-06-07 Godfrey Chung <[email protected]> + + * src/ccid.c, src/ccid.h: SCM SCL011: use a 400 ms timeout instead + of 100 ms. Merge from ccid 1.4.24. + +2016-06-07 Godfrey Chung <[email protected]> + + * src/ccid.c, src/ccid.h: ElatecTWN4: use a 400 ms timeout instead + of 100 ms. Merge from ccid 1.4.24. + +2016-06-07 Godfrey Chung <[email protected]> + + * src/ifdhandler.c: CreateChannel: allow to use a non default + timeout. Merge from 1.4.24. + +2016-06-07 Godfrey Chung <[email protected]> + + * src/ccid_usb.c: ccid_usb.c: fix a race condition on multi reader. Merge from ccid 1.4.24. + +2016-04-21 Godfrey Chung <[email protected]> + + * src/ifdhandler.c: Update the copyright in ifdhandler.c + +2016-04-21 Godfrey Chung <[email protected]> + + * src/ccid_ifdhandler.h: Update the copyright in ccid_ifdhandler.h. + +2016-04-21 Godfrey Chung <[email protected]> + + * src/ccid_ifdhandler.h, src/ifdhandler.c: Add control codes for + Windows compatibility. + +2016-04-21 Godfrey Chung <[email protected]> + + * src/ccid_usb.c: Update the copyright in src/ccid_usb.c. + +2016-04-21 Godfrey Chung <[email protected]> + + * src/ccid_usb.c: get_end_points(): be more strict for + bInterfaceClass = 255. Merge from ccid 1.4.15. + +2016-04-21 Godfrey Chung <[email protected]> + + * src/ccid_usb.c: Fix a busy loop consuming 100% of CPU. Merge from ccid 1.4.23. + +2016-04-21 Godfrey Chung <[email protected]> + + * src/ccid_usb.c: ccid_usb.c: improve close_libusb_if_needed(). Merge from ccid 1.4.23. + +2016-04-21 Godfrey Chung <[email protected]> + + * src/ccid.c: Update URL in a comment. Merge from ccid 1.4.23. + +2016-04-21 Godfrey Chung <[email protected]> + + * src/Info.plist.src, src/ccid_ifdhandler.h, src/ccid_usb.c: Remove + support of DRIVER_OPTION_RESET_ON_CLOSE. Merge from ccid 1.4.23. + +2016-04-21 Godfrey Chung <[email protected]> + + * src/ccid_usb.c: InterruptRead(): log libusb error name. Merge from ccid 1.4.23. + +2016-04-21 Godfrey Chung <[email protected]> + + * MacOSX/configure: MacOSX/configure: exit in error if configure + failed. Merge from ccid 1.4.23. + +2016-04-18 Godfrey Chung <[email protected]> + + * src/ccid_usb.c: Break if the device was disconnected in + Multi_PollingProc(). + +2016-04-01 Godfrey Chung <[email protected]> + + * src/supported_readers.txt: Add supported readers. ACR1251 CL Reader (ACM1251U-Z2) + +2016-01-14 Godfrey Chung <[email protected]> + + * src/supported_readers.txt: Add supported readers. ACR39U ID1 Card Reader + 2016-02-18 Godfrey Chung <[email protected]> * README: Update README for v1.1.2. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/acsccid-1.1.2/MacOSX/configure new/acsccid-1.1.3/MacOSX/configure --- old/acsccid-1.1.2/MacOSX/configure 2016-02-17 10:28:38.000000000 +0100 +++ new/acsccid-1.1.3/MacOSX/configure 2016-04-21 04:46:11.000000000 +0200 @@ -129,6 +129,10 @@ $CONFIGURE_ARGS \ "$@" +r=$? + # force a regeneration of Info.plist rm -f src/Info.plist +# exit with the return code from ./configure +exit $r diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/acsccid-1.1.2/README new/acsccid-1.1.3/README --- old/acsccid-1.1.2/README 2016-02-18 04:26:41.000000000 +0100 +++ new/acsccid-1.1.3/README 2016-06-22 06:40:27.000000000 +0200 @@ -61,6 +61,7 @@ 072F B102 ACR39T ACS ACR39T ICC Reader 072F B103 ACR39F ACS ACR39F ICC Reader 072F B104 ACR39U-SAM ACS ACR39U-SAM ICC Reader +072F B10C ACR39U-U1 ACS ACR39U ID1 Card Reader 072F B000 ACR3901U ACS ACR3901U ICC Reader 072F 90D2 ACR83U-A1 ACS ACR83U 072F 8306 ACR85 ACS ACR85 PINPad Reader @@ -91,6 +92,7 @@ 072F 2232 ACR1251UK ACS ACR1251K Dual Reader 072F 2242 ACR1251U-C3 ACS ACR1251 1S Dual Reader 072F 2238 ACR1251U-C9 ACS ACR1251 Reader +072F 224F ACM1251U-Z2 ACS ACR1251 CL Reader 072F 223B ACR1252U-A1 ACS ACR1252 1S CL Reader 072F 223E ACR1252U-A2 ACS ACR1252 CL Reader 072F 223D ACR1252U BL ACS ACR1252 USB FW_Upgrade v100 @@ -139,6 +141,29 @@ History ------- +v1.1.3 (22/6/2016) +- Add the following readers support: + ACR39U ID1 Card Reader + ACR1251 CL Reader (ACM1251U-Z2) +- Break if the device was disconnected in Multi_PollingProc(). +- Merge with ccid 1.4.23. + - MacOSX/configure: exit in error if configure failed. + - InterruptRead(): log libusb error name. + - Remove support of DRIVER_OPTION_RESET_ON_CLOSE. + - Update URL in a comment. + - ccid_usb.c: improve close_libusb_if_needed(). + - Fix a busy loop consuming 100% of CPU. +- Merge with ccid 1.4.15. + - get_end_points(): be more strict for bInterfaceClass = 255. +- Add control codes for Windows compatibility. +- Merge with ccid 1.4.24. + - ccid_usb.c: fix a race condition on multi reader. + - CreateChannel: allow to use a non default timeout. + - IFDHGetCapabilities: fix SCARD_ATTR_VENDOR_IFD_SERIAL_NO size. +- Fix a race condition in CardDetectionThread(). +- Avoid libusb timeout on Mac OS X in CreateChannelByNameOrChannel(). +- Fix random order of interfaces in OpenUSBByName(). + v1.1.2 (18/2/2016) - Return the second version in ACR83_GetFirmwareVersion(). - Disable SetParameters for OEM Reader (VID: 072F, PID: 8205) v029Z in diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/acsccid-1.1.2/config/config.guess new/acsccid-1.1.3/config/config.guess --- old/acsccid-1.1.2/config/config.guess 2016-02-18 04:37:55.000000000 +0100 +++ new/acsccid-1.1.3/config/config.guess 2016-06-22 07:49:14.000000000 +0200 @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2015 Free Software Foundation, Inc. +# Copyright 1992-2016 Free Software Foundation, Inc. -timestamp='2015-08-20' +timestamp='2016-04-02' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to <[email protected]>. @@ -50,7 +50,7 @@ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2015 Free Software Foundation, Inc. +Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -237,6 +237,10 @@ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; @@ -268,42 +272,42 @@ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; + UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; + UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; + UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; + UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; + UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; + UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; + UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; + UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; + UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 @@ -376,16 +380,16 @@ exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build - SUN_ARCH="i386" + SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then - SUN_ARCH="x86_64" + SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` @@ -410,7 +414,7 @@ exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} @@ -635,13 +639,13 @@ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi @@ -680,11 +684,11 @@ exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ ${HP_ARCH} = "hppa2.0w" ] + if [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build @@ -697,12 +701,12 @@ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then - HP_ARCH="hppa2.0w" + HP_ARCH=hppa2.0w else - HP_ARCH="hppa64" + HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} @@ -807,14 +811,14 @@ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) @@ -896,7 +900,7 @@ exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix @@ -919,7 +923,7 @@ EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) @@ -965,6 +969,9 @@ ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; + k1om:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -1120,7 +1127,7 @@ # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that + # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; @@ -1269,6 +1276,9 @@ SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux${UNAME_RELEASE} + exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; @@ -1282,9 +1292,9 @@ UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in @@ -1306,7 +1316,7 @@ exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then + if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi @@ -1337,7 +1347,7 @@ # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - if test "$cputype" = "386"; then + if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" @@ -1379,7 +1389,7 @@ echo i386-pc-xenix exit ;; i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos @@ -1390,6 +1400,9 @@ x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; esac cat >&2 <<EOF @@ -1399,9 +1412,9 @@ the operating system you are using. It is advised that you download the most up to date version of the config scripts from - http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess and - http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub If the version you run ($0) is already up to date, please send the following data and any information you think might be diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/acsccid-1.1.2/config/config.sub new/acsccid-1.1.3/config/config.sub --- old/acsccid-1.1.2/config/config.sub 2016-02-18 04:37:55.000000000 +0100 +++ new/acsccid-1.1.3/config/config.sub 2016-06-22 07:49:14.000000000 +0200 @@ -1,8 +1,8 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2015 Free Software Foundation, Inc. +# Copyright 1992-2016 Free Software Foundation, Inc. -timestamp='2015-08-20' +timestamp='2016-03-30' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -33,7 +33,7 @@ # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -53,8 +53,7 @@ me=`echo "$0" | sed -e 's,.*/,,'` usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. @@ -68,7 +67,7 @@ version="\ GNU config.sub ($timestamp) -Copyright 1992-2015 Free Software Foundation, Inc. +Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -521,7 +520,7 @@ basic_machine=i386-pc os=-aros ;; - asmjs) + asmjs) basic_machine=asmjs-unknown ;; aux) @@ -1383,7 +1382,7 @@ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -bitrig* | -openbsd* | -solidbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ @@ -1399,7 +1398,8 @@ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1531,6 +1531,8 @@ ;; -nacl*) ;; + -ios) + ;; -none) ;; *) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/acsccid-1.1.2/configure new/acsccid-1.1.3/configure --- old/acsccid-1.1.2/configure 2016-02-18 04:37:54.000000000 +0100 +++ new/acsccid-1.1.3/configure 2016-06-22 07:49:13.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for acsccid 1.1.2. +# Generated by GNU Autoconf 2.69 for acsccid 1.1.3. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -587,8 +587,8 @@ # Identity of this package. PACKAGE_NAME='acsccid' PACKAGE_TARNAME='acsccid' -PACKAGE_VERSION='1.1.2' -PACKAGE_STRING='acsccid 1.1.2' +PACKAGE_VERSION='1.1.3' +PACKAGE_STRING='acsccid 1.1.3' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1366,7 +1366,7 @@ # 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 acsccid 1.1.2 to adapt to many kinds of systems. +\`configure' configures acsccid 1.1.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1437,7 +1437,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of acsccid 1.1.2:";; + short | recursive ) echo "Configuration of acsccid 1.1.3:";; esac cat <<\_ACEOF @@ -1570,7 +1570,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -acsccid configure 1.1.2 +acsccid configure 1.1.3 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1989,7 +1989,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by acsccid $as_me 1.1.2, which was +It was created by acsccid $as_me 1.1.3, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2853,7 +2853,7 @@ # Define the identity of the package. PACKAGE='acsccid' - VERSION='1.1.2' + VERSION='1.1.3' cat >>confdefs.h <<_ACEOF @@ -14546,7 +14546,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by acsccid $as_me 1.1.2, which was +This file was extended by acsccid $as_me 1.1.3, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -14612,7 +14612,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -acsccid config.status 1.1.2 +acsccid config.status 1.1.3 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/acsccid-1.1.2/configure.ac new/acsccid-1.1.3/configure.ac --- old/acsccid-1.1.2/configure.ac 2016-02-18 04:15:43.000000000 +0100 +++ new/acsccid-1.1.3/configure.ac 2016-06-22 06:18:15.000000000 +0200 @@ -4,7 +4,7 @@ # Require autoconf 2.61 AC_PREREQ([2.69]) -AC_INIT([acsccid], [1.1.2]) +AC_INIT([acsccid], [1.1.3]) AC_CONFIG_SRCDIR(src/ifdhandler.c) AC_CONFIG_AUX_DIR([config]) AM_INIT_AUTOMAKE(1.8 dist-bzip2 no-dist-gzip foreign subdir-objects) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/acsccid-1.1.2/src/Info.plist.src new/acsccid-1.1.3/src/Info.plist.src --- old/acsccid-1.1.2/src/Info.plist.src 2015-10-27 10:46:14.000000000 +0100 +++ new/acsccid-1.1.3/src/Info.plist.src 2016-04-21 04:59:58.000000000 +0200 @@ -77,11 +77,7 @@ - activate this option but you will have problems depending on the bug - 0x08: DRIVER_OPTION_RESET_ON_CLOSE - This option may be required on Linux 2.4 so that the - device reset if sequencial (bSeq) counter and can be - reused if pcscd restart. Otherwise the reader needs to - be unplugged/replugged. + 0x08: free bits 4 & 5: (values 0x00, 0x10, 0x20, 0x30) 0x00: power on the card at 5V (default value) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/acsccid-1.1.2/src/ccid.c new/acsccid-1.1.3/src/ccid.c --- old/acsccid-1.1.2/src/ccid.c 2016-02-17 10:28:38.000000000 +0100 +++ new/acsccid-1.1.3/src/ccid.c 2016-06-07 05:58:23.000000000 +0200 @@ -79,6 +79,15 @@ ccid_descriptor->dwMaxDataRate = 9600; break; + case ElatecTWN4: + /* use a timeout of 400 ms instead of 100 ms in CmdGetSlotStatus() + * used by CreateChannelByNameOrChannel() + * The reader answers after 280 ms if no tag is present */ + case SCM_SCL011: + /* The SCM SCL011 reader needs 350 ms to answer */ + ccid_descriptor->readTimeout = DEFAULT_COM_READ_TIMEOUT * 4; + break; + case ACS_ACR122U: case ACS_AET62_PICC_READER: case ACS_AET62_1SAM_PICC_READER: @@ -478,10 +487,20 @@ case HP_CCIDSMARTCARDKEYBOARD: case FUJITSUSMARTKEYB: /* the Secure Pin Entry is bogus so disable it - * http://martinpaljak.net/2011/03/19/insecure-hp-usb-smart-card-keyboard/ + * https://web.archive.org/web/20120320001756/http://martinpaljak.net/2011/03/19/insecure-hp-usb-smart-card-keyboard/ + * + * The problem is that the PIN code entered using the Secure + * Pin Entry function is also sent to the host. */ ccid_descriptor->bPINSupport = 0; break; + case HID_AVIATOR: + /* The chip advertises pinpad but actually doesn't have one */ + ccid_descriptor->bPINSupport = 0; + /* Firmware uses chaining */ + ccid_descriptor->dwFeatures &= ~CCID_CLASS_EXCHANGE_MASK; + ccid_descriptor->dwFeatures |= CCID_CLASS_EXTENDED_APDU; + break; #if 0 /* SCM SCR331-DI contactless */ @@ -536,6 +555,12 @@ } break; + case ElatecTWN4: + case SCM_SCL011: + /* restore default timeout (modified in ccid_open_hack_pre()) */ + ccid_descriptor->readTimeout = DEFAULT_COM_READ_TIMEOUT; + break; + case ACS_ACR33U_A1_3SAM_ICC_READER: case ACS_ACR33U_A2_3SAM_ICC_READER: case ACS_ACR33U_A3_3SAM_ICC_READER: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/acsccid-1.1.2/src/ccid.h new/acsccid-1.1.3/src/ccid.h --- old/acsccid-1.1.2/src/ccid.h 2016-02-17 10:28:38.000000000 +0100 +++ new/acsccid-1.1.3/src/ccid.h 2016-06-07 05:58:48.000000000 +0200 @@ -244,6 +244,9 @@ #define FEITIANR502DUAL 0x096E060D #define MICROCHIP_SEC1100 0x04241104 #define CHERRY_KC1000SC 0x046A00A1 +#define ElatecTWN4 0x09D80427 +#define SCM_SCL011 0x04E65293 +#define HID_AVIATOR 0x076B3A21 // CCID readers #define ACS_ACR32_ICC_READER 0x072fb301 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/acsccid-1.1.2/src/ccid_ifdhandler.h new/acsccid-1.1.3/src/ccid_ifdhandler.h --- old/acsccid-1.1.2/src/ccid_ifdhandler.h 2016-02-17 10:28:38.000000000 +0100 +++ new/acsccid-1.1.3/src/ccid_ifdhandler.h 2016-04-21 09:20:39.000000000 +0200 @@ -1,7 +1,7 @@ /* ccid_ifdhandler.h: non-generic ifdhandler functions Copyright (C) 2004-2010 Ludovic Rousseau - Copyright (C) 2010-2014 Advanced Card Systems Ltd. + Copyright (C) 2010-2016 Advanced Card Systems Ltd. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -50,10 +50,19 @@ // ACR128 I/O control code for escape command #define IOCTL_ACR128_READER_COMMAND SCARD_CTL_CODE(2079) +/* Control codes for Windows compatibility. */ +#define WINSCARD_CTL_CODE(code) (0x310000 | (code << 2)) +#define WINIOCTL_CCID_ESCAPE WINSCARD_CTL_CODE(3500) +#define WINIOCTL_SMARTCARD_GET_FIRMWARE_VERSION WINSCARD_CTL_CODE(2078) +#define WINIOCTL_SMARTCARD_DISPLAY_LCD_MESSAGE WINSCARD_CTL_CODE(2079) +#define WINIOCTL_SMARTCARD_READ_KEY WINSCARD_CTL_CODE(2080) +#define WINIOCTL_SMARTCARD_SET_CARD_TYPE WINSCARD_CTL_CODE(2060) +#define WINIOCTL_SMARTCARD_SET_CARD_VOLTAGE WINSCARD_CTL_CODE(2074) +#define WINIOCTL_ACR128_READER_COMMAND WINSCARD_CTL_CODE(2079) + #define DRIVER_OPTION_CCID_EXCHANGE_AUTHORIZED 1 #define DRIVER_OPTION_GEMPC_TWIN_KEY_APDU 2 #define DRIVER_OPTION_USE_BOGUS_FIRMWARE 4 -#define DRIVER_OPTION_RESET_ON_CLOSE 8 #define DRIVER_OPTION_DISABLE_PIN_RETRIES (1 << 6) // ACS driver option diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/acsccid-1.1.2/src/ccid_usb.c new/acsccid-1.1.3/src/ccid_usb.c --- old/acsccid-1.1.2/src/ccid_usb.c 2016-02-17 10:28:38.000000000 +0100 +++ new/acsccid-1.1.3/src/ccid_usb.c 2016-06-21 10:02:43.000000000 +0200 @@ -1,7 +1,7 @@ /* ccid_usb.c: USB access routines using the libusb library Copyright (C) 2003-2010 Ludovic Rousseau - Copyright (C) 2009-2015 Advanced Card Systems Ltd. + Copyright (C) 2009-2016 Advanced Card Systems Ltd. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -200,6 +200,9 @@ { int i, to_exit = TRUE; + if (NULL == ctx) + return; + /* if at least 1 reader is still in use we do not exit libusb */ for (i=0; i<CCID_DRIVER_MAX_READERS; i++) { @@ -713,12 +716,24 @@ } #ifdef USE_COMPOSITE_AS_MULTISLOT - /* use the next interface for the next "slot" */ - static_interface++; - - /* reset for a next reader */ - if (static_interface > 2) - static_interface = (FEITIANR502DUAL == readerID) ? 0: 1; + if ((GEMALTOPROXDU == readerID) + || (GEMALTOPROXSU == readerID) + || (FEITIANR502DUAL == readerID) + || (ACS_ACR1281_DUAL_READER_QPBOC == readerID) + || (ACS_ACR1281_DUAL_READER_BSI == readerID) + || (ACS_ACR1281_1S_PICC_READER == readerID) + || (ACS_ACR1251_1S_CL_READER == readerID) + || (ACS_ACR1251U_C == readerID) + || (ACS_ACR1251K_DUAL_READER == readerID) + || (ACS_ACR1252_1S_CL_READER == readerID)) + { + /* use the next interface for the next "slot" */ + static_interface++; + + /* reset for a next reader */ + if (static_interface > 2) + static_interface = (FEITIANR502DUAL == readerID) ? 0: 1; + } #endif /* Get Endpoints values*/ @@ -1029,6 +1044,9 @@ goto again_libusb; } #endif + /* failed */ + close_libusb_if_needed(); + if (claim_failed) return STATUS_COMM_ERROR; DEBUG_INFO1("Device not found?"); @@ -1047,6 +1065,9 @@ /* free bundle list */ bundleRelease(&plist); + if (return_value != STATUS_SUCCESS) + close_libusb_if_needed(); + return return_value; } /* OpenUSBByName */ @@ -1343,10 +1364,6 @@ if (usbDevice[reader_index].ccid.sIFD_iManufacturer) free(usbDevice[reader_index].ccid.sIFD_iManufacturer); - /* reset so that bSeq starts at 0 again */ - if (DriverOptions & DRIVER_OPTION_RESET_ON_CLOSE) - (void)libusb_reset_device(usbDevice[reader_index].dev_handle); - if (usbDevice[reader_index].ccid.arrayOfSupportedDataRates) free(usbDevice[reader_index].ccid.arrayOfSupportedDataRates); @@ -1486,7 +1503,8 @@ /* CCID Class? */ if (desc->interface[i].altsetting->bInterfaceClass == 0xb #ifdef ALLOW_PROPRIETARY_CLASS - || desc->interface[i].altsetting->bInterfaceClass == 0xff + || (desc->interface[i].altsetting->bInterfaceClass == 0xff + && 54 == desc->interface[i].altsetting->extra_length) // bInterfaceClass is 0x00 in ACR83U, ACR88U and ACR128U || desc->interface[i].altsetting->bInterfaceClass == 0x00 @@ -1690,7 +1708,8 @@ ret = libusb_submit_transfer(transfer); if (ret < 0) { libusb_free_transfer(transfer); - DEBUG_CRITICAL2("libusb_submit_transfer failed: %d", ret); + DEBUG_CRITICAL2("libusb_submit_transfer failed: %s", + libusb_error_name(ret)); return ret; } @@ -1698,17 +1717,18 @@ while (!completed) { - ret = libusb_handle_events(ctx); + ret = libusb_handle_events_completed(ctx, &completed); if (ret < 0) { if (ret == LIBUSB_ERROR_INTERRUPTED) continue; libusb_cancel_transfer(transfer); while (!completed) - if (libusb_handle_events(ctx) < 0) + if (libusb_handle_events_completed(ctx, &completed) < 0) break; libusb_free_transfer(transfer); - DEBUG_CRITICAL2("libusb_handle_events failed: %d", ret); + DEBUG_CRITICAL2("libusb_handle_events failed: %s", + libusb_error_name(ret)); return ret; } } @@ -1852,7 +1872,7 @@ completed = 0; while (!completed && !msExt->terminated) { - rv = libusb_handle_events(ctx); + rv = libusb_handle_events_completed(ctx, &completed); if (rv < 0) { DEBUG_COMM2("libusb_handle_events err %d", rv); @@ -1864,7 +1884,7 @@ while (!completed && !msExt->terminated) { - if (libusb_handle_events(ctx) < 0) + if (libusb_handle_events_completed(ctx, &completed) < 0) break; } @@ -1885,6 +1905,15 @@ libusb_free_transfer(transfer); + /* Break if the device was disconnected. */ + if (status == LIBUSB_TRANSFER_NO_DEVICE) + { + DEBUG_COMM3("Multi_PollingProc (%d/%d): Device disconnected", + usbDevice[msExt->reader_index].bus_number, + usbDevice[msExt->reader_index].device_address); + break; + } + switch (status) { case LIBUSB_TRANSFER_COMPLETED: @@ -2231,7 +2260,7 @@ completed = 0; while (!completed && !usbDevice[reader_index].terminated) { - rv = libusb_handle_events(ctx); + rv = libusb_handle_events_completed(ctx, &completed); if (rv < 0) { DEBUG_COMM2("libusb_handle_events err %d", rv); @@ -2243,7 +2272,7 @@ while (!completed && !usbDevice[reader_index].terminated) { - if (libusb_handle_events(ctx) < 0) + if (libusb_handle_events_completed(ctx, &completed) < 0) break; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/acsccid-1.1.2/src/ifdhandler.c new/acsccid-1.1.3/src/ifdhandler.c --- old/acsccid-1.1.2/src/ifdhandler.c 2016-02-17 10:28:38.000000000 +0100 +++ new/acsccid-1.1.3/src/ifdhandler.c 2016-06-21 05:24:00.000000000 +0200 @@ -1,7 +1,7 @@ /* ifdhandler.c: IFDH API Copyright (C) 2003-2010 Ludovic Rousseau - Copyright (C) 2009-2015 Advanced Card Systems Ltd. + Copyright (C) 2009-2016 Advanced Card Systems Ltd. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -223,7 +223,13 @@ oldReadTimeout = ccid_descriptor->readTimeout; /* 100 ms just to resync the USB toggle bits */ - ccid_descriptor->readTimeout = 100; + /* Do not use a fixed 100 ms value but compute it from the + * default timeout. It is now possible to use a different value + * by changing readTimeout in ccid_open_hack_pre() + * ccid_descriptor->readTimeout = ccid_descriptor->readTimeout * 100.0 / DEFAULT_COM_READ_TIMEOUT; */ + + /* Avoid libusb timeout on Mac OS X. */ + ccid_descriptor->readTimeout = 1000; if ((IFD_COMMUNICATION_ERROR == CcidSlots[reader_index].pGetSlotStatus(reader_index, pcbuffer)) && (IFD_COMMUNICATION_ERROR == CcidSlots[reader_index].pGetSlotStatus(reader_index, pcbuffer))) @@ -665,7 +671,7 @@ if (ccid_desc->sIFD_serial_number) { strlcpy((char *)Value, ccid_desc->sIFD_serial_number, *Length); - *Length = strlen((char *)Value); + *Length = strlen((char *)Value)+1; } else { @@ -1764,7 +1770,8 @@ (ACS_AET65_1SAM_ICC_READER == ccid_descriptor -> readerID)) { // Set card voltage - if (IOCTL_SMARTCARD_SET_CARD_VOLTAGE == dwControlCode) + if ((IOCTL_SMARTCARD_SET_CARD_VOLTAGE == dwControlCode) + || (WINIOCTL_SMARTCARD_SET_CARD_VOLTAGE == dwControlCode)) { unsigned int iBytesReturned; @@ -1775,7 +1782,8 @@ } // Set card type - if (IOCTL_SMARTCARD_SET_CARD_TYPE == dwControlCode) + if ((IOCTL_SMARTCARD_SET_CARD_TYPE == dwControlCode) + || (WINIOCTL_SMARTCARD_SET_CARD_TYPE == dwControlCode)) { unsigned int iBytesReturned; @@ -2195,7 +2203,8 @@ } // MS CCID I/O control code for escape command - if (IOCTL_CCID_ESCAPE == dwControlCode) + if ((IOCTL_CCID_ESCAPE == dwControlCode) + || (WINIOCTL_CCID_ESCAPE == dwControlCode)) { unsigned int iBytesReturned; @@ -2213,7 +2222,8 @@ (ACS_APG8201Z2 == ccid_descriptor -> readerID)) { // Get firmware version - if (IOCTL_SMARTCARD_GET_FIRMWARE_VERSION == dwControlCode) + if ((IOCTL_SMARTCARD_GET_FIRMWARE_VERSION == dwControlCode) + || (WINIOCTL_SMARTCARD_GET_FIRMWARE_VERSION == dwControlCode)) { unsigned char command[] = { 0x04, 0x00, 0x00, 0x00, 0x00 }; unsigned int commandLen = sizeof(command); @@ -2238,7 +2248,8 @@ } // Display LCD message - if (IOCTL_SMARTCARD_DISPLAY_LCD_MESSAGE == dwControlCode) + if ((IOCTL_SMARTCARD_DISPLAY_LCD_MESSAGE == dwControlCode) + || (WINIOCTL_SMARTCARD_DISPLAY_LCD_MESSAGE == dwControlCode)) { unsigned char command[5 + 32] = { 0x05, 0x00, 0x20, 0x00, 0x00 }; unsigned int commandLen = sizeof(command); @@ -2272,7 +2283,8 @@ } // Read key - if (IOCTL_SMARTCARD_READ_KEY == dwControlCode) + if ((IOCTL_SMARTCARD_READ_KEY == dwControlCode) + || (WINIOCTL_SMARTCARD_READ_KEY == dwControlCode)) { unsigned char command[5 + 6] = { 0x06, 0x00, 0x06, 0x00, 0x00 }; unsigned int commandLen = sizeof(command); @@ -2305,7 +2317,8 @@ else { // ACR128 I/O control code for escape command - if (IOCTL_ACR128_READER_COMMAND == dwControlCode) + if ((IOCTL_ACR128_READER_COMMAND == dwControlCode) + || (WINIOCTL_ACR128_READER_COMMAND == dwControlCode)) { unsigned char *command; unsigned int commandLen = 3 + TxLength; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/acsccid-1.1.2/src/supported_readers.txt new/acsccid-1.1.3/src/supported_readers.txt --- old/acsccid-1.1.2/src/supported_readers.txt 2016-02-17 02:51:16.000000000 +0100 +++ new/acsccid-1.1.3/src/supported_readers.txt 2016-04-01 10:38:56.000000000 +0200 @@ -40,6 +40,9 @@ # ACR39F 0x072f:0xb103:ACS ACR39F ICC Reader +# ACR39U-U1 +0x072f:0xb10c:ACS ACR39U ID1 Card Reader + # ACR39U-SAM 0x072f:0xb104:ACS ACR39U-SAM ICC Reader @@ -123,6 +126,9 @@ # ACR1251U-C9 0x072f:0x2238:ACS ACR1251 Reader +# ACM1251U-Z2 +0x072f:0x224f:ACS ACR1251 CL Reader + # ACR1252U-A1 0x072f:0x223b:ACS ACR1252 1S CL Reader diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/acsccid-1.1.2/src/tokenparser.c new/acsccid-1.1.3/src/tokenparser.c --- old/acsccid-1.1.2/src/tokenparser.c 2016-02-18 04:39:07.000000000 +0100 +++ new/acsccid-1.1.3/src/tokenparser.c 2016-06-22 07:49:45.000000000 +0200 @@ -7,8 +7,8 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 39 +#define YY_FLEX_MINOR_VERSION 6 +#define YY_FLEX_SUBMINOR_VERSION 0 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -210,7 +210,7 @@ /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - yy_size_t yy_n_chars; + int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -280,7 +280,7 @@ /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; -static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +static int yy_n_chars; /* number of characters read into yy_ch_buf */ yy_size_t yyleng; /* Points to current character in buffer. */ @@ -341,7 +341,7 @@ /* Begin user sect3 */ -#define yywrap() 1 +#define yywrap() (/*CONSTCOND*/1) #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; @@ -355,11 +355,17 @@ int yylineno = 1; extern char *yytext; +#ifdef yytext_ptr +#undef yytext_ptr +#endif #define yytext_ptr yytext static yy_state_type yy_get_previous_state (void ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); static int yy_get_next_buffer (void ); +#if defined(__GNUC__) && __GNUC__ >= 3 +__attribute__((__noreturn__)) +#endif static void yy_fatal_error (yyconst char msg[] ); /* Done after the current pattern has been matched and before the @@ -389,7 +395,7 @@ 0, 0, 0, 0, 0, 0, 5, 0 } ; -static yyconst flex_int32_t yy_ec[256] = +static yyconst YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -421,13 +427,13 @@ 1, 1, 1, 1, 1 } ; -static yyconst flex_int32_t yy_meta[21] = +static yyconst YY_CHAR yy_meta[21] = { 0, 1, 2, 3, 4, 4, 4, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 } ; -static yyconst flex_int16_t yy_base[43] = +static yyconst flex_uint16_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, @@ -445,7 +451,7 @@ 38, 38 } ; -static yyconst flex_int16_t yy_nxt[71] = +static yyconst flex_uint16_t yy_nxt[71] = { 0, 38, 5, 6, 18, 7, 38, 38, 8, 5, 6, 37, 7, 36, 38, 8, 10, 35, 34, 11, 4, @@ -541,7 +547,7 @@ static list_t *ListValues; #define YY_NO_INPUT 1 -#line 545 "tokenparser.c" +#line 551 "tokenparser.c" #define INITIAL 0 @@ -574,11 +580,11 @@ FILE *yyget_in (void ); -void yyset_in (FILE * in_str ); +void yyset_in (FILE * _in_str ); FILE *yyget_out (void ); -void yyset_out (FILE * out_str ); +void yyset_out (FILE * _out_str ); yy_size_t yyget_leng (void ); @@ -586,7 +592,7 @@ int yyget_lineno (void ); -void yyset_lineno (int line_number ); +void yyset_lineno (int _line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. @@ -600,6 +606,10 @@ #endif #endif +#ifndef YY_NO_UNPUT + +#endif + #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ); #endif @@ -712,7 +722,7 @@ /* Code executed at the end of each rule. */ #ifndef YY_BREAK -#define YY_BREAK break; +#define YY_BREAK /*LINTED*/break; #endif #define YY_RULE_SETUP \ @@ -722,9 +732,9 @@ */ YY_DECL { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; + yy_state_type yy_current_state; + char *yy_cp, *yy_bp; + int yy_act; if ( !(yy_init) ) { @@ -756,9 +766,9 @@ #line 67 "tokenparser.l" -#line 760 "tokenparser.c" +#line 770 "tokenparser.c" - while ( 1 ) /* loops until end-of-file is reached */ + while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); @@ -774,7 +784,7 @@ yy_match: do { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; + YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -849,7 +859,7 @@ #line 75 "tokenparser.l" ECHO; YY_BREAK -#line 853 "tokenparser.c" +#line 863 "tokenparser.c" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -992,9 +1002,9 @@ */ static int yy_get_next_buffer (void) { - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = (yytext_ptr); - register int number_to_move, i; + char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + char *source = (yytext_ptr); + yy_size_t number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) @@ -1023,7 +1033,7 @@ /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + number_to_move = (yy_size_t) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); @@ -1105,9 +1115,9 @@ else ret_val = EOB_ACT_CONTINUE_SCAN; - if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + if ((int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ - yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); @@ -1126,14 +1136,14 @@ static yy_state_type yy_get_previous_state (void) { - register yy_state_type yy_current_state; - register char *yy_cp; + yy_state_type yy_current_state; + char *yy_cp; yy_current_state = (yy_start); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -1158,10 +1168,10 @@ */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { - register int yy_is_jam; - register char *yy_cp = (yy_c_buf_p); + int yy_is_jam; + char *yy_cp = (yy_c_buf_p); - register YY_CHAR yy_c = 1; + YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -1179,6 +1189,10 @@ return yy_is_jam ? 0 : yy_current_state; } +#ifndef YY_NO_UNPUT + +#endif + #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) @@ -1328,7 +1342,7 @@ if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - b->yy_buf_size = size; + b->yy_buf_size = (yy_size_t)size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. @@ -1483,7 +1497,7 @@ * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ - num_to_alloc = 1; + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); @@ -1500,7 +1514,7 @@ if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; + yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc @@ -1608,7 +1622,7 @@ static void yy_fatal_error (yyconst char* msg ) { - (void) fprintf( stderr, "%s\n", msg ); + (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } @@ -1674,29 +1688,29 @@ } /** Set the current line number. - * @param line_number + * @param _line_number line number * */ -void yyset_lineno (int line_number ) +void yyset_lineno (int _line_number ) { - yylineno = line_number; + yylineno = _line_number; } /** Set the input stream. This does not discard the current * input buffer. - * @param in_str A readable stream. + * @param _in_str A readable stream. * * @see yy_switch_to_buffer */ -void yyset_in (FILE * in_str ) +void yyset_in (FILE * _in_str ) { - yyin = in_str ; + yyin = _in_str ; } -void yyset_out (FILE * out_str ) +void yyset_out (FILE * _out_str ) { - yyout = out_str ; + yyout = _out_str ; } int yyget_debug (void) @@ -1704,9 +1718,9 @@ return yy_flex_debug; } -void yyset_debug (int bdebug ) +void yyset_debug (int _bdebug ) { - yy_flex_debug = bdebug ; + yy_flex_debug = _bdebug ; } static int yy_init_globals (void) @@ -1766,7 +1780,8 @@ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { - register int i; + + int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } @@ -1775,7 +1790,7 @@ #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s ) { - register int n; + int n; for ( n = 0; s[n]; ++n ) ; @@ -1785,11 +1800,12 @@ void *yyalloc (yy_size_t size ) { - return (void *) malloc( size ); + return (void *) malloc( size ); } void *yyrealloc (void * ptr, yy_size_t size ) { + /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter @@ -1802,12 +1818,12 @@ void yyfree (void * ptr ) { - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" -#line 74 "tokenparser.l" +#line 75 "tokenparser.l"
