aboutsummaryrefslogtreecommitdiff
path: root/badroff.c
diff options
context:
space:
mode:
Diffstat (limited to 'badroff.c')
-rw-r--r--badroff.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/badroff.c b/badroff.c
index e19bf03..6f767bb 100644
--- a/badroff.c
+++ b/badroff.c
@@ -123,12 +123,22 @@ static char* leader(char* txt){
end = repeat;
repeat = " . ";
}
+ int startlen = strlen(start);
+ int endlen = strlen(end);
+ int rptln = strlen(repeat);
+ if (startlen + endlen > width) {
+ fin = malloc(sizeof(char)*(startlen+endlen+2));
+ memcpy(fin, start, startlen);
+ fin[startlen] = ' ';
+ memcpy(fin+startlen+1, end, endlen+1);
+ return fin;
+ }
fin = malloc(sizeof(char)*(width+2));
fin[width] = '\n'; fin[width+1] = 0;
strcpy(fin, start);
- size_t max = width-strlen(end); size_t rptln = strlen(repeat);
+ size_t max = width-endlen+1;
strcpy(fin+max, end);
- for (int i=strlen(start); i<width-strlen(end); i++)
+ for (int i=startlen; i<max; i++)
fin[i] = repeat[i % rptln];
return fin;
}