[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: EBCDIC



Howard Chu wrote:
Well, I've just gotten a successful run of the test suite. To re-cap, the
OS/390 C compiler has an option to generate all char/string literals in
ASCII. The runtime library also has an ASCII-compatibility mode (LIBASCII)
that supports many of the needed functions, so that defining the flags for
these two features takes care of most of the work.

The LIBASCII version of getopt() always segfaulted tho, so I tweaked
makefiles
to use liblutil/getopt instead. Also, I had to intercept stdio (fgets, fputs,
fprintf etc.) to translate input and output accordingly when reading config
files and writing log files. For now I'm throwing the glue into a new file
liblutil/stdio.c. Most of the changes wind up in liblutil this way.

Along those lines, I note that there is a lutil_progname that is currently
used
only by the slap tools. I think it would make sense to also use this in
clients/tools. Any objections?

Will be committing updates shortly. At present there's a lot of hand-tweaking
still needed, I'll write up a How-To for the FAQ-o-Matic. Currently I only
have
gdbm support, and I built the gdbm in ASCII mode as well. I suppose I could
have left it alone, and done ASCII/EBCDIC translation of database filenames
in
ldbm.c or somesuch. I also needed to build an ASCII version of the regex
library;
the OS/390 library has a LIBASCII version of regcomp but it never matched
anything
successfully so I replaced it with the Henry Spencer library.

So with this build, OpenLDAP 2.1 runs on OS/390 and all internal data is left
in
ASCII/UTF8. The translation to/from EBCDIC only occurs when reading/writing
files/stdout/stderr. I guess this makes it difficult for other apps to use
the
client libraries, but I'll cross that bridge later.

I tried your way on a BS2000 and give up after finding that a lot of string fonction like ispace() were only for EBCDIC...


I convert the data in input/output and handle all strings in EBCDIC, I have got a run slapd but I have no time to finish it...
I send as attachement the patch I needed to get the slapd running on my EBCDIC machine. (Just for Fun that some month old!)


I will try the new code on Monday on my machine and give some feedback.

Cheers

Jean-frederic


-- Howard Chu Chief Architect, Symas Corp. Director, Highland Sun http://www.symas.com http://highlandsun.com/hyc Symas: Premier OpenSource Development and Support


-----Original Message-----
From: Michael Stroder [mailto:michael@stroeder.com]


Howard Chu wrote:

On the server side I'm considering what it would take to leave

the internals

in UTF8 and just translate DNs specified in the config file. Could use
something
like BSD's xstr to extract the string constants from the source and
ASCII-encode
the ones that are ber_print'd as a preprocessing step. Still not

sure, the

debug logs would be ugly.

Make sure to find out which EBCDIC variant to use (see RFC1345). IMHO it's not worth the effort.

Ciao, Michael.





Index: build/ltmain.sh
===================================================================
RCS file: /home/cvs/OpenLDAP/pkg/ldap/build/ltmain.sh,v
retrieving revision 1.5.2.7
diff -u -r1.5.2.7 ltmain.sh
--- build/ltmain.sh	6 Nov 2001 16:29:18 -0000	1.5.2.7
+++ build/ltmain.sh	25 Jul 2002 14:24:24 -0000
@@ -76,8 +76,17 @@
 # metacharacters that are still active within double-quoted strings.
 Xsed='sed -e 1s/^X//'
 sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
-SP2NL='tr \040 \012'
-NL2SP='tr \015\012 \040\040'
+# test EBCDIC or ASCII
+case `echo A|od -x` in
+*[Cc]1*) # EBCDIC based system
+  SP2NL="tr '\100' '\n'"
+  NL2SP="tr '\r\n' '\100\100'"
+  ;;
+*) # Assume ASCII based system
+  SP2NL="tr '\040' '\012'"
+  NL2SP="tr '\015\012' '\040\040'"
+  ;;
+esac
 
 # NLS nuisances.
 # Only set LANG and LC_ALL to C if already set.
