[Pcsclite-cvs-commit] r1657 - trunk/Drivers/ocfBridge

Ludovic Rousseau rousseau at costa.debian.org
Mon Sep 19 07:12:13 UTC 2005


Author: rousseau
Date: 2005-09-19 07:12:11 +0000 (Mon, 19 Sep 2005)
New Revision: 1657

Modified:
   trunk/Drivers/ocfBridge/Makefile
   trunk/Drivers/ocfBridge/OCFPCSC1.cpp
   trunk/Drivers/ocfBridge/OCFPCSC1.h
   trunk/Drivers/ocfBridge/PcscExceptions.cpp
Log:
patch to work on 64-bits architectures

Thanks to Tomas Gustavsson for the patch. See thread
http://archives.neohapsis.com/archives/dev/muscle/2005-q3/0231.html


Modified: trunk/Drivers/ocfBridge/Makefile
===================================================================
--- trunk/Drivers/ocfBridge/Makefile	2005-09-15 12:25:15 UTC (rev 1656)
+++ trunk/Drivers/ocfBridge/Makefile	2005-09-19 07:12:11 UTC (rev 1657)
@@ -1,12 +1,12 @@
 CC        = c++
 LD        = ld 
 OBJS     := $(patsubst %.cpp,%.o,$(wildcard *.cpp))
-JDK_HOME  = /System/Library/Frameworks/JavaVM.framework
-PCSC_HDRS = -I/usr/local/pcsc/include
-PCSC_LIBS = -L/usr/local/pcsc/lib -lpcsclite
-INCLUDE   = -I$(JDK_HOME)/Headers -I$(JDK_HOME)/include/genunix $(PCSC_HDRS)
-LIBNAME   = libOCFPCSC1.jnilib
-PREFIX   = /usr/local/pcsc
+#JDK_HOME  = /usr/local/java
+PCSC_HDRS = `pkg-config --cflags libpcsclite`
+PCSC_LIBS = `pkg-config --libs libpcsclite`
+INCLUDE   = -I$(JDK_HOME)/include -I$(JDK_HOME)/include/linux $(PCSC_HDRS)
+LIBNAME   = libOCFPCSC1.so
+CPPFLAGS  = -fPIC -Wall -DHAVE_PTHREAD_H -DCK_GENERIC $(INCLUDE)
 
 all: $(LIBNAME)
 
@@ -17,7 +17,4 @@
 	cp -f *.so /usr/local/pcsc/lib
 
 $(LIBNAME): $(OBJS)
-	cc $(OBJS) $(PCSC_LIBS) -dynamiclib -install_name $(PREFIX)/lib/$(LIBNAME)  -o $@
-
-$(patsubst %.cpp,%.o,$(wildcard *.cpp)) : %.o : %.cpp
-	$(CC) $(CFLAGS) -c $< $(INCLUDE) $(DEFS)
+	$(CC) $(OBJS) $(PCSC_LIBS) -shared -o $@

Modified: trunk/Drivers/ocfBridge/OCFPCSC1.cpp
===================================================================
--- trunk/Drivers/ocfBridge/OCFPCSC1.cpp	2005-09-15 12:25:15 UTC (rev 1656)
+++ trunk/Drivers/ocfBridge/OCFPCSC1.cpp	2005-09-19 07:12:11 UTC (rev 1657)
@@ -71,7 +71,7 @@
  * Method:    SCardEstablishContext
  * Signature: (I)I
  */
-JNIEXPORT jint JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardEstablishContext
+JNIEXPORT jlong JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardEstablishContext
   (JNIEnv *env, jobject obj, jint scope) {
 
   CONTEXT_INFO cInfo;
@@ -92,7 +92,7 @@
    */
   addContext(cInfo);
 
-  return (jint)cInfo.context;
+  return cInfo.context;
 }
 
 
@@ -102,11 +102,11 @@
  * Signature: (I)V
  */
 JNIEXPORT void JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardReleaseContext
