diff --git a/clients/tools/common.c b/clients/tools/common.c index bd6df553288b37207f7129833c27f70c63486b52..b191fa3935e4a04502d943c16c4d1750ec643a72 100644 --- a/clients/tools/common.c +++ b/clients/tools/common.c @@ -66,6 +66,7 @@ int nocanon = 0; int referrals = 0; int verbose = 0; int ldif = 0; +ber_len_t ldif_wrap = LDIF_LINE_WIDTH; char *prog = NULL; /* connection */ @@ -311,6 +312,7 @@ N_(" -N do not use reverse DNS to canonicalize SASL host name\n"), N_(" -O props SASL security properties\n"), N_(" -o <opt>[=<optparam] general options\n"), N_(" nettimeout=<timeout> (in seconds, or \"none\" or \"max\")\n"), +N_(" ldif-wrap=<width> (in columns, or \"no\" for no wrapping)\n"), N_(" -p port port on LDAP server\n"), N_(" -Q use SASL Quiet mode\n"), N_(" -R realm SASL realm\n"), @@ -751,11 +753,30 @@ tool_args( int argc, char **argv ) prog, (long)nettimeout.tv_sec ); exit( EXIT_FAILURE ); } + + } else if ( strcasecmp( control, "ldif-wrap" ) == 0 ) { + if ( cvalue == 0 ) { + ldif_wrap = LDIF_LINE_WIDTH; + + } else if ( strcasecmp( cvalue, "no" ) == 0 ) { + ldif_wrap = LDIF_LINE_WIDTH_MAX; + + } else { + unsigned int u; + if ( lutil_atou( &u, cvalue ) ) { + fprintf( stderr, + _("Unable to parse ldif-wrap=\"%s\"\n"), cvalue ); + exit( EXIT_FAILURE ); + } + ldif_wrap = (ber_len_t)u; + } + } else { fprintf( stderr, "Invalid general option name: %s\n", control ); usage(); } + ber_memfree(control); break; case 'O': #ifdef HAVE_CYRUS_SASL @@ -2249,7 +2270,7 @@ tool_write_ldif( int type, char *name, char *value, ber_len_t vallen ) { char *ldif; - if (( ldif = ldif_put( type, name, value, vallen )) == NULL ) { + if (( ldif = ldif_put_wrap( type, name, value, vallen, ldif_wrap )) == NULL ) { return( -1 ); } diff --git a/clients/tools/common.h b/clients/tools/common.h index 257f520522b9e83b006d3bfabf37837d9fe53cfe..f1105542fd0ab3c68311a43e5d5d64958e4b29ba 100644 --- a/clients/tools/common.h +++ b/clients/tools/common.h @@ -55,6 +55,7 @@ extern int dont; extern int referrals; extern int verbose; extern int ldif; +extern ber_len_t ldif_wrap; extern char *prog; /* connection */ diff --git a/doc/devel/args b/doc/devel/args index 271eed951c6f8d0ee4c5f7688ebf7b69b436e0f5..7805eff1c9444d6fb5d85cd2458a4eb96cb00760 100644 --- a/doc/devel/args +++ b/doc/devel/args @@ -27,7 +27,7 @@ ldapwhoami * DE**HI** NO QR UVWXYZ def*h*** *nop* vwxy -h host -n no-op -N no (SASLprep) normalization of simple bind password - -o general connection options (currently nettimeout only) + -o general options (currently nettimeout and ldif-wrap only) -p port -v verbose -V version diff --git a/libraries/liblutil/ldif.c b/libraries/liblutil/ldif.c index c0801991514c79fe1b187416ae18506147a584bf..7f009245fc4ea50f83e230c6ab3a26fdd9c4717d 100644 --- a/libraries/liblutil/ldif.c +++ b/libraries/liblutil/ldif.c @@ -742,7 +742,7 @@ ldif_put_wrap( } p = buf; - ldif_sput( &p, type, name, val, vlen ); + ldif_sput_wrap( &p, type, name, val, vlen, wrap ); *p = '\0'; return( buf );