Index: include/ldap_int_thread.h
===================================================================
RCS file: /home/cvs/OpenLDAP/pkg/ldap/include/ldap_int_thread.h,v
retrieving revision 1.6.2.5
diff -u -r1.6.2.5 ldap_int_thread.h
--- include/ldap_int_thread.h	4 Jan 2002 20:38:15 -0000	1.6.2.5
+++ include/ldap_int_thread.h	25 Jul 2002 14:24:31 -0000
@@ -21,6 +21,10 @@
  *                                *
  **********************************/
 
+#ifdef _OSD_POSIX                                                              
+#undef socklen_t                                                               
+#endif
+
 #include <pthread.h>
 #ifdef HAVE_SCHED_H
 #include <sched.h>
Index: include/ldap_pvt.h
===================================================================
RCS file: /home/cvs/OpenLDAP/pkg/ldap/include/ldap_pvt.h,v
retrieving revision 1.7.4.15
diff -u -r1.7.4.15 ldap_pvt.h
--- include/ldap_pvt.h	4 Jan 2002 20:38:15 -0000	1.7.4.15
+++ include/ldap_pvt.h	25 Jul 2002 14:24:31 -0000
@@ -20,6 +20,10 @@
 #include <ldap_cdefs.h>
 #include <lber.h>				/* get ber_slen_t */
 
+#ifdef _OSD_POSIX
+extern unsigned char os_toascii[];
+#endif
+
 LDAP_BEGIN_DECL
 
 #define LDAP_PROTO_TCP 1 /* ldap://  */
@@ -229,7 +233,12 @@
 LDAP_F (char*) ldap_utf8_strtok( char* sp, const char* sep, char **last);
 
 /* Optimizations */
+#ifdef _OSD_POSIX
+#define LDAP_UTF8_ISASCII(p) \
+( (const unsigned char) (os_toascii[* (const unsigned char *) (p)]) < 0x80 )
+#else
 #define LDAP_UTF8_ISASCII(p) ( * (const unsigned char *) (p) < 0x80 )
+#endif
 #define LDAP_UTF8_CHARLEN(p) ( LDAP_UTF8_ISASCII(p) \
 	? 1 : ldap_utf8_charlen((p)) )
 #define LDAP_UTF8_OFFSET(p) ( LDAP_UTF8_ISASCII(p) \
Index: include/ac/socket.h
===================================================================
RCS file: /home/cvs/OpenLDAP/pkg/ldap/include/ac/socket.h,v
retrieving revision 1.19.2.12
diff -u -r1.19.2.12 socket.h
--- include/ac/socket.h	14 Jan 2002 19:49:59 -0000	1.19.2.12
+++ include/ac/socket.h	25 Jul 2002 14:24:31 -0000
@@ -39,6 +39,11 @@
 #include <arpa/inet.h>
 #endif
 
+#ifdef _OSD_POSIX
+#undef T_UNSPEC
+#define BIT_ZERO_ON_LEFT 
+#endif
+
 #ifdef HAVE_ARPA_NAMESER_H
 #include <arpa/nameser.h>
 #endif
Index: libraries/liblber/bprint.c
===================================================================
RCS file: /home/cvs/OpenLDAP/pkg/ldap/libraries/liblber/bprint.c,v
retrieving revision 1.16.6.8
diff -u -r1.16.6.8 bprint.c
--- libraries/liblber/bprint.c	4 Jan 2002 20:38:18 -0000	1.16.6.8
+++ libraries/liblber/bprint.c	25 Jul 2002 14:24:32 -0000
@@ -176,11 +176,15 @@
 		
 		off = BP_GRAPH + n + ((n >= 8)?1:0);
 
+#ifdef _OSD_POSIX
+		line[ BP_GRAPH + n ] = asciiprint(data[i]);
+#else
 		if ( isprint( data[i] )) {
 			line[ BP_GRAPH + n ] = data[i];
 		} else {
 			line[ BP_GRAPH + n ] = '.';
 		}
+#endif
 	}
 
 	(*ber_pvt_log_print)( line );
