From af7821da81932a990ecc64a6381a90f3d6eaf5d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Ankarstr=C3=B6m?= Date: Mon, 12 Jul 2021 17:30:47 +0200 Subject: ce: Rewrite in C The `build' program is available at http://git.ankarstrom.se/build/ --- etc/ce.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 etc/ce.c (limited to 'etc/ce.c') 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 +#include +#include +#include +#include + +#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); + } +} -- cgit v1.2.3