diff options
author | midipix <writeonce@midipix.org> | 2016-03-15 13:33:03 -0400 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2016-03-15 13:36:17 -0400 |
commit | 198aa9598c80e4ba66b9c6c66ccf6858e911d50e (patch) | |
tree | 635c0dc528ebf5893c60b079bf2512597a3f08a4 /src/internal | |
parent | 13f7119055c48e7062d6de0a07d243b2a97ea28b (diff) | |
download | sofort-198aa9598c80e4ba66b9c6c66ccf6858e911d50e.tar.bz2 sofort-198aa9598c80e4ba66b9c6c66ccf6858e911d50e.tar.xz |
argv.h: usage screen generator: fix typesetting of spanning paradigms.
Diffstat (limited to 'src/internal')
-rw-r--r-- | src/internal/argv/argv.h | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/src/internal/argv/argv.h b/src/internal/argv/argv.h index 7568436..7dd6cfe 100644 --- a/src/internal/argv/argv.h +++ b/src/internal/argv/argv.h @@ -910,6 +910,9 @@ static void argv_usage( } } + para = 0; + next_para = 0; + if (option->argname) { if (option->optarg == ARGV_OPTARG_OPTIONAL) fprintf(file,"[%s]%-*c", @@ -919,7 +922,6 @@ static void argv_usage( fprintf(file,"%s%-*c", option->argname, (int)(paralen-strlen(option->argname)),' '); - para = (char *)0; } else if (option->paradigm && (rparalen <= paralen)) { if (option->optarg == ARGV_OPTARG_OPTIONAL) fprintf(file,"[{%s}]%-*c", @@ -929,7 +931,6 @@ static void argv_usage( fprintf(file,"{%s}%-*c", option->paradigm, (int)(paralen-strlen(option->paradigm)-rbblen),' '); - para = (char *)0; } else if (option->paradigm) { if (!paradigm && !(paradigm = calloc(1,mparalen))) { fputc('\n',file); @@ -944,10 +945,8 @@ static void argv_usage( fputc('{',file); rparalen = paralen - rblen; } - } else { + } else fprintf(file,"%-*c",(int)paralen,' '); - para = (char *)0; - } if (!para && option->description && rdesclen <= desclen) { @@ -960,6 +959,24 @@ static void argv_usage( desc = (char *)0; while (para || desc) { + if (para && next_para) { + if (option->optarg == ARGV_OPTARG_OPTIONAL) { + if (rparalen+2*rbblen <= paralen) { + fprintf(file," %s}]%-*c",para, + (int)(paralen-rparalen) + - 2*rbblen,' '); + para = (char *)0; + } + } else { + if (rparalen+2*rblen <= paralen) { + fprintf(file," %s}%-*c",para, + (int)(paralen-rparalen) + - 2*rblen,' '); + para = (char *)0; + } + } + } + if (para) { next_para = para+rparalen-1; @@ -1001,7 +1018,9 @@ static void argv_usage( (int)(paralen-strlen(para)-rblen),' '); para = (char *)0; } - } else if (desc > buf) + } else if (next_para && (desc > buf)) + next_para = (char *)0; + else if (desc > buf) fprintf(file,"%-*c",(int)paralen,' '); if (desc) { |