ITS#7871 fix ldif-wrap length

Doc has been updated to note the default was actually 78.
The off-by-two error is fixed. Note that wrap=1 will still
output 2 columns, otherwise it can't output anything besides
the continuation character.
This commit is contained in:
Howard Chu 2014-06-04 00:52:01 -07:00
parent a01d3f965b
commit 71ff674a02
2 changed files with 11 additions and 8 deletions

View File

@ -153,7 +153,9 @@ Possible generic options/values are:
.in
\fIn\fP is the number of columns allowed for the LDIF output
(\fIn\fP equal to \fI0\fP uses the default, corresponding to 76).
(\fIn\fP equal to \fI0\fP uses the default, corresponding to 78).
The minimum is 2, leaving space for one character and one
continuation character.
Use \fIno\fP for no wrap.
.TP
.BI \-s \ subtree-dn

View File

@ -486,8 +486,8 @@ ldif_must_b64_encode( LDAP_CONST char *s )
return 0;
}
/* compatibility with U-Mich off by one bug */
#define LDIF_KLUDGE 1
/* compatibility with U-Mich off by two bug */
#define LDIF_KLUDGE 2
/* NOTE: only preserved for binary compatibility */
void
@ -498,7 +498,7 @@ ldif_sput(
LDAP_CONST char *val,
ber_len_t vlen )
{
ldif_sput_wrap( out, type, name, val, vlen, LDIF_LINE_WIDTH );
ldif_sput_wrap( out, type, name, val, vlen, LDIF_LINE_WIDTH+LDIF_KLUDGE );
}
void
@ -521,7 +521,8 @@ ldif_sput_wrap(
ber_len_t len=0;
ber_len_t i;
wrap = LDIF_LINE_WIDTH_WRAP( wrap );
if ( !wrap )
wrap = LDIF_LINE_WIDTH+LDIF_KLUDGE;
/* prefix */
switch( type ) {
@ -633,7 +634,7 @@ ldif_sput_wrap(
b64 = 1;
break;
}
if ( len - LDIF_KLUDGE > wrap ) {
if ( len >= wrap ) {
*(*out)++ = '\n';
*(*out)++ = ' ';
len = 1;
@ -662,7 +663,7 @@ ldif_sput_wrap(
bits |= (byte[2] & 0xff);
for ( i = 0; i < 4; i++, len++, bits <<= 6 ) {
if ( len - LDIF_KLUDGE > wrap ) {
if ( len >= wrap ) {
*(*out)++ = '\n';
*(*out)++ = ' ';
len = 1;
@ -687,7 +688,7 @@ ldif_sput_wrap(
bits |= (byte[2] & 0xff);
for ( i = 0; i < 4; i++, len++, bits <<= 6 ) {
if ( len - LDIF_KLUDGE > wrap ) {
if ( len >= wrap ) {
*(*out)++ = '\n';
*(*out)++ = ' ';
len = 1;