import java.util.List;
import java.util.ListIterator;
import java.security.NoSuchAlgorithmException;
import javax.smartcardio.CardException;
import javax.smartcardio.TerminalFactory;
import javax.smartcardio.CardTerminal;

public class pcsc_lite_bug {

    public static void main(String args[]) {
        
        // System.out.println("property sun.security.smartcardio.library=" +
        //      System.getProperty("sun.security.smartcardio.library"));


        try {
        TerminalFactory factory = TerminalFactory.getInstance("PC/SC", null);
        List<CardTerminal> terminals = factory.terminals().list();
        
        System.out.format("XXX Found %d PCSC terminals:\n", terminals.size());
        for(ListIterator<CardTerminal> i = terminals.listIterator(); 
            i.hasNext(); ) 
            {
                System.out.format("XXX  %2d: %s\n", 
                                  i.nextIndex(), 
                                  i.next().toString());
            }

        }
        catch(NoSuchAlgorithmException e) {
            System.err.println("XXX Cannot connect to PC/SC subsystem");
            System.exit(1);
        }
        catch(CardException e) {
            System.err.format("XXX Communication error %s\n", e);
            System.exit(1);
        }
    }
}

/// Local Variables:
/// compile-command: "javac pcsc_lite_bug.java"
/// End:
