Re: [hackers] [lchat] minor cleanup and adjustments || Tom Schwindl

2022-10-09 Thread Jan Klemkow
Hi NRK,

On Sun, Oct 09, 2022 at 11:42:58AM +0600, NRK wrote:
> > @@ -48,6 +48,14 @@ sigwinch(int sig)
> >  static void
> >  exit_handler(void)
> >  {
> > +   char *title = getenv("TERM");
> > +
> > +   /* reset terminal's window name */
> > +   if (strncmp(title, "screen", 6) == 0)
> > +   printf("\033k%s\033\\", title);
> 
> I'd personally test for NULL before passing it to strncmp() just in
> case.

Good catch.  I fixed that.

> > -   if (strcmp(getenv("TERM"), "screen") == 0)
> > +   if (strncmp(getenv("TERM"), "screen", 6) == 0)
> > printf("\033k%s\033\\", title);
> 
> Same here.

Same here.

Thanks,
Jan



Re: [hackers] [lchat] minor cleanup and adjustments || Tom Schwindl

2022-10-08 Thread NRK
> @@ -48,6 +48,14 @@ sigwinch(int sig)
>  static void
>  exit_handler(void)
>  {
> + char *title = getenv("TERM");
> +
> + /* reset terminal's window name */
> + if (strncmp(title, "screen", 6) == 0)
> + printf("\033k%s\033\\", title);

I'd personally test for NULL before passing it to strncmp() just in
case.

> - if (strcmp(getenv("TERM"), "screen") == 0)
> + if (strncmp(getenv("TERM"), "screen", 6) == 0)
>   printf("\033k%s\033\\", title);

Same here.

- NRK



[hackers] [lchat] minor cleanup and adjustments || Tom Schwindl

2022-10-08 Thread git
commit 1f48fc49963432855d340efd51abcc613bfcfd6c
Author: Tom Schwindl 
AuthorDate: Sat Oct 8 12:14:00 2022 +0200
Commit: Jan Klemkow 
CommitDate: Sat Oct 8 22:23:21 2022 +0200

minor cleanup and adjustments

diff --git a/Makefile b/Makefile
index 24ef10c..bc4d363 100644
--- a/Makefile
+++ b/Makefile
@@ -7,11 +7,11 @@ clean:
rm -f lchat *.o *.core sl_test filter/indent
 
 install: lchat
-   cp lchat ${DESTDIR}${BINDIR}
-   cp lchat.1 ${DESTDIR}${MAN1DIR}
+   cp lchat $(DESTDIR)$(BINDIR)
+   cp lchat.1 $(DESTDIR)$(MAN1DIR)
 
 uninstall:
-   rm -f ${DESTDIR}${BINDIR}/lchat ${DESTDIR}${MAN1DIR}/lchat.1
+   rm -f $(DESTDIR)$(BINDIR)/lchat $(DESTDIR)$(MAN1DIR)/lchat.1
 
 test: sl_test
./sl_test
diff --git a/README.md b/README.md
index ca6554b..f1838ad 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,9 @@
 line chat
 =
 
-lchat (line chat) is a line oriented front end for for ii-like chat programs.
+lchat (line chat) is a line oriented front end for ii-like chat programs.
 It handles the input from keyboard and output file in parallel.  Thus, you are
-able to type new messages while new chat lines arriving.  Its main focus is on
+able to type messages while new chat lines are arriving.  Its main focus is on
 usability and simplicity.
 
 ![lchat](/lchat.png)
diff --git a/config.mk b/config.mk
index 15f86cc..c997f20 100644
--- a/config.mk
+++ b/config.mk
@@ -1,16 +1,10 @@
 # paths
 PREFIX = /usr/local
-BINDIR = ${PREFIX}/bin
-MANDIR = ${PREFIX}/share/man
-MAN1DIR= ${MANDIR}/man1
+BINDIR = $(PREFIX)/bin
+MANDIR = $(PREFIX)/share/man
+MAN1DIR= $(MANDIR)/man1
 
-CC ?= cc
-CFLAGS = -std=c99 -pedantic -Wall -Wextra -g
+CFLAGS = -std=c99 -pedantic -Wall -Wextra -I/usr/local/include
 
-# utf.h
-CFLAGS += -I/usr/local/include
+# grapheme.h
 LIBS = -L/usr/local/lib -lgrapheme
-
-# For sbase users:
-#CFLAGS += -I../sbase
-#LIBS = -L../sbase -lutf
diff --git a/lchat.c b/lchat.c
index cc279c9..d5d8faf 100644
--- a/lchat.c
+++ b/lchat.c
@@ -35,8 +35,8 @@
 #define INFTIM -1
 #endif
 
-struct termios origin_term;
-struct winsize winsize;
+static struct termios origin_term;
+static struct winsize winsize;
 
 static void
 sigwinch(int sig)
@@ -48,6 +48,14 @@ sigwinch(int sig)
 static void
 exit_handler(void)
 {
+   char *title = getenv("TERM");
+
+   /* reset terminal's window name */
+   if (strncmp(title, "screen", 6) == 0)
+   printf("\033k%s\033\\", title);
+   else
+   printf("\033]0;%s\a", title);
+
if (tcsetattr(STDIN_FILENO, TCSANOW, _term) == -1)
die("tcsetattr:");
 }
@@ -139,9 +147,8 @@ fork_filter(int *read, int *write)
 static void
 usage(void)
 {
-   fputs("lchat [-aeh] [-n lines] [-p prompt] [-t title] [-i in] [-o out]"
-   " [directory]\n", stderr);
-   exit(EXIT_FAILURE);
+   die("lchat [-aeh] [-n lines] [-p prompt] [-t title] [-i in] [-o out]"
+   " [directory]");
 }
 
 int
@@ -164,6 +171,9 @@ main(int argc, char *argv[])
char *prompt = read_file_line(".prompt");
char *title = read_file_line(".title");
 
+   if (sl == NULL)
+   die("Failed to initialize slackline");
+
if (prompt == NULL) /* set default prompt */
prompt = "> ";
 
@@ -242,7 +252,7 @@ main(int argc, char *argv[])
if ((title = basename(path)) == NULL)
die("basename:");
}
-   if (strcmp(getenv("TERM"), "screen") == 0)
+   if (strncmp(getenv("TERM"), "screen", 6) == 0)
printf("\033k%s\033\\", title);
else
printf("\033]0;%s\a", title);
@@ -278,7 +288,7 @@ main(int argc, char *argv[])
FILE *fh;
 
/* open external source */
-   snprintf(tail_cmd, sizeof tail_cmd, "exec tail -n %zd -f %s",
+   snprintf(tail_cmd, sizeof tail_cmd, "exec tail -n %zu -f %s",
history_len, out_file);
 
if ((fh = popen(tail_cmd, "r")) == NULL)