]> git.sur5r.net Git - openldap/commitdiff
ITS#7871 fix ldif-wrap length
authorHoward Chu <hyc@openldap.org>
Wed, 4 Jun 2014 07:52:01 +0000 (00:52 -0700)
committerHoward Chu <hyc@openldap.org>
Wed, 4 Jun 2014 07:52:01 +0000 (00:52 -0700)
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.

doc/man/man8/slapcat.8
libraries/libldap/ldif.c

index 6a04d4adaf6366ccb90741c13af0528be631c7dd..093fd87da2a3de46816e77fe0896bbc34d24ee8b 100644 (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
index c9cd59c082ce8afaa9c54626d45604a7c206dc78..9f868102ee7862925d19210082add8f9bee8b505 100644 (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;