aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--lib/libldapschema/lformat.c4
-rw-r--r--lib/libldapschema/loutput.c19
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
102 size_t deflen; 102 size_t deflen;
103 size_t indent; 103 size_t indent;
104 size_t x; 104 size_t x;
105 size_t keylen;
105 char last; 106 char last;
106 107
107 assert(def != NULL); 108 assert(def != NULL);
@@ -156,6 +157,7 @@ int ldapschema_fmt_definition( char * restrict str, size_t size, const char * re
156 157
157 default: 158 default:
158 for(tmppos = defpos; IS_KEYWORD( def[tmppos] ); tmppos++); 159 for(tmppos = defpos; IS_KEYWORD( def[tmppos] ); tmppos++);
160 for(keylen = 0; IS_STRNG(def[keylen+defpos]); keylen++);
159 if ( (tmppos != defpos) && (IS_SPACE(def[tmppos]) || (def[tmppos] == '\0')) ) 161 if ( (tmppos != defpos) && (IS_SPACE(def[tmppos]) || (def[tmppos] == '\0')) )
160 { 162 {
161 // styling for upper case keywords 163 // styling for upper case keywords
@@ -167,7 +169,7 @@ int ldapschema_fmt_definition( char * restrict str, size_t size, const char * re
167 } else 169 } else
168 { 170 {
169 // styling for unquoted strings 171 // styling for unquoted strings
170 if ((strpos - bol) < width) 172 if ((strpos - bol + keylen + 2 + (indent*3)) < width)
171 { 173 {
172 APPEND( ' ' ); 174 APPEND( ' ' );
173 } else 175 } 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 @@
62#define LDAPSCHEMA_WIDTH_HEADER 19 62#define LDAPSCHEMA_WIDTH_HEADER 19
63#define LDAPSCHEMA_WIDTH_INDENT 3 63#define LDAPSCHEMA_WIDTH_INDENT 3
64#define LDAPSCHEMA_WIDTH_FIELD (LDAPSCHEMA_WIDTH_HEADER-LDAPSCHEMA_WIDTH_INDENT) 64#define LDAPSCHEMA_WIDTH_FIELD (LDAPSCHEMA_WIDTH_HEADER-LDAPSCHEMA_WIDTH_INDENT)
65#define LDAPSCHEMA_WIDTH_VALUE 45 65#define LDAPSCHEMA_WIDTH_VALUE 59
66 66
67 67
68////////////////// 68//////////////////
@@ -393,6 +393,7 @@ void ldapschema_print_list_models(LDAPSchema * lsd,
393{ 393{
394 size_t pos; 394 size_t pos;
395 const char * key; 395 const char * key;
396 size_t key_len;
396 size_t buff_len; 397 size_t buff_len;
397 char buff[256]; 398 char buff[256];
398 size_t lineno; 399 size_t lineno;
@@ -440,17 +441,21 @@ void ldapschema_print_list_models(LDAPSchema * lsd,
440 if (!(key)) 441 if (!(key))
441 continue; 442 continue;
442 443
443 if ((pos + 1) < list_len) 444 key_len = strlen(key) + 1;
444 buff_len += (size_t)snprintf(&buff[buff_len], sizeof(buff)-buff_len, "%s, ", key ); 445 if ( ((buff_len)) && ((buff_len+key_len) > LDAPSCHEMA_WIDTH_VALUE) )
445 else
446 buff_len += (size_t)snprintf(&buff[buff_len], sizeof(buff)-buff_len, "%s", key );
447 if (buff_len >= LDAPSCHEMA_WIDTH_VALUE)
448 { 446 {
449 ldapschema_print_line( ((!(lineno))?name:NULL), buff); 447 if (buff[buff_len-1] == ' ')
448 buff[buff_len-1] = '\0';
449 ldapschema_print_line( ((!(lineno)) ? name : NULL), buff);
450 buff_len = 0; 450 buff_len = 0;
451 buff[0] = '\0'; 451 buff[0] = '\0';
452 lineno++; 452 lineno++;
453 }; 453 };
454
455 if ((pos + 1) < list_len)
456 buff_len += (size_t)snprintf(&buff[buff_len], sizeof(buff)-buff_len, "%s, ", key );
457 else
458 buff_len += (size_t)snprintf(&buff[buff_len], sizeof(buff)-buff_len, "%s", key );
454 }; 459 };
455 if ((buff_len)) 460 if ((buff_len))
456 ldapschema_print_line( ((!(lineno))?name:NULL), buff); 461 ldapschema_print_line( ((!(lineno))?name:NULL), buff);