From 5ca8dad947b76673402e373988832f50207c3205 Mon Sep 17 00:00:00 2001 From: "David M. Syzdek" Date: Mon, 2 Dec 2019 19:51:37 -0900 Subject: libldapschema: updating how line wrap is calculated --- lib/libldapschema/lformat.c | 4 +++- lib/libldapschema/loutput.c | 19 ++++++++++++------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/lib/libldapschema/lformat.c b/lib/libldapschema/lformat.c index 6a28645..ee6bf7f 100644 --- a/lib/libldapschema/lformat.c +++ b/lib/libldapschema/lformat.c @@ -102,6 +102,7 @@ int ldapschema_fmt_definition( char * restrict str, size_t size, const char * re size_t deflen; size_t indent; size_t x; + size_t keylen; char last; assert(def != NULL); @@ -156,6 +157,7 @@ int ldapschema_fmt_definition( char * restrict str, size_t size, const char * re default: for(tmppos = defpos; IS_KEYWORD( def[tmppos] ); tmppos++); + for(keylen = 0; IS_STRNG(def[keylen+defpos]); keylen++); if ( (tmppos != defpos) && (IS_SPACE(def[tmppos]) || (def[tmppos] == '\0')) ) { // styling for upper case keywords @@ -167,7 +169,7 @@ int ldapschema_fmt_definition( char * restrict str, size_t size, const char * re } else { // styling for unquoted strings - if ((strpos - bol) < width) + if ((strpos - bol + keylen + 2 + (indent*3)) < width) { APPEND( ' ' ); } else diff --git a/lib/libldapschema/loutput.c b/lib/libldapschema/loutput.c index b7e656f..35e3347 100644 --- a/lib/libldapschema/loutput.c +++ b/lib/libldapschema/loutput.c @@ -62,7 +62,7 @@ #define LDAPSCHEMA_WIDTH_HEADER 19 #define LDAPSCHEMA_WIDTH_INDENT 3 #define LDAPSCHEMA_WIDTH_FIELD (LDAPSCHEMA_WIDTH_HEADER-LDAPSCHEMA_WIDTH_INDENT) -#define LDAPSCHEMA_WIDTH_VALUE 45 +#define LDAPSCHEMA_WIDTH_VALUE 59 ////////////////// @@ -393,6 +393,7 @@ void ldapschema_print_list_models(LDAPSchema * lsd, { size_t pos; const char * key; + size_t key_len; size_t buff_len; char buff[256]; size_t lineno; @@ -440,17 +441,21 @@ void ldapschema_print_list_models(LDAPSchema * lsd, if (!(key)) continue; - if ((pos + 1) < list_len) - buff_len += (size_t)snprintf(&buff[buff_len], sizeof(buff)-buff_len, "%s, ", key ); - else - buff_len += (size_t)snprintf(&buff[buff_len], sizeof(buff)-buff_len, "%s", key ); - if (buff_len >= LDAPSCHEMA_WIDTH_VALUE) + key_len = strlen(key) + 1; + if ( ((buff_len)) && ((buff_len+key_len) > LDAPSCHEMA_WIDTH_VALUE) ) { - ldapschema_print_line( ((!(lineno))?name:NULL), buff); + if (buff[buff_len-1] == ' ') + buff[buff_len-1] = '\0'; + ldapschema_print_line( ((!(lineno)) ? name : NULL), buff); buff_len = 0; buff[0] = '\0'; lineno++; }; + + if ((pos + 1) < list_len) + buff_len += (size_t)snprintf(&buff[buff_len], sizeof(buff)-buff_len, "%s, ", key ); + else + buff_len += (size_t)snprintf(&buff[buff_len], sizeof(buff)-buff_len, "%s", key ); }; if ((buff_len)) ldapschema_print_line( ((!(lineno))?name:NULL), buff); -- cgit v1.2.3