Index: libraries/liblber/decode.c
===================================================================
RCS file: /home/cvs/OpenLDAP/pkg/ldap/libraries/liblber/decode.c,v
retrieving revision 1.34.6.10
diff -u -r1.34.6.10 decode.c
--- libraries/liblber/decode.c	4 Jan 2002 20:38:18 -0000	1.34.6.10
+++ libraries/liblber/decode.c	25 Jul 2002 14:24:32 -0000
@@ -299,6 +299,9 @@
 		return LBER_DEFAULT;
 	}
 	(*buf)[datalen] = '\0';
+#ifdef _OSD_POSIX
+        ascii2ebcdic(*buf,*buf,datalen);
+#endif
 
 	return tag;
 }
@@ -324,12 +327,15 @@
 		return LBER_DEFAULT;
 	}
 
+        ber_log_printf( LDAP_DEBUG_TRACE, ber->ber_debug,                       
+                "ber_get_stringal len (%d)\n", len );
 	if( len == 0 ) {
 		(*bv)->bv_val = NULL;
 		(*bv)->bv_len = 0;
 		return tag;
 	}
 
+
 	(*bv)->bv_val = (char *) LBER_MALLOC( len + 1 );
 	if ( (*bv)->bv_val == NULL ) {
 		LBER_FREE( *bv );
@@ -345,6 +351,11 @@
 
 	((*bv)->bv_val)[len] = '\0';
 	(*bv)->bv_len = len;
+#ifdef _OSD_POSIX
+	ascii2ebcdic(((*bv)->bv_val),((*bv)->bv_val),len);
+#endif
+        ber_log_printf( LDAP_DEBUG_TRACE, ber->ber_debug,                       
+                "ber_get_stringal val (%s)\n", ((*bv)->bv_val) );
 
 	return tag;
 }
@@ -624,6 +635,8 @@
 				}
 
 				rc = ber_get_stringal( ber, &((*bv)[j]) );
+#ifdef _OSD_POSIX
+#endif
 				j++;
 			}
 			if ( j > 0 ) (*bv)[j] = NULL;
Index: libraries/liblber/encode.c
===================================================================
RCS file: /home/cvs/OpenLDAP/pkg/ldap/libraries/liblber/encode.c,v
retrieving revision 1.23.4.7
diff -u -r1.23.4.7 encode.c
--- libraries/liblber/encode.c	4 Jan 2002 20:38:19 -0000	1.23.4.7
+++ libraries/liblber/encode.c	25 Jul 2002 14:24:32 -0000
@@ -278,6 +278,12 @@
 {
 	ber_len_t	taglen, lenlen;
 	int rc;
+        char *buff;
+#ifdef _OSD_POSIX
+        char buf[128];
+        int ret;
+        int lenght;
+#endif
 
 	assert( ber != NULL );
 	assert( str != NULL );
@@ -291,13 +297,30 @@
 	if ( (taglen = ber_put_tag( ber, tag, 0 )) == -1 )
 		return -1;
 
+#ifdef _OSD_POSIX
+	if (len<128) {
+		ebcdic2ascii(buf,str,len);
+		buff = buf;
+	} else {
+                buff = malloc(len);
+                assert( buff != NULL );
+                ebcdic2ascii(buff,str,len);
+	}
+#else
+	buff = str;
+#endif
 	if ( (lenlen = ber_put_len( ber, len, 0 )) == -1 ||
-		(ber_len_t) ber_write( ber, str, len, 0 ) != len ) {
+		(ber_len_t) ber_write( ber, buff, len, 0 ) != len ) {
 		rc = -1;
 	} else {
 		/* return length of tag + length + contents */
 		rc = taglen + lenlen + len;
 	}
+#ifdef _OSD_POSIX
+	if (len>=128) {
+		free(buff);
+	}
+#endif
 
 	return rc;
 }
