diff options
author | John Ankarström <john@ankarstrom.se> | 2021-07-12 17:30:47 +0200 |
---|---|---|
committer | John Ankarström <john@ankarstrom.se> | 2021-07-12 17:30:47 +0200 |
commit | af7821da81932a990ecc64a6381a90f3d6eaf5d2 (patch) | |
tree | eb7c1dfe291b2daaaa6a72669578faa3dc5ca8e6 /etc/ce.c | |
parent | ede252c175859041bfddf36983c4672bd756ecaa (diff) | |
download | xutil-af7821da81932a990ecc64a6381a90f3d6eaf5d2.tar.gz |
ce: Rewrite in C
The `build' program is available at
http://git.ankarstrom.se/build/
Diffstat (limited to 'etc/ce.c')
-rw-r--r-- | etc/ce.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/etc/ce.c b/etc/ce.c new file mode 100644 index 0000000..c8981bd --- /dev/null +++ b/etc/ce.c @@ -0,0 +1,44 @@ +/* + * ce -- center text + * $ cc -O2 -o ce ce.c + */ + +#include <err.h> +#include <ctype.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#define MAXBUF 255 + +int +main(int argc, char *argv[]) +{ + char *buf; + int cols, i, max; + + if(argc-1 > 1){ + fprintf(stderr, "usage: %s [cols]\n", argv[0]); + return 1; + } + cols = argv[1] ? atoi(argv[1]) : 80; + + if(!(buf = malloc(MAXBUF))) + err(1, "malloc"); + + while(fgets(buf, MAXBUF, stdin)){ + buf[strcspn(buf, "\n")] = 0; + + /* Remove leading and trailing whitespace. */ + for (; *buf; buf++) + if(!isspace(*buf)) break; + for (i = strlen(buf)-1; i >= 0; i--) + if(!isspace(buf[i])) break; + buf[i+1] = 0; + + /* Calculate number of spaces. */ + max = cols/2 + strlen(buf)/2; + + printf("%*s\n", max, buf); + } +} |