Use the correct library name on Linux (libpcsclite.so.1).

martinpaljak made this change on his branch but I didn’t merge it yet.
Fix CardTerminals.waitForChange(long) and CardTerminals.list(State) on Linux.

It turns out that SCARD_READERSTATE_A is only packed in OS X, not Linux. Change the alignment of LinuxSCardReaderState to ALIGN_DEFAULT.

On Linux pcsclite 1.7.4, the SCardGetStatusChange increments the reader change counter every time the a card is inserted OR REMOVED, not just inserted. This required a change to the list(State.CARD_INSERTION) logic.

Also, the behavior of SCardGetStatusChange differes from Windows and OS X. On Windows and Mac, the first call to SCardGetStatusChange can contain just the PNP device, and the call will return immediately if there are any readers already plugged in. However, on Linux, the call hangs forever; I need to query the reader state first.
Made JNA dependency version requirement more conservative

Use explicit Structure(Pointer, int) constructor instead of convenience
Structure(int) constructor.
Fix function names in Windows.

In WinSCard.h on Windows, some of the functions are actually macros that expand to the ascii or wide version. We use the ascii versions to match pcsclite, which is only ascii.
Fix for Windows x86_64; size of SCardContext should be Pointer.SIZE.

Previously, I assumed that SCardContext was always a NativeLong. This is correct on Linux, but wrong on Windows and Mac. All functions in Windows x86_64 would fail with error 6 (ERROR_INVALID_HANDLE) because I truncated the pointer. I did not notice any crashes on Mac, because it SCARDCONTEXT there is just a int32 that increments from 1.

Fix SCardContext to match the different headers: make it a subclass of IntegerType instead of Structure, and make it 32 bits on Mac, the same size as a pointer on Windows, and the same size as a long on Linux.
Fix SCardHandle on Windows x86_64 for all Card methods.

SCardHandle needs to be the same size as SCardContext which was fixed in the previous commit; it is long on Linux, int32_t on OS X, and DWORD* in Windows.
Fix bug for OS X introduced by 1bd5faa6 (Fix function names in Windows.)

Remove the function mapper when loading the PCSC library on OS X. The ASCII symbol mapper is only needed on Windows and was accidentally also added to Mac.
Minor cleanup.

Remove System.out.println calls. Make SCardHandleByReference refer to SCardHandle.SIZE instead of SCardContext.SIZE.
Simplify Winscard by replacing int or NativeLong with Dword type.

Add Dword and DwordByReference types. With the Dword type that is always 32 bits on Windows and Mac but long on Linux, we can unify the function and struct declarations that we give to JNA.

Use Dword in SCardReaderState Structure. Delete WinscardSCardReaderState, OSXSCardReaderState, LinuxSCardReaderState.

Use Dword in WinscardLibrary. Delete PcscLiteLibrary and PcscLiteAdapter which are now redundant.
Don’t include the extra ffffffff in PCSCException message.
Implement Card.openLogicalChannel().
Remove some redundant comments on JNA functions.
Make ScardIoRequest a Structure instead of a PointerType.

Define ScardIoRequest as a Structure which will be passed by reference to SCardTransmit. At the moment, I am still initializing them from the global variables exported by the Winscard library.
Add common superclass Handle for SCardContext and SCardHandle, and ByReference.

Make SCardContext and SCardHandle extend Handle.

Make SCardContextByReference and SCardHandleByReference extend HandleByReference.
Implement toString() on Dword, SCardContext, SCardHandle.

Dword.toString() just returns the number as %d. SCardContext.toString() returns SCardContext{%x}, and likewise for SCardHandle. Note that although handles are pointer-sized on Windows, they cannot be dereferenced.
Implement toString() for Smartcardio classes.

Add toString implementation for JnaCardTerminals, JnaCardTerminal, JnaCard, JnaCardChannel. toString() just prints the class name and values of the handles.
Use SCardGetStatusChange instead of SCardConnect in CardTerminal.isCardPresent.

Simplify the implementation of isCardPresent() to call SCardGetStatusChange. In the process, fix SCARD_W_REMOVED_CARD and SCARD_E_SHARING_VIOLATION errors thrown by isCardPresent on Windows.
Delete override.java.security, since it is very JRE distribution-dependent.
Add more information to README.md.

Explain how to add Maven dependency to your pom.xml. Describe the different ways to explicitly use the Smartcardio Provider. Link to other library intarsys/smartcard-io.
[release] Release jnasmartcardio-0.2.0.

Add CHANGES.md.