@@ -324,12 +347,40 @@
 	LDAP_CONST char *str,
 	ber_tag_t tag )
 {
+/* JFC 
+#ifdef _OSD_POSIX
+	char *buff;
+	char buf[128];
+	int ret;
+	int len;
+#endif
+ */
 	assert( ber != NULL );
 	assert( str != NULL );
 
 	assert( BER_VALID( ber ) );
 
+
+/* JFC
+#ifdef _OSD_POSIX
+	len = strlen( str );
+	if (len<128) {
+		ebcdic2ascii(buf,str,len);
+		ret  =  ber_put_ostring( ber, buf, len, tag );
+	} else {
+
+		buff = malloc(len);
+		assert( buff != NULL );
+		ebcdic2ascii(buff,str,len);
+		ret  =  ber_put_ostring( ber, buff, len, tag );
+		free(buff);
+	}
+#else
+ */
 	return ber_put_ostring( ber, str, strlen( str ), tag );
+/* JFC
+#endif
+ */
 }
 
 int
Index: libraries/libldap/utf-8.c
===================================================================
RCS file: /home/cvs/OpenLDAP/pkg/ldap/libraries/libldap/utf-8.c,v
retrieving revision 1.13.2.3
diff -u -r1.13.2.3 utf-8.c
--- libraries/libldap/utf-8.c	4 Jan 2002 20:38:22 -0000	1.13.2.3
+++ libraries/libldap/utf-8.c	25 Jul 2002 14:24:33 -0000
@@ -29,7 +29,12 @@
 #include "ldap_defaults.h"
 
 #undef ISASCII
+#ifdef _OSD_POSIX
+extern unsigned char os_toascii[];
+#define ISASCII(uc)	isascii(uc)
+#else
 #define ISASCII(uc)	((uc) < 0x80)
+#endif
 #undef UCS4_INVALID
 #define UCS4_INVALID	0x80000000U
 
