Author: hgomez
Date: Mon Apr 23 08:09:32 2007
New Revision: 531493

URL: http://svn.apache.org/viewvc?view=rev&rev=531493
Log:
More fix for ASCII/EBCDIC fun in i5/OS V5R4

Modified:
    tomcat/connectors/trunk/jk/native/common/jk_connect.c
    tomcat/connectors/trunk/jk/native/common/jk_map.c
    tomcat/connectors/trunk/jk/native/common/jk_util.c
    tomcat/connectors/trunk/jk/native/common/jk_util.h

Modified: tomcat/connectors/trunk/jk/native/common/jk_connect.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_connect.c?view=diff&rev=531493&r1=531492&r2=531493
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_connect.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_connect.c Mon Apr 23 08:09:32 
2007
@@ -273,7 +273,7 @@
 
                /* i5/OS V5R4 need EBCDIC for its runtime calls but APR/APACHE 
works in UTF */
 #ifdef AS400_UTF8
-        jk_ascii2ebcdic(remote_ipaddr);
+        jk_ascii2ebcdic(remote_ipaddr, remote_ipaddr);
 #endif
         laddr.s_addr = inet_addr(remote_ipaddr);
 
@@ -297,7 +297,7 @@
     else {
                /* i5/OS V5R4 need EBCDIC for its runtime calls but APR/APACHE 
works in UTF */
 #ifdef AS400_UTF8
-        jk_ascii2ebcdic((char *)host);
+        jk_ascii2ebcdic((char *)host, (char *)host);
 #endif
         /* If we found only digits we use inet_addr() */
         laddr.s_addr = inet_addr(host);

Modified: tomcat/connectors/trunk/jk/native/common/jk_map.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_map.c?view=diff&rev=531493&r1=531492&r2=531493
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_map.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_map.c Mon Apr 23 08:09:32 2007
@@ -485,7 +485,7 @@
     if (m && f) {
         struct stat statbuf;
         FILE *fp;
-        if ((rc = stat(f, &statbuf)) == -1)
+        if (jk_file_exists(f) != JK_TRUE)
             return JK_FALSE;
 #if defined(AS400) && !defined(AS400_UTF8)
         fp = fopen(f, "r, o_ccsid=0");

Modified: tomcat/connectors/trunk/jk/native/common/jk_util.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_util.c?view=diff&rev=531493&r1=531492&r2=531493
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_util.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_util.c Mon Apr 23 08:09:32 2007
@@ -1392,16 +1392,43 @@
 
 int jk_file_exists(const char *f)
 {
+  int   rc;
+  char *ptr;
+
     if (f) {
         struct stat st;
+
 #ifdef AS400
-        if ((0 == stat(f, &st)) && (st.st_mode & _S_IFREG)) {
-#else
-        if ((0 == stat(f, &st)) && (st.st_mode & S_IFREG)) {
-#endif
-            return JK_TRUE;
-        }
+
+/**
+ * i5/OS V5R4 expect filename in ASCII for fopen but required them in EBCDIC 
for stat()
+ */
+#ifdef AS400_UTF8
+
+               ptr = (char *)malloc(strlen(f) + 1);
+               jk_ascii2ebcdic((char *)f, ptr);
+               rc = stat(ptr, &st);
+               free(ptr);
+
+        if ((0 == rc) && (st.st_mode & _S_IFREG))
+                       return JK_TRUE;
+
+#else /* AS400_UTF8 */
+
+        if ((0 == stat(f, &st)) && (st.st_mode & _S_IFREG))
+                       return JK_TRUE;
+
+#endif /* AS400_UTF8 */
+
+#else /* AS400 */
+
+        if ((0 == stat(f, &st)) && (st.st_mode & S_IFREG))
+                       return JK_TRUE;
+
+#endif /* AS400 */
+
     }
+
     return JK_FALSE;
 }
 
@@ -1755,20 +1782,25 @@
   0x90,0xbd,0xb3,0xda,0xea,0xfa,0x40,0x40  /* f8-ff */
 };
 
-void jk_ascii2ebcdic(char *ptr) {
+void jk_ascii2ebcdic(char *src, char *dst) {
     char c;
 
-    while ((c = *ptr) != 0) {
-        *ptr++ = ascii_to_ebcdic[(unsigned int)c];
+    while ((c = *src++) != 0) {
+        *dst++ = ascii_to_ebcdic[(unsigned int)c];
     }
+
+    *dst = 0;
 }
 
-void jk_ebcdic2ascii(char *ptr) {
+void jk_ebcdic2ascii(char *src, char *dst) {
     char c;
 
-    while ((c = *ptr) != 0) {
-        *ptr++ = ebcdic_to_ascii[(unsigned int)c];
+    while ((c = *src++) != 0) {
+        *dst++ = ebcdic_to_ascii[(unsigned int)c];
     }
+
+    *dst = 0;
 }
+
 #endif
 

Modified: tomcat/connectors/trunk/jk/native/common/jk_util.h
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_util.h?view=diff&rev=531493&r1=531492&r2=531493
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_util.h (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_util.h Mon Apr 23 08:09:32 2007
@@ -212,8 +212,8 @@
 #define TC50_BRIDGE_TYPE    50
 
 #ifdef AS400_UTF8
-void jk_ascii2ebcdic(char *ptr);
-void jk_ebcdic2ascii(char *ptr);
+void jk_ascii2ebcdic(char *src, char *dst);
+void jk_ebcdic2ascii(char *src, char *dst);
 #endif
 
 #ifdef __cplusplus



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to