Introduction
Introduction Statistics Contact Development Disclaimer Help
indent: fix some bugs - lchat - A line oriented chat front end for ii.
git clone git://git.suckless.org/lchat
Log
Files
Refs
README
---
commit dc379ae7fa5c10ac69d0681d6ef2aa3020ea982e
parent b35d68c8a2e204afecf0496e7c39893da7020582
Author: Jan Klemkow <[email protected]>
Date: Wed, 22 Feb 2017 16:54:20 +0100
indent: fix some bugs
Diffstat:
M filter/indent.c | 26 +++++++++++++++++++-------
1 file changed, 19 insertions(+), 7 deletions(-)
---
diff --git a/filter/indent.c b/filter/indent.c
@@ -1,17 +1,21 @@
#include <err.h>
+#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
+#include <unistd.h>
int
-main(int argc, char *argv[])
+main(void)
{
char buf[BUFSIZ];
char timestr[BUFSIZ];
+ char old_nick[BUFSIZ] = "";
char *fmt = "%H:%M";
char *next, *nick, *word;
struct tm tm;
+ int cols = 80; /* terminal width */
while (fgets(buf, sizeof buf, stdin) != NULL) {
next = strptime(buf, "%Y-%m-%d %H:%M ", &tm);
@@ -29,23 +33,31 @@ main(int argc, char *argv[])
strftime(timestr, sizeof timestr, fmt, &tm);
/* print prompt */
- printf("%s %*s", timestr, 12, nick);
+ /* HH:MM nnnnnnnnnnnn ttttttttttttt */
+ printf("%s %*s", timestr, 12,
+ strcmp(nick, old_nick) == 0 ? "" : nick);
- ssize_t pw = 18;
- ssize_t tw = 104 - pw;
+ strlcpy(old_nick, nick, sizeof old_nick);
+
+ ssize_t pw = 18; /* prompt width */
+ ssize_t tw = cols - pw; /* text width */
+ bool first = true;
/* print indented text */
while ((word = strsep(&next, " ")) != NULL) {
tw -= strlen(word) + 1;
- if (tw < 0) {
+ if (tw < 0 && !first) {
fputs("\n ", stdout);
- tw = 80 - pw;
+ tw = cols - pw;
+ first = true;
}
fputc(' ', stdout);
fputs(word, stdout);
- fflush(stdout);
+ first = false;
}
+
+ fflush(stdout);
}
return EXIT_SUCCESS;
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.