summaryrefslogtreecommitdiffstats
path: root/usr.bin/fmt
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>1996-09-10 19:50:23 +0000
committerphk <phk@FreeBSD.org>1996-09-10 19:50:23 +0000
commitfe6f3f9eab66e55702832f3ef12d60a0038d3831 (patch)
treef337c4f7c7c8b59f9208f0b282a129c5dbb58c03 /usr.bin/fmt
parentccd8fb4fade2750d29484b1533af4b0cf6079582 (diff)
downloadFreeBSD-src-fe6f3f9eab66e55702832f3ef12d60a0038d3831.zip
FreeBSD-src-fe6f3f9eab66e55702832f3ef12d60a0038d3831.tar.gz
Add -c flag to fmt to center lines.
Diffstat (limited to 'usr.bin/fmt')
-rw-r--r--usr.bin/fmt/fmt.16
-rw-r--r--usr.bin/fmt/fmt.c27
2 files changed, 33 insertions, 0 deletions
diff --git a/usr.bin/fmt/fmt.1 b/usr.bin/fmt/fmt.1
index 4c76cc7..791939f 100644
--- a/usr.bin/fmt/fmt.1
+++ b/usr.bin/fmt/fmt.1
@@ -39,6 +39,7 @@
.Nd simple text formatter
.Sh SYNOPSIS
.Nm fmt
+.Fl c
.Oo
.Ar goal
.Op Ar maximum
@@ -58,6 +59,11 @@ to 65 and the maximum to 75. The spacing at the beginning of the
input lines is preserved in the output, as are blank lines and
interword spacing.
.Pp
+.Fl c
+instructs
+.Nm fmt
+to center the text.
+.Pp
.Nm Fmt
is meant to format mail messages prior to sending, but may also be useful
for other simple tasks.
diff --git a/usr.bin/fmt/fmt.c b/usr.bin/fmt/fmt.c
index 4bd1a7f..fdaceba 100644
--- a/usr.bin/fmt/fmt.c
+++ b/usr.bin/fmt/fmt.c
@@ -68,6 +68,7 @@ int max_length; /* Max line length in output */
int pfx; /* Current leading blank count */
int lineno; /* Current input line */
int mark; /* Last place we saw a head line */
+int center;
char *malloc(); /* for lint . . . */
char *headnames[] = {"To", "Subject", "Cc", 0};
@@ -96,6 +97,11 @@ main(argc, argv)
/*
* LIZ@UOM 6/18/85 -- Check for goal and max length arguments
*/
+ if (argc > 1 && !strcmp(argv[1], "-c")) {
+ center++;
+ argc--;
+ argv++;
+ }
if (argc > 1 && (1 == (sscanf(argv[1], "%d", &number)))) {
argv++;
argc--;
@@ -143,6 +149,27 @@ fmt(fi)
#define CHUNKSIZE 1024
static int lbufsize = 0, cbufsize = 0;
+ if (center) {
+ linebuf = malloc(BUFSIZ);
+ while (1) {
+ cp = fgets(linebuf, BUFSIZ, fi);
+ if (!cp)
+ return;
+ while (*cp && isspace(*cp))
+ cp++;
+ cp2 = cp + strlen(cp) - 1;
+ while (cp2 > cp && isspace(*cp2))
+ cp2--;
+ if (cp == cp2)
+ putchar('\n');
+ col = cp2 - cp;
+ for (c = 0; c < (goal_length-col)/2; c++)
+ putchar(' ');
+ while (cp <= cp2)
+ putchar(*cp++);
+ putchar('\n');
+ }
+ }
c = getc(fi);
while (c != EOF) {
/*
OpenPOWER on IntegriCloud