commit 7f7e7dcbb92151e8d0793e62599ffc4c63ec28df
parent 2e1580ed2dd9dd81e1c63ff52d906fdeafbb1fe6
Author: Jakob Kramer <jakob.kramer@gmx.de>
Date: Wed, 4 Jun 2014 17:46:22 +0200
cols: simplify filling with spaces
Use printf("%*s", n, "") instead of allocating
a string filled with spaces.
Diffstat:
1 file changed, 5 insertions(+), 10 deletions(-)
diff --git a/cols.c b/cols.c
@@ -26,8 +26,8 @@ int
main(int argc, char *argv[])
{
long i, l, col;
- size_t maxlen = 0;
- char *space;
+ size_t len;
+ int maxlen = 0;
struct winsize w;
FILE *fp;
@@ -59,7 +59,7 @@ main(int argc, char *argv[])
}
for(l = 0; l < b.nlines; ++l) {
- size_t len = strlen(b.lines[l]);
+ len = strlen(b.lines[l]);
if(len > 0 && b.lines[l][len-1] == '\n')
b.lines[l][--len] = '\0';
if(len > maxlen)
@@ -76,21 +76,16 @@ main(int argc, char *argv[])
return EXIT_SUCCESS;
}
- if(!(space = malloc(maxlen + 2)))
- eprintf("malloc:");
- memset(space, ' ', maxlen + 1);
- space[maxlen + 1] = '\0';
-
n_rows = (b.nlines + (n_columns - 1)) / n_columns;
for(i = 0; i < n_rows; ++i) {
for(l = i, col = 1; l < b.nlines; l += n_rows, ++col) {
+ len = strlen(b.lines[l]);
fputs(b.lines[l], stdout);
if(col < n_columns)
- fputs(space + strlen(b.lines[l]), stdout);
+ printf("%*s", maxlen + 1 - (int)len, "");
}
fputs("\n", stdout);
}
- free(space);
return EXIT_SUCCESS;
}