X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=servers%2Fslapd%2Fback-sql%2Fconfig.c;h=197787ce5a39d1e5b34c41db39320b80550d44fd;hb=569344fb86fd1e7b4b304598839c157aa92e5447;hp=f9de695141775197eb29b325e9b77512ff03427f;hpb=c890c96d13c53cf0fa1d9580fea2ab47a2c8caa9;p=openldap diff --git a/servers/slapd/back-sql/config.c b/servers/slapd/back-sql/config.c index f9de695141..197787ce5a 100644 --- a/servers/slapd/back-sql/config.c +++ b/servers/slapd/back-sql/config.c @@ -1,7 +1,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1999-2008 The OpenLDAP Foundation. + * Copyright 1999-2011 The OpenLDAP Foundation. * Portions Copyright 1999 Dmitry Kovalev. * Portions Copyright 2002 Pierangelo Masarati. * Portions Copyright 2004 Mark Adamson. @@ -639,6 +639,37 @@ backsql_db_config( ber_str2bv( argv[ 1 ], 0, 1, &bi->sql_aliasing_quote ); + } else if ( !strcasecmp( argv[ 0 ], "autocommit" ) ) { + if ( argc != 2 ) { + Debug( LDAP_DEBUG_TRACE, + "<==backsql_db_config (%s line %d): " + "missing arg " + "in \"autocommit {NO|yes}\" directive\n", + fname, lineno, 0 ); + return 1; + } + + if ( !strcasecmp( argv[ 1 ], "yes" ) || + !strcasecmp( argv[ 1 ], "TRUE" ) || + !strcasecmp( argv[ 1 ], "on" ) ) + { + bi->sql_flags |= BSQLF_AUTOCOMMIT_ON; + + } else if ( !strcasecmp( argv[ 1 ], "no" ) || + !strcasecmp( argv[ 1 ], "FALSE" ) || + !strcasecmp( argv[ 1 ], "off" ) ) + { + bi->sql_flags &= ~BSQLF_AUTOCOMMIT_ON; + + } else { + Debug( LDAP_DEBUG_TRACE, + "<==backsql_db_config (%s line %d): " + "invalid arg " + "in \"autocommit {NO|yes}\" directive\n", + fname, lineno, 0 ); + return 1; + } + } else { return SLAP_CONF_UNKNOWN; } @@ -659,7 +690,7 @@ read_baseObject( { backsql_info *bi = (backsql_info *)be->be_private; LDIFFP *fp; - int rc = 0, lineno = 0, lmax = 0; + int rc = 0, lineno = 0, lmax = 0, ldifrc; char *buf = NULL; assert( fname != NULL ); @@ -685,7 +716,7 @@ read_baseObject( bi->sql_baseObject->e_nname = be->be_nsuffix[0]; bi->sql_baseObject->e_attrs = NULL; - while ( ldif_read_record( fp, &lineno, &buf, &lmax ) ) { + while (( ldifrc = ldif_read_record( fp, &lineno, &buf, &lmax )) > 0 ) { Entry *e = str2entry( buf ); Attribute *a; @@ -704,7 +735,7 @@ read_baseObject( "dn=\"%s\" (line=%d)\n", e->e_name.bv_val, lineno ); entry_free( e ); - rc = EXIT_FAILURE; + rc = LDAP_OTHER; break; } @@ -729,6 +760,9 @@ read_baseObject( } } + if ( ldifrc < 0 ) + rc = LDAP_OTHER; + if ( rc ) { entry_free( bi->sql_baseObject ); bi->sql_baseObject = NULL;