-  (JNIEnv *env, jobject obj, jint context) {
+  (JNIEnv *env, jobject obj, jlong context) {
 
   long returnCode;
 
-  if (isContextAvailable((long)context) < 0) {
+  if (isContextAvailable(context) < 0) {
 	  throwPcscException(env, obj, "SCardReleaseContext", "tried to release a non-existing context",0);
   	return;
   }
@@ -114,7 +114,7 @@
   /* delete the context from the internal table */
   removeContext(context);
 
-  returnCode = SCardReleaseContext((SCARDCONTEXT)context);
+  returnCode = SCardReleaseContext(context);
   if (returnCode != SCARD_S_SUCCESS) {
   	throwPcscException(env, obj, "SCardReleaseContext", "PC/SC Error SCardReleaseContext", returnCode);
 	  return;
@@ -128,25 +128,25 @@
  * Method:    SCardConnect
  * Signature: (ILjava/lang/String;IILjava/lang/Integer;)I
  */
-JNIEXPORT jint JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardConnect
-  (JNIEnv *env, jobject obj, jint context, jstring jReader,
+JNIEXPORT jlong JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardConnect
+  (JNIEnv *env, jobject obj, jlong context, jstring jReader,
    jint jShareMode, jint jPreferredProtocol, jobject jActiveProtocol) {
 
   const char   *readerUTF;
   long	       cardHandle;
   DWORD        activeProtocol;
-  int		       cPos;
+  int	       cPos;
   long	       returnCode;
   CONTEXT_INFO cInfo;
 
   /* check if context exists */
-  if (cPos = isContextAvailable((long)context) < 0) {
+  if ((cPos = isContextAvailable(context)) < 0) {
     throwPcscException(env, obj, "SCardConnect", "PC/SC Wrapper Error: context not in table", 0);
     return 0;
   }
 
   // get contextInformationRecord
-  cInfo = getContextInfoViaContext((SCARDCONTEXT)context);
+  cInfo = getContextInfoViaContext(context);
   if (cInfo.context == 0) {
     throwPcscException(env, obj, "SCardConnect", "PC/SC Wrapper Error: couldn't get context information record", 0);
     return 0;
@@ -156,12 +156,12 @@
   readerUTF = env->GetStringUTFChars(jReader, NULL);
 
   /* get a connection to the card */
-  returnCode = SCardConnect(  (SCARDCONTEXT)context,
-                        			readerUTF,
-				                      (DWORD)jShareMode,
-				                      (DWORD)jPreferredProtocol,
-				                      (LPSCARDHANDLE)&cardHandle,
-				                      (DWORD *)&activeProtocol);
+  returnCode = SCardConnect(context,
+                            readerUTF,
+			    (DWORD)jShareMode,
+			    (DWORD)jPreferredProtocol,
+			    (LPSCARDHANDLE)&cardHandle,
+			    (DWORD *)&activeProtocol);
 
   /* release the readers friendly name */
   env->ReleaseStringUTFChars(jReader, readerUTF);
@@ -191,7 +191,7 @@
  * Signature: (IIIILjava/lang/Integer;)V
  */
 JNIEXPORT void JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardReconnect
-  (JNIEnv *env, jobject obj, jint card, jint shareMode,
+  (JNIEnv *env, jobject obj, jlong card, jint shareMode,
    jint preferredProtocols, jint initialization, jobject jActiveProtocoll) {
 
   long	        returnCode;
@@ -199,7 +199,7 @@
   CONTEXT_INFO  cInfo;
 
   // get the existing context informations
-  cInfo = getContextInfoViaCardHandle((SCARDHANDLE)card);
+  cInfo = getContextInfoViaCardHandle(card);
   if (cInfo.context == 0) {
     throwPcscException(env, obj, "SCardReconnect", "PC/SC Wrapper Error: couldn't get context information record", 0);
     return;
@@ -237,19 +237,19 @@
  * Signature: (II)V
  */
 JNIEXPORT void JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardDisconnect
-  (JNIEnv *env, jobject obj, jint card, jint disposition) {
+  (JNIEnv *env, jobject obj, jlong card, jint disposition) {
 
   long          returnCode;
   CONTEXT_INFO  cInfo;
 
   // get the contextInfo from the table
-  cInfo = getContextInfoViaCardHandle((SCARDHANDLE)card);
+  cInfo = getContextInfoViaCardHandle(card);
   if (cInfo.context == 0) {
     throwPcscException(env, obj, "SCardDisconnect", "PC/SC Wrapper Error: couldn't get context information record", 0);
     return;
   }
 
-  returnCode = SCardDisconnect((SCARDHANDLE)card, (DWORD)disposition);
+  returnCode = SCardDisconnect(card, (DWORD)disposition);
   if ((returnCode != SCARD_S_SUCCESS) && (returnCode != SCARD_W_REMOVED_CARD)) {
     throwPcscException(env, obj, "SCardDisconnect", "PC/SC Error SCardDisconnect", returnCode);
     return;
@@ -274,7 +274,7 @@
  * Signature: (II[Lcom/ibm/opencard/terminal/pcsc10/PcscReaderState;)V
  */
 JNIEXPORT void JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardGetStatusChange
-  (JNIEnv *env, jobject obj, jint context, jint timeout, jobjectArray jReaderState) {
+  (JNIEnv *env, jobject obj, jlong context, jint timeout, jobjectArray jReaderState) {
 
   SCARD_READERSTATE   *readerState;
   int         numReaderState;
@@ -343,7 +343,7 @@
 
   /* set the response timeout to 1000ms */
 
-  returnCode =  SCardGetStatusChange((SCARDCONTEXT)context, 1000, readerState, numReaderState);
+  returnCode =  SCardGetStatusChange(context, 1000, readerState, numReaderState);
   if (returnCode != SCARD_S_SUCCESS) {
     free(readerState);
     throwPcscException(env, obj, "SCardGetStatusChange", "error executing SCardGetStatusChange", returnCode);
@@ -419,7 +419,7 @@
  * Signature: (II)[B
  */
 JNIEXPORT jbyteArray JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardGetAttrib
-  (JNIEnv *env, jobject obj, jint card, jint attrId) {
+  (JNIEnv *env, jobject obj, jlong card, jint attrId) {
 
   long	returnCode;
   DWORD       lenAttr;
@@ -465,7 +465,7 @@
  * Signature: (II[B)[B
  */
 JNIEXPORT jbyteArray JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardControl
-  (JNIEnv *env, jobject obj, jint jCardHandle, jint jControlCode, jbyteArray jInBuffer) {
+  (JNIEnv *env, jobject obj, jlong jCardHandle, jint jControlCode, jbyteArray jInBuffer) {
 
   LONG    returnCode;
   DWORD   lenInBuffer;
@@ -584,7 +584,7 @@
   int ii;
   int jj;
   int numNames;
-  for (ii=0, numNames=0; ii<lenReaderList; ) {
+  for (ii=0, numNames=0; ii<(signed)lenReaderList; ) {
     numNames++;
     ii += strlen(&readerList[ii])+1;
     if (strlen(&readerList[ii]) == 0) 
@@ -641,7 +641,7 @@
  * Signature: (I[B)[B
  */
 JNIEXPORT jbyteArray JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardTransmit
-  (JNIEnv *env, jobject obj, jint jCard, jbyteArray jSendBuf) {
+  (JNIEnv *env, jobject obj, jlong jCard, jbyteArray jSendBuf) {
 
   SCARD_IO_REQUEST    sendPci;
   SCARD_IO_REQUEST    recvPci;
@@ -658,7 +658,7 @@
   CONTEXT_INFO        cInfo;
 
   // get the contextInfo from the table (checks the active protocol of the card connection)
-  cInfo = getContextInfoViaCardHandle((SCARDHANDLE)jCard);
+  cInfo = getContextInfoViaCardHandle(jCard);
   if (cInfo.context == 0) {
     throwPcscException(env, obj, "SCardTransmit", "PC/SC Wrapper Error: couldn't get context information record", 0);
     return NULL;
@@ -705,9 +705,9 @@
   lenRecvBuf = sizeof(tmpRecvBuf);
 
   /* transmit the data */
-  returnCode = SCardTransmit((SCARDHANDLE)jCard,
-			                       (LPSCARD_IO_REQUEST)&sendPci,(LPCBYTE)ptrSendBuf, lenSendBuf,
-                    			   (LPSCARD_IO_REQUEST)&recvPci,(LPBYTE)tmpRecvBuf,&lenRecvBuf);
+  returnCode = SCardTransmit(jCard,
+			     (LPSCARD_IO_REQUEST)&sendPci,(LPCBYTE)ptrSendBuf, lenSendBuf,
+                             (LPSCARD_IO_REQUEST)&recvPci,(LPBYTE)tmpRecvBuf,&lenRecvBuf);
 
   if (returnCode != SCARD_S_SUCCESS) {
     throwPcscException(env, obj, "SCardTransmit", "error occurred with SCardTransmit", returnCode);

Modified: trunk/Drivers/ocfBridge/OCFPCSC1.h
===================================================================
--- trunk/Drivers/ocfBridge/OCFPCSC1.h	2005-09-15 12:25:15 UTC (rev 1656)
+++ trunk/Drivers/ocfBridge/OCFPCSC1.h	2005-09-19 07:12:11 UTC (rev 1657)
@@ -28,7 +28,7 @@
  * Method:    SCardEstablishContext
  * Signature: (I)I
  */
-JNIEXPORT jint JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardEstablishContext
+JNIEXPORT jlong JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardEstablishContext
   (JNIEnv *, jobject, jint);
 
 /*
@@ -37,15 +37,15 @@
  * Signature: (I)V
  */
 JNIEXPORT void JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardReleaseContext
-  (JNIEnv *, jobject, jint);
+  (JNIEnv *, jobject, jlong);
 
 /*
  * Class:     com_ibm_opencard_terminal_pcsc10_OCFPCSC1
  * Method:    SCardConnect
  * Signature: (ILjava/lang/String;IILjava/lang/Integer;)I
  */
-JNIEXPORT jint JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardConnect
-  (JNIEnv *, jobject, jint, jstring, jint, jint, jobject);
+JNIEXPORT jlong JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardConnect
+  (JNIEnv *, jobject, jlong, jstring, jint, jint, jobject);
 
 /*
  * Class:     com_ibm_opencard_terminal_pcsc10_OCFPCSC1
@@ -53,7 +53,7 @@
  * Signature: (IIIILjava/lang/Integer;)V
  */
 JNIEXPORT void JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardReconnect
-  (JNIEnv *, jobject, jint, jint, jint, jint, jobject);
+  (JNIEnv *, jobject, jlong, jint, jint, jint, jobject);
 
 /*
  * Class:     com_ibm_opencard_terminal_pcsc10_OCFPCSC1
@@ -61,7 +61,7 @@
  * Signature: (II)V
  */
 JNIEXPORT void JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardDisconnect
-  (JNIEnv *, jobject, jint, jint);
+  (JNIEnv *, jobject, jlong, jint);
 
 /*
  * Class:     com_ibm_opencard_terminal_pcsc10_OCFPCSC1
@@ -69,7 +69,7 @@
  * Signature: (II[Lcom/ibm/opencard/terminal/pcsc10/PcscReaderState;)V
  */
 JNIEXPORT void JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardGetStatusChange
-  (JNIEnv *, jobject, jint, jint, jobjectArray);
+  (JNIEnv *, jobject, jlong, jint, jobjectArray);
 
 /*
  * Class:     com_ibm_opencard_terminal_pcsc10_OCFPCSC1
@@ -77,7 +77,7 @@
  * Signature: (II)[B
  */
 JNIEXPORT jbyteArray JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardGetAttrib
-  (JNIEnv *, jobject, jint, jint);
+  (JNIEnv *, jobject, jlong, jint);
 
 /*
  * Class:     com_ibm_opencard_terminal_pcsc10_OCFPCSC1
@@ -85,7 +85,7 @@
  * Signature: (II[B)[B
  */
 JNIEXPORT jbyteArray JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardControl
-  (JNIEnv *, jobject, jint, jint, jbyteArray);
+  (JNIEnv *, jobject, jlong, jint, jbyteArray);
 
 /*
  * Class:     com_ibm_opencard_terminal_pcsc10_OCFPCSC1
@@ -93,7 +93,7 @@
  * Signature: (I[B)[B
  */
 JNIEXPORT jbyteArray JNICALL Java_com_ibm_opencard_terminal_pcsc10_OCFPCSC1_SCardTransmit
-  (JNIEnv *, jobject, jint, jbyteArray);
+  (JNIEnv *, jobject, jlong, jbyteArray);
 
 #ifdef __cplusplus
 }

Modified: trunk/Drivers/ocfBridge/PcscExceptions.cpp
===================================================================
--- trunk/Drivers/ocfBridge/PcscExceptions.cpp	2005-09-15 12:25:15 UTC (rev 1656)
+++ trunk/Drivers/ocfBridge/PcscExceptions.cpp	2005-09-19 07:12:11 UTC (rev 1657)
@@ -77,7 +77,7 @@
     /* allocate enough bufferspace for the complete exception message */
     completeMsg = (char *)malloc(strlen(method) + strlen(msg) + 50);
     sprintf(completeMsg, "PCSC Exception in method %s: %s\n" \
-	    "return code = %8.8x\n", method, msg,returnCode);
+	    "return code = %8.8lx\n", method, msg,returnCode);
 
     if ((exceptionMsg = env->NewStringUTF(completeMsg)) == NULL) {
 	free(completeMsg);




More information about the Pcsclite-cvs-commit mailing list