@@ -78,7 +83,13 @@
  */
 int ldap_utf8_charlen( const char * p )
 {
+
+#ifdef OSD_POSIX
+	unsigned c = (const unsigned char)
+		 os_toascii[* (const unsigned char *)(p)];
+#else
 	unsigned c = * (const unsigned char *) p;
+#endif
 
 	if ((c & 0xfe ) == 0xfc) {
 		return 6;
@@ -200,6 +211,13 @@
 	if( LDAP_UTF8_ISASCII(u) ) {
 		return (char *) &p[1];
 	}
+
+#ifdef OSD_POSIX
+/* JFC has to add something!!!
+	const unsigned char *u = (const unsigned char *)
+		 &os_toascii[* (const unsigned char *)(p)];
+ */
+#endif
 
 	for( i=1; i<6; i++ ) {
 		if ( ( u[i] & 0xc0 ) != 0x80 ) {
Index: libraries/liblunicode/ucdata/ucdata.c
===================================================================
RCS file: /home/cvs/OpenLDAP/pkg/ldap/libraries/liblunicode/ucdata/ucdata.c,v
retrieving revision 1.15
diff -u -r1.15 ucdata.c
--- libraries/liblunicode/ucdata/ucdata.c	4 Jan 2002 20:17:42 -0000	1.15
+++ libraries/liblunicode/ucdata/ucdata.c	25 Jul 2002 14:24:35 -0000
@@ -37,6 +37,7 @@
 
 #include "ucdata.h"
 
+
 /**************************************************************************
  *
  * Miscellaneous types, data, and support functions.
@@ -1138,10 +1139,14 @@
 int
 ucdata_load(char *paths, int masks)
 {
+
     int error = 0;
 
-    if (masks & UCDATA_CTYPE)
+    ldap_log_printf( NULL,0xffff,"ucdata_load: %s %d\n",paths,masks,0);
+    if (masks & UCDATA_CTYPE) {
       error |= _ucprop_load(paths, 0) < 0 ? UCDATA_CTYPE : 0;
+      ldap_log_printf( NULL,0xffff,"_ucprop_load: %d (error)\n",error,0,0);
+    }
     if (masks & UCDATA_CASE)
       error |= _uccase_load(paths, 0) < 0 ? UCDATA_CASE : 0;
     if (masks & UCDATA_DECOMP)
@@ -1153,6 +1158,7 @@
     if (masks & UCDATA_COMP)
       error |= _uccomp_load(paths, 0) < 0 ? UCDATA_COMP : 0;
 
+    ldap_log_printf( NULL,0xffff,"ucdata_load: %s %d (error: %d)\n",paths,masks,error);
     return -error;
 }
 
Index: libraries/liblutil/base64.c
===================================================================
RCS file: /home/cvs/OpenLDAP/pkg/ldap/libraries/liblutil/base64.c,v
retrieving revision 1.6.2.4
diff -u -r1.6.2.4 base64.c
--- libraries/liblutil/base64.c	4 Jan 2002 20:38:24 -0000	1.6.2.4
+++ libraries/liblutil/base64.c	25 Jul 2002 14:24:35 -0000
@@ -57,7 +57,11 @@
 #include <ac/string.h>
 
 /* include socket.h to get sys/types.h and/or winsock2.h */
+#ifdef _OSD_POSIX
+#include <sys/types.h>
+#else
 #include <ac/socket.h>
+#endif
 
 #include "lutil.h"
 
Index: libraries/liblutil/md5.c
===================================================================
RCS file: /home/cvs/OpenLDAP/pkg/ldap/libraries/liblutil/md5.c,v
retrieving revision 1.5.8.5
diff -u -r1.5.8.5 md5.c
--- libraries/liblutil/md5.c	4 Jan 2002 20:38:24 -0000	1.5.8.5
+++ libraries/liblutil/md5.c	25 Jul 2002 14:24:35 -0000
@@ -39,7 +39,11 @@
 #include <ac/string.h>
 
 /* include socket.h to get sys/types.h and/or winsock2.h */
+#ifdef _OSD_POSIX
+#include <sys/types.h>
+#else
 #include <ac/socket.h>
+#endif
 
 #include <lutil_md5.h>
 
Index: servers/slapd/add.c
===================================================================
RCS file: /home/cvs/OpenLDAP/pkg/ldap/servers/slapd/add.c,v
retrieving revision 1.31.2.16
diff -u -r1.31.2.16 add.c
--- servers/slapd/add.c	19 Jan 2002 07:23:14 -0000	1.31.2.16
+++ servers/slapd/add.c	25 Jul 2002 14:24:36 -0000
@@ -118,6 +118,8 @@
 			goto done;
 		}
 
+		Debug( LDAP_DEBUG_ANY, "do_add: for %s (1) %s\n",
+			mod->ml_type,(mod->ml_bvalues[0])->bv_val,0);
 		*modtail = mod;
 		modtail = &mod->ml_next;
 	}
Index: servers/slapd/backend.c
===================================================================
RCS file: /home/cvs/OpenLDAP/pkg/ldap/servers/slapd/backend.c,v
retrieving revision 1.42.2.19
diff -u -r1.42.2.19 backend.c
--- servers/slapd/backend.c	4 Jan 2002 20:38:26 -0000	1.42.2.19
+++ servers/slapd/backend.c	25 Jul 2002 14:24:36 -0000
@@ -541,6 +541,10 @@
 	struct berval *cred )
 {
 	int result;
+	char toto[256];
+	int ltoto;
+
+	Debug(LDAP_DEBUG_TRACE, "be_isroot_pw: %s\n",ndn,0,0);
 
 	if ( ! be_isroot( be, ndn ) ) {
 		return 0;
@@ -557,7 +561,20 @@
 #endif
 #endif
 
+        ltoto = be->be_root_pw.bv_len;                                          
+        memcpy(toto,be->be_root_pw.bv_val,ltoto);                               
+        toto[ltoto] = '\0';                                                     
+        Debug(LDAP_DEBUG_TRACE, "be_isroot_pw: pass: %s\n",                     
+                toto,0,0);                                                      
+        ltoto = cred->bv_len;                                                   
+        memcpy(toto,cred->bv_val,ltoto);                                        
+        toto[ltoto] = '\0';                                                     
+        Debug(LDAP_DEBUG_TRACE, "be_isroot_pw: cred: %s\n",                     
+                toto,0,0);                                                      
+
 	result = lutil_passwd( &be->be_root_pw, cred, NULL );
+        Debug(LDAP_DEBUG_TRACE, "be_isroot_pw: %s (ret: %d)\n",
+		ndn,result,0);
 
 #if defined( SLAPD_CRYPT ) || defined( SLAPD_SPASSWD )
 #ifdef SLAPD_SPASSWD
Index: servers/slapd/bind.c
===================================================================
RCS file: /home/cvs/OpenLDAP/pkg/ldap/servers/slapd/bind.c,v
retrieving revision 1.38.2.15
diff -u -r1.38.2.15 bind.c
--- servers/slapd/bind.c	4 Jan 2002 20:38:26 -0000	1.38.2.15
+++ servers/slapd/bind.c	25 Jul 2002 14:24:36 -0000
@@ -45,6 +45,8 @@
 	const char	*text;
 	struct berval	cred;
 	Backend		*be;
+	char toto[256];
+	int ltoto;
 
 	Debug( LDAP_DEBUG_TRACE, "do_bind\n", 0, 0, 0 );
 
@@ -284,7 +286,14 @@
 	}
 
 	if ( method == LDAP_AUTH_SIMPLE ) {
-		/* accept "anonymous" binds */
+		/* accept "anonymous" JFC  binds */
+#ifdef _OSD_POSIX
+		ltoto = cred.bv_len;
+		memcpy(toto,cred.bv_val,ltoto);
+	
+		Debug(LDAP_DEBUG_TRACE, "do_bind: cred: %s (%d)\n",
+			toto,ltoto,0);
+#endif
 		if ( cred.bv_len == 0 || ndn == NULL || *ndn == '\0' ) {
 			rc = LDAP_SUCCESS;
 			text = NULL;
@@ -366,6 +375,7 @@
 	 * appropriate one, or send a referral to our "referral server"
 	 * if we don't hold it.
 	 */
+        Debug( LDAP_DEBUG_TRACE,"do_bind: JFC %d %d\n",version, method, 0 );
 
 	if ( (be = select_backend( ndn, 0 )) == NULL ) {
 		if ( default_referral ) {
@@ -373,6 +383,8 @@
 				NULL, NULL, default_referral, NULL );
 
 		} else {
+	Debug( LDAP_DEBUG_TRACE,"do_bind: JFC not found %d %d\n"
+		,version, method, 0 );
 			/* noSuchObject is not allowed to be returned by bind */
 			send_ldap_result( conn, op, rc = LDAP_INVALID_CREDENTIALS,
 				NULL, NULL, NULL, NULL );
@@ -401,6 +413,8 @@
 
 		ret = (*be->be_bind)( be, conn, op, dn, ndn,
 			method, &cred, &edn );
+                Debug( LDAP_DEBUG_TRACE,"do_bind: JFC %d ret: %d\n",
+                       version, ret, 0 );
 
 		if ( ret == 0 ) {
 			ldap_pvt_thread_mutex_lock( &conn->c_mutex );
Index: servers/slapd/daemon.c
===================================================================
RCS file: /home/cvs/OpenLDAP/pkg/ldap/servers/slapd/daemon.c,v
retrieving revision 1.99.2.25
diff -u -r1.99.2.25 daemon.c
--- servers/slapd/daemon.c	4 Jan 2002 20:38:27 -0000	1.99.2.25
+++ servers/slapd/daemon.c	25 Jul 2002 14:24:36 -0000
@@ -255,6 +255,12 @@
 		hints.ai_family = AF_UNSPEC;
 		snprintf(serv, sizeof serv, "%d", port);
 
+                Debug(LDAP_DEBUG_ANY,
+                           "host: %s port: %d\n",host,port,0);
+                Debug(LDAP_DEBUG_ANY,
+                           "port: %s port: %d\n",serv,port,0);
+
+
 		if (err = getaddrinfo(host, serv, &hints, &res)) {
 			Debug( LDAP_DEBUG_ANY, "daemon: getaddrinfo failed: %s\n",
 				AC_GAI_STRERROR(err), 0, 0);
Index: servers/slapd/modify.c
===================================================================
RCS file: /home/cvs/OpenLDAP/pkg/ldap/servers/slapd/modify.c,v
retrieving revision 1.31.2.19
diff -u -r1.31.2.19 modify.c
--- servers/slapd/modify.c	4 Jan 2002 20:38:28 -0000	1.31.2.19
+++ servers/slapd/modify.c	25 Jul 2002 14:24:36 -0000
@@ -413,8 +413,8 @@
 				if( rc != 0 ) {
 					slap_mods_free( mod );
 					snprintf( textbuf, textlen,
-						"%s: value #%ld invalid per syntax",
-						ml->ml_type, (long) nvals );
+						"%s: value #%ld (%s) invalid per syntax (%s)",
+						ml->ml_type, (long) nvals , (ml->ml_bvalues[nvals])->bv_val,ad->ad_type->sat_syntax->ssyn_oid );
 					*text = textbuf;
 					return LDAP_INVALID_SYNTAX;
 				}
Index: servers/slapd/schema_init.c
===================================================================
RCS file: /home/cvs/OpenLDAP/pkg/ldap/servers/slapd/schema_init.c,v
retrieving revision 1.42.2.37
diff -u -r1.42.2.37 schema_init.c
--- servers/slapd/schema_init.c	15 Jan 2002 18:55:55 -0000	1.42.2.37
+++ servers/slapd/schema_init.c	25 Jul 2002 14:24:37 -0000
@@ -539,6 +539,8 @@
 	for( count = in->bv_len; count > 0; count-=len, u+=len ) {
 		/* get the length indicated by the first byte */
 		len = LDAP_UTF8_CHARLEN( u );
+		Debug(LDAP_DEBUG_ARGS,"UTF8StringValidate: %d at %d\n",
+			len,count,0);
 
 		/* should not be zero */
 		if( len == 0 ) return LDAP_INVALID_SYNTAX;
Index: servers/slapd/back-ldbm/key.c
===================================================================
RCS file: /home/cvs/OpenLDAP/pkg/ldap/servers/slapd/back-ldbm/key.c,v
retrieving revision 1.1.2.3
diff -u -r1.1.2.3 key.c
--- servers/slapd/back-ldbm/key.c	4 Jan 2002 20:38:34 -0000	1.1.2.3
+++ servers/slapd/back-ldbm/key.c	25 Jul 2002 14:24:39 -0000
@@ -76,7 +76,12 @@
 
 	Debug( LDAP_DEBUG_TRACE, "<= key_change %d\n", rc, 0, 0 );
 
+#ifdef _OSD_POSIX
+	/* I DO think that ldap_pvt_thread_yield does not work well */
+	Debug( LDAP_DEBUG_TRACE, "<= key_change JFC patch\n",0,0,0);
+#else
 	ldap_pvt_thread_yield();
+#endif
 
 	return rc;
 }
Index: servers/slapd/back-sql/bind.c
===================================================================
RCS file: /home/cvs/OpenLDAP/pkg/ldap/servers/slapd/back-sql/bind.c,v
retrieving revision 1.5.2.2
diff -u -r1.5.2.2 bind.c
--- servers/slapd/back-sql/bind.c	30 Oct 2000 21:41:21 -0000	1.5.2.2
+++ servers/slapd/back-sql/bind.c	25 Jul 2002 14:24:39 -0000
@@ -35,6 +35,11 @@
  backsql_srch_info bsi;
  
  Debug(LDAP_DEBUG_TRACE,"==>backsql_bind()\n",0,0,0);
+
+#ifdef _OSD_POSIX
+ if ( method == LDAP_AUTH_SIMPLE )
+     ascii2ebcdic(credw->bv_val,credw->bv_val,cred->bv_len);
+#endif
  
  if ( be_isroot_pw( be, conn, ndn, cred ) )
     {